@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 CHANGED
@@ -22,7 +22,7 @@ var index_exports = {};
22
22
  __export(index_exports, {
23
23
  WizardProvider: () => WizardProvider,
24
24
  WizardStepRenderer: () => WizardStepRenderer,
25
- WizardStore: () => import_core4.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)(null);
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 && (options?.isEqual || Object.is)(lastValueRef.current, value)) {
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, options?.isEqual]);
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
- const res = selector(full);
596
- if (lastResultRef.current !== UNSET && (options?.isEqual || Object.is)(lastResultRef.current, res)) {
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, selector, options?.isEqual]);
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 import_react3 = require("react");
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, import_core3.getByPath)(prevData, path) === value) return;
844
- const baseData = (0, import_core3.setByPath)(prevData, path, value);
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, import_core3.getByPath)(store.getSnapshot().data, path, defaultValue);
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 import_core3.WizardStore(initialData, options.config.middlewares);
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, import_core3.getByPath)(data, path);
1076
- if (lastValueRef.current !== UNSET2 && (options?.isEqual || Object.is)(lastValueRef.current, value)) {
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, options?.isEqual]);
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
- const res = selector(full);
1112
- if (lastResultRef.current !== UNSET2 && (options?.isEqual || Object.is)(lastResultRef.current, res)) {
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, selector, options?.isEqual]);
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 import_core4 = require("@wizzard-packages/core");
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 = {
@@ -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"]}