@d1os/simple-wizard 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +283 -0
- package/dist/components/content.d.ts +5 -0
- package/dist/components/content.d.ts.map +1 -0
- package/dist/context.d.ts +22 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/simple-wizard.cjs +2 -0
- package/dist/simple-wizard.cjs.map +1 -0
- package/dist/simple-wizard.js +855 -0
- package/dist/simple-wizard.js.map +1 -0
- package/dist/store.d.ts +27 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/wizard.d.ts +10 -0
- package/dist/wizard.d.ts.map +1 -0
- package/package.json +97 -0
package/README.md
ADDED
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
# simple-wizard
|
|
2
|
+
|
|
3
|
+
A lightweight, flexible wizard component for React 18 and 19.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @d1os/simple-wizard
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
yarn add @d1os/simple-wizard
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
pnpm add @d1os/simple-wizard
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Quick Start
|
|
20
|
+
|
|
21
|
+
```tsx
|
|
22
|
+
import { Wizard, useWizard } from "@d1os/simple-wizard";
|
|
23
|
+
|
|
24
|
+
function App() {
|
|
25
|
+
return (
|
|
26
|
+
<Wizard footer={<WizardFooter />}>
|
|
27
|
+
<StepOne />
|
|
28
|
+
<StepTwo />
|
|
29
|
+
<StepThree />
|
|
30
|
+
</Wizard>
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function WizardFooter() {
|
|
35
|
+
const { nextStep, previousStep, activeStep, stepCount } = useWizard((state) => ({
|
|
36
|
+
nextStep: state.nextStep,
|
|
37
|
+
previousStep: state.previousStep,
|
|
38
|
+
activeStep: state.activeStep,
|
|
39
|
+
stepCount: state.stepCount,
|
|
40
|
+
}));
|
|
41
|
+
|
|
42
|
+
const isFirstStep = activeStep === 0;
|
|
43
|
+
const isLastStep = activeStep === stepCount - 1;
|
|
44
|
+
|
|
45
|
+
return (
|
|
46
|
+
<div>
|
|
47
|
+
<button onClick={() => previousStep()} disabled={isFirstStep}>
|
|
48
|
+
Back
|
|
49
|
+
</button>
|
|
50
|
+
<button onClick={() => nextStep()} disabled={isLastStep}>
|
|
51
|
+
{isLastStep ? "Finish" : "Next"}
|
|
52
|
+
</button>
|
|
53
|
+
</div>
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## API
|
|
59
|
+
|
|
60
|
+
### `<Wizard />`
|
|
61
|
+
|
|
62
|
+
The main container component.
|
|
63
|
+
|
|
64
|
+
```tsx
|
|
65
|
+
interface WizardProps {
|
|
66
|
+
children?: ReactNode; // Step components
|
|
67
|
+
header?: ReactNode; // Rendered before steps
|
|
68
|
+
footer?: ReactNode; // Rendered after steps
|
|
69
|
+
startAtEnd?: boolean; // Start at last step (default: false)
|
|
70
|
+
initialStep?: number; // Starting step index (default: 0)
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### `useWizard(selector)`
|
|
75
|
+
|
|
76
|
+
Hook to access wizard state and actions. Uses selectors for optimal re-renders.
|
|
77
|
+
|
|
78
|
+
```tsx
|
|
79
|
+
const { activeStep, nextStep } = useWizard((state) => ({
|
|
80
|
+
activeStep: state.activeStep,
|
|
81
|
+
nextStep: state.nextStep,
|
|
82
|
+
}));
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
#### State
|
|
86
|
+
|
|
87
|
+
| Property | Type | Description |
|
|
88
|
+
|----------|------|-------------|
|
|
89
|
+
| `activeStep` | `number` | Current step index (0-based) |
|
|
90
|
+
| `stepCount` | `number` | Total number of steps |
|
|
91
|
+
| `isLoading` | `boolean` | Loading state during async actions |
|
|
92
|
+
| `nextButtonLabel` | `string` | Label for next button (default: "Next") |
|
|
93
|
+
| `previousButtonLabel` | `string` | Label for previous button (default: "Back") |
|
|
94
|
+
| `isNextButtonDisabled` | `boolean` | Whether next button is disabled |
|
|
95
|
+
|
|
96
|
+
#### Actions
|
|
97
|
+
|
|
98
|
+
| Action | Type | Description |
|
|
99
|
+
|--------|------|-------------|
|
|
100
|
+
| `nextStep(skip?)` | `(skip?: number) => void` | Go to next step (or skip multiple) |
|
|
101
|
+
| `previousStep(skip?)` | `(skip?: number) => void` | Go to previous step (or skip multiple) |
|
|
102
|
+
| `setActiveStep(step)` | `(step: number) => void` | Jump to specific step |
|
|
103
|
+
| `setIsLoading(loading)` | `(loading: boolean) => void` | Set loading state |
|
|
104
|
+
| `setStepAction(handler)` | `(handler: () => void \| Promise<void>) => void` | Set action to run before advancing |
|
|
105
|
+
| `setNextButtonLabel(label)` | `(label: string) => void` | Set next button label |
|
|
106
|
+
| `setPreviousButtonLabel(label)` | `(label: string) => void` | Set previous button label |
|
|
107
|
+
| `setNextButtonDisabled(disabled)` | `(disabled: boolean) => void` | Disable/enable next button |
|
|
108
|
+
|
|
109
|
+
## Examples
|
|
110
|
+
|
|
111
|
+
### Async Step Validation
|
|
112
|
+
|
|
113
|
+
Run async validation before advancing to the next step:
|
|
114
|
+
|
|
115
|
+
```tsx
|
|
116
|
+
function StepWithValidation() {
|
|
117
|
+
const { setStepAction } = useWizard((state) => ({
|
|
118
|
+
setStepAction: state.setStepAction,
|
|
119
|
+
}));
|
|
120
|
+
|
|
121
|
+
useEffect(() => {
|
|
122
|
+
setStepAction(async () => {
|
|
123
|
+
await saveFormData();
|
|
124
|
+
// If this throws, navigation is cancelled
|
|
125
|
+
});
|
|
126
|
+
}, [setStepAction]);
|
|
127
|
+
|
|
128
|
+
return <form>...</form>;
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Skip Steps Conditionally
|
|
133
|
+
|
|
134
|
+
Use the `skip` prop to conditionally skip steps:
|
|
135
|
+
|
|
136
|
+
```tsx
|
|
137
|
+
<Wizard>
|
|
138
|
+
<StepOne />
|
|
139
|
+
<StepTwo skip={!showOptionalStep} />
|
|
140
|
+
<StepThree />
|
|
141
|
+
</Wizard>
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### Custom Progress Indicator
|
|
145
|
+
|
|
146
|
+
```tsx
|
|
147
|
+
function ProgressBar() {
|
|
148
|
+
const { activeStep, stepCount } = useWizard((state) => ({
|
|
149
|
+
activeStep: state.activeStep,
|
|
150
|
+
stepCount: state.stepCount,
|
|
151
|
+
}));
|
|
152
|
+
|
|
153
|
+
const progress = ((activeStep + 1) / stepCount) * 100;
|
|
154
|
+
|
|
155
|
+
return (
|
|
156
|
+
<div className="progress-bar">
|
|
157
|
+
<div className="progress-fill" style={{ width: `${progress}%` }} />
|
|
158
|
+
<span>{activeStep + 1} of {stepCount}</span>
|
|
159
|
+
</div>
|
|
160
|
+
);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
// Usage
|
|
164
|
+
<Wizard header={<ProgressBar />}>
|
|
165
|
+
...
|
|
166
|
+
</Wizard>
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Controlled Navigation
|
|
170
|
+
|
|
171
|
+
```tsx
|
|
172
|
+
function StepButtons() {
|
|
173
|
+
const { activeStep, stepCount, setActiveStep } = useWizard((state) => ({
|
|
174
|
+
activeStep: state.activeStep,
|
|
175
|
+
stepCount: state.stepCount,
|
|
176
|
+
setActiveStep: state.setActiveStep,
|
|
177
|
+
}));
|
|
178
|
+
|
|
179
|
+
return (
|
|
180
|
+
<div className="step-buttons">
|
|
181
|
+
{Array.from({ length: stepCount }, (_, i) => (
|
|
182
|
+
<button
|
|
183
|
+
key={i}
|
|
184
|
+
onClick={() => setActiveStep(i)}
|
|
185
|
+
className={activeStep === i ? "active" : ""}
|
|
186
|
+
>
|
|
187
|
+
{i + 1}
|
|
188
|
+
</button>
|
|
189
|
+
))}
|
|
190
|
+
</div>
|
|
191
|
+
);
|
|
192
|
+
}
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
## React 19 Best Practices
|
|
196
|
+
|
|
197
|
+
This library is fully compatible with React 19. Here are patterns to leverage React 19 features in your step components:
|
|
198
|
+
|
|
199
|
+
### Using `use()` for Data Fetching
|
|
200
|
+
|
|
201
|
+
```tsx
|
|
202
|
+
import { use, Suspense } from "react";
|
|
203
|
+
|
|
204
|
+
function StepWithData({ dataPromise }) {
|
|
205
|
+
const data = use(dataPromise);
|
|
206
|
+
return <div>{data.content}</div>;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
// In your wizard
|
|
210
|
+
<Wizard>
|
|
211
|
+
<Suspense fallback={<Loading />}>
|
|
212
|
+
<StepWithData dataPromise={fetchStepData()} />
|
|
213
|
+
</Suspense>
|
|
214
|
+
</Wizard>
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### Optimistic Updates with `useOptimistic()`
|
|
218
|
+
|
|
219
|
+
```tsx
|
|
220
|
+
import { useOptimistic, useState } from "react";
|
|
221
|
+
|
|
222
|
+
function StepWithOptimisticSave() {
|
|
223
|
+
const [saved, setSaved] = useState(false);
|
|
224
|
+
const [optimisticSaved, setOptimisticSaved] = useOptimistic(saved);
|
|
225
|
+
|
|
226
|
+
async function handleSave() {
|
|
227
|
+
setOptimisticSaved(true); // Instant UI feedback
|
|
228
|
+
await saveToServer();
|
|
229
|
+
setSaved(true);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
return (
|
|
233
|
+
<div>
|
|
234
|
+
<button onClick={handleSave}>
|
|
235
|
+
{optimisticSaved ? "Saved!" : "Save"}
|
|
236
|
+
</button>
|
|
237
|
+
</div>
|
|
238
|
+
);
|
|
239
|
+
}
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### Form Actions with `useActionState()`
|
|
243
|
+
|
|
244
|
+
```tsx
|
|
245
|
+
import { useActionState } from "react";
|
|
246
|
+
|
|
247
|
+
function FormStep() {
|
|
248
|
+
const [state, submitAction, isPending] = useActionState(
|
|
249
|
+
async (prevState, formData) => {
|
|
250
|
+
const result = await submitForm(formData);
|
|
251
|
+
return { success: result.ok, error: result.error };
|
|
252
|
+
},
|
|
253
|
+
{ success: false, error: null }
|
|
254
|
+
);
|
|
255
|
+
|
|
256
|
+
return (
|
|
257
|
+
<form action={submitAction}>
|
|
258
|
+
<input name="email" type="email" required />
|
|
259
|
+
{state.error && <p className="error">{state.error}</p>}
|
|
260
|
+
<button type="submit" disabled={isPending}>
|
|
261
|
+
{isPending ? "Submitting..." : "Continue"}
|
|
262
|
+
</button>
|
|
263
|
+
</form>
|
|
264
|
+
);
|
|
265
|
+
}
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
## TypeScript
|
|
269
|
+
|
|
270
|
+
Full TypeScript support with exported types:
|
|
271
|
+
|
|
272
|
+
```tsx
|
|
273
|
+
import type {
|
|
274
|
+
WizardProps,
|
|
275
|
+
WizardStore,
|
|
276
|
+
WizardState,
|
|
277
|
+
WizardActions
|
|
278
|
+
} from "@d1os/simple-wizard";
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
## License
|
|
282
|
+
|
|
283
|
+
MIT
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export declare const Content: ({ steps }: {
|
|
3
|
+
steps: ReactNode[];
|
|
4
|
+
}) => string | number | boolean | import('react').ReactElement<any, string | import('react').JSXElementConstructor<any>> | Iterable<ReactNode> | null;
|
|
5
|
+
//# sourceMappingURL=content.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/components/content.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,eAAO,MAAM,OAAO,cAAe;IAAE,KAAK,EAAE,SAAS,EAAE,CAAA;CAAE,oJAQxD,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { Store, State } from './store';
|
|
3
|
+
export declare const Context: import('react').Context<(Omit<import('zustand').StoreApi<Store>, "setState"> & {
|
|
4
|
+
setState(nextStateOrUpdater: Store | Partial<Store> | ((state: import('immer').WritableDraft<Store>) => void), shouldReplace?: false): void;
|
|
5
|
+
setState(nextStateOrUpdater: Store | ((state: import('immer').WritableDraft<Store>) => void), shouldReplace: true): void;
|
|
6
|
+
}) | undefined>;
|
|
7
|
+
export declare const Provider: ({ children, config, }: {
|
|
8
|
+
children: ReactNode;
|
|
9
|
+
config: Pick<State, "activeStep" | "stepCount">;
|
|
10
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export declare const useWizard: <T extends Partial<Store>>(selector: (store: Store & {
|
|
12
|
+
isFirstStep: boolean;
|
|
13
|
+
isLastStep: boolean;
|
|
14
|
+
}) => T) => T;
|
|
15
|
+
/**
|
|
16
|
+
* Internal component to sync stepCount when children change dynamically.
|
|
17
|
+
* This handles cases where steps are conditionally skipped.
|
|
18
|
+
*/
|
|
19
|
+
export declare const StepCountSync: ({ stepCount }: {
|
|
20
|
+
stepCount: number;
|
|
21
|
+
}) => null;
|
|
22
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAiC,MAAM,OAAO,CAAC;AAErF,OAAO,EAEL,KAAK,KAAK,EAEV,KAAK,KAAK,EACX,MAAM,SAAS,CAAC;AAGjB,eAAO,MAAM,OAAO;;;eAER,CAAC;AAEb,eAAO,MAAM,QAAQ,0BAGlB;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,GAAG,WAAW,CAAC,CAAC;CACjD,4CAWA,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,OAAO,CAAC,KAAK,CAAC,YACtC,CAAC,KAAK,EAAE,KAAK,GAAG;IAAE,WAAW,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,KAAK,CAAC,MAkB9E,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,kBAAmB;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,SAmBjE,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type { Store as WizardStore, State as WizardState, Actions as WizardActions } from './store';
|
|
2
|
+
export type { Props as WizardProps } from './wizard';
|
|
3
|
+
export { Wizard } from './wizard';
|
|
4
|
+
export { useWizard, Context as WizardContext } from './context';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,KAAK,IAAI,WAAW,EAAE,KAAK,IAAI,WAAW,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,SAAS,CAAA;AACnG,YAAY,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,UAAU,CAAC;AAGrD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,OAAO,EAAE,SAAS,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,WAAW,CAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const I=require("react/jsx-runtime"),y=require("react"),J=e=>{let t;const r=new Set,n=(o,l)=>{const p=typeof o=="function"?o(t):o;if(!Object.is(p,t)){const x=t;t=l??(typeof p!="object"||p===null)?p:Object.assign({},t,p),r.forEach(H=>H(t,x))}},i=()=>t,a={setState:n,getState:i,getInitialState:()=>s,subscribe:o=>(r.add(o),()=>r.delete(o))},s=t=e(n,i,a);return a},ue=(e=>e?J(e):J),fe=e=>e;function le(e,t=fe){const r=y.useSyncExternalStore(e.subscribe,y.useCallback(()=>t(e.getState()),[e,t]),y.useCallback(()=>t(e.getInitialState()),[e,t]));return y.useDebugValue(r),r}var ie=Symbol.for("immer-nothing"),X=Symbol.for("immer-draftable"),f=Symbol.for("immer-state"),de=process.env.NODE_ENV!=="production"?[function(e){return`The plugin for '${e}' has not been loaded into Immer. To enable the plugin, import and call \`enable${e}()\` when initializing your application.`},function(e){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${e}'`},"This object has been frozen and should not be mutated",function(e){return"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? "+e},"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.","Immer forbids circular references","The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(e){return`'current' expects a draft, got: ${e}`},"Object.defineProperty() cannot be used on an Immer draft","Object.setPrototypeOf() cannot be used on an Immer draft","Immer only supports deleting array indices","Immer only supports setting array indices and the 'length' property",function(e){return`'original' expects a draft, got: ${e}`}]:[];function _(e,...t){if(process.env.NODE_ENV!=="production"){const r=de[e],n=typeof r=="function"?r.apply(null,t):r;throw new Error(`[Immer] ${n}`)}throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var g=Object.getPrototypeOf;function b(e){return!!e&&!!e[f]}function m(e){var t;return e?se(e)||Array.isArray(e)||!!e[X]||!!((t=e.constructor)!=null&&t[X])||O(e)||N(e):!1}var _e=Object.prototype.constructor.toString(),Q=new WeakMap;function se(e){if(!e||typeof e!="object")return!1;const t=Object.getPrototypeOf(e);if(t===null||t===Object.prototype)return!0;const r=Object.hasOwnProperty.call(t,"constructor")&&t.constructor;if(r===Object)return!0;if(typeof r!="function")return!1;let n=Q.get(r);return n===void 0&&(n=Function.toString.call(r),Q.set(r,n)),n===_e}function P(e,t,r=!0){A(e)===0?(r?Reflect.ownKeys(e):Object.keys(e)).forEach(i=>{t(i,e[i],e)}):e.forEach((n,i)=>t(i,n,e))}function A(e){const t=e[f];return t?t.type_:Array.isArray(e)?1:O(e)?2:N(e)?3:0}function T(e,t){return A(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function oe(e,t,r){const n=A(e);n===2?e.set(t,r):n===3?e.add(r):e[t]=r}function pe(e,t){return e===t?e!==0||1/e===1/t:e!==e&&t!==t}function O(e){return e instanceof Map}function N(e){return e instanceof Set}function d(e){return e.copy_||e.base_}function W(e,t){if(O(e))return new Map(e);if(N(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);const r=se(e);if(t===!0||t==="class_only"&&!r){const n=Object.getOwnPropertyDescriptors(e);delete n[f];let i=Reflect.ownKeys(n);for(let c=0;c<i.length;c++){const u=i[c],a=n[u];a.writable===!1&&(a.writable=!0,a.configurable=!0),(a.get||a.set)&&(n[u]={configurable:!0,writable:!0,enumerable:a.enumerable,value:e[u]})}return Object.create(g(e),n)}else{const n=g(e);if(n!==null&&r)return{...e};const i=Object.create(n);return Object.assign(i,e)}}function K(e,t=!1){return F(e)||b(e)||!m(e)||(A(e)>1&&Object.defineProperties(e,{set:E,add:E,clear:E,delete:E}),Object.freeze(e),t&&Object.values(e).forEach(r=>K(r,!0))),e}function ye(){_(2)}var E={value:ye};function F(e){return e===null||typeof e!="object"?!0:Object.isFrozen(e)}var U={};function S(e){const t=U[e];return t||_(0,e),t}function he(e,t){U[e]||(U[e]=t)}var v;function M(){return v}function me(e,t){return{drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function Y(e,t){t&&(S("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function L(e){$(e),e.drafts_.forEach(Se),e.drafts_=null}function $(e){e===v&&(v=e.parent_)}function Z(e){return v=me(v,e)}function Se(e){const t=e[f];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function V(e,t){t.unfinalizedDrafts_=t.drafts_.length;const r=t.drafts_[0];return e!==void 0&&e!==r?(r[f].modified_&&(L(t),_(4)),m(e)&&(e=D(t,e),t.parent_||j(t,e)),t.patches_&&S("Patches").generateReplacementPatches_(r[f].base_,e,t.patches_,t.inversePatches_)):e=D(t,r,[]),L(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==ie?e:void 0}function D(e,t,r){if(F(t))return t;const n=e.immer_.shouldUseStrictIteration(),i=t[f];if(!i)return P(t,(c,u)=>ee(e,i,t,c,u,r),n),t;if(i.scope_!==e)return t;if(!i.modified_)return j(e,i.base_,!0),i.base_;if(!i.finalized_){i.finalized_=!0,i.scope_.unfinalizedDrafts_--;const c=i.copy_;let u=c,a=!1;i.type_===3&&(u=new Set(c),c.clear(),a=!0),P(u,(s,o)=>ee(e,i,c,s,o,r,a),n),j(e,c,!1),r&&e.patches_&&S("Patches").generatePatches_(i,r,e.patches_,e.inversePatches_)}return i.copy_}function ee(e,t,r,n,i,c,u){if(i==null||typeof i!="object"&&!u)return;const a=F(i);if(!(a&&!u)){if(process.env.NODE_ENV!=="production"&&i===r&&_(5),b(i)){const s=c&&t&&t.type_!==3&&!T(t.assigned_,n)?c.concat(n):void 0,o=D(e,i,s);if(oe(r,n,o),b(o))e.canAutoFreeze_=!1;else return}else u&&r.add(i);if(m(i)&&!a){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1||t&&t.base_&&t.base_[n]===i&&a)return;D(e,i),(!t||!t.scope_.parent_)&&typeof n!="symbol"&&(O(r)?r.has(n):Object.prototype.propertyIsEnumerable.call(r,n))&&j(e,i)}}}function j(e,t,r=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&K(t,r)}function be(e,t){const r=Array.isArray(e),n={type_:r?1:0,scope_:t?t.scope_:M(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1};let i=n,c=q;r&&(i=[n],c=w);const{revoke:u,proxy:a}=Proxy.revocable(i,c);return n.draft_=a,n.revoke_=u,a}var q={get(e,t){if(t===f)return e;const r=d(e);if(!T(r,t))return ge(e,r,t);const n=r[t];return e.finalized_||!m(n)?n:n===k(e.base_,t)?(R(e),e.copy_[t]=z(n,e)):n},has(e,t){return t in d(e)},ownKeys(e){return Reflect.ownKeys(d(e))},set(e,t,r){const n=ce(d(e),t);if(n!=null&&n.set)return n.set.call(e.draft_,r),!0;if(!e.modified_){const i=k(d(e),t),c=i==null?void 0:i[f];if(c&&c.base_===r)return e.copy_[t]=r,e.assigned_[t]=!1,!0;if(pe(r,i)&&(r!==void 0||T(e.base_,t)))return!0;R(e),h(e)}return e.copy_[t]===r&&(r!==void 0||t in e.copy_)||Number.isNaN(r)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=r,e.assigned_[t]=!0),!0},deleteProperty(e,t){return k(e.base_,t)!==void 0||t in e.base_?(e.assigned_[t]=!1,R(e),h(e)):delete e.assigned_[t],e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){const r=d(e),n=Reflect.getOwnPropertyDescriptor(r,t);return n&&{writable:!0,configurable:e.type_!==1||t!=="length",enumerable:n.enumerable,value:r[t]}},defineProperty(){_(11)},getPrototypeOf(e){return g(e.base_)},setPrototypeOf(){_(12)}},w={};P(q,(e,t)=>{w[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}});w.deleteProperty=function(e,t){return process.env.NODE_ENV!=="production"&&isNaN(parseInt(t))&&_(13),w.set.call(this,e,t,void 0)};w.set=function(e,t,r){return process.env.NODE_ENV!=="production"&&t!=="length"&&isNaN(parseInt(t))&&_(14),q.set.call(this,e[0],t,r,e[0])};function k(e,t){const r=e[f];return(r?d(r):e)[t]}function ge(e,t,r){var i;const n=ce(t,r);return n?"value"in n?n.value:(i=n.get)==null?void 0:i.call(e.draft_):void 0}function ce(e,t){if(!(t in e))return;let r=g(e);for(;r;){const n=Object.getOwnPropertyDescriptor(r,t);if(n)return n;r=g(r)}}function h(e){e.modified_||(e.modified_=!0,e.parent_&&h(e.parent_))}function R(e){e.copy_||(e.copy_=W(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var Pe=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!0,this.produce=(t,r,n)=>{if(typeof t=="function"&&typeof r!="function"){const c=r;r=t;const u=this;return function(s=c,...o){return u.produce(s,l=>r.call(this,l,...o))}}typeof r!="function"&&_(6),n!==void 0&&typeof n!="function"&&_(7);let i;if(m(t)){const c=Z(this),u=z(t,void 0);let a=!0;try{i=r(u),a=!1}finally{a?L(c):$(c)}return Y(c,n),V(i,c)}else if(!t||typeof t!="object"){if(i=r(t),i===void 0&&(i=t),i===ie&&(i=void 0),this.autoFreeze_&&K(i,!0),n){const c=[],u=[];S("Patches").generateReplacementPatches_(t,i,c,u),n(c,u)}return i}else _(1,t)},this.produceWithPatches=(t,r)=>{if(typeof t=="function")return(u,...a)=>this.produceWithPatches(u,s=>t(s,...a));let n,i;return[this.produce(t,r,(u,a)=>{n=u,i=a}),n,i]},typeof(e==null?void 0:e.autoFreeze)=="boolean"&&this.setAutoFreeze(e.autoFreeze),typeof(e==null?void 0:e.useStrictShallowCopy)=="boolean"&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),typeof(e==null?void 0:e.useStrictIteration)=="boolean"&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){m(e)||_(8),b(e)&&(e=ve(e));const t=Z(this),r=z(e,void 0);return r[f].isManual_=!0,$(t),r}finishDraft(e,t){const r=e&&e[f];(!r||!r.isManual_)&&_(9);const{scope_:n}=r;return Y(n,t),V(void 0,n)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let r;for(r=t.length-1;r>=0;r--){const i=t[r];if(i.path.length===0&&i.op==="replace"){e=i.value;break}}r>-1&&(t=t.slice(r+1));const n=S("Patches").applyPatches_;return b(e)?n(e,t):this.produce(e,i=>n(i,t))}};function z(e,t){const r=O(e)?S("MapSet").proxyMap_(e,t):N(e)?S("MapSet").proxySet_(e,t):be(e,t);return(t?t.scope_:M()).drafts_.push(r),r}function ve(e){return b(e)||_(10,e),ae(e)}function ae(e){if(!m(e)||F(e))return e;const t=e[f];let r,n=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=W(e,t.scope_.immer_.useStrictShallowCopy_),n=t.scope_.immer_.shouldUseStrictIteration()}else r=W(e,!0);return P(r,(i,c)=>{oe(r,i,ae(c))},n),t&&(t.finalized_=!1),r}function we(){class e extends Map{constructor(s,o){super(),this[f]={type_:2,parent_:o,scope_:o?o.scope_:M(),modified_:!1,finalized_:!1,copy_:void 0,assigned_:void 0,base_:s,draft_:this,isManual_:!1,revoked_:!1}}get size(){return d(this[f]).size}has(s){return d(this[f]).has(s)}set(s,o){const l=this[f];return u(l),(!d(l).has(s)||d(l).get(s)!==o)&&(r(l),h(l),l.assigned_.set(s,!0),l.copy_.set(s,o),l.assigned_.set(s,!0)),this}delete(s){if(!this.has(s))return!1;const o=this[f];return u(o),r(o),h(o),o.base_.has(s)?o.assigned_.set(s,!1):o.assigned_.delete(s),o.copy_.delete(s),!0}clear(){const s=this[f];u(s),d(s).size&&(r(s),h(s),s.assigned_=new Map,P(s.base_,o=>{s.assigned_.set(o,!1)}),s.copy_.clear())}forEach(s,o){const l=this[f];d(l).forEach((p,x,H)=>{s.call(o,this.get(x),x,this)})}get(s){const o=this[f];u(o);const l=d(o).get(s);if(o.finalized_||!m(l)||l!==o.base_.get(s))return l;const p=z(l,o);return r(o),o.copy_.set(s,p),p}keys(){return d(this[f]).keys()}values(){const s=this.keys();return{[Symbol.iterator]:()=>this.values(),next:()=>{const o=s.next();return o.done?o:{done:!1,value:this.get(o.value)}}}}entries(){const s=this.keys();return{[Symbol.iterator]:()=>this.entries(),next:()=>{const o=s.next();if(o.done)return o;const l=this.get(o.value);return{done:!1,value:[o.value,l]}}}}[Symbol.iterator](){return this.entries()}}function t(a,s){return new e(a,s)}function r(a){a.copy_||(a.assigned_=new Map,a.copy_=new Map(a.base_))}class n extends Set{constructor(s,o){super(),this[f]={type_:3,parent_:o,scope_:o?o.scope_:M(),modified_:!1,finalized_:!1,copy_:void 0,base_:s,draft_:this,drafts_:new Map,revoked_:!1,isManual_:!1}}get size(){return d(this[f]).size}has(s){const o=this[f];return u(o),o.copy_?!!(o.copy_.has(s)||o.drafts_.has(s)&&o.copy_.has(o.drafts_.get(s))):o.base_.has(s)}add(s){const o=this[f];return u(o),this.has(s)||(c(o),h(o),o.copy_.add(s)),this}delete(s){if(!this.has(s))return!1;const o=this[f];return u(o),c(o),h(o),o.copy_.delete(s)||(o.drafts_.has(s)?o.copy_.delete(o.drafts_.get(s)):!1)}clear(){const s=this[f];u(s),d(s).size&&(c(s),h(s),s.copy_.clear())}values(){const s=this[f];return u(s),c(s),s.copy_.values()}entries(){const s=this[f];return u(s),c(s),s.copy_.entries()}keys(){return this.values()}[Symbol.iterator](){return this.values()}forEach(s,o){const l=this.values();let p=l.next();for(;!p.done;)s.call(o,p.value,p.value,this),p=l.next()}}function i(a,s){return new n(a,s)}function c(a){a.copy_||(a.copy_=new Set,a.base_.forEach(s=>{if(m(s)){const o=z(s,a);a.drafts_.set(s,o),a.copy_.add(o)}else a.copy_.add(s)}))}function u(a){a.revoked_&&_(3,JSON.stringify(d(a)))}he("MapSet",{proxyMap_:t,proxySet_:i})}var ze=new Pe,Oe=ze.produce;const xe=e=>(t,r,n)=>(n.setState=(i,c,...u)=>{const a=typeof i=="function"?Oe(i):i;return t(a,c,...u)},e(n.setState,r,n)),Ee=xe,C=()=>{};function Ce(e){return e instanceof Promise}const Ie=(e,t)=>({activeStep:0,stepCount:0,isLoading:!1,nextButtonLabel:"Next",previousButtonLabel:"Back",isNextButtonDisabled:!1,stepAction:C,nextStep:(r=1)=>{const n=t();if(n.activeStep<n.stepCount-r){const i=n.stepAction();Ce(i)?(e({isLoading:!0}),i.then(()=>{e(c=>{c.activeStep+=r,c.stepAction=C})}).catch(c=>{console.error("Error in stepAction:",c)}).finally(()=>{e({isLoading:!1})})):e(c=>{c.activeStep+=r,c.stepAction=C})}},previousStep:(r=1)=>e(n=>{n.activeStep-r>=0&&(n.stepAction=C,n.activeStep-=r)}),setStepAction:r=>{e(n=>{n.stepAction=r})},setIsLoading:r=>e({isLoading:r}),setActiveStep:r=>e({activeStep:r}),setStepCount:r=>e({stepCount:r}),setNextButtonLabel:r=>e({nextButtonLabel:r}),setPreviousButtonLabel:r=>e({previousButtonLabel:r}),setNextButtonDisabled:r=>e({isNextButtonDisabled:r})}),Me=(e={})=>ue(Ee((...t)=>({...Ie(...t),...e}))),te=e=>Symbol.iterator in e,re=e=>"entries"in e,ne=(e,t)=>{const r=e instanceof Map?e:new Map(e.entries()),n=t instanceof Map?t:new Map(t.entries());if(r.size!==n.size)return!1;for(const[i,c]of r)if(!n.has(i)||!Object.is(c,n.get(i)))return!1;return!0},De=(e,t)=>{const r=e[Symbol.iterator](),n=t[Symbol.iterator]();let i=r.next(),c=n.next();for(;!i.done&&!c.done;){if(!Object.is(i.value,c.value))return!1;i=r.next(),c=n.next()}return!!i.done&&!!c.done};function je(e,t){return Object.is(e,t)?!0:typeof e!="object"||e===null||typeof t!="object"||t===null||Object.getPrototypeOf(e)!==Object.getPrototypeOf(t)?!1:te(e)&&te(t)?re(e)&&re(t)?ne(e,t):De(e,t):ne({entries:()=>Object.entries(e)},{entries:()=>Object.entries(t)})}function Ae(e){const t=y.useRef(void 0);return r=>{const n=e(r);return je(t.current,n)?t.current:t.current=n}}const B=y.createContext(void 0),Ne=({children:e,config:t})=>{const r=y.useRef();return r.current||(r.current=Me(t)),I.jsx(B.Provider,{value:r.current,children:e})},G=e=>{const t=y.useContext(B);if(!t)throw new Error("useWizard must be used within a WizardProvider");return le(t,Ae(r=>{const n={...r,isFirstStep:r.activeStep===0,isLastStep:r.activeStep>=r.stepCount-1};return e(n)}))},Fe=({stepCount:e})=>{const{currentStepCount:t,setStepCount:r,activeStep:n,setActiveStep:i}=G(c=>({currentStepCount:c.stepCount,setStepCount:c.setStepCount,activeStep:c.activeStep,setActiveStep:c.setActiveStep}));return y.useEffect(()=>{e!==t&&(r(e),n>=e&&i(Math.max(0,e-1)))},[e,t,r,n,i]),null},ke=({steps:e})=>{const{activeStep:t}=G(r=>({activeStep:r.activeStep}));return e[t]??null};we();function Re({header:e=null,footer:t=null,children:r,startAtEnd:n=!1,initialStep:i=0}){const c=y.useMemo(()=>y.Children.toArray(r).filter(a=>{var s;return!(a===null||y.isValidElement(a)&&((s=a.props)!=null&&s.skip))}),[r]),u=c.length;return I.jsxs(Ne,{config:{activeStep:n?u-1:i,stepCount:u},children:[I.jsx(Fe,{stepCount:u}),e,I.jsx(ke,{steps:c}),t]})}exports.Wizard=Re;exports.WizardContext=B;exports.useWizard=G;
|
|
2
|
+
//# sourceMappingURL=simple-wizard.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simple-wizard.cjs","sources":["../node_modules/zustand/esm/vanilla.mjs","../node_modules/zustand/esm/react.mjs","../node_modules/immer/dist/immer.mjs","../node_modules/zustand/esm/middleware/immer.mjs","../src/store.ts","../node_modules/zustand/esm/vanilla/shallow.mjs","../node_modules/zustand/esm/react/shallow.mjs","../src/context.tsx","../src/components/content.tsx","../src/wizard.tsx"],"sourcesContent":["const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const api = { setState, getState, getInitialState, subscribe };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = ((createState) => createState ? createStoreImpl(createState) : createStoreImpl);\n\nexport { createStore };\n","import React from 'react';\nimport { createStore } from 'zustand/vanilla';\n\nconst identity = (arg) => arg;\nfunction useStore(api, selector = identity) {\n const slice = React.useSyncExternalStore(\n api.subscribe,\n React.useCallback(() => selector(api.getState()), [api, selector]),\n React.useCallback(() => selector(api.getInitialState()), [api, selector])\n );\n React.useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n const api = createStore(createState);\n const useBoundStore = (selector) => useStore(api, selector);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = ((createState) => createState ? createImpl(createState) : createImpl);\n\nexport { create, useStore };\n","// src/utils/env.ts\nvar NOTHING = Symbol.for(\"immer-nothing\");\nvar DRAFTABLE = Symbol.for(\"immer-draftable\");\nvar DRAFT_STATE = Symbol.for(\"immer-state\");\n\n// src/utils/errors.ts\nvar errors = process.env.NODE_ENV !== \"production\" ? [\n // All error codes, starting by 0:\n function(plugin) {\n return `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`;\n },\n function(thing) {\n return `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`;\n },\n \"This object has been frozen and should not be mutated\",\n function(data) {\n return \"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" + data;\n },\n \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n \"Immer forbids circular references\",\n \"The first or second argument to `produce` must be a function\",\n \"The third argument to `produce` must be a function or undefined\",\n \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n function(thing) {\n return `'current' expects a draft, got: ${thing}`;\n },\n \"Object.defineProperty() cannot be used on an Immer draft\",\n \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n \"Immer only supports deleting array indices\",\n \"Immer only supports setting array indices and the 'length' property\",\n function(thing) {\n return `'original' expects a draft, got: ${thing}`;\n }\n // Note: if more errors are added, the errorOffset in Patches.ts should be increased\n // See Patches.ts for additional errors\n] : [];\nfunction die(error, ...args) {\n if (process.env.NODE_ENV !== \"production\") {\n const e = errors[error];\n const msg = typeof e === \"function\" ? e.apply(null, args) : e;\n throw new Error(`[Immer] ${msg}`);\n }\n throw new Error(\n `[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`\n );\n}\n\n// src/utils/common.ts\nvar getPrototypeOf = Object.getPrototypeOf;\nfunction isDraft(value) {\n return !!value && !!value[DRAFT_STATE];\n}\nfunction isDraftable(value) {\n if (!value)\n return false;\n return isPlainObject(value) || Array.isArray(value) || !!value[DRAFTABLE] || !!value.constructor?.[DRAFTABLE] || isMap(value) || isSet(value);\n}\nvar objectCtorString = Object.prototype.constructor.toString();\nvar cachedCtorStrings = /* @__PURE__ */ new WeakMap();\nfunction isPlainObject(value) {\n if (!value || typeof value !== \"object\")\n return false;\n const proto = Object.getPrototypeOf(value);\n if (proto === null || proto === Object.prototype)\n return true;\n const Ctor = Object.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n if (Ctor === Object)\n return true;\n if (typeof Ctor !== \"function\")\n return false;\n let ctorString = cachedCtorStrings.get(Ctor);\n if (ctorString === void 0) {\n ctorString = Function.toString.call(Ctor);\n cachedCtorStrings.set(Ctor, ctorString);\n }\n return ctorString === objectCtorString;\n}\nfunction original(value) {\n if (!isDraft(value))\n die(15, value);\n return value[DRAFT_STATE].base_;\n}\nfunction each(obj, iter, strict = true) {\n if (getArchtype(obj) === 0 /* Object */) {\n const keys = strict ? Reflect.ownKeys(obj) : Object.keys(obj);\n keys.forEach((key) => {\n iter(key, obj[key], obj);\n });\n } else {\n obj.forEach((entry, index) => iter(index, entry, obj));\n }\n}\nfunction getArchtype(thing) {\n const state = thing[DRAFT_STATE];\n return state ? state.type_ : Array.isArray(thing) ? 1 /* Array */ : isMap(thing) ? 2 /* Map */ : isSet(thing) ? 3 /* Set */ : 0 /* Object */;\n}\nfunction has(thing, prop) {\n return getArchtype(thing) === 2 /* Map */ ? thing.has(prop) : Object.prototype.hasOwnProperty.call(thing, prop);\n}\nfunction get(thing, prop) {\n return getArchtype(thing) === 2 /* Map */ ? thing.get(prop) : thing[prop];\n}\nfunction set(thing, propOrOldValue, value) {\n const t = getArchtype(thing);\n if (t === 2 /* Map */)\n thing.set(propOrOldValue, value);\n else if (t === 3 /* Set */) {\n thing.add(value);\n } else\n thing[propOrOldValue] = value;\n}\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\nfunction isMap(target) {\n return target instanceof Map;\n}\nfunction isSet(target) {\n return target instanceof Set;\n}\nfunction latest(state) {\n return state.copy_ || state.base_;\n}\nfunction shallowCopy(base, strict) {\n if (isMap(base)) {\n return new Map(base);\n }\n if (isSet(base)) {\n return new Set(base);\n }\n if (Array.isArray(base))\n return Array.prototype.slice.call(base);\n const isPlain = isPlainObject(base);\n if (strict === true || strict === \"class_only\" && !isPlain) {\n const descriptors = Object.getOwnPropertyDescriptors(base);\n delete descriptors[DRAFT_STATE];\n let keys = Reflect.ownKeys(descriptors);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const desc = descriptors[key];\n if (desc.writable === false) {\n desc.writable = true;\n desc.configurable = true;\n }\n if (desc.get || desc.set)\n descriptors[key] = {\n configurable: true,\n writable: true,\n // could live with !!desc.set as well here...\n enumerable: desc.enumerable,\n value: base[key]\n };\n }\n return Object.create(getPrototypeOf(base), descriptors);\n } else {\n const proto = getPrototypeOf(base);\n if (proto !== null && isPlain) {\n return { ...base };\n }\n const obj = Object.create(proto);\n return Object.assign(obj, base);\n }\n}\nfunction freeze(obj, deep = false) {\n if (isFrozen(obj) || isDraft(obj) || !isDraftable(obj))\n return obj;\n if (getArchtype(obj) > 1) {\n Object.defineProperties(obj, {\n set: dontMutateMethodOverride,\n add: dontMutateMethodOverride,\n clear: dontMutateMethodOverride,\n delete: dontMutateMethodOverride\n });\n }\n Object.freeze(obj);\n if (deep)\n Object.values(obj).forEach((value) => freeze(value, true));\n return obj;\n}\nfunction dontMutateFrozenCollections() {\n die(2);\n}\nvar dontMutateMethodOverride = {\n value: dontMutateFrozenCollections\n};\nfunction isFrozen(obj) {\n if (obj === null || typeof obj !== \"object\")\n return true;\n return Object.isFrozen(obj);\n}\n\n// src/utils/plugins.ts\nvar plugins = {};\nfunction getPlugin(pluginKey) {\n const plugin = plugins[pluginKey];\n if (!plugin) {\n die(0, pluginKey);\n }\n return plugin;\n}\nfunction loadPlugin(pluginKey, implementation) {\n if (!plugins[pluginKey])\n plugins[pluginKey] = implementation;\n}\n\n// src/core/scope.ts\nvar currentScope;\nfunction getCurrentScope() {\n return currentScope;\n}\nfunction createScope(parent_, immer_) {\n return {\n drafts_: [],\n parent_,\n immer_,\n // Whenever the modified draft contains a draft from another scope, we\n // need to prevent auto-freezing so the unowned draft can be finalized.\n canAutoFreeze_: true,\n unfinalizedDrafts_: 0\n };\n}\nfunction usePatchesInScope(scope, patchListener) {\n if (patchListener) {\n getPlugin(\"Patches\");\n scope.patches_ = [];\n scope.inversePatches_ = [];\n scope.patchListener_ = patchListener;\n }\n}\nfunction revokeScope(scope) {\n leaveScope(scope);\n scope.drafts_.forEach(revokeDraft);\n scope.drafts_ = null;\n}\nfunction leaveScope(scope) {\n if (scope === currentScope) {\n currentScope = scope.parent_;\n }\n}\nfunction enterScope(immer2) {\n return currentScope = createScope(currentScope, immer2);\n}\nfunction revokeDraft(draft) {\n const state = draft[DRAFT_STATE];\n if (state.type_ === 0 /* Object */ || state.type_ === 1 /* Array */)\n state.revoke_();\n else\n state.revoked_ = true;\n}\n\n// src/core/finalize.ts\nfunction processResult(result, scope) {\n scope.unfinalizedDrafts_ = scope.drafts_.length;\n const baseDraft = scope.drafts_[0];\n const isReplaced = result !== void 0 && result !== baseDraft;\n if (isReplaced) {\n if (baseDraft[DRAFT_STATE].modified_) {\n revokeScope(scope);\n die(4);\n }\n if (isDraftable(result)) {\n result = finalize(scope, result);\n if (!scope.parent_)\n maybeFreeze(scope, result);\n }\n if (scope.patches_) {\n getPlugin(\"Patches\").generateReplacementPatches_(\n baseDraft[DRAFT_STATE].base_,\n result,\n scope.patches_,\n scope.inversePatches_\n );\n }\n } else {\n result = finalize(scope, baseDraft, []);\n }\n revokeScope(scope);\n if (scope.patches_) {\n scope.patchListener_(scope.patches_, scope.inversePatches_);\n }\n return result !== NOTHING ? result : void 0;\n}\nfunction finalize(rootScope, value, path) {\n if (isFrozen(value))\n return value;\n const useStrictIteration = rootScope.immer_.shouldUseStrictIteration();\n const state = value[DRAFT_STATE];\n if (!state) {\n each(\n value,\n (key, childValue) => finalizeProperty(rootScope, state, value, key, childValue, path),\n useStrictIteration\n );\n return value;\n }\n if (state.scope_ !== rootScope)\n return value;\n if (!state.modified_) {\n maybeFreeze(rootScope, state.base_, true);\n return state.base_;\n }\n if (!state.finalized_) {\n state.finalized_ = true;\n state.scope_.unfinalizedDrafts_--;\n const result = state.copy_;\n let resultEach = result;\n let isSet2 = false;\n if (state.type_ === 3 /* Set */) {\n resultEach = new Set(result);\n result.clear();\n isSet2 = true;\n }\n each(\n resultEach,\n (key, childValue) => finalizeProperty(\n rootScope,\n state,\n result,\n key,\n childValue,\n path,\n isSet2\n ),\n useStrictIteration\n );\n maybeFreeze(rootScope, result, false);\n if (path && rootScope.patches_) {\n getPlugin(\"Patches\").generatePatches_(\n state,\n path,\n rootScope.patches_,\n rootScope.inversePatches_\n );\n }\n }\n return state.copy_;\n}\nfunction finalizeProperty(rootScope, parentState, targetObject, prop, childValue, rootPath, targetIsSet) {\n if (childValue == null) {\n return;\n }\n if (typeof childValue !== \"object\" && !targetIsSet) {\n return;\n }\n const childIsFrozen = isFrozen(childValue);\n if (childIsFrozen && !targetIsSet) {\n return;\n }\n if (process.env.NODE_ENV !== \"production\" && childValue === targetObject)\n die(5);\n if (isDraft(childValue)) {\n const path = rootPath && parentState && parentState.type_ !== 3 /* Set */ && // Set objects are atomic since they have no keys.\n !has(parentState.assigned_, prop) ? rootPath.concat(prop) : void 0;\n const res = finalize(rootScope, childValue, path);\n set(targetObject, prop, res);\n if (isDraft(res)) {\n rootScope.canAutoFreeze_ = false;\n } else\n return;\n } else if (targetIsSet) {\n targetObject.add(childValue);\n }\n if (isDraftable(childValue) && !childIsFrozen) {\n if (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n return;\n }\n if (parentState && parentState.base_ && parentState.base_[prop] === childValue && childIsFrozen) {\n return;\n }\n finalize(rootScope, childValue);\n if ((!parentState || !parentState.scope_.parent_) && typeof prop !== \"symbol\" && (isMap(targetObject) ? targetObject.has(prop) : Object.prototype.propertyIsEnumerable.call(targetObject, prop)))\n maybeFreeze(rootScope, childValue);\n }\n}\nfunction maybeFreeze(scope, value, deep = false) {\n if (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n freeze(value, deep);\n }\n}\n\n// src/core/proxy.ts\nfunction createProxyProxy(base, parent) {\n const isArray = Array.isArray(base);\n const state = {\n type_: isArray ? 1 /* Array */ : 0 /* Object */,\n // Track which produce call this is associated with.\n scope_: parent ? parent.scope_ : getCurrentScope(),\n // True for both shallow and deep changes.\n modified_: false,\n // Used during finalization.\n finalized_: false,\n // Track which properties have been assigned (true) or deleted (false).\n assigned_: {},\n // The parent draft state.\n parent_: parent,\n // The base state.\n base_: base,\n // The base proxy.\n draft_: null,\n // set below\n // The base copy with any updated values.\n copy_: null,\n // Called by the `produce` function.\n revoke_: null,\n isManual_: false\n };\n let target = state;\n let traps = objectTraps;\n if (isArray) {\n target = [state];\n traps = arrayTraps;\n }\n const { revoke, proxy } = Proxy.revocable(target, traps);\n state.draft_ = proxy;\n state.revoke_ = revoke;\n return proxy;\n}\nvar objectTraps = {\n get(state, prop) {\n if (prop === DRAFT_STATE)\n return state;\n const source = latest(state);\n if (!has(source, prop)) {\n return readPropFromProto(state, source, prop);\n }\n const value = source[prop];\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (value === peek(state.base_, prop)) {\n prepareCopy(state);\n return state.copy_[prop] = createProxy(value, state);\n }\n return value;\n },\n has(state, prop) {\n return prop in latest(state);\n },\n ownKeys(state) {\n return Reflect.ownKeys(latest(state));\n },\n set(state, prop, value) {\n const desc = getDescriptorFromProto(latest(state), prop);\n if (desc?.set) {\n desc.set.call(state.draft_, value);\n return true;\n }\n if (!state.modified_) {\n const current2 = peek(latest(state), prop);\n const currentState = current2?.[DRAFT_STATE];\n if (currentState && currentState.base_ === value) {\n state.copy_[prop] = value;\n state.assigned_[prop] = false;\n return true;\n }\n if (is(value, current2) && (value !== void 0 || has(state.base_, prop)))\n return true;\n prepareCopy(state);\n markChanged(state);\n }\n if (state.copy_[prop] === value && // special case: handle new props with value 'undefined'\n (value !== void 0 || prop in state.copy_) || // special case: NaN\n Number.isNaN(value) && Number.isNaN(state.copy_[prop]))\n return true;\n state.copy_[prop] = value;\n state.assigned_[prop] = true;\n return true;\n },\n deleteProperty(state, prop) {\n if (peek(state.base_, prop) !== void 0 || prop in state.base_) {\n state.assigned_[prop] = false;\n prepareCopy(state);\n markChanged(state);\n } else {\n delete state.assigned_[prop];\n }\n if (state.copy_) {\n delete state.copy_[prop];\n }\n return true;\n },\n // Note: We never coerce `desc.value` into an Immer draft, because we can't make\n // the same guarantee in ES5 mode.\n getOwnPropertyDescriptor(state, prop) {\n const owner = latest(state);\n const desc = Reflect.getOwnPropertyDescriptor(owner, prop);\n if (!desc)\n return desc;\n return {\n writable: true,\n configurable: state.type_ !== 1 /* Array */ || prop !== \"length\",\n enumerable: desc.enumerable,\n value: owner[prop]\n };\n },\n defineProperty() {\n die(11);\n },\n getPrototypeOf(state) {\n return getPrototypeOf(state.base_);\n },\n setPrototypeOf() {\n die(12);\n }\n};\nvar arrayTraps = {};\neach(objectTraps, (key, fn) => {\n arrayTraps[key] = function() {\n arguments[0] = arguments[0][0];\n return fn.apply(this, arguments);\n };\n});\narrayTraps.deleteProperty = function(state, prop) {\n if (process.env.NODE_ENV !== \"production\" && isNaN(parseInt(prop)))\n die(13);\n return arrayTraps.set.call(this, state, prop, void 0);\n};\narrayTraps.set = function(state, prop, value) {\n if (process.env.NODE_ENV !== \"production\" && prop !== \"length\" && isNaN(parseInt(prop)))\n die(14);\n return objectTraps.set.call(this, state[0], prop, value, state[0]);\n};\nfunction peek(draft, prop) {\n const state = draft[DRAFT_STATE];\n const source = state ? latest(state) : draft;\n return source[prop];\n}\nfunction readPropFromProto(state, source, prop) {\n const desc = getDescriptorFromProto(source, prop);\n return desc ? `value` in desc ? desc.value : (\n // This is a very special case, if the prop is a getter defined by the\n // prototype, we should invoke it with the draft as context!\n desc.get?.call(state.draft_)\n ) : void 0;\n}\nfunction getDescriptorFromProto(source, prop) {\n if (!(prop in source))\n return void 0;\n let proto = getPrototypeOf(source);\n while (proto) {\n const desc = Object.getOwnPropertyDescriptor(proto, prop);\n if (desc)\n return desc;\n proto = getPrototypeOf(proto);\n }\n return void 0;\n}\nfunction markChanged(state) {\n if (!state.modified_) {\n state.modified_ = true;\n if (state.parent_) {\n markChanged(state.parent_);\n }\n }\n}\nfunction prepareCopy(state) {\n if (!state.copy_) {\n state.copy_ = shallowCopy(\n state.base_,\n state.scope_.immer_.useStrictShallowCopy_\n );\n }\n}\n\n// src/core/immerClass.ts\nvar Immer2 = class {\n constructor(config) {\n this.autoFreeze_ = true;\n this.useStrictShallowCopy_ = false;\n this.useStrictIteration_ = true;\n /**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\n this.produce = (base, recipe, patchListener) => {\n if (typeof base === \"function\" && typeof recipe !== \"function\") {\n const defaultBase = recipe;\n recipe = base;\n const self = this;\n return function curriedProduce(base2 = defaultBase, ...args) {\n return self.produce(base2, (draft) => recipe.call(this, draft, ...args));\n };\n }\n if (typeof recipe !== \"function\")\n die(6);\n if (patchListener !== void 0 && typeof patchListener !== \"function\")\n die(7);\n let result;\n if (isDraftable(base)) {\n const scope = enterScope(this);\n const proxy = createProxy(base, void 0);\n let hasError = true;\n try {\n result = recipe(proxy);\n hasError = false;\n } finally {\n if (hasError)\n revokeScope(scope);\n else\n leaveScope(scope);\n }\n usePatchesInScope(scope, patchListener);\n return processResult(result, scope);\n } else if (!base || typeof base !== \"object\") {\n result = recipe(base);\n if (result === void 0)\n result = base;\n if (result === NOTHING)\n result = void 0;\n if (this.autoFreeze_)\n freeze(result, true);\n if (patchListener) {\n const p = [];\n const ip = [];\n getPlugin(\"Patches\").generateReplacementPatches_(base, result, p, ip);\n patchListener(p, ip);\n }\n return result;\n } else\n die(1, base);\n };\n this.produceWithPatches = (base, recipe) => {\n if (typeof base === \"function\") {\n return (state, ...args) => this.produceWithPatches(state, (draft) => base(draft, ...args));\n }\n let patches, inversePatches;\n const result = this.produce(base, recipe, (p, ip) => {\n patches = p;\n inversePatches = ip;\n });\n return [result, patches, inversePatches];\n };\n if (typeof config?.autoFreeze === \"boolean\")\n this.setAutoFreeze(config.autoFreeze);\n if (typeof config?.useStrictShallowCopy === \"boolean\")\n this.setUseStrictShallowCopy(config.useStrictShallowCopy);\n if (typeof config?.useStrictIteration === \"boolean\")\n this.setUseStrictIteration(config.useStrictIteration);\n }\n createDraft(base) {\n if (!isDraftable(base))\n die(8);\n if (isDraft(base))\n base = current(base);\n const scope = enterScope(this);\n const proxy = createProxy(base, void 0);\n proxy[DRAFT_STATE].isManual_ = true;\n leaveScope(scope);\n return proxy;\n }\n finishDraft(draft, patchListener) {\n const state = draft && draft[DRAFT_STATE];\n if (!state || !state.isManual_)\n die(9);\n const { scope_: scope } = state;\n usePatchesInScope(scope, patchListener);\n return processResult(void 0, scope);\n }\n /**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * By default, auto-freezing is enabled.\n */\n setAutoFreeze(value) {\n this.autoFreeze_ = value;\n }\n /**\n * Pass true to enable strict shallow copy.\n *\n * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n */\n setUseStrictShallowCopy(value) {\n this.useStrictShallowCopy_ = value;\n }\n /**\n * Pass false to use faster iteration that skips non-enumerable properties\n * but still handles symbols for compatibility.\n *\n * By default, strict iteration is enabled (includes all own properties).\n */\n setUseStrictIteration(value) {\n this.useStrictIteration_ = value;\n }\n shouldUseStrictIteration() {\n return this.useStrictIteration_;\n }\n applyPatches(base, patches) {\n let i;\n for (i = patches.length - 1; i >= 0; i--) {\n const patch = patches[i];\n if (patch.path.length === 0 && patch.op === \"replace\") {\n base = patch.value;\n break;\n }\n }\n if (i > -1) {\n patches = patches.slice(i + 1);\n }\n const applyPatchesImpl = getPlugin(\"Patches\").applyPatches_;\n if (isDraft(base)) {\n return applyPatchesImpl(base, patches);\n }\n return this.produce(\n base,\n (draft) => applyPatchesImpl(draft, patches)\n );\n }\n};\nfunction createProxy(value, parent) {\n const draft = isMap(value) ? getPlugin(\"MapSet\").proxyMap_(value, parent) : isSet(value) ? getPlugin(\"MapSet\").proxySet_(value, parent) : createProxyProxy(value, parent);\n const scope = parent ? parent.scope_ : getCurrentScope();\n scope.drafts_.push(draft);\n return draft;\n}\n\n// src/core/current.ts\nfunction current(value) {\n if (!isDraft(value))\n die(10, value);\n return currentImpl(value);\n}\nfunction currentImpl(value) {\n if (!isDraftable(value) || isFrozen(value))\n return value;\n const state = value[DRAFT_STATE];\n let copy;\n let strict = true;\n if (state) {\n if (!state.modified_)\n return state.base_;\n state.finalized_ = true;\n copy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_);\n strict = state.scope_.immer_.shouldUseStrictIteration();\n } else {\n copy = shallowCopy(value, true);\n }\n each(\n copy,\n (key, childValue) => {\n set(copy, key, currentImpl(childValue));\n },\n strict\n );\n if (state) {\n state.finalized_ = false;\n }\n return copy;\n}\n\n// src/plugins/patches.ts\nfunction enablePatches() {\n const errorOffset = 16;\n if (process.env.NODE_ENV !== \"production\") {\n errors.push(\n 'Sets cannot have \"replace\" patches.',\n function(op) {\n return \"Unsupported patch operation: \" + op;\n },\n function(path) {\n return \"Cannot apply patch, path doesn't resolve: \" + path;\n },\n \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n );\n }\n const REPLACE = \"replace\";\n const ADD = \"add\";\n const REMOVE = \"remove\";\n function generatePatches_(state, basePath, patches, inversePatches) {\n switch (state.type_) {\n case 0 /* Object */:\n case 2 /* Map */:\n return generatePatchesFromAssigned(\n state,\n basePath,\n patches,\n inversePatches\n );\n case 1 /* Array */:\n return generateArrayPatches(state, basePath, patches, inversePatches);\n case 3 /* Set */:\n return generateSetPatches(\n state,\n basePath,\n patches,\n inversePatches\n );\n }\n }\n function generateArrayPatches(state, basePath, patches, inversePatches) {\n let { base_, assigned_ } = state;\n let copy_ = state.copy_;\n if (copy_.length < base_.length) {\n ;\n [base_, copy_] = [copy_, base_];\n [patches, inversePatches] = [inversePatches, patches];\n }\n for (let i = 0; i < base_.length; i++) {\n if (assigned_[i] && copy_[i] !== base_[i]) {\n const path = basePath.concat([i]);\n patches.push({\n op: REPLACE,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copy_[i])\n });\n inversePatches.push({\n op: REPLACE,\n path,\n value: clonePatchValueIfNeeded(base_[i])\n });\n }\n }\n for (let i = base_.length; i < copy_.length; i++) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copy_[i])\n });\n }\n for (let i = copy_.length - 1; base_.length <= i; --i) {\n const path = basePath.concat([i]);\n inversePatches.push({\n op: REMOVE,\n path\n });\n }\n }\n function generatePatchesFromAssigned(state, basePath, patches, inversePatches) {\n const { base_, copy_ } = state;\n each(state.assigned_, (key, assignedValue) => {\n const origValue = get(base_, key);\n const value = get(copy_, key);\n const op = !assignedValue ? REMOVE : has(base_, key) ? REPLACE : ADD;\n if (origValue === value && op === REPLACE)\n return;\n const path = basePath.concat(key);\n patches.push(op === REMOVE ? { op, path } : { op, path, value });\n inversePatches.push(\n op === ADD ? { op: REMOVE, path } : op === REMOVE ? { op: ADD, path, value: clonePatchValueIfNeeded(origValue) } : { op: REPLACE, path, value: clonePatchValueIfNeeded(origValue) }\n );\n });\n }\n function generateSetPatches(state, basePath, patches, inversePatches) {\n let { base_, copy_ } = state;\n let i = 0;\n base_.forEach((value) => {\n if (!copy_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: REMOVE,\n path,\n value\n });\n inversePatches.unshift({\n op: ADD,\n path,\n value\n });\n }\n i++;\n });\n i = 0;\n copy_.forEach((value) => {\n if (!base_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n value\n });\n inversePatches.unshift({\n op: REMOVE,\n path,\n value\n });\n }\n i++;\n });\n }\n function generateReplacementPatches_(baseValue, replacement, patches, inversePatches) {\n patches.push({\n op: REPLACE,\n path: [],\n value: replacement === NOTHING ? void 0 : replacement\n });\n inversePatches.push({\n op: REPLACE,\n path: [],\n value: baseValue\n });\n }\n function applyPatches_(draft, patches) {\n patches.forEach((patch) => {\n const { path, op } = patch;\n let base = draft;\n for (let i = 0; i < path.length - 1; i++) {\n const parentType = getArchtype(base);\n let p = path[i];\n if (typeof p !== \"string\" && typeof p !== \"number\") {\n p = \"\" + p;\n }\n if ((parentType === 0 /* Object */ || parentType === 1 /* Array */) && (p === \"__proto__\" || p === \"constructor\"))\n die(errorOffset + 3);\n if (typeof base === \"function\" && p === \"prototype\")\n die(errorOffset + 3);\n base = get(base, p);\n if (typeof base !== \"object\")\n die(errorOffset + 2, path.join(\"/\"));\n }\n const type = getArchtype(base);\n const value = deepClonePatchValue(patch.value);\n const key = path[path.length - 1];\n switch (op) {\n case REPLACE:\n switch (type) {\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n die(errorOffset);\n default:\n return base[key] = value;\n }\n case ADD:\n switch (type) {\n case 1 /* Array */:\n return key === \"-\" ? base.push(value) : base.splice(key, 0, value);\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n return base.add(value);\n default:\n return base[key] = value;\n }\n case REMOVE:\n switch (type) {\n case 1 /* Array */:\n return base.splice(key, 1);\n case 2 /* Map */:\n return base.delete(key);\n case 3 /* Set */:\n return base.delete(patch.value);\n default:\n return delete base[key];\n }\n default:\n die(errorOffset + 1, op);\n }\n });\n return draft;\n }\n function deepClonePatchValue(obj) {\n if (!isDraftable(obj))\n return obj;\n if (Array.isArray(obj))\n return obj.map(deepClonePatchValue);\n if (isMap(obj))\n return new Map(\n Array.from(obj.entries()).map(([k, v]) => [k, deepClonePatchValue(v)])\n );\n if (isSet(obj))\n return new Set(Array.from(obj).map(deepClonePatchValue));\n const cloned = Object.create(getPrototypeOf(obj));\n for (const key in obj)\n cloned[key] = deepClonePatchValue(obj[key]);\n if (has(obj, DRAFTABLE))\n cloned[DRAFTABLE] = obj[DRAFTABLE];\n return cloned;\n }\n function clonePatchValueIfNeeded(obj) {\n if (isDraft(obj)) {\n return deepClonePatchValue(obj);\n } else\n return obj;\n }\n loadPlugin(\"Patches\", {\n applyPatches_,\n generatePatches_,\n generateReplacementPatches_\n });\n}\n\n// src/plugins/mapset.ts\nfunction enableMapSet() {\n class DraftMap extends Map {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 2 /* Map */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n assigned_: void 0,\n base_: target,\n draft_: this,\n isManual_: false,\n revoked_: false\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(key) {\n return latest(this[DRAFT_STATE]).has(key);\n }\n set(key, value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!latest(state).has(key) || latest(state).get(key) !== value) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_.set(key, true);\n state.copy_.set(key, value);\n state.assigned_.set(key, true);\n }\n return this;\n }\n delete(key) {\n if (!this.has(key)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareMapCopy(state);\n markChanged(state);\n if (state.base_.has(key)) {\n state.assigned_.set(key, false);\n } else {\n state.assigned_.delete(key);\n }\n state.copy_.delete(key);\n return true;\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_ = /* @__PURE__ */ new Map();\n each(state.base_, (key) => {\n state.assigned_.set(key, false);\n });\n state.copy_.clear();\n }\n }\n forEach(cb, thisArg) {\n const state = this[DRAFT_STATE];\n latest(state).forEach((_value, key, _map) => {\n cb.call(thisArg, this.get(key), key, this);\n });\n }\n get(key) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n const value = latest(state).get(key);\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (value !== state.base_.get(key)) {\n return value;\n }\n const draft = createProxy(value, state);\n prepareMapCopy(state);\n state.copy_.set(key, draft);\n return draft;\n }\n keys() {\n return latest(this[DRAFT_STATE]).keys();\n }\n values() {\n const iterator = this.keys();\n return {\n [Symbol.iterator]: () => this.values(),\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value\n };\n }\n };\n }\n entries() {\n const iterator = this.keys();\n return {\n [Symbol.iterator]: () => this.entries(),\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value: [r.value, value]\n };\n }\n };\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.entries();\n }\n }\n function proxyMap_(target, parent) {\n return new DraftMap(target, parent);\n }\n function prepareMapCopy(state) {\n if (!state.copy_) {\n state.assigned_ = /* @__PURE__ */ new Map();\n state.copy_ = new Map(state.base_);\n }\n }\n class DraftSet extends Set {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 3 /* Set */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n base_: target,\n draft_: this,\n drafts_: /* @__PURE__ */ new Map(),\n revoked_: false,\n isManual_: false\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!state.copy_) {\n return state.base_.has(value);\n }\n if (state.copy_.has(value))\n return true;\n if (state.drafts_.has(value) && state.copy_.has(state.drafts_.get(value)))\n return true;\n return false;\n }\n add(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!this.has(value)) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.add(value);\n }\n return this;\n }\n delete(value) {\n if (!this.has(value)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n markChanged(state);\n return state.copy_.delete(value) || (state.drafts_.has(value) ? state.copy_.delete(state.drafts_.get(value)) : (\n /* istanbul ignore next */\n false\n ));\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.clear();\n }\n }\n values() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.values();\n }\n entries() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.entries();\n }\n keys() {\n return this.values();\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.values();\n }\n forEach(cb, thisArg) {\n const iterator = this.values();\n let result = iterator.next();\n while (!result.done) {\n cb.call(thisArg, result.value, result.value, this);\n result = iterator.next();\n }\n }\n }\n function proxySet_(target, parent) {\n return new DraftSet(target, parent);\n }\n function prepareSetCopy(state) {\n if (!state.copy_) {\n state.copy_ = /* @__PURE__ */ new Set();\n state.base_.forEach((value) => {\n if (isDraftable(value)) {\n const draft = createProxy(value, state);\n state.drafts_.set(value, draft);\n state.copy_.add(draft);\n } else {\n state.copy_.add(value);\n }\n });\n }\n }\n function assertUnrevoked(state) {\n if (state.revoked_)\n die(3, JSON.stringify(latest(state)));\n }\n loadPlugin(\"MapSet\", { proxyMap_, proxySet_ });\n}\n\n// src/immer.ts\nvar immer = new Immer2();\nvar produce = immer.produce;\nvar produceWithPatches = /* @__PURE__ */ immer.produceWithPatches.bind(\n immer\n);\nvar setAutoFreeze = /* @__PURE__ */ immer.setAutoFreeze.bind(immer);\nvar setUseStrictShallowCopy = /* @__PURE__ */ immer.setUseStrictShallowCopy.bind(\n immer\n);\nvar setUseStrictIteration = /* @__PURE__ */ immer.setUseStrictIteration.bind(\n immer\n);\nvar applyPatches = /* @__PURE__ */ immer.applyPatches.bind(immer);\nvar createDraft = /* @__PURE__ */ immer.createDraft.bind(immer);\nvar finishDraft = /* @__PURE__ */ immer.finishDraft.bind(immer);\nfunction castDraft(value) {\n return value;\n}\nfunction castImmutable(value) {\n return value;\n}\nexport {\n Immer2 as Immer,\n applyPatches,\n castDraft,\n castImmutable,\n createDraft,\n current,\n enableMapSet,\n enablePatches,\n finishDraft,\n freeze,\n DRAFTABLE as immerable,\n isDraft,\n isDraftable,\n NOTHING as nothing,\n original,\n produce,\n produceWithPatches,\n setAutoFreeze,\n setUseStrictIteration,\n setUseStrictShallowCopy\n};\n//# sourceMappingURL=immer.mjs.map","import { produce } from 'immer';\n\nconst immerImpl = (initializer) => (set, get, store) => {\n store.setState = (updater, replace, ...args) => {\n const nextState = typeof updater === \"function\" ? produce(updater) : updater;\n return set(nextState, replace, ...args);\n };\n return initializer(store.setState, get, store);\n};\nconst immer = immerImpl;\n\nexport { immer };\n","import { createStore, type StateCreator } from \"zustand/vanilla\";\nimport { immer } from \"zustand/middleware/immer\";\n\ntype Mutators = [[\"zustand/immer\", never]];\n\nexport interface State {\n activeStep: number;\n stepCount: number;\n isLoading: boolean;\n stepAction: (() => Promise<void>) | (() => void);\n nextButtonLabel?: string;\n previousButtonLabel?: string;\n isNextButtonDisabled?: boolean;\n}\n\nexport interface Actions {\n nextStep: (skip?: number) => void;\n previousStep: (skip?: number) => void;\n setIsLoading: (isLoading: boolean) => void;\n setActiveStep: (activeStep: number) => void;\n setStepCount: (stepCount: number) => void;\n setStepAction: (handler: (() => Promise<void>) | (() => void)) => void;\n setNextButtonLabel: (label: string) => void;\n setPreviousButtonLabel: (label: string) => void;\n setNextButtonDisabled: (disabled: boolean) => void;\n}\n\nexport type Store = State & Actions;\n\nconst DEFAULT_STEP_ACTION = () => { };\n\nfunction isPromise(value: unknown): value is Promise<void> {\n return value instanceof Promise;\n}\n\nconst createStateSlice: StateCreator<Store, Mutators, [], Store> = (\n set,\n get,\n) => ({\n activeStep: 0,\n stepCount: 0,\n isLoading: false,\n nextButtonLabel: \"Next\",\n previousButtonLabel: \"Back\",\n isNextButtonDisabled: false,\n stepAction: DEFAULT_STEP_ACTION,\n nextStep: (skip = 1) => {\n const state = get();\n if (state.activeStep < state.stepCount - skip) {\n const result = state.stepAction();\n if (isPromise(result)) {\n set({ isLoading: true });\n result\n .then(() => {\n set((state) => {\n state.activeStep += skip;\n state.stepAction = DEFAULT_STEP_ACTION;\n });\n })\n .catch((error) => {\n console.error(\"Error in stepAction:\", error);\n }).finally(() => {\n set({ isLoading: false });\n });\n } else {\n set((state) => {\n state.activeStep += skip;\n state.stepAction = DEFAULT_STEP_ACTION;\n });\n }\n }\n },\n previousStep: (skip = 1) =>\n set((state) => {\n if (state.activeStep - skip >= 0) {\n state.stepAction = DEFAULT_STEP_ACTION;\n state.activeStep -= skip;\n }\n }),\n setStepAction: (handler) => {\n set((state) => {\n state.stepAction = handler;\n });\n },\n setIsLoading: (isLoading) => set({ isLoading }),\n setActiveStep: (activeStep) => set({ activeStep }),\n setStepCount: (stepCount) => set({ stepCount }),\n setNextButtonLabel: (nextButtonLabel) => set({ nextButtonLabel }),\n setPreviousButtonLabel: (previousButtonLabel) => set({ previousButtonLabel }),\n setNextButtonDisabled: (isNextButtonDisabled) =>\n set({ isNextButtonDisabled }),\n});\n\nexport const createWizardStore = (initialState = {}) =>\n createStore(\n immer<Store>((...args) => ({\n ...createStateSlice(...args),\n ...(initialState as State),\n })),\n );\n\nexport type StoreApi = ReturnType<typeof createWizardStore>;\n","const isIterable = (obj) => Symbol.iterator in obj;\nconst hasIterableEntries = (value) => (\n // HACK: avoid checking entries type\n \"entries\" in value\n);\nconst compareEntries = (valueA, valueB) => {\n const mapA = valueA instanceof Map ? valueA : new Map(valueA.entries());\n const mapB = valueB instanceof Map ? valueB : new Map(valueB.entries());\n if (mapA.size !== mapB.size) {\n return false;\n }\n for (const [key, value] of mapA) {\n if (!mapB.has(key) || !Object.is(value, mapB.get(key))) {\n return false;\n }\n }\n return true;\n};\nconst compareIterables = (valueA, valueB) => {\n const iteratorA = valueA[Symbol.iterator]();\n const iteratorB = valueB[Symbol.iterator]();\n let nextA = iteratorA.next();\n let nextB = iteratorB.next();\n while (!nextA.done && !nextB.done) {\n if (!Object.is(nextA.value, nextB.value)) {\n return false;\n }\n nextA = iteratorA.next();\n nextB = iteratorB.next();\n }\n return !!nextA.done && !!nextB.done;\n};\nfunction shallow(valueA, valueB) {\n if (Object.is(valueA, valueB)) {\n return true;\n }\n if (typeof valueA !== \"object\" || valueA === null || typeof valueB !== \"object\" || valueB === null) {\n return false;\n }\n if (Object.getPrototypeOf(valueA) !== Object.getPrototypeOf(valueB)) {\n return false;\n }\n if (isIterable(valueA) && isIterable(valueB)) {\n if (hasIterableEntries(valueA) && hasIterableEntries(valueB)) {\n return compareEntries(valueA, valueB);\n }\n return compareIterables(valueA, valueB);\n }\n return compareEntries(\n { entries: () => Object.entries(valueA) },\n { entries: () => Object.entries(valueB) }\n );\n}\n\nexport { shallow };\n","import React from 'react';\nimport { shallow } from 'zustand/vanilla/shallow';\n\nfunction useShallow(selector) {\n const prev = React.useRef(void 0);\n return (state) => {\n const next = selector(state);\n return shallow(prev.current, next) ? prev.current : prev.current = next;\n };\n}\n\nexport { useShallow };\n","import { createContext, type ReactNode, useContext, useEffect, useRef } from \"react\";\nimport { useStore } from \"zustand\";\nimport {\n createWizardStore,\n type Store,\n type StoreApi,\n type State,\n} from \"./store\";\nimport { useShallow } from \"zustand/react/shallow\";\n\nexport const Context = createContext<\n StoreApi | undefined\n>(undefined);\n\nexport const Provider = ({\n children,\n config,\n}: {\n children: ReactNode;\n config: Pick<State, \"activeStep\" | \"stepCount\">;\n}) => {\n const storeRef = useRef<StoreApi>();\n if (!storeRef.current) {\n storeRef.current = createWizardStore(config);\n }\n\n return (\n <Context.Provider value={storeRef.current}>\n {children}\n </Context.Provider>\n );\n};\n\nexport const useWizard = <T extends Partial<Store>>(\n selector: (store: Store & { isFirstStep: boolean; isLastStep: boolean }) => T,\n) => {\n const context = useContext(Context);\n if (!context) {\n throw new Error(\"useWizard must be used within a WizardProvider\");\n }\n return useStore(\n context,\n useShallow((store) => {\n const extended = {\n ...store,\n isFirstStep: store.activeStep === 0,\n isLastStep: store.activeStep >= store.stepCount - 1,\n }\n\n return selector(extended)\n }),\n );\n};\n\n/**\n * Internal component to sync stepCount when children change dynamically.\n * This handles cases where steps are conditionally skipped.\n */\nexport const StepCountSync = ({ stepCount }: { stepCount: number }) => {\n const { currentStepCount, setStepCount, activeStep, setActiveStep } = useWizard((state) => ({\n currentStepCount: state.stepCount,\n setStepCount: state.setStepCount,\n activeStep: state.activeStep,\n setActiveStep: state.setActiveStep,\n }));\n\n useEffect(() => {\n if (stepCount !== currentStepCount) {\n setStepCount(stepCount);\n // If current step is now out of bounds, clamp it\n if (activeStep >= stepCount) {\n setActiveStep(Math.max(0, stepCount - 1));\n }\n }\n }, [stepCount, currentStepCount, setStepCount, activeStep, setActiveStep]);\n\n return null;\n};\n","import type { ReactNode } from \"react\";\nimport { useWizard } from \"../context\";\nimport type { State } from \"../store\";\n\nexport const Content = ({ steps }: { steps: ReactNode[] }) => {\n const { activeStep } = useWizard<Pick<State, \"activeStep\">>(\n (state) => ({\n activeStep: state.activeStep,\n }),\n );\n\n return steps[activeStep] ?? null;\n};\n","\"use client\";\nimport { Children, isValidElement, useMemo, type ReactNode } from \"react\";\nimport { Content } from \"./components/content\";\nimport { Provider, StepCountSync } from \"./context\";\nimport { enableMapSet } from \"immer\";\n\nenableMapSet();\n\nexport interface Props {\n header?: ReactNode;\n footer?: ReactNode;\n children?: ReactNode;\n startAtEnd?: boolean;\n initialStep?: number;\n}\n\nexport function Wizard({\n header = null,\n footer = null,\n children,\n startAtEnd = false,\n initialStep = 0,\n}: Props) {\n const steps = useMemo(() => {\n return Children.toArray(children).filter((child) => {\n if (child === null) return false;\n if (isValidElement(child) && child.props?.skip) return false;\n return true;\n });\n }, [children])\n\n const stepCount = steps.length;\n\n return (\n <Provider\n config={{\n activeStep: startAtEnd ? stepCount - 1 : initialStep,\n stepCount,\n }}\n >\n <StepCountSync stepCount={stepCount} />\n {header}\n <Content steps={steps} />\n {footer}\n </Provider>\n );\n}\n"],"names":["createStoreImpl","createState","state","listeners","setState","partial","replace","nextState","previousState","listener","getState","api","initialState","createStore","identity","arg","useStore","selector","slice","React","NOTHING","DRAFTABLE","DRAFT_STATE","errors","plugin","thing","data","die","error","args","e","msg","getPrototypeOf","isDraft","value","isDraftable","isPlainObject","_a","isMap","isSet","objectCtorString","cachedCtorStrings","proto","Ctor","ctorString","each","obj","iter","strict","getArchtype","key","entry","index","has","prop","set","propOrOldValue","t","is","x","y","target","latest","shallowCopy","base","isPlain","descriptors","keys","i","desc","freeze","deep","isFrozen","dontMutateMethodOverride","dontMutateFrozenCollections","plugins","getPlugin","pluginKey","loadPlugin","implementation","currentScope","getCurrentScope","createScope","parent_","immer_","usePatchesInScope","scope","patchListener","revokeScope","leaveScope","revokeDraft","enterScope","immer2","draft","processResult","result","baseDraft","finalize","maybeFreeze","rootScope","path","useStrictIteration","childValue","finalizeProperty","resultEach","isSet2","parentState","targetObject","rootPath","targetIsSet","childIsFrozen","res","createProxyProxy","parent","isArray","traps","objectTraps","arrayTraps","revoke","proxy","source","readPropFromProto","peek","prepareCopy","createProxy","getDescriptorFromProto","current2","currentState","markChanged","owner","fn","Immer2","config","recipe","defaultBase","self","base2","hasError","p","ip","patches","inversePatches","current","patch","applyPatchesImpl","currentImpl","copy","enableMapSet","DraftMap","assertUnrevoked","prepareMapCopy","cb","thisArg","_value","_map","iterator","r","proxyMap_","DraftSet","prepareSetCopy","proxySet_","immer","produce","immerImpl","initializer","get","store","updater","DEFAULT_STEP_ACTION","isPromise","createStateSlice","skip","handler","isLoading","activeStep","stepCount","nextButtonLabel","previousButtonLabel","isNextButtonDisabled","createWizardStore","isIterable","hasIterableEntries","compareEntries","valueA","valueB","mapA","mapB","compareIterables","iteratorA","iteratorB","nextA","nextB","shallow","useShallow","prev","next","Context","createContext","Provider","children","storeRef","useRef","useWizard","context","useContext","extended","StepCountSync","currentStepCount","setStepCount","setActiveStep","useEffect","Content","steps","Wizard","header","footer","startAtEnd","initialStep","useMemo","Children","child","isValidElement","jsxs","jsx"],"mappings":"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","x_google_ignoreList":[0,1,2,3,5,6]}
|