@wizzard-packages/react 0.3.0 → 0.4.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/dist/index.cjs +56 -21
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +10 -9
- package/dist/index.d.ts +10 -9
- package/dist/index.js +58 -21
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/dist/index.cjs
CHANGED
|
@@ -22,7 +22,7 @@ var index_exports = {};
|
|
|
22
22
|
__export(index_exports, {
|
|
23
23
|
WizardProvider: () => WizardProvider,
|
|
24
24
|
WizardStepRenderer: () => WizardStepRenderer,
|
|
25
|
-
WizardStore: () =>
|
|
25
|
+
WizardStore: () => import_core5.WizardStore,
|
|
26
26
|
createWizardFactory: () => createWizardFactory,
|
|
27
27
|
createWizardHooks: () => createWizardHooks,
|
|
28
28
|
createWizardStore: () => createWizardStore,
|
|
@@ -48,10 +48,13 @@ __export(index_exports, {
|
|
|
48
48
|
});
|
|
49
49
|
module.exports = __toCommonJS(index_exports);
|
|
50
50
|
|
|
51
|
+
// src/factory.tsx
|
|
52
|
+
var import_core3 = require("@wizzard-packages/core");
|
|
53
|
+
|
|
51
54
|
// src/context/WizardContext.tsx
|
|
52
|
-
var import_react = require("react");
|
|
53
55
|
var import_core2 = require("@wizzard-packages/core");
|
|
54
56
|
var import_persistence = require("@wizzard-packages/persistence");
|
|
57
|
+
var import_react = require("react");
|
|
55
58
|
|
|
56
59
|
// src/internal/dependencies.ts
|
|
57
60
|
var import_core = require("@wizzard-packages/core");
|
|
@@ -544,22 +547,25 @@ function useWizardState() {
|
|
|
544
547
|
function useWizardValue(path, options) {
|
|
545
548
|
const store = (0, import_react.useContext)(WizardStoreContext);
|
|
546
549
|
if (!store) throw new Error("useWizardValue must be used within a WizardProvider");
|
|
547
|
-
const lastStateRef = (0, import_react.useRef)(
|
|
550
|
+
const lastStateRef = (0, import_react.useRef)(UNSET);
|
|
548
551
|
const lastValueRef = (0, import_react.useRef)(UNSET);
|
|
552
|
+
const isEqual = typeof options === "function" ? options : options?.isEqual;
|
|
553
|
+
const isEqualRef = (0, import_react.useRef)(isEqual);
|
|
554
|
+
isEqualRef.current = isEqual;
|
|
549
555
|
const getSnapshot = (0, import_react.useCallback)(() => {
|
|
550
556
|
const data = store.getSnapshot().data;
|
|
551
557
|
if (data === lastStateRef.current && lastValueRef.current !== UNSET) {
|
|
552
558
|
return lastValueRef.current;
|
|
553
559
|
}
|
|
554
560
|
const value = (0, import_core2.getByPath)(data, path);
|
|
555
|
-
if (lastValueRef.current !== UNSET && (
|
|
561
|
+
if (lastValueRef.current !== UNSET && (isEqualRef.current || Object.is)(lastValueRef.current, value)) {
|
|
556
562
|
lastStateRef.current = data;
|
|
557
563
|
return lastValueRef.current;
|
|
558
564
|
}
|
|
559
565
|
lastStateRef.current = data;
|
|
560
566
|
lastValueRef.current = value;
|
|
561
567
|
return value;
|
|
562
|
-
}, [store, path
|
|
568
|
+
}, [store, path]);
|
|
563
569
|
return (0, import_react.useSyncExternalStore)(store.subscribe, getSnapshot, getSnapshot);
|
|
564
570
|
}
|
|
565
571
|
function useWizardField(path, options) {
|
|
@@ -589,16 +595,27 @@ function useWizardError(path) {
|
|
|
589
595
|
function useWizardSelector(selector, options) {
|
|
590
596
|
const store = (0, import_react.useContext)(WizardStoreContext);
|
|
591
597
|
if (!store) throw new Error("useWizardSelector must be used within a WizardProvider");
|
|
598
|
+
const selectorRef = (0, import_react.useRef)(selector);
|
|
599
|
+
selectorRef.current = selector;
|
|
600
|
+
const isEqual = typeof options === "function" ? options : options?.isEqual;
|
|
601
|
+
const isEqualRef = (0, import_react.useRef)(isEqual);
|
|
602
|
+
isEqualRef.current = isEqual;
|
|
603
|
+
const lastStateRef = (0, import_react.useRef)(UNSET);
|
|
592
604
|
const lastResultRef = (0, import_react.useRef)(UNSET);
|
|
593
605
|
const getSnapshot = (0, import_react.useCallback)(() => {
|
|
594
606
|
const full = store.getSnapshot();
|
|
595
|
-
|
|
596
|
-
|
|
607
|
+
if (full === lastStateRef.current && lastResultRef.current !== UNSET) {
|
|
608
|
+
return lastResultRef.current;
|
|
609
|
+
}
|
|
610
|
+
const res = selectorRef.current(full);
|
|
611
|
+
if (lastResultRef.current !== UNSET && (isEqualRef.current || Object.is)(lastResultRef.current, res)) {
|
|
612
|
+
lastStateRef.current = full;
|
|
597
613
|
return lastResultRef.current;
|
|
598
614
|
}
|
|
615
|
+
lastStateRef.current = full;
|
|
599
616
|
lastResultRef.current = res;
|
|
600
617
|
return res;
|
|
601
|
-
}, [store
|
|
618
|
+
}, [store]);
|
|
602
619
|
return (0, import_react.useSyncExternalStore)(store.subscribe, getSnapshot, getSnapshot);
|
|
603
620
|
}
|
|
604
621
|
function useWizardActions() {
|
|
@@ -712,6 +729,9 @@ function createWizardFactory() {
|
|
|
712
729
|
const useWizardSelector2 = (selector, options) => {
|
|
713
730
|
return useWizardSelector(selector, options);
|
|
714
731
|
};
|
|
732
|
+
const useWizardShallowSelector = (selector) => {
|
|
733
|
+
return useWizardSelector2(selector, import_core3.shallowEqual);
|
|
734
|
+
};
|
|
715
735
|
const useWizardError2 = (path) => {
|
|
716
736
|
return useWizardError(path);
|
|
717
737
|
};
|
|
@@ -732,6 +752,7 @@ function createWizardFactory() {
|
|
|
732
752
|
useWizardValue: useWizardValue2,
|
|
733
753
|
useWizardField: useWizardField2,
|
|
734
754
|
useWizardSelector: useWizardSelector2,
|
|
755
|
+
useWizardShallowSelector,
|
|
735
756
|
useWizardError: useWizardError2,
|
|
736
757
|
useWizardActions: useWizardActions2,
|
|
737
758
|
useWizardState: useWizardState2,
|
|
@@ -763,9 +784,9 @@ var WizardStepRenderer = ({
|
|
|
763
784
|
};
|
|
764
785
|
|
|
765
786
|
// src/store.ts
|
|
766
|
-
var
|
|
767
|
-
var import_core3 = require("@wizzard-packages/core");
|
|
787
|
+
var import_core4 = require("@wizzard-packages/core");
|
|
768
788
|
var import_persistence2 = require("@wizzard-packages/persistence");
|
|
789
|
+
var import_react3 = require("react");
|
|
769
790
|
var UNSET2 = /* @__PURE__ */ Symbol("wizard_store_unset");
|
|
770
791
|
var META_KEY = "__wizzard_meta__";
|
|
771
792
|
var applyStoredMeta = (store, adapter) => {
|
|
@@ -840,8 +861,8 @@ var createWizardActions = (store, config, persistenceAdapter, initialData) => {
|
|
|
840
861
|
const validateStep = (stepId) => store.validateStep(stepId);
|
|
841
862
|
const setData = (path, value, options) => {
|
|
842
863
|
const prevData = store.getSnapshot().data;
|
|
843
|
-
if ((0,
|
|
844
|
-
const baseData = (0,
|
|
864
|
+
if ((0, import_core4.getByPath)(prevData, path) === value) return;
|
|
865
|
+
const baseData = (0, import_core4.setByPath)(prevData, path, value);
|
|
845
866
|
const { newData, hasClearing, statusChanged, nextCompletedSteps, nextVisitedSteps } = applyStepDependencies(currentConfig, store, baseData, [path]);
|
|
846
867
|
if (statusChanged) {
|
|
847
868
|
store.dispatch({
|
|
@@ -1019,7 +1040,7 @@ var createWizardActions = (store, config, persistenceAdapter, initialData) => {
|
|
|
1019
1040
|
};
|
|
1020
1041
|
const clearStorage = () => persistenceAdapter.clear();
|
|
1021
1042
|
const getData = (path, defaultValue) => {
|
|
1022
|
-
return (0,
|
|
1043
|
+
return (0, import_core4.getByPath)(store.getSnapshot().data, path, defaultValue);
|
|
1023
1044
|
};
|
|
1024
1045
|
const updateConfig = (nextConfig) => {
|
|
1025
1046
|
currentConfig = { ...currentConfig, ...nextConfig };
|
|
@@ -1046,7 +1067,7 @@ var createWizardActions = (store, config, persistenceAdapter, initialData) => {
|
|
|
1046
1067
|
};
|
|
1047
1068
|
var createWizardStore = (options) => {
|
|
1048
1069
|
const initialData = options.initialData || {};
|
|
1049
|
-
const store = new
|
|
1070
|
+
const store = new import_core4.WizardStore(initialData, options.config.middlewares);
|
|
1050
1071
|
const persistenceAdapter = options.config.persistence?.adapter || new import_persistence2.MemoryAdapter();
|
|
1051
1072
|
store.injectPersistence(persistenceAdapter);
|
|
1052
1073
|
store.dispatch({
|
|
@@ -1067,20 +1088,23 @@ var useWizardStoreState = (store) => {
|
|
|
1067
1088
|
var useWizardStoreValue = (store, path, options) => {
|
|
1068
1089
|
const lastStateRef = (0, import_react3.useRef)(UNSET2);
|
|
1069
1090
|
const lastValueRef = (0, import_react3.useRef)(UNSET2);
|
|
1091
|
+
const isEqual = typeof options === "function" ? options : options?.isEqual;
|
|
1092
|
+
const isEqualRef = (0, import_react3.useRef)(isEqual);
|
|
1093
|
+
isEqualRef.current = isEqual;
|
|
1070
1094
|
const getSnapshot = (0, import_react3.useCallback)(() => {
|
|
1071
1095
|
const data = store.getSnapshot().data;
|
|
1072
1096
|
if (data === lastStateRef.current && lastValueRef.current !== UNSET2) {
|
|
1073
1097
|
return lastValueRef.current;
|
|
1074
1098
|
}
|
|
1075
|
-
const value = (0,
|
|
1076
|
-
if (lastValueRef.current !== UNSET2 && (
|
|
1099
|
+
const value = (0, import_core4.getByPath)(data, path);
|
|
1100
|
+
if (lastValueRef.current !== UNSET2 && (isEqualRef.current || Object.is)(lastValueRef.current, value)) {
|
|
1077
1101
|
lastStateRef.current = data;
|
|
1078
1102
|
return lastValueRef.current;
|
|
1079
1103
|
}
|
|
1080
1104
|
lastStateRef.current = data;
|
|
1081
1105
|
lastValueRef.current = value;
|
|
1082
1106
|
return value;
|
|
1083
|
-
}, [store, path
|
|
1107
|
+
}, [store, path]);
|
|
1084
1108
|
return (0, import_react3.useSyncExternalStore)(store.subscribe, getSnapshot, getSnapshot);
|
|
1085
1109
|
};
|
|
1086
1110
|
var useWizardStoreField = (store, setData, path, options) => {
|
|
@@ -1105,16 +1129,27 @@ var useWizardStoreError = (store, path) => {
|
|
|
1105
1129
|
return (0, import_react3.useSyncExternalStore)(store.subscribe, getSnapshot, getSnapshot);
|
|
1106
1130
|
};
|
|
1107
1131
|
var useWizardStoreSelector = (store, selector, options) => {
|
|
1132
|
+
const selectorRef = (0, import_react3.useRef)(selector);
|
|
1133
|
+
selectorRef.current = selector;
|
|
1134
|
+
const isEqual = typeof options === "function" ? options : options?.isEqual;
|
|
1135
|
+
const isEqualRef = (0, import_react3.useRef)(isEqual);
|
|
1136
|
+
isEqualRef.current = isEqual;
|
|
1137
|
+
const lastStateRef = (0, import_react3.useRef)(UNSET2);
|
|
1108
1138
|
const lastResultRef = (0, import_react3.useRef)(UNSET2);
|
|
1109
1139
|
const getSnapshot = (0, import_react3.useCallback)(() => {
|
|
1110
1140
|
const full = store.getSnapshot();
|
|
1111
|
-
|
|
1112
|
-
|
|
1141
|
+
if (full === lastStateRef.current && lastResultRef.current !== UNSET2) {
|
|
1142
|
+
return lastResultRef.current;
|
|
1143
|
+
}
|
|
1144
|
+
const res = selectorRef.current(full);
|
|
1145
|
+
if (lastResultRef.current !== UNSET2 && (isEqualRef.current || Object.is)(lastResultRef.current, res)) {
|
|
1146
|
+
lastStateRef.current = full;
|
|
1113
1147
|
return lastResultRef.current;
|
|
1114
1148
|
}
|
|
1149
|
+
lastStateRef.current = full;
|
|
1115
1150
|
lastResultRef.current = res;
|
|
1116
1151
|
return res;
|
|
1117
|
-
}, [store
|
|
1152
|
+
}, [store]);
|
|
1118
1153
|
return (0, import_react3.useSyncExternalStore)(store.subscribe, getSnapshot, getSnapshot);
|
|
1119
1154
|
};
|
|
1120
1155
|
var createWizardHooks = (store, actions) => ({
|
|
@@ -1131,7 +1166,7 @@ var createWizardHooks = (store, actions) => ({
|
|
|
1131
1166
|
});
|
|
1132
1167
|
|
|
1133
1168
|
// src/index.ts
|
|
1134
|
-
var
|
|
1169
|
+
var import_core5 = require("@wizzard-packages/core");
|
|
1135
1170
|
var import_middleware = require("@wizzard-packages/middleware");
|
|
1136
1171
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1137
1172
|
0 && (module.exports = {
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/context/WizardContext.tsx","../src/internal/dependencies.ts","../src/hooks/useWizard.ts","../src/factory.tsx","../src/components/WizardStepRenderer.tsx","../src/store.ts"],"sourcesContent":["export * from './factory';\nexport * from './context/WizardContext';\nexport * from './components/WizardStepRenderer';\nexport * from './hooks/useWizard';\nexport * from './store';\nexport * from './types';\n\n// Re-export core for convenience and backward compatibility\nexport { WizardStore } from '@wizzard-packages/core';\nexport { loggerMiddleware } from '@wizzard-packages/middleware';\nexport type {\n IWizardState,\n IWizardActions,\n IWizardContext,\n IStepConfig,\n IWizardConfig,\n ValidationResult,\n IValidatorAdapter,\n PersistenceMode,\n WizardMiddleware,\n} from '@wizzard-packages/core';\n","import React, {\n createContext,\n useContext,\n useEffect,\n useMemo,\n useState,\n useCallback,\n useSyncExternalStore,\n useRef,\n} from 'react';\nimport {\n type IWizardConfig,\n type IPersistenceAdapter,\n type IStepConfig,\n type Path,\n type PathValue,\n type IWizardContext,\n type IWizardState,\n type IWizardActions,\n type IWizardStore,\n type WizardEventHandler,\n type WizardEventName,\n WizardStore,\n getByPath,\n setByPath,\n} from '@wizzard-packages/core';\nimport { MemoryAdapter } from '@wizzard-packages/persistence';\nimport { applyStepDependencies } from '../internal/dependencies';\n\nconst UNSET = Symbol('wizard_unset');\n\nconst shallowEqual = (a: Record<string, any> | null, b: Record<string, any> | null) => {\n if (a === b) return true;\n if (!a || !b) return false;\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) return false;\n for (const key of aKeys) {\n if (!Object.is(a[key], b[key])) return false;\n }\n return true;\n};\n\nconst WizardStateContext = createContext<IWizardState<any, any> | undefined>(undefined);\nconst WizardActionsContext = createContext<IWizardActions<any> | undefined>(undefined);\nconst WizardStoreContext = createContext<IWizardStore<any, any> | undefined>(undefined);\n\n/**\n * Props for WizardProvider.\n */\nexport interface WizardProviderProps<T, StepId extends string> {\n config: IWizardConfig<T, StepId>;\n initialData?: T;\n initialStepId?: StepId;\n children: React.ReactNode;\n}\n\n/**\n * Component that provides the wizard context to its children.\n */\nexport function WizardProvider<T extends Record<string, any>, StepId extends string = string>({\n config,\n initialData,\n initialStepId,\n children,\n}: WizardProviderProps<T, StepId>) {\n const [localConfig, setLocalConfig] = useState<IWizardConfig<T, StepId>>(config);\n\n const storeRef = useRef<IWizardStore<T, StepId>>(null as unknown as IWizardStore<T, StepId>);\n\n if (!storeRef.current) {\n storeRef.current = new WizardStore<T, StepId>((initialData || {}) as T, config.middlewares);\n }\n\n const isInitialized = useRef(false);\n\n const persistenceAdapter = useMemo<IPersistenceAdapter>(() => {\n return localConfig.persistence?.adapter || new MemoryAdapter();\n }, [localConfig.persistence?.adapter]);\n\n const persistenceMode = localConfig.persistence?.mode || 'onStepChange';\n const META_KEY = '__wizzard_meta__';\n\n const snapshot = useSyncExternalStore<IWizardState<T, StepId>>(\n storeRef.current.subscribe,\n storeRef.current.getSnapshot,\n storeRef.current.getSnapshot\n );\n\n const {\n activeSteps,\n currentStepId,\n history,\n visitedSteps,\n completedSteps,\n data,\n errors: _errors,\n } = snapshot;\n\n const stepsMap = useMemo(() => {\n const map = new Map<StepId, IStepConfig<T, StepId>>();\n localConfig.steps.forEach((step: IStepConfig<T, StepId>) => map.set(step.id, step));\n return map;\n }, [localConfig.steps]);\n\n useEffect(() => {\n setLocalConfig(config);\n }, [config]);\n\n const activeStepsIndexMap = useMemo(() => {\n const map = new Map<StepId, number>();\n activeSteps.forEach((s: IStepConfig<T, StepId>, i: number) => map.set(s.id, i));\n return map;\n }, [activeSteps]);\n\n const stateRef = useRef({\n config: localConfig,\n stepsMap,\n activeSteps,\n activeStepsIndexMap,\n visitedSteps,\n completedSteps,\n persistenceMode,\n persistenceAdapter,\n currentStepId,\n history,\n });\n\n const validationDebounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n stateRef.current = {\n config: localConfig,\n stepsMap,\n activeSteps,\n activeStepsIndexMap,\n visitedSteps,\n completedSteps,\n persistenceMode,\n persistenceAdapter,\n currentStepId,\n history,\n };\n });\n\n useEffect(() => {\n return () => {\n if (validationDebounceRef.current) {\n clearTimeout(validationDebounceRef.current);\n }\n };\n }, []);\n\n const trackEvent = useCallback<WizardEventHandler<StepId>>(\n (name: WizardEventName, payload: any) => {\n localConfig.analytics?.onEvent(name as any, payload);\n },\n [localConfig.analytics]\n );\n\n const resolveActiveStepsHelper = useCallback(\n (data: T) => storeRef.current.resolveActiveSteps(data),\n []\n );\n\n const validateStep = useCallback((stepId: StepId) => storeRef.current.validateStep(stepId), []);\n\n const goToStep = useCallback(\n async (\n stepId: StepId,\n providedActiveSteps?: IStepConfig<T, StepId>[],\n options: { validate?: boolean } = { validate: true }\n ): Promise<boolean> => {\n return storeRef.current.goToStep(stepId, {\n validate: options.validate,\n providedActiveSteps: providedActiveSteps as any,\n });\n },\n []\n );\n\n const goToNextStep = useCallback(async () => {\n const { currentStepId } = stateRef.current;\n if (!currentStepId) return;\n\n const currentData = storeRef.current.getSnapshot().data;\n const step = stepsMap.get(currentStepId as StepId);\n\n const shouldVal = step?.autoValidate ?? localConfig.autoValidate ?? !!step?.validationAdapter;\n\n if (shouldVal) {\n const ok = await validateStep(currentStepId as StepId);\n if (!ok) return;\n }\n\n const resolvedSteps = await resolveActiveStepsHelper(currentData);\n const idx = resolvedSteps.findIndex((s: IStepConfig<T, StepId>) => s.id === currentStepId);\n\n if (idx !== -1 && idx < resolvedSteps.length - 1) {\n const nextStepId = resolvedSteps[idx + 1].id;\n const success = await goToStep(nextStepId as any, resolvedSteps as any, {\n validate: false,\n });\n if (success) {\n const currentSnapshot = storeRef.current.getSnapshot();\n if (!currentSnapshot.errorSteps.has(currentStepId as StepId)) {\n const nextComp = new Set(currentSnapshot.completedSteps);\n nextComp.add(currentStepId as StepId);\n storeRef.current.dispatch({\n type: 'SET_COMPLETED_STEPS',\n payload: { steps: nextComp },\n });\n }\n }\n }\n }, [goToStep, resolveActiveStepsHelper, validateStep, stepsMap, localConfig]);\n\n const goToPrevStep = useCallback(async () => {\n const { currentStepId, activeSteps, activeStepsIndexMap } = stateRef.current;\n const idx = activeStepsIndexMap.get(currentStepId as StepId) ?? -1;\n if (idx > 0) await goToStep(activeSteps[idx - 1].id as any);\n }, [goToStep]);\n\n const setData = useCallback(\n (path: string, value: any, options?: { debounceValidation?: number }) => {\n const { stepsMap, currentStepId } = stateRef.current;\n const prevData = storeRef.current.getSnapshot().data;\n if (getByPath(prevData, path) === value) return;\n\n const baseData = setByPath(prevData, path, value);\n const { newData, hasClearing, statusChanged, nextCompletedSteps, nextVisitedSteps } =\n applyStepDependencies(localConfig, storeRef.current, baseData, [path]);\n\n if (statusChanged) {\n storeRef.current.dispatch({\n type: 'SET_COMPLETED_STEPS',\n payload: { steps: nextCompletedSteps },\n });\n storeRef.current.dispatch({\n type: 'SET_VISITED_STEPS',\n payload: { steps: nextVisitedSteps },\n });\n }\n\n if (!hasClearing) {\n storeRef.current.dispatch({\n type: 'SET_DATA',\n payload: {\n path,\n value,\n options: { ...options, __from_set_data__: true },\n },\n });\n } else {\n storeRef.current.dispatch({\n type: 'UPDATE_DATA',\n payload: {\n data: newData,\n options: { replace: true, __from_set_data__: true, path },\n },\n });\n }\n\n if (currentStepId) {\n storeRef.current.deleteError(currentStepId as StepId, path);\n const step = stepsMap.get(currentStepId as StepId);\n const mode = step?.validationMode || localConfig.validationMode || 'onStepChange';\n\n if (mode === 'onChange') {\n const debounceMs =\n options?.debounceValidation ?? localConfig.validationDebounceTime ?? 300;\n if (validationDebounceRef.current) {\n clearTimeout(validationDebounceRef.current);\n }\n validationDebounceRef.current = setTimeout(() => {\n validateStep(currentStepId as StepId);\n }, debounceMs);\n }\n }\n },\n [localConfig, validateStep]\n );\n\n const updateData = useCallback(\n (data: Partial<T>, options?: { replace?: boolean; persist?: boolean }) => {\n const prev = storeRef.current.getSnapshot().data;\n const baseData = (options?.replace ? (data as T) : { ...prev, ...data }) as T;\n\n const { newData, statusChanged, nextCompletedSteps, nextVisitedSteps } =\n applyStepDependencies(localConfig, storeRef.current, baseData, Object.keys(data));\n\n if (statusChanged) {\n storeRef.current.dispatch({\n type: 'SET_COMPLETED_STEPS',\n payload: { steps: nextCompletedSteps },\n });\n storeRef.current.dispatch({\n type: 'SET_VISITED_STEPS',\n payload: { steps: nextVisitedSteps },\n });\n }\n\n storeRef.current.update(newData as T, Object.keys(data));\n if (options?.persist) {\n if (storeRef.current.save) {\n storeRef.current.save(storeRef.current.getSnapshot().currentStepId as StepId);\n }\n }\n },\n [localConfig]\n );\n\n const reset = useCallback(() => {\n storeRef.current.setInitialData(initialData || ({} as T));\n storeRef.current.update((initialData || {}) as T);\n storeRef.current.updateErrors({} as Record<StepId, Record<string, string>>);\n storeRef.current.dispatch({\n type: 'SET_VISITED_STEPS',\n payload: { steps: new Set() },\n });\n storeRef.current.dispatch({\n type: 'SET_COMPLETED_STEPS',\n payload: { steps: new Set() },\n });\n storeRef.current.dispatch({\n type: 'SET_ERROR_STEPS',\n payload: { steps: new Set() },\n });\n if (activeSteps.length > 0) {\n const startId = activeSteps[0].id;\n storeRef.current.dispatch({\n type: 'SET_CURRENT_STEP_ID',\n payload: { stepId: startId as StepId },\n });\n storeRef.current.dispatch({\n type: 'SET_HISTORY',\n payload: { history: [startId as StepId] },\n });\n } else {\n storeRef.current.dispatch({\n type: 'SET_CURRENT_STEP_ID',\n payload: { stepId: '' as StepId },\n });\n storeRef.current.dispatch({\n type: 'SET_HISTORY',\n payload: { history: [] },\n });\n }\n persistenceAdapter.clear();\n trackEvent('wizard_reset', { data: initialData } as any);\n }, [initialData, activeSteps, persistenceAdapter, trackEvent]);\n\n const stateValue = useMemo<IWizardState<T, StepId>>(\n () => ({\n ...snapshot,\n config: localConfig,\n }),\n [snapshot, localConfig]\n );\n\n const actionsValue = useMemo<IWizardActions<StepId>>(\n () => ({\n goToNextStep,\n goToPrevStep,\n goToStep: (sid: StepId, optionsOrUndefined?: any, thirdArg?: any) => {\n // Handle both signatures:\n // 1. goToStep(id, options)\n // 2. goToStep(id, undefined, options) - mistakenly used by user but likely legacy or internal leak\n\n let finalOptions = optionsOrUndefined;\n if (thirdArg && optionsOrUndefined === undefined) {\n finalOptions = thirdArg;\n }\n\n return goToStep(sid, undefined, finalOptions);\n },\n setStepData: (_stepId: StepId, data: any) => {\n const next = { ...storeRef.current.getSnapshot().data, ...data };\n storeRef.current.update(next as T, Object.keys(data));\n },\n handleStepChange: (f: string, v: any) => {\n if (stateRef.current.currentStepId) setData(f, v);\n },\n validateStep: (sid: StepId) => validateStep(sid),\n validateAll: async () => {\n storeRef.current.updateMeta({ isBusy: true });\n const data = storeRef.current.getSnapshot().data;\n const active = await resolveActiveStepsHelper(data);\n const results = await Promise.all(\n active.map((s: IStepConfig<T, StepId>) => validateStep(s.id as StepId))\n );\n storeRef.current.updateMeta({ isBusy: false });\n return {\n isValid: results.every(Boolean),\n errors: storeRef.current.getSnapshot().errors,\n };\n },\n save: (ids?: StepId | StepId[] | boolean) => {\n if (ids === true) {\n localConfig.steps.forEach((s: IStepConfig<T, StepId>) =>\n storeRef.current.save(s.id as StepId)\n );\n } else if (!ids) {\n storeRef.current.save();\n } else {\n (Array.isArray(ids) ? ids : [ids]).forEach((id) => storeRef.current.save(id as StepId));\n }\n },\n clearStorage: () => persistenceAdapter.clear(),\n reset,\n setData,\n updateData,\n getData: (p: string, d?: any) => getByPath(storeRef.current.getSnapshot().data, p, d),\n updateConfig: (nc: any) => {\n setLocalConfig((prev: IWizardConfig<T, StepId>) => ({ ...prev, ...nc }));\n },\n }),\n [\n goToNextStep,\n goToPrevStep,\n goToStep,\n validateStep,\n reset,\n setData,\n updateData,\n persistenceAdapter,\n localConfig,\n resolveActiveStepsHelper,\n ]\n );\n\n useEffect(() => {\n if (!isInitialized.current) {\n storeRef.current.injectPersistence(persistenceAdapter);\n storeRef.current.dispatch({\n type: 'INIT',\n payload: { data: initialData || ({} as T), config: localConfig as any },\n });\n storeRef.current.hydrate();\n isInitialized.current = true;\n } else {\n storeRef.current.updateMeta({ config: localConfig as any });\n }\n }, [initialData, localConfig, persistenceAdapter]);\n\n useEffect(() => {\n let isMounted = true;\n const timeoutId = setTimeout(async () => {\n const resolved = await resolveActiveStepsHelper(data);\n if (isMounted) {\n storeRef.current.dispatch({\n type: 'SET_ACTIVE_STEPS',\n payload: { steps: resolved as any },\n });\n }\n }, 200);\n\n return () => {\n isMounted = false;\n clearTimeout(timeoutId);\n };\n }, [data, resolveActiveStepsHelper]);\n\n const hasHydratedRef = useRef(false);\n\n useEffect(() => {\n if (hasHydratedRef.current) return;\n hasHydratedRef.current = true;\n\n const meta = persistenceAdapter.getStep<{\n currentStepId: string;\n visited: string[];\n completed: string[];\n history: string[];\n }>(META_KEY);\n if (meta) {\n if (meta.currentStepId) {\n storeRef.current.dispatch({\n type: 'SET_CURRENT_STEP_ID',\n payload: { stepId: meta.currentStepId as StepId },\n });\n }\n if (meta.visited)\n storeRef.current.dispatch({\n type: 'SET_VISITED_STEPS',\n payload: { steps: new Set(meta.visited as StepId[]) },\n });\n if (meta.completed)\n storeRef.current.dispatch({\n type: 'SET_COMPLETED_STEPS',\n payload: { steps: new Set(meta.completed as StepId[]) },\n });\n if (meta.history) {\n storeRef.current.dispatch({\n type: 'SET_HISTORY',\n payload: { history: meta.history as StepId[] },\n });\n }\n }\n\n const currentSnapshot = storeRef.current.getSnapshot();\n const currentActiveSteps = currentSnapshot.activeSteps;\n\n if (!currentSnapshot.currentStepId && currentActiveSteps.length > 0) {\n const startId =\n initialStepId &&\n currentActiveSteps.some((s: IStepConfig<T, StepId>) => s.id === initialStepId)\n ? initialStepId\n : currentActiveSteps[0].id;\n\n storeRef.current.dispatch({\n type: 'SET_CURRENT_STEP_ID',\n payload: { stepId: startId as StepId },\n });\n\n if (currentSnapshot.history.length === 0) {\n storeRef.current.dispatch({\n type: 'SET_HISTORY',\n payload: { history: [startId as StepId] },\n });\n }\n\n const currentVisited = new Set(currentSnapshot.visitedSteps);\n if (!currentVisited.has(startId as StepId)) {\n currentVisited.add(startId as StepId);\n storeRef.current.dispatch({\n type: 'SET_VISITED_STEPS',\n payload: { steps: currentVisited },\n });\n }\n }\n\n if (currentActiveSteps.length > 0 && currentSnapshot.isLoading) {\n storeRef.current.updateMeta({ isLoading: false });\n }\n }, [activeSteps, initialStepId, persistenceAdapter]);\n\n return (\n <WizardStoreContext.Provider value={storeRef.current as any}>\n <WizardStateContext.Provider value={stateValue}>\n <WizardActionsContext.Provider value={actionsValue}>\n {children}\n </WizardActionsContext.Provider>\n </WizardStateContext.Provider>\n </WizardStoreContext.Provider>\n );\n}\n\n/**\n * Reads the full wizard state.\n */\nexport function useWizardState<T = unknown, StepId extends string = string>(): IWizardState<\n T,\n StepId\n> {\n const context = useContext(WizardStateContext);\n if (!context) throw new Error('useWizardState must be used within a WizardProvider');\n return context as IWizardState<T, StepId>;\n}\n\n/**\n * Subscribes to a specific data value by path.\n */\nexport function useWizardValue<TValue = any>(\n path: string,\n options?: { isEqual?: (a: TValue, b: TValue) => boolean }\n): TValue {\n const store = useContext(WizardStoreContext);\n if (!store) throw new Error('useWizardValue must be used within a WizardProvider');\n const lastStateRef = useRef<any>(null);\n const lastValueRef = useRef<any>(UNSET);\n const getSnapshot = useCallback(() => {\n const data = store.getSnapshot().data;\n if (data === lastStateRef.current && lastValueRef.current !== UNSET) {\n return lastValueRef.current;\n }\n const value = getByPath(data, path) as TValue;\n if (\n lastValueRef.current !== UNSET &&\n (options?.isEqual || Object.is)(lastValueRef.current, value)\n ) {\n lastStateRef.current = data;\n return lastValueRef.current;\n }\n lastStateRef.current = data;\n lastValueRef.current = value;\n return value;\n }, [store, path, options?.isEqual]);\n return useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot);\n}\n\n/**\n * Returns a value and setter for a path (useState-like API).\n */\nexport function useWizardField<T, P extends Path<T>>(\n path: P,\n options?: { isEqual?: (a: PathValue<T, P>, b: PathValue<T, P>) => boolean }\n): [PathValue<T, P>, (value: PathValue<T, P>) => void] {\n const value = useWizardValue<PathValue<T, P>>(path as string, options);\n const { setData } = useWizardActions();\n const setValue = useCallback(\n (next: PathValue<T, P>) => {\n setData(path as string, next);\n },\n [setData, path]\n );\n\n return [value, setValue];\n}\n\n/**\n * Returns the first error message for a path across all steps.\n */\nexport function useWizardError(path: string): string | undefined {\n const store = useContext(WizardStoreContext);\n if (!store) throw new Error('useWizardError must be used within a WizardProvider');\n const getSnapshot = useCallback(() => {\n const errors = store.getSnapshot().errors;\n for (const [_, stepErrors] of Object.entries(errors)) {\n const typed = stepErrors as Record<string, string>;\n if (typed[path]) return typed[path];\n }\n return undefined;\n }, [store, path]);\n return useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot);\n}\n\n/**\n * Selects a derived value from the wizard state with optional equality check.\n */\nexport function useWizardSelector<TSelected = any>(\n selector: (state: any) => TSelected,\n options?: { isEqual?: (a: TSelected, b: TSelected) => boolean }\n): TSelected {\n const store = useContext(WizardStoreContext);\n if (!store) throw new Error('useWizardSelector must be used within a WizardProvider');\n\n const lastResultRef = useRef<TSelected | typeof UNSET>(UNSET);\n\n const getSnapshot = useCallback(() => {\n const full = store.getSnapshot();\n const res = selector(full);\n\n if (\n lastResultRef.current !== UNSET &&\n (options?.isEqual || Object.is)(lastResultRef.current, res)\n ) {\n return lastResultRef.current;\n }\n\n lastResultRef.current = res;\n return res;\n }, [store, selector, options?.isEqual]);\n\n return useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot);\n}\n\n/**\n * Returns the wizard actions API.\n */\nexport function useWizardActions<StepId extends string = string>(): IWizardActions<StepId> {\n const context = useContext(WizardActionsContext);\n if (!context) throw new Error('useWizardActions must be used within a WizardProvider');\n return context as IWizardActions<StepId>;\n}\n\n/**\n * Returns combined wizard state, actions, and derived errors.\n */\nexport function useWizardContext<T = any, StepId extends string = string>(): IWizardContext<\n T,\n StepId\n> {\n const state = useWizardState<T, StepId>();\n const actions = useWizardActions<StepId>();\n const store = useContext(WizardStoreContext) as IWizardStore<T, StepId>;\n const data = useWizardSelector((s: IWizardState<T, StepId>) => s.data);\n const allErrors = useWizardSelector((s: IWizardState<T, StepId>) => s.errors);\n const errors = useMemo(() => {\n const flat: Record<string, string> = {};\n Object.values(allErrors).forEach((stepErrors) => {\n Object.assign(flat, stepErrors as Record<string, string>);\n });\n return flat;\n }, [allErrors]);\n\n const { data: _d, errors: _e, ...stateProps } = state as any;\n return useMemo(\n () => ({\n ...stateProps,\n ...actions,\n data,\n allErrors,\n errors,\n store,\n }),\n [stateProps, actions, data, allErrors, errors, store]\n ) as IWizardContext<T, StepId>;\n}\n\n/**\n * Returns current step config.\n */\nexport function useWizardCurrentStep<T = any, StepId extends string = string>() {\n return useWizardSelector((s: IWizardState<T, StepId>) => s.currentStep);\n}\n\n/**\n * Returns active steps list.\n */\nexport function useWizardSteps<T = any, StepId extends string = string>() {\n return useWizardSelector((s: IWizardState<T, StepId>) => s.activeSteps);\n}\n\n/**\n * Returns frequently-used meta state with shallow equality.\n */\nexport function useWizardMeta<T = any, StepId extends string = string>() {\n return useWizardSelector(\n (s: IWizardState<T, StepId>) => ({\n currentStepId: s.currentStepId,\n currentStepIndex: s.currentStepIndex,\n isFirstStep: s.isFirstStep,\n isLastStep: s.isLastStep,\n isLoading: s.isLoading,\n isBusy: s.isBusy,\n isDirty: s.isDirty,\n progress: s.progress,\n activeStepsCount: s.activeStepsCount,\n goToStepResult: s.goToStepResult,\n }),\n { isEqual: shallowEqual }\n );\n}\n\n/**\n * Returns all errors by step (shallow-equal).\n */\nexport function useWizardAllErrors<T = any, StepId extends string = string>() {\n return useWizardSelector((s: IWizardState<T, StepId>) => s.errors, {\n isEqual: shallowEqual,\n });\n}\n\n/**\n * Returns flattened errors map (path -> message).\n */\nexport function useWizardFlatErrors<T = any, StepId extends string = string>() {\n const allErrors = useWizardAllErrors<T, StepId>();\n return useMemo(() => {\n const flat: Record<string, string> = {};\n Object.values(allErrors).forEach((stepErrors) => {\n Object.assign(flat, stepErrors as Record<string, string>);\n });\n return flat;\n }, [allErrors]);\n}\n","import {\n type IWizardConfig,\n type IWizardStore,\n type IStepConfig,\n getByPath,\n setByPath,\n} from '@wizzard-packages/core';\n\nexport interface StepDependenciesResult<T extends Record<string, any>, StepId extends string> {\n newData: T;\n hasClearing: boolean;\n clearedPaths: string[];\n statusChanged: boolean;\n nextCompletedSteps: Set<StepId>;\n nextVisitedSteps: Set<StepId>;\n}\n\nexport const applyStepDependencies = <T extends Record<string, any>, StepId extends string>(\n config: IWizardConfig<T, StepId>,\n store: IWizardStore<T, StepId>,\n baseData: T,\n changedPaths: string[]\n): StepDependenciesResult<T, StepId> => {\n let currentData = { ...baseData } as T;\n const allClearedPaths = new Set<string>();\n const snapshot = store.getSnapshot();\n const nextCompletedSteps = new Set(snapshot.completedSteps);\n const nextVisitedSteps = new Set(snapshot.visitedSteps);\n let statusChanged = false;\n\n const processDependencies = (paths: string[]) => {\n const newlyClearedPaths: string[] = [];\n\n config.steps.forEach((step: IStepConfig<T, StepId>) => {\n const isDependent = step.dependsOn?.some((p: string) =>\n paths.some((path) => path === p || p.startsWith(path + '.') || path.startsWith(p + '.'))\n );\n\n if (!isDependent) return;\n\n if (nextCompletedSteps.delete(step.id as StepId)) {\n statusChanged = true;\n }\n if (nextVisitedSteps.delete(step.id as StepId)) {\n statusChanged = true;\n }\n\n if (!step.clearData) return;\n\n if (typeof step.clearData === 'function') {\n const patch = step.clearData(currentData, paths);\n Object.keys(patch).forEach((key) => {\n if ((currentData as any)[key] !== (patch as any)[key]) {\n (currentData as any)[key] = (patch as any)[key];\n newlyClearedPaths.push(key);\n allClearedPaths.add(key);\n }\n });\n } else {\n const pathsToClear = Array.isArray(step.clearData) ? step.clearData : [step.clearData];\n pathsToClear.forEach((p: string) => {\n const val = getByPath(currentData, p);\n if (val !== undefined) {\n currentData = setByPath(currentData, p, undefined);\n newlyClearedPaths.push(p);\n allClearedPaths.add(p);\n }\n });\n }\n });\n\n if (newlyClearedPaths.length > 0) {\n processDependencies(newlyClearedPaths);\n }\n };\n\n processDependencies(changedPaths);\n\n return {\n newData: currentData,\n hasClearing: allClearedPaths.size > 0,\n clearedPaths: Array.from(allClearedPaths),\n statusChanged,\n nextCompletedSteps,\n nextVisitedSteps,\n };\n};\n","import { useWizardContext } from '../context/WizardContext';\nimport type { IWizardContext } from '../types';\n\n/**\n * Alias for useWizardContext.\n */\nexport const useWizard = <T = any, StepId extends string = string>(): IWizardContext<T, StepId> => {\n return useWizardContext<T, StepId>();\n};\n","import React from 'react';\nimport {\n WizardProvider as BaseWizardProvider,\n useWizardContext as useBaseWizardContext,\n useWizardValue as useBaseWizardValue,\n useWizardSelector as useBaseWizardSelector,\n useWizardError as useBaseWizardError,\n useWizardActions as useBaseWizardActions,\n useWizardState as useBaseWizardState,\n} from './context/WizardContext';\nimport { useWizard as useBaseWizard } from './hooks/useWizard';\nimport type {\n IWizardConfig,\n IWizardContext,\n IStepConfig,\n Path,\n PathValue,\n} from '@wizzard-packages/core';\nimport type { IWizardActionsTyped } from './types';\n\n/**\n * createWizardFactory\n *\n * Creates a strongly-typed set of Wizard components and hooks for a specific data schema.\n *\n * @template TSchema The shape of your wizard's global data state\n */\nexport function createWizardFactory<\n TSchema extends Record<string, any>,\n StepId extends string = string,\n>() {\n const WizardProvider = ({\n config,\n initialData,\n initialStepId,\n children,\n }: {\n config: IWizardConfig<TSchema, StepId>;\n initialData?: Partial<TSchema>;\n initialStepId?: StepId;\n children: React.ReactNode;\n }) => {\n return (\n <BaseWizardProvider<TSchema, StepId>\n config={config}\n initialData={initialData as TSchema}\n initialStepId={initialStepId}\n >\n {children}\n </BaseWizardProvider>\n );\n };\n\n const useWizard = (): IWizardContext<TSchema, StepId> => {\n return useBaseWizard<TSchema, StepId>() as any;\n };\n\n const useWizardContext = () => {\n return useBaseWizardContext<TSchema, StepId>() as any;\n };\n\n const useWizardValue = <P extends Path<TSchema>>(\n path: P,\n options?: {\n isEqual?: (a: PathValue<TSchema, P>, b: PathValue<TSchema, P>) => boolean;\n }\n ): PathValue<TSchema, P> => {\n return useBaseWizardValue<PathValue<TSchema, P>>(path as string, options);\n };\n\n const useWizardField = <P extends Path<TSchema>>(\n path: P,\n options?: {\n isEqual?: (a: PathValue<TSchema, P>, b: PathValue<TSchema, P>) => boolean;\n }\n ): [PathValue<TSchema, P>, (value: PathValue<TSchema, P>) => void] => {\n const value = useWizardValue(path, options);\n const { setData } = useWizardActions();\n return [value, (next) => setData(path, next)];\n };\n\n const useWizardSelector = <TSelected,>(\n selector: (state: IWizardContext<TSchema, StepId>) => TSelected,\n options?: { isEqual?: (a: TSelected, b: TSelected) => boolean }\n ): TSelected => {\n return useBaseWizardSelector<TSelected>(selector as any, options);\n };\n\n const useWizardError = <P extends Path<TSchema>>(path: P): string | undefined => {\n return useBaseWizardError(path as string);\n };\n\n const useWizardActions = () => {\n return useBaseWizardActions<StepId>() as IWizardActionsTyped<TSchema, StepId>;\n };\n\n const useWizardState = () => {\n return useBaseWizardState<TSchema, StepId>();\n };\n\n const useBreadcrumbs = () => {\n return useBaseWizardState<TSchema, StepId>().breadcrumbs;\n };\n\n const createStep = (config: IStepConfig<TSchema, StepId>) => config;\n\n return {\n WizardProvider,\n useWizard,\n useWizardContext,\n useWizardValue,\n useWizardField,\n useWizardSelector,\n useWizardError,\n useWizardActions,\n useWizardState,\n useBreadcrumbs,\n createStep,\n };\n}\n","import React, { useMemo, Suspense } from 'react';\nimport { useWizardContext } from '../context/WizardContext';\n\n/**\n * Props for rendering the current step component.\n */\nexport interface WizardStepRendererProps {\n wrapper?: React.ComponentType<{ children: React.ReactNode; key: string }>;\n fallback?: React.ReactNode;\n}\n\n/**\n * Renders the active step component with optional wrapper and suspense fallback.\n */\nexport const WizardStepRenderer: React.FC<WizardStepRendererProps> = ({\n wrapper: Wrapper,\n fallback = null,\n}) => {\n const { currentStep } = useWizardContext();\n\n const StepComponent = useMemo(() => {\n if (!currentStep?.component) return null;\n return currentStep.component;\n }, [currentStep]);\n\n if (!currentStep || !StepComponent) {\n return null;\n }\n\n const content = (\n <Suspense fallback={fallback}>\n <StepComponent />\n </Suspense>\n );\n\n if (Wrapper) {\n return <Wrapper key={currentStep.id}>{content}</Wrapper>;\n }\n\n return content;\n};\n","import { useCallback, useRef, useSyncExternalStore } from 'react';\nimport {\n type IWizardConfig,\n type IPersistenceAdapter,\n type IWizardState,\n type IWizardStore,\n type IStepConfig,\n type Path,\n type PathValue,\n WizardStore,\n getByPath,\n setByPath,\n} from '@wizzard-packages/core';\nimport { MemoryAdapter } from '@wizzard-packages/persistence';\nimport type { IWizardActionsTyped } from './types';\nimport { applyStepDependencies } from './internal/dependencies';\n\nconst UNSET = Symbol('wizard_store_unset');\nconst META_KEY = '__wizzard_meta__';\n\nexport interface CreateWizardStoreOptions<T, StepId extends string = string> {\n config: IWizardConfig<T, StepId>;\n initialData?: T;\n initialStepId?: StepId;\n}\n\nexport interface WizardStoreBundle<T, StepId extends string = string> {\n store: IWizardStore<T, StepId>;\n actions: IWizardActionsTyped<T, StepId>;\n}\n\nconst applyStoredMeta = <T, StepId extends string>(\n store: IWizardStore<T, StepId>,\n adapter: IPersistenceAdapter\n) => {\n const meta = adapter.getStep<{\n currentStepId: string;\n visited: string[];\n completed: string[];\n history: string[];\n }>(META_KEY);\n\n if (!meta) return;\n\n if (meta.currentStepId) {\n store.dispatch({\n type: 'SET_CURRENT_STEP_ID',\n payload: { stepId: meta.currentStepId as StepId },\n });\n }\n if (meta.visited) {\n store.dispatch({\n type: 'SET_VISITED_STEPS',\n payload: { steps: new Set(meta.visited as StepId[]) },\n });\n }\n if (meta.completed) {\n store.dispatch({\n type: 'SET_COMPLETED_STEPS',\n payload: { steps: new Set(meta.completed as StepId[]) },\n });\n }\n if (meta.history) {\n store.dispatch({\n type: 'SET_HISTORY',\n payload: { history: meta.history as StepId[] },\n });\n }\n};\n\nconst ensureInitialStep = <T, StepId extends string>(\n store: IWizardStore<T, StepId>,\n activeSteps: IStepConfig<T, StepId>[],\n initialStepId?: StepId\n) => {\n const snapshot = store.getSnapshot();\n if (snapshot.currentStepId || activeSteps.length === 0) return;\n\n const startId =\n initialStepId && activeSteps.some((s) => s.id === initialStepId)\n ? initialStepId\n : activeSteps[0].id;\n\n store.dispatch({\n type: 'SET_CURRENT_STEP_ID',\n payload: { stepId: startId as StepId },\n });\n\n if (snapshot.history.length === 0) {\n store.dispatch({\n type: 'SET_HISTORY',\n payload: { history: [startId as StepId] },\n });\n }\n\n const currentVisited = new Set(snapshot.visitedSteps);\n if (!currentVisited.has(startId as StepId)) {\n currentVisited.add(startId as StepId);\n store.dispatch({\n type: 'SET_VISITED_STEPS',\n payload: { steps: currentVisited },\n });\n }\n};\n\nconst resolveAndSetActiveSteps = async <T, StepId extends string>(\n store: IWizardStore<T, StepId>,\n data: T,\n initialStepId?: StepId\n) => {\n const resolved = await store.resolveActiveSteps(data);\n store.dispatch({\n type: 'SET_ACTIVE_STEPS',\n payload: { steps: resolved as any },\n });\n ensureInitialStep(store, resolved, initialStepId);\n\n const snapshot = store.getSnapshot();\n if (resolved.length > 0 && snapshot.isLoading) {\n store.updateMeta({ isLoading: false });\n }\n};\n\nconst createWizardActions = <T extends Record<string, any>, StepId extends string>(\n store: IWizardStore<T, StepId>,\n config: IWizardConfig<T, StepId>,\n persistenceAdapter: IPersistenceAdapter,\n initialData: T\n): IWizardActionsTyped<T, StepId> => {\n let currentConfig = config;\n const validationDebounceRef = { current: null as ReturnType<typeof setTimeout> | null };\n const stepsMap = new Map<StepId, IStepConfig<T, StepId>>();\n currentConfig.steps.forEach((step) => stepsMap.set(step.id as StepId, step));\n\n const resolveActiveStepsHelper = (data: T) => store.resolveActiveSteps(data);\n const validateStep = (stepId: StepId) => store.validateStep(stepId);\n\n const setData = <P extends Path<T>>(\n path: P,\n value: PathValue<T, P>,\n options?: { debounceValidation?: number }\n ) => {\n const prevData = store.getSnapshot().data;\n if (getByPath(prevData, path as string) === value) return;\n\n const baseData = setByPath(prevData, path as string, value);\n const { newData, hasClearing, statusChanged, nextCompletedSteps, nextVisitedSteps } =\n applyStepDependencies(currentConfig, store, baseData, [path as string]);\n\n if (statusChanged) {\n store.dispatch({\n type: 'SET_COMPLETED_STEPS',\n payload: { steps: nextCompletedSteps },\n });\n store.dispatch({\n type: 'SET_VISITED_STEPS',\n payload: { steps: nextVisitedSteps },\n });\n }\n\n if (!hasClearing) {\n store.dispatch({\n type: 'SET_DATA',\n payload: {\n path: path as string,\n value,\n options: { ...options, __from_set_data__: true },\n },\n });\n } else {\n store.dispatch({\n type: 'UPDATE_DATA',\n payload: {\n data: newData,\n options: { replace: true, __from_set_data__: true, path },\n },\n });\n }\n\n const snapshot = store.getSnapshot();\n const currentStepId = snapshot.currentStepId as StepId;\n if (currentStepId) {\n store.deleteError(currentStepId, path as string);\n const step = stepsMap.get(currentStepId);\n const mode = step?.validationMode || currentConfig.validationMode || 'onStepChange';\n\n if (mode === 'onChange') {\n const debounceMs =\n options?.debounceValidation ?? currentConfig.validationDebounceTime ?? 300;\n if (validationDebounceRef.current) {\n clearTimeout(validationDebounceRef.current);\n }\n validationDebounceRef.current = setTimeout(() => {\n void validateStep(currentStepId);\n }, debounceMs);\n }\n }\n };\n\n const updateData = (data: Partial<T>, options?: { replace?: boolean; persist?: boolean }) => {\n const prev = store.getSnapshot().data;\n const baseData = (options?.replace ? (data as T) : { ...prev, ...data }) as T;\n const { newData, statusChanged, nextCompletedSteps, nextVisitedSteps } = applyStepDependencies(\n currentConfig,\n store,\n baseData,\n Object.keys(data)\n );\n\n if (statusChanged) {\n store.dispatch({\n type: 'SET_COMPLETED_STEPS',\n payload: { steps: nextCompletedSteps },\n });\n store.dispatch({\n type: 'SET_VISITED_STEPS',\n payload: { steps: nextVisitedSteps },\n });\n }\n\n store.update(newData as T, Object.keys(data));\n if (options?.persist) {\n store.save(store.getSnapshot().currentStepId as StepId);\n }\n };\n\n const reset = () => {\n store.setInitialData(initialData || ({} as T));\n store.update((initialData || ({} as T)) as T);\n store.updateErrors({} as Record<StepId, Record<string, string>>);\n store.dispatch({\n type: 'SET_VISITED_STEPS',\n payload: { steps: new Set() },\n });\n store.dispatch({\n type: 'SET_COMPLETED_STEPS',\n payload: { steps: new Set() },\n });\n store.dispatch({\n type: 'SET_ERROR_STEPS',\n payload: { steps: new Set() },\n });\n\n const snapshot = store.getSnapshot();\n if (snapshot.activeSteps.length > 0) {\n const startId = snapshot.activeSteps[0].id;\n store.dispatch({\n type: 'SET_CURRENT_STEP_ID',\n payload: { stepId: startId as StepId },\n });\n store.dispatch({\n type: 'SET_HISTORY',\n payload: { history: [startId as StepId] },\n });\n } else {\n store.dispatch({\n type: 'SET_CURRENT_STEP_ID',\n payload: { stepId: '' as StepId },\n });\n store.dispatch({\n type: 'SET_HISTORY',\n payload: { history: [] },\n });\n }\n\n persistenceAdapter.clear();\n currentConfig.analytics?.onEvent('wizard_reset', { data: initialData } as any);\n };\n\n const goToStep = (\n stepId: StepId,\n providedActiveSteps?: any[],\n options?: { validate?: boolean }\n ) => {\n return store.goToStep(stepId, {\n validate: options?.validate ?? true,\n providedActiveSteps: providedActiveSteps as any,\n });\n };\n\n const goToNextStep = async () => {\n const snapshot = store.getSnapshot();\n const currentStepId = snapshot.currentStepId as StepId;\n if (!currentStepId) return;\n\n const step = stepsMap.get(currentStepId);\n const shouldVal = step?.autoValidate ?? currentConfig.autoValidate ?? !!step?.validationAdapter;\n\n if (shouldVal) {\n const ok = await validateStep(currentStepId);\n if (!ok) return;\n }\n\n const resolvedSteps = await resolveActiveStepsHelper(snapshot.data);\n const idx = resolvedSteps.findIndex((s) => s.id === currentStepId);\n\n if (idx !== -1 && idx < resolvedSteps.length - 1) {\n const nextStepId = resolvedSteps[idx + 1].id;\n const success = await goToStep(nextStepId as StepId, resolvedSteps as any, {\n validate: false,\n });\n if (success) {\n const currentSnapshot = store.getSnapshot();\n if (!currentSnapshot.errorSteps.has(currentStepId)) {\n const nextComp = new Set(currentSnapshot.completedSteps);\n nextComp.add(currentStepId);\n store.dispatch({\n type: 'SET_COMPLETED_STEPS',\n payload: { steps: nextComp },\n });\n }\n }\n }\n };\n\n const goToPrevStep = async () => {\n const snapshot = store.getSnapshot();\n const idx = snapshot.activeSteps.findIndex((s) => s.id === snapshot.currentStepId);\n if (idx > 0) {\n await goToStep(snapshot.activeSteps[idx - 1].id as StepId);\n }\n };\n\n const setStepData = (_stepId: StepId, data: any) => {\n const next = { ...store.getSnapshot().data, ...data };\n store.update(next as T, Object.keys(data));\n };\n\n const handleStepChange = (field: string, value: any) => {\n if (store.getSnapshot().currentStepId) {\n setData(field as Path<T>, value as any);\n }\n };\n\n const validateAll = async () => {\n const result = await store.validateAll();\n return result;\n };\n\n const save = (ids?: StepId | StepId[] | boolean) => {\n if (ids === true) {\n currentConfig.steps.forEach((s) => store.save(s.id as StepId));\n } else if (!ids) {\n store.save();\n } else {\n (Array.isArray(ids) ? ids : [ids]).forEach((id) => store.save(id as StepId));\n }\n };\n\n const clearStorage = () => persistenceAdapter.clear();\n\n const getData = <P extends Path<T>>(path: P, defaultValue?: PathValue<T, P>) => {\n return getByPath(store.getSnapshot().data, path as string, defaultValue) as PathValue<T, P>;\n };\n\n const updateConfig = (nextConfig: Partial<IWizardConfig<any, StepId>>) => {\n currentConfig = { ...currentConfig, ...nextConfig } as IWizardConfig<T, StepId>;\n stepsMap.clear();\n currentConfig.steps.forEach((step) => stepsMap.set(step.id as StepId, step));\n store.updateMeta({ config: currentConfig as any });\n };\n\n return {\n goToNextStep,\n goToPrevStep,\n goToStep,\n setStepData,\n handleStepChange,\n validateStep,\n validateAll,\n save,\n clearStorage,\n reset,\n setData,\n updateData,\n getData,\n updateConfig,\n };\n};\n\n/**\n * Create a standalone store + actions bundle without React Context.\n */\nexport const createWizardStore = <T extends Record<string, any>, StepId extends string = string>(\n options: CreateWizardStoreOptions<T, StepId>\n): WizardStoreBundle<T, StepId> => {\n const initialData = (options.initialData || ({} as T)) as T;\n const store = new WizardStore<T, StepId>(initialData, options.config.middlewares);\n const persistenceAdapter = options.config.persistence?.adapter || new MemoryAdapter();\n\n store.injectPersistence(persistenceAdapter);\n store.dispatch({\n type: 'INIT',\n payload: { data: initialData, config: options.config as any },\n });\n store.hydrate();\n applyStoredMeta(store, persistenceAdapter);\n void resolveAndSetActiveSteps(store, store.getSnapshot().data, options.initialStepId);\n\n return {\n store,\n actions: createWizardActions(store, options.config, persistenceAdapter, initialData),\n };\n};\n\n/**\n * Hook: read the full store snapshot without React Context.\n */\nexport const useWizardStoreState = <T, StepId extends string = string>(\n store: IWizardStore<T, StepId>\n): IWizardState<T, StepId> => {\n return useSyncExternalStore(store.subscribe, store.getSnapshot, store.getSnapshot);\n};\n\n/**\n * Hook: subscribe to a value path without React Context.\n */\nexport const useWizardStoreValue = <T, P extends Path<T>>(\n store: IWizardStore<T, any>,\n path: P,\n options?: { isEqual?: (a: PathValue<T, P>, b: PathValue<T, P>) => boolean }\n): PathValue<T, P> => {\n const lastStateRef = useRef<any>(UNSET);\n const lastValueRef = useRef<any>(UNSET);\n\n const getSnapshot = useCallback(() => {\n const data = store.getSnapshot().data;\n if (data === lastStateRef.current && lastValueRef.current !== UNSET) {\n return lastValueRef.current;\n }\n\n const value = getByPath(data, path as string) as PathValue<T, P>;\n if (\n lastValueRef.current !== UNSET &&\n (options?.isEqual || Object.is)(lastValueRef.current, value)\n ) {\n lastStateRef.current = data;\n return lastValueRef.current;\n }\n\n lastStateRef.current = data;\n lastValueRef.current = value;\n return value;\n }, [store, path, options?.isEqual]);\n\n return useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot);\n};\n\n/**\n * Hook: value + setter for a path without React Context.\n */\nexport const useWizardStoreField = <T, P extends Path<T>>(\n store: IWizardStore<T, any>,\n setData: (path: P, value: PathValue<T, P>) => void,\n path: P,\n options?: { isEqual?: (a: PathValue<T, P>, b: PathValue<T, P>) => boolean }\n): [PathValue<T, P>, (value: PathValue<T, P>) => void] => {\n const value = useWizardStoreValue<T, P>(store, path, options);\n const setValue = useCallback(\n (next: PathValue<T, P>) => {\n setData(path, next);\n },\n [setData, path]\n );\n\n return [value, setValue];\n};\n\n/**\n * Hook: read the first error for a path without React Context.\n */\nexport const useWizardStoreError = (\n store: IWizardStore<any, any>,\n path: string\n): string | undefined => {\n const getSnapshot = useCallback(() => {\n const errors = store.getSnapshot().errors;\n for (const [_, stepErrors] of Object.entries(errors)) {\n const typed = stepErrors as Record<string, string>;\n if (typed[path]) return typed[path];\n }\n return undefined;\n }, [store, path]);\n\n return useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot);\n};\n\n/**\n * Hook: select derived state without React Context.\n */\nexport const useWizardStoreSelector = <TSelected>(\n store: IWizardStore<any, any>,\n selector: (state: any) => TSelected,\n options?: { isEqual?: (a: TSelected, b: TSelected) => boolean }\n): TSelected => {\n const lastResultRef = useRef<TSelected | typeof UNSET>(UNSET);\n\n const getSnapshot = useCallback(() => {\n const full = store.getSnapshot();\n const res = selector(full);\n\n if (\n lastResultRef.current !== UNSET &&\n (options?.isEqual || Object.is)(lastResultRef.current, res)\n ) {\n return lastResultRef.current;\n }\n\n lastResultRef.current = res;\n return res;\n }, [store, selector, options?.isEqual]);\n\n return useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot);\n};\n\n/**\n * Helper: build store-bound hooks for a single store instance.\n */\nexport const createWizardHooks = <T, StepId extends string = string>(\n store: IWizardStore<T, StepId>,\n actions?: IWizardActionsTyped<T, StepId>\n) => ({\n useWizardState: () => useWizardStoreState<T, StepId>(store),\n useWizardValue: <P extends Path<T>>(\n path: P,\n options?: { isEqual?: (a: PathValue<T, P>, b: PathValue<T, P>) => boolean }\n ) => useWizardStoreValue<T, P>(store, path, options),\n useWizardField: <P extends Path<T>>(\n path: P,\n options?: { isEqual?: (a: PathValue<T, P>, b: PathValue<T, P>) => boolean }\n ) => {\n if (!actions) {\n throw new Error('useWizardField requires actions. Pass actions to createWizardHooks.');\n }\n return useWizardStoreField<T, P>(store, actions.setData, path, options);\n },\n useWizardError: (path: string) => useWizardStoreError(store, path),\n useWizardSelector: <TSelected>(\n selector: (state: IWizardState<T, StepId>) => TSelected,\n options?: { isEqual?: (a: TSelected, b: TSelected) => boolean }\n ) => useWizardStoreSelector<TSelected>(store, selector, options),\n});\n"],"mappings":"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","names":["import_core","META_KEY","data","currentStepId","activeSteps","activeStepsIndexMap","stepsMap","import_jsx_runtime","WizardProvider","useWizard","useWizardContext","useWizardValue","useWizardField","useWizardActions","useWizardSelector","useWizardError","useWizardState","import_react","import_jsx_runtime","import_react","import_core","import_persistence","UNSET","import_core"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/factory.tsx","../src/context/WizardContext.tsx","../src/internal/dependencies.ts","../src/hooks/useWizard.ts","../src/components/WizardStepRenderer.tsx","../src/store.ts"],"sourcesContent":["export * from './factory';\nexport * from './context/WizardContext';\nexport * from './components/WizardStepRenderer';\nexport * from './hooks/useWizard';\nexport * from './store';\nexport * from './types';\n\n// Re-export core for convenience and backward compatibility\nexport { WizardStore } from '@wizzard-packages/core';\nexport { loggerMiddleware } from '@wizzard-packages/middleware';\nexport type {\n IWizardState,\n IWizardActions,\n IWizardContext,\n IStepConfig,\n IWizardConfig,\n ValidationResult,\n IValidatorAdapter,\n PersistenceMode,\n WizardMiddleware,\n} from '@wizzard-packages/core';\n","import {\n type IStepConfig,\n type IWizardConfig,\n type IWizardContext,\n type IWizardState,\n type Path,\n type PathValue,\n shallowEqual,\n} from '@wizzard-packages/core';\nimport React from 'react';\nimport {\n WizardProvider as BaseWizardProvider,\n useWizardActions as useBaseWizardActions,\n useWizardContext as useBaseWizardContext,\n useWizardError as useBaseWizardError,\n useWizardSelector as useBaseWizardSelector,\n useWizardState as useBaseWizardState,\n useWizardValue as useBaseWizardValue,\n} from './context/WizardContext';\nimport { useWizard as useBaseWizard } from './hooks/useWizard';\nimport type { IWizardActionsTyped } from './types';\n\n/**\n * createWizardFactory\n *\n * Creates a strongly-typed set of Wizard components and hooks for a specific data schema.\n *\n * @template TSchema The shape of your wizard's global data state\n */\nexport function createWizardFactory<\n TSchema extends Record<string, any>,\n StepId extends string = string,\n>() {\n const WizardProvider = ({\n config,\n initialData,\n initialStepId,\n children,\n }: {\n config: IWizardConfig<TSchema, StepId>;\n initialData?: Partial<TSchema>;\n initialStepId?: StepId;\n children: React.ReactNode;\n }) => {\n return (\n <BaseWizardProvider<TSchema, StepId>\n config={config}\n initialData={initialData as TSchema}\n initialStepId={initialStepId}\n >\n {children}\n </BaseWizardProvider>\n );\n };\n\n const useWizard = (): IWizardContext<TSchema, StepId> => {\n return useBaseWizard<TSchema, StepId>() as any;\n };\n\n const useWizardContext = () => {\n return useBaseWizardContext<TSchema, StepId>() as any;\n };\n\n const useWizardValue = <P extends Path<TSchema>>(\n path: P,\n options?:\n | { isEqual?: (a: PathValue<TSchema, P>, b: PathValue<TSchema, P>) => boolean }\n | ((a: PathValue<TSchema, P>, b: PathValue<TSchema, P>) => boolean)\n ): PathValue<TSchema, P> => {\n return useBaseWizardValue<PathValue<TSchema, P>>(path as string, options as any);\n };\n\n const useWizardField = <P extends Path<TSchema>>(\n path: P,\n options?:\n | { isEqual?: (a: PathValue<TSchema, P>, b: PathValue<TSchema, P>) => boolean }\n | ((a: PathValue<TSchema, P>, b: PathValue<TSchema, P>) => boolean)\n ): [PathValue<TSchema, P>, (value: PathValue<TSchema, P>) => void] => {\n const value = useWizardValue(path, options);\n const { setData } = useWizardActions();\n return [value, (next) => setData(path, next)];\n };\n\n const useWizardSelector = <TSelected,>(\n selector: (state: IWizardState<TSchema, StepId>) => TSelected,\n options?:\n | { isEqual?: (a: TSelected, b: TSelected) => boolean }\n | ((a: TSelected, b: TSelected) => boolean)\n ): TSelected => {\n return useBaseWizardSelector<TSelected>(selector as any, options as any);\n };\n\n const useWizardShallowSelector = <TSelected,>(\n selector: (state: IWizardState<TSchema, StepId>) => TSelected\n ): TSelected => {\n return useWizardSelector(selector, shallowEqual);\n };\n\n const useWizardError = <P extends Path<TSchema>>(path: P): string | undefined => {\n return useBaseWizardError(path as string);\n };\n\n const useWizardActions = () => {\n return useBaseWizardActions<StepId>() as IWizardActionsTyped<TSchema, StepId>;\n };\n\n const useWizardState = () => {\n return useBaseWizardState<TSchema, StepId>();\n };\n\n const useBreadcrumbs = () => {\n return useBaseWizardState<TSchema, StepId>().breadcrumbs;\n };\n\n const createStep = (config: IStepConfig<TSchema, StepId>) => config;\n\n return {\n WizardProvider,\n useWizard,\n useWizardContext,\n useWizardValue,\n useWizardField,\n useWizardSelector,\n useWizardShallowSelector,\n useWizardError,\n useWizardActions,\n useWizardState,\n useBreadcrumbs,\n createStep,\n };\n}\n","import {\n type IPersistenceAdapter,\n type IStepConfig,\n type IWizardActions,\n type IWizardConfig,\n type IWizardContext,\n type IWizardState,\n type IWizardStore,\n type Path,\n type PathValue,\n type WizardEventHandler,\n type WizardEventName,\n WizardStore,\n getByPath,\n setByPath,\n} from '@wizzard-packages/core';\nimport { MemoryAdapter } from '@wizzard-packages/persistence';\nimport React, {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n} from 'react';\nimport { applyStepDependencies } from '../internal/dependencies';\n\nconst UNSET = Symbol('wizard_unset');\n\nconst shallowEqual = (a: Record<string, any> | null, b: Record<string, any> | null) => {\n if (a === b) return true;\n if (!a || !b) return false;\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) return false;\n for (const key of aKeys) {\n if (!Object.is(a[key], b[key])) return false;\n }\n return true;\n};\n\nconst WizardStateContext = createContext<IWizardState<any, any> | undefined>(undefined);\nconst WizardActionsContext = createContext<IWizardActions<any> | undefined>(undefined);\nconst WizardStoreContext = createContext<IWizardStore<any, any> | undefined>(undefined);\n\n/**\n * Props for WizardProvider.\n */\nexport interface WizardProviderProps<T, StepId extends string> {\n config: IWizardConfig<T, StepId>;\n initialData?: T;\n initialStepId?: StepId;\n children: React.ReactNode;\n}\n\n/**\n * Component that provides the wizard context to its children.\n */\nexport function WizardProvider<T extends Record<string, any>, StepId extends string = string>({\n config,\n initialData,\n initialStepId,\n children,\n}: WizardProviderProps<T, StepId>) {\n const [localConfig, setLocalConfig] = useState<IWizardConfig<T, StepId>>(config);\n\n const storeRef = useRef<IWizardStore<T, StepId>>(null as unknown as IWizardStore<T, StepId>);\n\n if (!storeRef.current) {\n storeRef.current = new WizardStore<T, StepId>((initialData || {}) as T, config.middlewares);\n }\n\n const isInitialized = useRef(false);\n\n const persistenceAdapter = useMemo<IPersistenceAdapter>(() => {\n return localConfig.persistence?.adapter || new MemoryAdapter();\n }, [localConfig.persistence?.adapter]);\n\n const persistenceMode = localConfig.persistence?.mode || 'onStepChange';\n const META_KEY = '__wizzard_meta__';\n\n const snapshot = useSyncExternalStore<IWizardState<T, StepId>>(\n storeRef.current.subscribe,\n storeRef.current.getSnapshot,\n storeRef.current.getSnapshot\n );\n\n const {\n activeSteps,\n currentStepId,\n history,\n visitedSteps,\n completedSteps,\n data,\n errors: _errors,\n } = snapshot;\n\n const stepsMap = useMemo(() => {\n const map = new Map<StepId, IStepConfig<T, StepId>>();\n localConfig.steps.forEach((step: IStepConfig<T, StepId>) => map.set(step.id, step));\n return map;\n }, [localConfig.steps]);\n\n useEffect(() => {\n setLocalConfig(config);\n }, [config]);\n\n const activeStepsIndexMap = useMemo(() => {\n const map = new Map<StepId, number>();\n activeSteps.forEach((s: IStepConfig<T, StepId>, i: number) => map.set(s.id, i));\n return map;\n }, [activeSteps]);\n\n const stateRef = useRef({\n config: localConfig,\n stepsMap,\n activeSteps,\n activeStepsIndexMap,\n visitedSteps,\n completedSteps,\n persistenceMode,\n persistenceAdapter,\n currentStepId,\n history,\n });\n\n const validationDebounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n stateRef.current = {\n config: localConfig,\n stepsMap,\n activeSteps,\n activeStepsIndexMap,\n visitedSteps,\n completedSteps,\n persistenceMode,\n persistenceAdapter,\n currentStepId,\n history,\n };\n });\n\n useEffect(() => {\n return () => {\n if (validationDebounceRef.current) {\n clearTimeout(validationDebounceRef.current);\n }\n };\n }, []);\n\n const trackEvent = useCallback<WizardEventHandler<StepId>>(\n (name: WizardEventName, payload: any) => {\n localConfig.analytics?.onEvent(name as any, payload);\n },\n [localConfig.analytics]\n );\n\n const resolveActiveStepsHelper = useCallback(\n (data: T) => storeRef.current.resolveActiveSteps(data),\n []\n );\n\n const validateStep = useCallback((stepId: StepId) => storeRef.current.validateStep(stepId), []);\n\n const goToStep = useCallback(\n async (\n stepId: StepId,\n providedActiveSteps?: IStepConfig<T, StepId>[],\n options: { validate?: boolean } = { validate: true }\n ): Promise<boolean> => {\n return storeRef.current.goToStep(stepId, {\n validate: options.validate,\n providedActiveSteps: providedActiveSteps as any,\n });\n },\n []\n );\n\n const goToNextStep = useCallback(async () => {\n const { currentStepId } = stateRef.current;\n if (!currentStepId) return;\n\n const currentData = storeRef.current.getSnapshot().data;\n const step = stepsMap.get(currentStepId as StepId);\n\n const shouldVal = step?.autoValidate ?? localConfig.autoValidate ?? !!step?.validationAdapter;\n\n if (shouldVal) {\n const ok = await validateStep(currentStepId as StepId);\n if (!ok) return;\n }\n\n const resolvedSteps = await resolveActiveStepsHelper(currentData);\n const idx = resolvedSteps.findIndex((s: IStepConfig<T, StepId>) => s.id === currentStepId);\n\n if (idx !== -1 && idx < resolvedSteps.length - 1) {\n const nextStepId = resolvedSteps[idx + 1].id;\n const success = await goToStep(nextStepId as any, resolvedSteps as any, {\n validate: false,\n });\n if (success) {\n const currentSnapshot = storeRef.current.getSnapshot();\n if (!currentSnapshot.errorSteps.has(currentStepId as StepId)) {\n const nextComp = new Set(currentSnapshot.completedSteps);\n nextComp.add(currentStepId as StepId);\n storeRef.current.dispatch({\n type: 'SET_COMPLETED_STEPS',\n payload: { steps: nextComp },\n });\n }\n }\n }\n }, [goToStep, resolveActiveStepsHelper, validateStep, stepsMap, localConfig]);\n\n const goToPrevStep = useCallback(async () => {\n const { currentStepId, activeSteps, activeStepsIndexMap } = stateRef.current;\n const idx = activeStepsIndexMap.get(currentStepId as StepId) ?? -1;\n if (idx > 0) await goToStep(activeSteps[idx - 1].id as any);\n }, [goToStep]);\n\n const setData = useCallback(\n (path: string, value: any, options?: { debounceValidation?: number }) => {\n const { stepsMap, currentStepId } = stateRef.current;\n const prevData = storeRef.current.getSnapshot().data;\n if (getByPath(prevData, path) === value) return;\n\n const baseData = setByPath(prevData, path, value);\n const { newData, hasClearing, statusChanged, nextCompletedSteps, nextVisitedSteps } =\n applyStepDependencies(localConfig, storeRef.current, baseData, [path]);\n\n if (statusChanged) {\n storeRef.current.dispatch({\n type: 'SET_COMPLETED_STEPS',\n payload: { steps: nextCompletedSteps },\n });\n storeRef.current.dispatch({\n type: 'SET_VISITED_STEPS',\n payload: { steps: nextVisitedSteps },\n });\n }\n\n if (!hasClearing) {\n storeRef.current.dispatch({\n type: 'SET_DATA',\n payload: {\n path,\n value,\n options: { ...options, __from_set_data__: true },\n },\n });\n } else {\n storeRef.current.dispatch({\n type: 'UPDATE_DATA',\n payload: {\n data: newData,\n options: { replace: true, __from_set_data__: true, path },\n },\n });\n }\n\n if (currentStepId) {\n storeRef.current.deleteError(currentStepId as StepId, path);\n const step = stepsMap.get(currentStepId as StepId);\n const mode = step?.validationMode || localConfig.validationMode || 'onStepChange';\n\n if (mode === 'onChange') {\n const debounceMs =\n options?.debounceValidation ?? localConfig.validationDebounceTime ?? 300;\n if (validationDebounceRef.current) {\n clearTimeout(validationDebounceRef.current);\n }\n validationDebounceRef.current = setTimeout(() => {\n validateStep(currentStepId as StepId);\n }, debounceMs);\n }\n }\n },\n [localConfig, validateStep]\n );\n\n const updateData = useCallback(\n (data: Partial<T>, options?: { replace?: boolean; persist?: boolean }) => {\n const prev = storeRef.current.getSnapshot().data;\n const baseData = (options?.replace ? (data as T) : { ...prev, ...data }) as T;\n\n const { newData, statusChanged, nextCompletedSteps, nextVisitedSteps } =\n applyStepDependencies(localConfig, storeRef.current, baseData, Object.keys(data));\n\n if (statusChanged) {\n storeRef.current.dispatch({\n type: 'SET_COMPLETED_STEPS',\n payload: { steps: nextCompletedSteps },\n });\n storeRef.current.dispatch({\n type: 'SET_VISITED_STEPS',\n payload: { steps: nextVisitedSteps },\n });\n }\n\n storeRef.current.update(newData as T, Object.keys(data));\n if (options?.persist) {\n if (storeRef.current.save) {\n storeRef.current.save(storeRef.current.getSnapshot().currentStepId as StepId);\n }\n }\n },\n [localConfig]\n );\n\n const reset = useCallback(() => {\n storeRef.current.setInitialData(initialData || ({} as T));\n storeRef.current.update((initialData || {}) as T);\n storeRef.current.updateErrors({} as Record<StepId, Record<string, string>>);\n storeRef.current.dispatch({\n type: 'SET_VISITED_STEPS',\n payload: { steps: new Set() },\n });\n storeRef.current.dispatch({\n type: 'SET_COMPLETED_STEPS',\n payload: { steps: new Set() },\n });\n storeRef.current.dispatch({\n type: 'SET_ERROR_STEPS',\n payload: { steps: new Set() },\n });\n if (activeSteps.length > 0) {\n const startId = activeSteps[0].id;\n storeRef.current.dispatch({\n type: 'SET_CURRENT_STEP_ID',\n payload: { stepId: startId as StepId },\n });\n storeRef.current.dispatch({\n type: 'SET_HISTORY',\n payload: { history: [startId as StepId] },\n });\n } else {\n storeRef.current.dispatch({\n type: 'SET_CURRENT_STEP_ID',\n payload: { stepId: '' as StepId },\n });\n storeRef.current.dispatch({\n type: 'SET_HISTORY',\n payload: { history: [] },\n });\n }\n persistenceAdapter.clear();\n trackEvent('wizard_reset', { data: initialData } as any);\n }, [initialData, activeSteps, persistenceAdapter, trackEvent]);\n\n const stateValue = useMemo<IWizardState<T, StepId>>(\n () => ({\n ...snapshot,\n config: localConfig,\n }),\n [snapshot, localConfig]\n );\n\n const actionsValue = useMemo<IWizardActions<StepId>>(\n () => ({\n goToNextStep,\n goToPrevStep,\n goToStep: (sid: StepId, optionsOrUndefined?: any, thirdArg?: any) => {\n // Handle both signatures:\n // 1. goToStep(id, options)\n // 2. goToStep(id, undefined, options) - mistakenly used by user but likely legacy or internal leak\n\n let finalOptions = optionsOrUndefined;\n if (thirdArg && optionsOrUndefined === undefined) {\n finalOptions = thirdArg;\n }\n\n return goToStep(sid, undefined, finalOptions);\n },\n setStepData: (_stepId: StepId, data: any) => {\n const next = { ...storeRef.current.getSnapshot().data, ...data };\n storeRef.current.update(next as T, Object.keys(data));\n },\n handleStepChange: (f: string, v: any) => {\n if (stateRef.current.currentStepId) setData(f, v);\n },\n validateStep: (sid: StepId) => validateStep(sid),\n validateAll: async () => {\n storeRef.current.updateMeta({ isBusy: true });\n const data = storeRef.current.getSnapshot().data;\n const active = await resolveActiveStepsHelper(data);\n const results = await Promise.all(\n active.map((s: IStepConfig<T, StepId>) => validateStep(s.id as StepId))\n );\n storeRef.current.updateMeta({ isBusy: false });\n return {\n isValid: results.every(Boolean),\n errors: storeRef.current.getSnapshot().errors,\n };\n },\n save: (ids?: StepId | StepId[] | boolean) => {\n if (ids === true) {\n localConfig.steps.forEach((s: IStepConfig<T, StepId>) =>\n storeRef.current.save(s.id as StepId)\n );\n } else if (!ids) {\n storeRef.current.save();\n } else {\n (Array.isArray(ids) ? ids : [ids]).forEach((id) => storeRef.current.save(id as StepId));\n }\n },\n clearStorage: () => persistenceAdapter.clear(),\n reset,\n setData,\n updateData,\n getData: (p: string, d?: any) => getByPath(storeRef.current.getSnapshot().data, p, d),\n updateConfig: (nc: any) => {\n setLocalConfig((prev: IWizardConfig<T, StepId>) => ({ ...prev, ...nc }));\n },\n }),\n [\n goToNextStep,\n goToPrevStep,\n goToStep,\n validateStep,\n reset,\n setData,\n updateData,\n persistenceAdapter,\n localConfig,\n resolveActiveStepsHelper,\n ]\n );\n\n useEffect(() => {\n if (!isInitialized.current) {\n storeRef.current.injectPersistence(persistenceAdapter);\n storeRef.current.dispatch({\n type: 'INIT',\n payload: { data: initialData || ({} as T), config: localConfig as any },\n });\n storeRef.current.hydrate();\n isInitialized.current = true;\n } else {\n storeRef.current.updateMeta({ config: localConfig as any });\n }\n }, [initialData, localConfig, persistenceAdapter]);\n\n useEffect(() => {\n let isMounted = true;\n const timeoutId = setTimeout(async () => {\n const resolved = await resolveActiveStepsHelper(data);\n if (isMounted) {\n storeRef.current.dispatch({\n type: 'SET_ACTIVE_STEPS',\n payload: { steps: resolved as any },\n });\n }\n }, 200);\n\n return () => {\n isMounted = false;\n clearTimeout(timeoutId);\n };\n }, [data, resolveActiveStepsHelper]);\n\n const hasHydratedRef = useRef(false);\n\n useEffect(() => {\n if (hasHydratedRef.current) return;\n hasHydratedRef.current = true;\n\n const meta = persistenceAdapter.getStep<{\n currentStepId: string;\n visited: string[];\n completed: string[];\n history: string[];\n }>(META_KEY);\n if (meta) {\n if (meta.currentStepId) {\n storeRef.current.dispatch({\n type: 'SET_CURRENT_STEP_ID',\n payload: { stepId: meta.currentStepId as StepId },\n });\n }\n if (meta.visited)\n storeRef.current.dispatch({\n type: 'SET_VISITED_STEPS',\n payload: { steps: new Set(meta.visited as StepId[]) },\n });\n if (meta.completed)\n storeRef.current.dispatch({\n type: 'SET_COMPLETED_STEPS',\n payload: { steps: new Set(meta.completed as StepId[]) },\n });\n if (meta.history) {\n storeRef.current.dispatch({\n type: 'SET_HISTORY',\n payload: { history: meta.history as StepId[] },\n });\n }\n }\n\n const currentSnapshot = storeRef.current.getSnapshot();\n const currentActiveSteps = currentSnapshot.activeSteps;\n\n if (!currentSnapshot.currentStepId && currentActiveSteps.length > 0) {\n const startId =\n initialStepId &&\n currentActiveSteps.some((s: IStepConfig<T, StepId>) => s.id === initialStepId)\n ? initialStepId\n : currentActiveSteps[0].id;\n\n storeRef.current.dispatch({\n type: 'SET_CURRENT_STEP_ID',\n payload: { stepId: startId as StepId },\n });\n\n if (currentSnapshot.history.length === 0) {\n storeRef.current.dispatch({\n type: 'SET_HISTORY',\n payload: { history: [startId as StepId] },\n });\n }\n\n const currentVisited = new Set(currentSnapshot.visitedSteps);\n if (!currentVisited.has(startId as StepId)) {\n currentVisited.add(startId as StepId);\n storeRef.current.dispatch({\n type: 'SET_VISITED_STEPS',\n payload: { steps: currentVisited },\n });\n }\n }\n\n if (currentActiveSteps.length > 0 && currentSnapshot.isLoading) {\n storeRef.current.updateMeta({ isLoading: false });\n }\n }, [activeSteps, initialStepId, persistenceAdapter]);\n\n return (\n <WizardStoreContext.Provider value={storeRef.current as any}>\n <WizardStateContext.Provider value={stateValue}>\n <WizardActionsContext.Provider value={actionsValue}>\n {children}\n </WizardActionsContext.Provider>\n </WizardStateContext.Provider>\n </WizardStoreContext.Provider>\n );\n}\n\n/**\n * Reads the full wizard state.\n */\nexport function useWizardState<T = unknown, StepId extends string = string>(): IWizardState<\n T,\n StepId\n> {\n const context = useContext(WizardStateContext);\n if (!context) throw new Error('useWizardState must be used within a WizardProvider');\n return context as IWizardState<T, StepId>;\n}\n\n/**\n * Subscribes to a specific data value by path.\n */\nexport function useWizardValue<TValue = any>(\n path: string,\n options?: { isEqual?: (a: TValue, b: TValue) => boolean } | ((a: TValue, b: TValue) => boolean)\n): TValue {\n const store = useContext(WizardStoreContext);\n if (!store) throw new Error('useWizardValue must be used within a WizardProvider');\n\n const lastStateRef = useRef<any>(UNSET);\n const lastValueRef = useRef<any>(UNSET);\n\n const isEqual = typeof options === 'function' ? options : options?.isEqual;\n const isEqualRef = useRef(isEqual);\n isEqualRef.current = isEqual;\n\n const getSnapshot = useCallback(() => {\n const data = store.getSnapshot().data;\n if (data === lastStateRef.current && lastValueRef.current !== UNSET) {\n return lastValueRef.current;\n }\n\n const value = getByPath(data, path) as TValue;\n if (\n lastValueRef.current !== UNSET &&\n (isEqualRef.current || Object.is)(lastValueRef.current, value)\n ) {\n lastStateRef.current = data;\n return lastValueRef.current;\n }\n\n lastStateRef.current = data;\n lastValueRef.current = value;\n return value;\n }, [store, path]);\n\n return useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot);\n}\n\n/**\n * Returns a value and setter for a path (useState-like API).\n */\nexport function useWizardField<T, P extends Path<T>>(\n path: P,\n options?: { isEqual?: (a: PathValue<T, P>, b: PathValue<T, P>) => boolean }\n): [PathValue<T, P>, (value: PathValue<T, P>) => void] {\n const value = useWizardValue<PathValue<T, P>>(path as string, options);\n const { setData } = useWizardActions();\n const setValue = useCallback(\n (next: PathValue<T, P>) => {\n setData(path as string, next);\n },\n [setData, path]\n );\n\n return [value, setValue];\n}\n\n/**\n * Returns the first error message for a path across all steps.\n */\nexport function useWizardError(path: string): string | undefined {\n const store = useContext(WizardStoreContext);\n if (!store) throw new Error('useWizardError must be used within a WizardProvider');\n const getSnapshot = useCallback(() => {\n const errors = store.getSnapshot().errors;\n for (const [_, stepErrors] of Object.entries(errors)) {\n const typed = stepErrors as Record<string, string>;\n if (typed[path]) return typed[path];\n }\n return undefined;\n }, [store, path]);\n return useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot);\n}\n\n/**\n * Selects a derived value from the wizard state with optional equality check.\n */\nexport function useWizardSelector<TSelected = any>(\n selector: (state: any) => TSelected,\n options?:\n | { isEqual?: (a: TSelected, b: TSelected) => boolean }\n | ((a: TSelected, b: TSelected) => boolean)\n): TSelected {\n const store = useContext(WizardStoreContext);\n if (!store) throw new Error('useWizardSelector must be used within a WizardProvider');\n\n const selectorRef = useRef(selector);\n selectorRef.current = selector;\n\n const isEqual = typeof options === 'function' ? options : options?.isEqual;\n const isEqualRef = useRef(isEqual);\n isEqualRef.current = isEqual;\n\n const lastStateRef = useRef<any>(UNSET);\n const lastResultRef = useRef<TSelected | typeof UNSET>(UNSET);\n\n const getSnapshot = useCallback(() => {\n const full = store.getSnapshot();\n\n // If state hasn't changed and we have a cached result, return it\n if (full === lastStateRef.current && lastResultRef.current !== UNSET) {\n return lastResultRef.current as TSelected;\n }\n\n const res = selectorRef.current(full);\n\n // If result is equal to cached result, return cached result to maintain reference stability\n if (\n lastResultRef.current !== UNSET &&\n (isEqualRef.current || Object.is)(lastResultRef.current as TSelected, res)\n ) {\n lastStateRef.current = full;\n return lastResultRef.current as TSelected;\n }\n\n lastStateRef.current = full;\n lastResultRef.current = res;\n return res;\n }, [store]);\n\n return useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot);\n}\n\n/**\n * Returns the wizard actions API.\n */\nexport function useWizardActions<StepId extends string = string>(): IWizardActions<StepId> {\n const context = useContext(WizardActionsContext);\n if (!context) throw new Error('useWizardActions must be used within a WizardProvider');\n return context as IWizardActions<StepId>;\n}\n\n/**\n * Returns combined wizard state, actions, and derived errors.\n */\nexport function useWizardContext<T = any, StepId extends string = string>(): IWizardContext<\n T,\n StepId\n> {\n const state = useWizardState<T, StepId>();\n const actions = useWizardActions<StepId>();\n const store = useContext(WizardStoreContext) as IWizardStore<T, StepId>;\n const data = useWizardSelector((s: IWizardState<T, StepId>) => s.data);\n const allErrors = useWizardSelector((s: IWizardState<T, StepId>) => s.errors);\n const errors = useMemo(() => {\n const flat: Record<string, string> = {};\n Object.values(allErrors).forEach((stepErrors) => {\n Object.assign(flat, stepErrors as Record<string, string>);\n });\n return flat;\n }, [allErrors]);\n\n const { data: _d, errors: _e, ...stateProps } = state as any;\n return useMemo(\n () => ({\n ...stateProps,\n ...actions,\n data,\n allErrors,\n errors,\n store,\n }),\n [stateProps, actions, data, allErrors, errors, store]\n ) as IWizardContext<T, StepId>;\n}\n\n/**\n * Returns current step config.\n */\nexport function useWizardCurrentStep<T = any, StepId extends string = string>() {\n return useWizardSelector((s: IWizardState<T, StepId>) => s.currentStep);\n}\n\n/**\n * Returns active steps list.\n */\nexport function useWizardSteps<T = any, StepId extends string = string>() {\n return useWizardSelector((s: IWizardState<T, StepId>) => s.activeSteps);\n}\n\n/**\n * Returns frequently-used meta state with shallow equality.\n */\nexport function useWizardMeta<T = any, StepId extends string = string>() {\n return useWizardSelector(\n (s: IWizardState<T, StepId>) => ({\n currentStepId: s.currentStepId,\n currentStepIndex: s.currentStepIndex,\n isFirstStep: s.isFirstStep,\n isLastStep: s.isLastStep,\n isLoading: s.isLoading,\n isBusy: s.isBusy,\n isDirty: s.isDirty,\n progress: s.progress,\n activeStepsCount: s.activeStepsCount,\n goToStepResult: s.goToStepResult,\n }),\n { isEqual: shallowEqual }\n );\n}\n\n/**\n * Returns all errors by step (shallow-equal).\n */\nexport function useWizardAllErrors<T = any, StepId extends string = string>() {\n return useWizardSelector((s: IWizardState<T, StepId>) => s.errors, {\n isEqual: shallowEqual,\n });\n}\n\n/**\n * Returns flattened errors map (path -> message).\n */\nexport function useWizardFlatErrors<T = any, StepId extends string = string>() {\n const allErrors = useWizardAllErrors<T, StepId>();\n return useMemo(() => {\n const flat: Record<string, string> = {};\n Object.values(allErrors).forEach((stepErrors) => {\n Object.assign(flat, stepErrors as Record<string, string>);\n });\n return flat;\n }, [allErrors]);\n}\n","import {\n type IWizardConfig,\n type IWizardStore,\n type IStepConfig,\n getByPath,\n setByPath,\n} from '@wizzard-packages/core';\n\nexport interface StepDependenciesResult<T extends Record<string, any>, StepId extends string> {\n newData: T;\n hasClearing: boolean;\n clearedPaths: string[];\n statusChanged: boolean;\n nextCompletedSteps: Set<StepId>;\n nextVisitedSteps: Set<StepId>;\n}\n\nexport const applyStepDependencies = <T extends Record<string, any>, StepId extends string>(\n config: IWizardConfig<T, StepId>,\n store: IWizardStore<T, StepId>,\n baseData: T,\n changedPaths: string[]\n): StepDependenciesResult<T, StepId> => {\n let currentData = { ...baseData } as T;\n const allClearedPaths = new Set<string>();\n const snapshot = store.getSnapshot();\n const nextCompletedSteps = new Set(snapshot.completedSteps);\n const nextVisitedSteps = new Set(snapshot.visitedSteps);\n let statusChanged = false;\n\n const processDependencies = (paths: string[]) => {\n const newlyClearedPaths: string[] = [];\n\n config.steps.forEach((step: IStepConfig<T, StepId>) => {\n const isDependent = step.dependsOn?.some((p: string) =>\n paths.some((path) => path === p || p.startsWith(path + '.') || path.startsWith(p + '.'))\n );\n\n if (!isDependent) return;\n\n if (nextCompletedSteps.delete(step.id as StepId)) {\n statusChanged = true;\n }\n if (nextVisitedSteps.delete(step.id as StepId)) {\n statusChanged = true;\n }\n\n if (!step.clearData) return;\n\n if (typeof step.clearData === 'function') {\n const patch = step.clearData(currentData, paths);\n Object.keys(patch).forEach((key) => {\n if ((currentData as any)[key] !== (patch as any)[key]) {\n (currentData as any)[key] = (patch as any)[key];\n newlyClearedPaths.push(key);\n allClearedPaths.add(key);\n }\n });\n } else {\n const pathsToClear = Array.isArray(step.clearData) ? step.clearData : [step.clearData];\n pathsToClear.forEach((p: string) => {\n const val = getByPath(currentData, p);\n if (val !== undefined) {\n currentData = setByPath(currentData, p, undefined);\n newlyClearedPaths.push(p);\n allClearedPaths.add(p);\n }\n });\n }\n });\n\n if (newlyClearedPaths.length > 0) {\n processDependencies(newlyClearedPaths);\n }\n };\n\n processDependencies(changedPaths);\n\n return {\n newData: currentData,\n hasClearing: allClearedPaths.size > 0,\n clearedPaths: Array.from(allClearedPaths),\n statusChanged,\n nextCompletedSteps,\n nextVisitedSteps,\n };\n};\n","import { useWizardContext } from '../context/WizardContext';\nimport type { IWizardContext } from '../types';\n\n/**\n * Alias for useWizardContext.\n */\nexport const useWizard = <T = any, StepId extends string = string>(): IWizardContext<T, StepId> => {\n return useWizardContext<T, StepId>();\n};\n","import React, { useMemo, Suspense } from 'react';\nimport { useWizardContext } from '../context/WizardContext';\n\n/**\n * Props for rendering the current step component.\n */\nexport interface WizardStepRendererProps {\n wrapper?: React.ComponentType<{ children: React.ReactNode; key: string }>;\n fallback?: React.ReactNode;\n}\n\n/**\n * Renders the active step component with optional wrapper and suspense fallback.\n */\nexport const WizardStepRenderer: React.FC<WizardStepRendererProps> = ({\n wrapper: Wrapper,\n fallback = null,\n}) => {\n const { currentStep } = useWizardContext();\n\n const StepComponent = useMemo(() => {\n if (!currentStep?.component) return null;\n return currentStep.component;\n }, [currentStep]);\n\n if (!currentStep || !StepComponent) {\n return null;\n }\n\n const content = (\n <Suspense fallback={fallback}>\n <StepComponent />\n </Suspense>\n );\n\n if (Wrapper) {\n return <Wrapper key={currentStep.id}>{content}</Wrapper>;\n }\n\n return content;\n};\n","import {\n type IPersistenceAdapter,\n type IStepConfig,\n type IWizardConfig,\n type IWizardState,\n type IWizardStore,\n type Path,\n type PathValue,\n WizardStore,\n getByPath,\n setByPath,\n} from '@wizzard-packages/core';\nimport { MemoryAdapter } from '@wizzard-packages/persistence';\nimport { useCallback, useRef, useSyncExternalStore } from 'react';\nimport { applyStepDependencies } from './internal/dependencies';\nimport type { IWizardActionsTyped } from './types';\n\nconst UNSET = Symbol('wizard_store_unset');\nconst META_KEY = '__wizzard_meta__';\n\nexport interface CreateWizardStoreOptions<T, StepId extends string = string> {\n config: IWizardConfig<T, StepId>;\n initialData?: T;\n initialStepId?: StepId;\n}\n\nexport interface WizardStoreBundle<T, StepId extends string = string> {\n store: IWizardStore<T, StepId>;\n actions: IWizardActionsTyped<T, StepId>;\n}\n\nconst applyStoredMeta = <T, StepId extends string>(\n store: IWizardStore<T, StepId>,\n adapter: IPersistenceAdapter\n) => {\n const meta = adapter.getStep<{\n currentStepId: string;\n visited: string[];\n completed: string[];\n history: string[];\n }>(META_KEY);\n\n if (!meta) return;\n\n if (meta.currentStepId) {\n store.dispatch({\n type: 'SET_CURRENT_STEP_ID',\n payload: { stepId: meta.currentStepId as StepId },\n });\n }\n if (meta.visited) {\n store.dispatch({\n type: 'SET_VISITED_STEPS',\n payload: { steps: new Set(meta.visited as StepId[]) },\n });\n }\n if (meta.completed) {\n store.dispatch({\n type: 'SET_COMPLETED_STEPS',\n payload: { steps: new Set(meta.completed as StepId[]) },\n });\n }\n if (meta.history) {\n store.dispatch({\n type: 'SET_HISTORY',\n payload: { history: meta.history as StepId[] },\n });\n }\n};\n\nconst ensureInitialStep = <T, StepId extends string>(\n store: IWizardStore<T, StepId>,\n activeSteps: IStepConfig<T, StepId>[],\n initialStepId?: StepId\n) => {\n const snapshot = store.getSnapshot();\n if (snapshot.currentStepId || activeSteps.length === 0) return;\n\n const startId =\n initialStepId && activeSteps.some((s) => s.id === initialStepId)\n ? initialStepId\n : activeSteps[0].id;\n\n store.dispatch({\n type: 'SET_CURRENT_STEP_ID',\n payload: { stepId: startId as StepId },\n });\n\n if (snapshot.history.length === 0) {\n store.dispatch({\n type: 'SET_HISTORY',\n payload: { history: [startId as StepId] },\n });\n }\n\n const currentVisited = new Set(snapshot.visitedSteps);\n if (!currentVisited.has(startId as StepId)) {\n currentVisited.add(startId as StepId);\n store.dispatch({\n type: 'SET_VISITED_STEPS',\n payload: { steps: currentVisited },\n });\n }\n};\n\nconst resolveAndSetActiveSteps = async <T, StepId extends string>(\n store: IWizardStore<T, StepId>,\n data: T,\n initialStepId?: StepId\n) => {\n const resolved = await store.resolveActiveSteps(data);\n store.dispatch({\n type: 'SET_ACTIVE_STEPS',\n payload: { steps: resolved as any },\n });\n ensureInitialStep(store, resolved, initialStepId);\n\n const snapshot = store.getSnapshot();\n if (resolved.length > 0 && snapshot.isLoading) {\n store.updateMeta({ isLoading: false });\n }\n};\n\nconst createWizardActions = <T extends Record<string, any>, StepId extends string>(\n store: IWizardStore<T, StepId>,\n config: IWizardConfig<T, StepId>,\n persistenceAdapter: IPersistenceAdapter,\n initialData: T\n): IWizardActionsTyped<T, StepId> => {\n let currentConfig = config;\n const validationDebounceRef = { current: null as ReturnType<typeof setTimeout> | null };\n const stepsMap = new Map<StepId, IStepConfig<T, StepId>>();\n currentConfig.steps.forEach((step) => stepsMap.set(step.id as StepId, step));\n\n const resolveActiveStepsHelper = (data: T) => store.resolveActiveSteps(data);\n const validateStep = (stepId: StepId) => store.validateStep(stepId);\n\n const setData = <P extends Path<T>>(\n path: P,\n value: PathValue<T, P>,\n options?: { debounceValidation?: number }\n ) => {\n const prevData = store.getSnapshot().data;\n if (getByPath(prevData, path as string) === value) return;\n\n const baseData = setByPath(prevData, path as string, value);\n const { newData, hasClearing, statusChanged, nextCompletedSteps, nextVisitedSteps } =\n applyStepDependencies(currentConfig, store, baseData, [path as string]);\n\n if (statusChanged) {\n store.dispatch({\n type: 'SET_COMPLETED_STEPS',\n payload: { steps: nextCompletedSteps },\n });\n store.dispatch({\n type: 'SET_VISITED_STEPS',\n payload: { steps: nextVisitedSteps },\n });\n }\n\n if (!hasClearing) {\n store.dispatch({\n type: 'SET_DATA',\n payload: {\n path: path as string,\n value,\n options: { ...options, __from_set_data__: true },\n },\n });\n } else {\n store.dispatch({\n type: 'UPDATE_DATA',\n payload: {\n data: newData,\n options: { replace: true, __from_set_data__: true, path },\n },\n });\n }\n\n const snapshot = store.getSnapshot();\n const currentStepId = snapshot.currentStepId as StepId;\n if (currentStepId) {\n store.deleteError(currentStepId, path as string);\n const step = stepsMap.get(currentStepId);\n const mode = step?.validationMode || currentConfig.validationMode || 'onStepChange';\n\n if (mode === 'onChange') {\n const debounceMs =\n options?.debounceValidation ?? currentConfig.validationDebounceTime ?? 300;\n if (validationDebounceRef.current) {\n clearTimeout(validationDebounceRef.current);\n }\n validationDebounceRef.current = setTimeout(() => {\n void validateStep(currentStepId);\n }, debounceMs);\n }\n }\n };\n\n const updateData = (data: Partial<T>, options?: { replace?: boolean; persist?: boolean }) => {\n const prev = store.getSnapshot().data;\n const baseData = (options?.replace ? (data as T) : { ...prev, ...data }) as T;\n const { newData, statusChanged, nextCompletedSteps, nextVisitedSteps } = applyStepDependencies(\n currentConfig,\n store,\n baseData,\n Object.keys(data)\n );\n\n if (statusChanged) {\n store.dispatch({\n type: 'SET_COMPLETED_STEPS',\n payload: { steps: nextCompletedSteps },\n });\n store.dispatch({\n type: 'SET_VISITED_STEPS',\n payload: { steps: nextVisitedSteps },\n });\n }\n\n store.update(newData as T, Object.keys(data));\n if (options?.persist) {\n store.save(store.getSnapshot().currentStepId as StepId);\n }\n };\n\n const reset = () => {\n store.setInitialData(initialData || ({} as T));\n store.update((initialData || ({} as T)) as T);\n store.updateErrors({} as Record<StepId, Record<string, string>>);\n store.dispatch({\n type: 'SET_VISITED_STEPS',\n payload: { steps: new Set() },\n });\n store.dispatch({\n type: 'SET_COMPLETED_STEPS',\n payload: { steps: new Set() },\n });\n store.dispatch({\n type: 'SET_ERROR_STEPS',\n payload: { steps: new Set() },\n });\n\n const snapshot = store.getSnapshot();\n if (snapshot.activeSteps.length > 0) {\n const startId = snapshot.activeSteps[0].id;\n store.dispatch({\n type: 'SET_CURRENT_STEP_ID',\n payload: { stepId: startId as StepId },\n });\n store.dispatch({\n type: 'SET_HISTORY',\n payload: { history: [startId as StepId] },\n });\n } else {\n store.dispatch({\n type: 'SET_CURRENT_STEP_ID',\n payload: { stepId: '' as StepId },\n });\n store.dispatch({\n type: 'SET_HISTORY',\n payload: { history: [] },\n });\n }\n\n persistenceAdapter.clear();\n currentConfig.analytics?.onEvent('wizard_reset', { data: initialData } as any);\n };\n\n const goToStep = (\n stepId: StepId,\n providedActiveSteps?: any[],\n options?: { validate?: boolean }\n ) => {\n return store.goToStep(stepId, {\n validate: options?.validate ?? true,\n providedActiveSteps: providedActiveSteps as any,\n });\n };\n\n const goToNextStep = async () => {\n const snapshot = store.getSnapshot();\n const currentStepId = snapshot.currentStepId as StepId;\n if (!currentStepId) return;\n\n const step = stepsMap.get(currentStepId);\n const shouldVal = step?.autoValidate ?? currentConfig.autoValidate ?? !!step?.validationAdapter;\n\n if (shouldVal) {\n const ok = await validateStep(currentStepId);\n if (!ok) return;\n }\n\n const resolvedSteps = await resolveActiveStepsHelper(snapshot.data);\n const idx = resolvedSteps.findIndex((s) => s.id === currentStepId);\n\n if (idx !== -1 && idx < resolvedSteps.length - 1) {\n const nextStepId = resolvedSteps[idx + 1].id;\n const success = await goToStep(nextStepId as StepId, resolvedSteps as any, {\n validate: false,\n });\n if (success) {\n const currentSnapshot = store.getSnapshot();\n if (!currentSnapshot.errorSteps.has(currentStepId)) {\n const nextComp = new Set(currentSnapshot.completedSteps);\n nextComp.add(currentStepId);\n store.dispatch({\n type: 'SET_COMPLETED_STEPS',\n payload: { steps: nextComp },\n });\n }\n }\n }\n };\n\n const goToPrevStep = async () => {\n const snapshot = store.getSnapshot();\n const idx = snapshot.activeSteps.findIndex((s) => s.id === snapshot.currentStepId);\n if (idx > 0) {\n await goToStep(snapshot.activeSteps[idx - 1].id as StepId);\n }\n };\n\n const setStepData = (_stepId: StepId, data: any) => {\n const next = { ...store.getSnapshot().data, ...data };\n store.update(next as T, Object.keys(data));\n };\n\n const handleStepChange = (field: string, value: any) => {\n if (store.getSnapshot().currentStepId) {\n setData(field as Path<T>, value as any);\n }\n };\n\n const validateAll = async () => {\n const result = await store.validateAll();\n return result;\n };\n\n const save = (ids?: StepId | StepId[] | boolean) => {\n if (ids === true) {\n currentConfig.steps.forEach((s) => store.save(s.id as StepId));\n } else if (!ids) {\n store.save();\n } else {\n (Array.isArray(ids) ? ids : [ids]).forEach((id) => store.save(id as StepId));\n }\n };\n\n const clearStorage = () => persistenceAdapter.clear();\n\n const getData = <P extends Path<T>>(path: P, defaultValue?: PathValue<T, P>) => {\n return getByPath(store.getSnapshot().data, path as string, defaultValue) as PathValue<T, P>;\n };\n\n const updateConfig = (nextConfig: Partial<IWizardConfig<any, StepId>>) => {\n currentConfig = { ...currentConfig, ...nextConfig } as IWizardConfig<T, StepId>;\n stepsMap.clear();\n currentConfig.steps.forEach((step) => stepsMap.set(step.id as StepId, step));\n store.updateMeta({ config: currentConfig as any });\n };\n\n return {\n goToNextStep,\n goToPrevStep,\n goToStep,\n setStepData,\n handleStepChange,\n validateStep,\n validateAll,\n save,\n clearStorage,\n reset,\n setData,\n updateData,\n getData,\n updateConfig,\n };\n};\n\n/**\n * Create a standalone store + actions bundle without React Context.\n */\nexport const createWizardStore = <T extends Record<string, any>, StepId extends string = string>(\n options: CreateWizardStoreOptions<T, StepId>\n): WizardStoreBundle<T, StepId> => {\n const initialData = (options.initialData || ({} as T)) as T;\n const store = new WizardStore<T, StepId>(initialData, options.config.middlewares);\n const persistenceAdapter = options.config.persistence?.adapter || new MemoryAdapter();\n\n store.injectPersistence(persistenceAdapter);\n store.dispatch({\n type: 'INIT',\n payload: { data: initialData, config: options.config as any },\n });\n store.hydrate();\n applyStoredMeta(store, persistenceAdapter);\n void resolveAndSetActiveSteps(store, store.getSnapshot().data, options.initialStepId);\n\n return {\n store,\n actions: createWizardActions(store, options.config, persistenceAdapter, initialData),\n };\n};\n\n/**\n * Hook: read the full store snapshot without React Context.\n */\nexport const useWizardStoreState = <T, StepId extends string = string>(\n store: IWizardStore<T, StepId>\n): IWizardState<T, StepId> => {\n return useSyncExternalStore(store.subscribe, store.getSnapshot, store.getSnapshot);\n};\n\n/**\n * Hook: subscribe to a value path without React Context.\n */\nexport const useWizardStoreValue = <T, P extends Path<T>>(\n store: IWizardStore<T, any>,\n path: P,\n options?:\n | { isEqual?: (a: PathValue<T, P>, b: PathValue<T, P>) => boolean }\n | ((a: PathValue<T, P>, b: PathValue<T, P>) => boolean)\n): PathValue<T, P> => {\n const lastStateRef = useRef<any>(UNSET);\n const lastValueRef = useRef<any>(UNSET);\n\n const isEqual = typeof options === 'function' ? options : options?.isEqual;\n const isEqualRef = useRef(isEqual);\n isEqualRef.current = isEqual;\n\n const getSnapshot = useCallback(() => {\n const data = store.getSnapshot().data;\n if (data === lastStateRef.current && lastValueRef.current !== UNSET) {\n return lastValueRef.current;\n }\n\n const value = getByPath(data, path as string) as PathValue<T, P>;\n if (\n lastValueRef.current !== UNSET &&\n (isEqualRef.current || Object.is)(lastValueRef.current, value)\n ) {\n lastStateRef.current = data;\n return lastValueRef.current;\n }\n\n lastStateRef.current = data;\n lastValueRef.current = value;\n return value;\n }, [store, path]);\n\n return useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot);\n};\n\n/**\n * Hook: value + setter for a path without React Context.\n */\nexport const useWizardStoreField = <T, P extends Path<T>>(\n store: IWizardStore<T, any>,\n setData: (path: P, value: PathValue<T, P>) => void,\n path: P,\n options?: { isEqual?: (a: PathValue<T, P>, b: PathValue<T, P>) => boolean }\n): [PathValue<T, P>, (value: PathValue<T, P>) => void] => {\n const value = useWizardStoreValue<T, P>(store, path, options);\n const setValue = useCallback(\n (next: PathValue<T, P>) => {\n setData(path, next);\n },\n [setData, path]\n );\n\n return [value, setValue];\n};\n\n/**\n * Hook: read the first error for a path without React Context.\n */\nexport const useWizardStoreError = (\n store: IWizardStore<any, any>,\n path: string\n): string | undefined => {\n const getSnapshot = useCallback(() => {\n const errors = store.getSnapshot().errors;\n for (const [_, stepErrors] of Object.entries(errors)) {\n const typed = stepErrors as Record<string, string>;\n if (typed[path]) return typed[path];\n }\n return undefined;\n }, [store, path]);\n\n return useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot);\n};\n\n/**\n * Hook: select derived state without React Context.\n */\nexport const useWizardStoreSelector = <TSelected>(\n store: IWizardStore<any, any>,\n selector: (state: any) => TSelected,\n options?: { isEqual?: (a: TSelected, b: TSelected) => boolean } | ((a: TSelected, b: TSelected) => boolean)\n): TSelected => {\n const selectorRef = useRef(selector);\n selectorRef.current = selector;\n\n const isEqual = typeof options === 'function' ? options : options?.isEqual;\n const isEqualRef = useRef(isEqual);\n isEqualRef.current = isEqual;\n\n const lastStateRef = useRef<any>(UNSET);\n const lastResultRef = useRef<TSelected | typeof UNSET>(UNSET);\n\n const getSnapshot = useCallback(() => {\n const full = store.getSnapshot();\n\n if (full === lastStateRef.current && lastResultRef.current !== UNSET) {\n return lastResultRef.current as TSelected;\n }\n\n const res = selectorRef.current(full);\n\n if (\n lastResultRef.current !== UNSET &&\n (isEqualRef.current || Object.is)(lastResultRef.current as TSelected, res)\n ) {\n lastStateRef.current = full;\n return lastResultRef.current as TSelected;\n }\n\n lastStateRef.current = full;\n lastResultRef.current = res;\n return res;\n }, [store]);\n\n return useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot);\n};\n\n/**\n * Helper: build store-bound hooks for a single store instance.\n */\nexport const createWizardHooks = <T, StepId extends string = string>(\n store: IWizardStore<T, StepId>,\n actions?: IWizardActionsTyped<T, StepId>\n) => ({\n useWizardState: () => useWizardStoreState<T, StepId>(store),\n useWizardValue: <P extends Path<T>>(\n path: P,\n options?: { isEqual?: (a: PathValue<T, P>, b: PathValue<T, P>) => boolean }\n ) => useWizardStoreValue<T, P>(store, path, options),\n useWizardField: <P extends Path<T>>(\n path: P,\n options?: { isEqual?: (a: PathValue<T, P>, b: PathValue<T, P>) => boolean }\n ) => {\n if (!actions) {\n throw new Error('useWizardField requires actions. Pass actions to createWizardHooks.');\n }\n return useWizardStoreField<T, P>(store, actions.setData, path, options);\n },\n useWizardError: (path: string) => useWizardStoreError(store, path),\n useWizardSelector: <TSelected>(\n selector: (state: IWizardState<T, StepId>) => TSelected,\n options?: { isEqual?: (a: TSelected, b: TSelected) => boolean }\n ) => useWizardStoreSelector<TSelected>(store, selector, options),\n});\n"],"mappings":"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","names":["import_core","import_core","META_KEY","data","currentStepId","activeSteps","activeStepsIndexMap","stepsMap","import_jsx_runtime","WizardProvider","useWizard","useWizardContext","useWizardValue","useWizardField","useWizardActions","useWizardSelector","useWizardError","useWizardState","import_react","import_jsx_runtime","import_core","import_persistence","import_react","UNSET","import_core"]}
|