@lucas-barake/effect-form-react 0.20.0 → 0.22.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.
@@ -1,375 +0,0 @@
1
- import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { RegistryContext, useAtom, useAtomMount, useAtomSet, useAtomSubscribe, useAtomValue } from "@effect-atom/atom-react";
3
- import * as Atom from "@effect-atom/atom/Atom";
4
- import { Field, FormAtoms, Mode, Validation } from "@lucas-barake/effect-form";
5
- import { getNestedValue } from "@lucas-barake/effect-form/Path";
6
- import * as Cause from "effect/Cause";
7
- import * as Layer from "effect/Layer";
8
- import * as Option from "effect/Option";
9
- import * as ParseResult from "effect/ParseResult";
10
- import * as AST from "effect/SchemaAST";
11
- import * as React from "react";
12
- import { createContext, useContext } from "react";
13
- import { useDebounced } from "./internal/use-debounced.js";
14
- const ArrayItemContext = /*#__PURE__*/createContext(null);
15
- const AutoSubmitContext = /*#__PURE__*/createContext(null);
16
- const makeFieldComponent = (fieldKey, fieldDef, errorsAtom, submitCountAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, Component) => {
17
- const FieldComponent = extraProps => {
18
- const arrayCtx = useContext(ArrayItemContext);
19
- const autoSubmitOnBlur = useContext(AutoSubmitContext);
20
- const fieldPath = arrayCtx ? `${arrayCtx.parentPath}.${fieldKey}` : fieldKey;
21
- const {
22
- errorAtom,
23
- isDirtyAtom,
24
- touchedAtom,
25
- valueAtom
26
- } = React.useMemo(() => getOrCreateFieldAtoms(fieldPath), [fieldPath]);
27
- const [value, setValue] = useAtom(valueAtom);
28
- const [isTouched, setTouched] = useAtom(touchedAtom);
29
- const storedError = useAtomValue(errorAtom);
30
- const submitCount = useAtomValue(submitCountAtom);
31
- const validationAtom = React.useMemo(() => getOrCreateValidationAtom(fieldPath, fieldDef.schema), [fieldPath]);
32
- const validationResult = useAtomValue(validationAtom);
33
- const validateImmediate = useAtomSet(validationAtom);
34
- const shouldDebounceValidation = parsedMode.validation === "onChange" && parsedMode.debounce !== null && !parsedMode.autoSubmit;
35
- const validate = useDebounced(validateImmediate, shouldDebounceValidation ? parsedMode.debounce : null);
36
- const prevValueRef = React.useRef(value);
37
- React.useEffect(() => {
38
- if (prevValueRef.current === value) {
39
- return;
40
- }
41
- prevValueRef.current = value;
42
- const shouldValidate = parsedMode.validation === "onChange" || parsedMode.validation === "onBlur" && isTouched || parsedMode.validation === "onSubmit" && submitCount > 0;
43
- if (shouldValidate) {
44
- validate(value);
45
- }
46
- }, [value, isTouched, submitCount, validate]);
47
- const livePerFieldError = React.useMemo(() => {
48
- if (validationResult._tag === "Failure") {
49
- const parseError = Cause.failureOption(validationResult.cause);
50
- if (Option.isSome(parseError) && ParseResult.isParseError(parseError.value)) {
51
- return Validation.extractFirstError(parseError.value);
52
- }
53
- }
54
- return Option.none();
55
- }, [validationResult]);
56
- const isValidating = validationResult.waiting;
57
- const validationError = React.useMemo(() => {
58
- if (Option.isSome(livePerFieldError)) {
59
- return livePerFieldError;
60
- }
61
- if (Option.isSome(storedError)) {
62
- // Hide field-sourced errors when validation passes or is pending (async gap).
63
- // Refinement errors persist until re-submit - they can't be cleared by typing.
64
- const shouldHideStoredError = storedError.value.source === "field" && (validationResult._tag === "Success" || isValidating);
65
- if (shouldHideStoredError) {
66
- return Option.none();
67
- }
68
- return Option.some(storedError.value.message);
69
- }
70
- return Option.none();
71
- }, [livePerFieldError, storedError, validationResult, isValidating]);
72
- const onChange = React.useCallback(newValue => {
73
- setValue(newValue);
74
- }, [setValue]);
75
- const onBlur = React.useCallback(() => {
76
- setTouched(true);
77
- if (parsedMode.validation === "onBlur") {
78
- validate(value);
79
- }
80
- autoSubmitOnBlur?.();
81
- }, [setTouched, validate, value, autoSubmitOnBlur]);
82
- const isDirty = useAtomValue(isDirtyAtom);
83
- const shouldShowError = parsedMode.validation === "onChange" ? isDirty || submitCount > 0 : parsedMode.validation === "onBlur" ? isTouched || submitCount > 0 : submitCount > 0;
84
- const fieldState = React.useMemo(() => ({
85
- value,
86
- onChange,
87
- onBlur,
88
- error: shouldShowError ? validationError : Option.none(),
89
- isTouched,
90
- isValidating,
91
- isDirty
92
- }), [value, onChange, onBlur, shouldShowError, validationError, isTouched, isValidating, isDirty]);
93
- return _jsx(Component, {
94
- field: fieldState,
95
- props: extraProps
96
- });
97
- };
98
- return React.memo(FieldComponent);
99
- };
100
- const makeArrayFieldComponent = (fieldKey, def, stateAtom, errorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, operations, componentMap) => {
101
- const isStructSchema = AST.isTypeLiteral(def.itemSchema.ast);
102
- const ArrayWrapper = ({
103
- children
104
- }) => {
105
- const arrayCtx = useContext(ArrayItemContext);
106
- const [formStateOption, setFormState] = useAtom(stateAtom);
107
- const formState = Option.getOrThrow(formStateOption);
108
- const fieldPath = arrayCtx ? `${arrayCtx.parentPath}.${fieldKey}` : fieldKey;
109
- const items = React.useMemo(() => getNestedValue(formState.values, fieldPath) ?? [], [formState.values, fieldPath]);
110
- const append = React.useCallback(value => {
111
- setFormState(prev => {
112
- if (Option.isNone(prev)) return prev;
113
- return Option.some(operations.appendArrayItem(prev.value, fieldPath, def.itemSchema, value));
114
- });
115
- }, [fieldPath, setFormState]);
116
- const remove = React.useCallback(index => {
117
- setFormState(prev => {
118
- if (Option.isNone(prev)) return prev;
119
- return Option.some(operations.removeArrayItem(prev.value, fieldPath, index));
120
- });
121
- }, [fieldPath, setFormState]);
122
- const swap = React.useCallback((indexA, indexB) => {
123
- setFormState(prev => {
124
- if (Option.isNone(prev)) return prev;
125
- return Option.some(operations.swapArrayItems(prev.value, fieldPath, indexA, indexB));
126
- });
127
- }, [fieldPath, setFormState]);
128
- const move = React.useCallback((from, to) => {
129
- setFormState(prev => {
130
- if (Option.isNone(prev)) return prev;
131
- return Option.some(operations.moveArrayItem(prev.value, fieldPath, from, to));
132
- });
133
- }, [fieldPath, setFormState]);
134
- return _jsx(_Fragment, {
135
- children: children({
136
- items,
137
- append,
138
- remove,
139
- swap,
140
- move
141
- })
142
- });
143
- };
144
- const ItemWrapper = ({
145
- children,
146
- index
147
- }) => {
148
- const arrayCtx = useContext(ArrayItemContext);
149
- const setFormState = useAtomSet(stateAtom);
150
- const parentPath = arrayCtx ? `${arrayCtx.parentPath}.${fieldKey}` : fieldKey;
151
- const itemPath = `${parentPath}[${index}]`;
152
- const remove = React.useCallback(() => {
153
- setFormState(prev => {
154
- if (Option.isNone(prev)) return prev;
155
- return Option.some(operations.removeArrayItem(prev.value, parentPath, index));
156
- });
157
- }, [parentPath, index, setFormState]);
158
- return _jsx(ArrayItemContext.Provider, {
159
- value: {
160
- index,
161
- parentPath: itemPath
162
- },
163
- children: typeof children === "function" ? children({
164
- remove
165
- }) : children
166
- });
167
- };
168
- const itemFieldComponents = {};
169
- if (isStructSchema) {
170
- const ast = def.itemSchema.ast;
171
- for (const prop of ast.propertySignatures) {
172
- const itemKey = prop.name;
173
- const itemSchema = {
174
- ast: prop.type
175
- };
176
- const itemDef = Field.makeField(itemKey, itemSchema);
177
- const itemComponent = componentMap[itemKey];
178
- itemFieldComponents[itemKey] = makeFieldComponent(itemKey, itemDef, errorsAtom, submitCountAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, itemComponent);
179
- }
180
- }
181
- const properties = {
182
- Item: ItemWrapper,
183
- ...itemFieldComponents
184
- };
185
- return new Proxy(ArrayWrapper, {
186
- get(target, prop) {
187
- if (prop in properties) {
188
- return properties[prop];
189
- }
190
- return Reflect.get(target, prop);
191
- }
192
- });
193
- };
194
- const makeFieldComponents = (fields, stateAtom, errorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, operations, componentMap) => {
195
- const components = {};
196
- for (const [key, def] of Object.entries(fields)) {
197
- if (Field.isArrayFieldDef(def)) {
198
- const arrayComponentMap = componentMap[key];
199
- components[key] = makeArrayFieldComponent(key, def, stateAtom, errorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, operations, arrayComponentMap);
200
- } else if (Field.isFieldDef(def)) {
201
- const fieldComponent = componentMap[key];
202
- components[key] = makeFieldComponent(key, def, errorsAtom, submitCountAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, fieldComponent);
203
- }
204
- }
205
- return components;
206
- };
207
- export const make = (self, options) => {
208
- const {
209
- fields: components,
210
- mode,
211
- onSubmit,
212
- runtime: providedRuntime,
213
- reactivityKeys
214
- } = options;
215
- const runtime = providedRuntime ?? Atom.runtime(Layer.empty);
216
- const parsedMode = Mode.parse(mode);
217
- const {
218
- fields
219
- } = self;
220
- const formAtoms = FormAtoms.make({
221
- formBuilder: self,
222
- runtime,
223
- onSubmit,
224
- reactivityKeys
225
- });
226
- const {
227
- combinedSchema,
228
- dirtyFieldsAtom,
229
- errorsAtom,
230
- fieldRefs,
231
- getFieldIsDirty,
232
- getFieldValue,
233
- getOrCreateFieldAtoms,
234
- getOrCreateValidationAtom,
235
- hasChangedSinceSubmitAtom,
236
- isDirtyAtom,
237
- keepAliveActiveAtom,
238
- lastSubmittedValuesAtom,
239
- mountAtom,
240
- operations,
241
- resetAtom,
242
- revertToLastSubmitAtom,
243
- rootErrorAtom,
244
- setValue,
245
- setValuesAtom,
246
- stateAtom,
247
- submitAtom,
248
- submitCountAtom,
249
- valuesAtom
250
- } = formAtoms;
251
- const InitializeComponent = ({
252
- children,
253
- defaultValues
254
- }) => {
255
- const registry = React.useContext(RegistryContext);
256
- const state = useAtomValue(stateAtom);
257
- const setFormState = useAtomSet(stateAtom);
258
- const callSubmit = useAtomSet(submitAtom);
259
- const isInitializedRef = React.useRef(false);
260
- const [isInitialized, setIsInitialized] = React.useState(false);
261
- React.useEffect(() => {
262
- const isKeptAlive = registry.get(keepAliveActiveAtom);
263
- const currentState = registry.get(stateAtom);
264
- if (!isKeptAlive) {
265
- setFormState(Option.some(operations.createInitialState(defaultValues)));
266
- } else if (Option.isNone(currentState)) {
267
- setFormState(Option.some(operations.createInitialState(defaultValues)));
268
- }
269
- isInitializedRef.current = true;
270
- setIsInitialized(true);
271
- // eslint-disable-next-line react-hooks/exhaustive-deps -- mount-only
272
- }, [registry]);
273
- const debouncedAutoSubmit = useDebounced(() => {
274
- const stateOption = registry.get(stateAtom);
275
- if (Option.isNone(stateOption)) return;
276
- callSubmit(undefined);
277
- }, parsedMode.autoSubmit && parsedMode.validation === "onChange" ? parsedMode.debounce : null);
278
- // ─────────────────────────────────────────────────────────────────────────────
279
- // Auto-Submit Coordination
280
- // ─────────────────────────────────────────────────────────────────────────────
281
- // Two-subscription model to avoid infinite loop:
282
- // - Stream 1 reacts to value changes (reference equality), triggers or queues submit
283
- // - Stream 2 reacts to submit completion, flushes queued changes
284
- //
285
- // Single subscription to stateAtom cannot distinguish value changes from submit
286
- // metadata updates (submitCount, lastSubmittedValues).
287
- // ─────────────────────────────────────────────────────────────────────────────
288
- const lastValuesRef = React.useRef(null);
289
- const pendingChangesRef = React.useRef(false);
290
- const wasSubmittingRef = React.useRef(false);
291
- useAtomSubscribe(stateAtom, React.useCallback(() => {
292
- if (!isInitializedRef.current) return;
293
- const state = registry.get(stateAtom);
294
- if (Option.isNone(state)) return;
295
- const currentValues = state.value.values;
296
- // Reference equality filters out submit metadata changes.
297
- // Works because setFieldValue creates new values object (immutable update).
298
- if (currentValues === lastValuesRef.current) return;
299
- lastValuesRef.current = currentValues;
300
- if (!parsedMode.autoSubmit || parsedMode.validation !== "onChange") return;
301
- const submitResult = registry.get(submitAtom);
302
- if (submitResult.waiting) {
303
- pendingChangesRef.current = true;
304
- } else {
305
- debouncedAutoSubmit();
306
- }
307
- }, [debouncedAutoSubmit, registry]), {
308
- immediate: false
309
- });
310
- useAtomSubscribe(submitAtom, React.useCallback(result => {
311
- if (!parsedMode.autoSubmit || parsedMode.validation !== "onChange") return;
312
- const isSubmitting = result.waiting;
313
- const wasSubmitting = wasSubmittingRef.current;
314
- wasSubmittingRef.current = isSubmitting;
315
- // Flush queued changes when submit completes
316
- if (wasSubmitting && !isSubmitting) {
317
- if (pendingChangesRef.current) {
318
- pendingChangesRef.current = false;
319
- debouncedAutoSubmit();
320
- }
321
- }
322
- }, [debouncedAutoSubmit]), {
323
- immediate: false
324
- });
325
- const onBlurAutoSubmit = React.useCallback(() => {
326
- if (!parsedMode.autoSubmit || parsedMode.validation !== "onBlur") return;
327
- const stateOption = registry.get(stateAtom);
328
- if (Option.isNone(stateOption)) return;
329
- const {
330
- lastSubmittedValues,
331
- values
332
- } = stateOption.value;
333
- if (Option.isSome(lastSubmittedValues) && values === lastSubmittedValues.value.encoded) return;
334
- callSubmit(undefined);
335
- }, [registry, callSubmit]);
336
- if (!isInitialized) return null;
337
- if (Option.isNone(state)) return null;
338
- return _jsx(AutoSubmitContext.Provider, {
339
- value: onBlurAutoSubmit,
340
- children: children
341
- });
342
- };
343
- const fieldComponents = makeFieldComponents(fields, stateAtom, errorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, operations, components);
344
- const KeepAlive = () => {
345
- const setKeepAliveActive = useAtomSet(keepAliveActiveAtom);
346
- React.useLayoutEffect(() => {
347
- setKeepAliveActive(true);
348
- return () => setKeepAliveActive(false);
349
- }, [setKeepAliveActive]);
350
- useAtomMount(mountAtom);
351
- return null;
352
- };
353
- return {
354
- values: valuesAtom,
355
- isDirty: isDirtyAtom,
356
- hasChangedSinceSubmit: hasChangedSinceSubmitAtom,
357
- lastSubmittedValues: lastSubmittedValuesAtom,
358
- submitCount: submitCountAtom,
359
- rootError: rootErrorAtom,
360
- schema: combinedSchema,
361
- fields: fieldRefs,
362
- Initialize: InitializeComponent,
363
- submit: submitAtom,
364
- reset: resetAtom,
365
- revertToLastSubmit: revertToLastSubmitAtom,
366
- setValues: setValuesAtom,
367
- setValue,
368
- getFieldValue,
369
- getFieldIsDirty,
370
- mount: mountAtom,
371
- KeepAlive,
372
- ...fieldComponents
373
- };
374
- };
375
- //# sourceMappingURL=FormReact.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FormReact.js","names":["RegistryContext","useAtom","useAtomMount","useAtomSet","useAtomSubscribe","useAtomValue","Atom","Field","FormAtoms","Mode","Validation","getNestedValue","Cause","Layer","Option","ParseResult","AST","React","createContext","useContext","useDebounced","ArrayItemContext","AutoSubmitContext","makeFieldComponent","fieldKey","fieldDef","errorsAtom","submitCountAtom","parsedMode","getOrCreateValidationAtom","getOrCreateFieldAtoms","Component","FieldComponent","extraProps","arrayCtx","autoSubmitOnBlur","fieldPath","parentPath","errorAtom","isDirtyAtom","touchedAtom","valueAtom","useMemo","value","setValue","isTouched","setTouched","storedError","submitCount","validationAtom","schema","validationResult","validateImmediate","shouldDebounceValidation","validation","debounce","autoSubmit","validate","prevValueRef","useRef","useEffect","current","shouldValidate","livePerFieldError","_tag","parseError","failureOption","cause","isSome","isParseError","extractFirstError","none","isValidating","waiting","validationError","shouldHideStoredError","source","some","message","onChange","useCallback","newValue","onBlur","isDirty","shouldShowError","fieldState","error","_jsx","field","props","memo","makeArrayFieldComponent","def","stateAtom","dirtyFieldsAtom","operations","componentMap","isStructSchema","isTypeLiteral","itemSchema","ast","ArrayWrapper","children","formStateOption","setFormState","formState","getOrThrow","items","values","append","prev","isNone","appendArrayItem","remove","index","removeArrayItem","swap","indexA","indexB","swapArrayItems","move","from","to","moveArrayItem","_Fragment","ItemWrapper","itemPath","Provider","itemFieldComponents","prop","propertySignatures","itemKey","name","type","itemDef","makeField","itemComponent","properties","Item","Proxy","get","target","Reflect","makeFieldComponents","fields","components","key","Object","entries","isArrayFieldDef","arrayComponentMap","isFieldDef","fieldComponent","make","self","options","mode","onSubmit","runtime","providedRuntime","reactivityKeys","empty","parse","formAtoms","formBuilder","combinedSchema","fieldRefs","getFieldIsDirty","getFieldValue","hasChangedSinceSubmitAtom","keepAliveActiveAtom","lastSubmittedValuesAtom","mountAtom","resetAtom","revertToLastSubmitAtom","rootErrorAtom","setValuesAtom","submitAtom","valuesAtom","InitializeComponent","defaultValues","registry","state","callSubmit","isInitializedRef","isInitialized","setIsInitialized","useState","isKeptAlive","currentState","createInitialState","debouncedAutoSubmit","stateOption","undefined","lastValuesRef","pendingChangesRef","wasSubmittingRef","currentValues","submitResult","immediate","result","isSubmitting","wasSubmitting","onBlurAutoSubmit","lastSubmittedValues","encoded","fieldComponents","KeepAlive","setKeepAliveActive","useLayoutEffect","hasChangedSinceSubmit","rootError","Initialize","submit","reset","revertToLastSubmit","setValues","mount"],"sources":["../../src/FormReact.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/dist/esm/index.js DELETED
@@ -1,9 +0,0 @@
1
- /**
2
- * Re-export commonly used modules from the core package.
3
- */
4
- export { Field, FormBuilder } from "@lucas-barake/effect-form";
5
- /**
6
- * React bindings for @lucas-barake/effect-form.
7
- */
8
- export * as FormReact from "./FormReact.js";
9
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["Field","FormBuilder","FormReact"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,SAASA,KAAK,EAAEC,WAAW,QAAQ,2BAA2B;AAE9D;;;AAGA,OAAO,KAAKC,SAAS,MAAM,gBAAgB","ignoreList":[]}
@@ -1,29 +0,0 @@
1
- import * as React from "react";
2
- export const useDebounced = (fn, delayMs) => {
3
- const timeoutRef = React.useRef(null);
4
- const fnRef = React.useRef(fn);
5
- React.useEffect(() => {
6
- fnRef.current = fn;
7
- });
8
- React.useEffect(() => {
9
- return () => {
10
- if (timeoutRef.current !== null) {
11
- clearTimeout(timeoutRef.current);
12
- }
13
- };
14
- }, []);
15
- return React.useMemo(() => (...args) => {
16
- if (delayMs === null || delayMs === 0) {
17
- fnRef.current(...args);
18
- return;
19
- }
20
- if (timeoutRef.current !== null) {
21
- clearTimeout(timeoutRef.current);
22
- }
23
- timeoutRef.current = setTimeout(() => {
24
- fnRef.current(...args);
25
- timeoutRef.current = null;
26
- }, delayMs);
27
- }, [delayMs]);
28
- };
29
- //# sourceMappingURL=use-debounced.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-debounced.js","names":["React","useDebounced","fn","delayMs","timeoutRef","useRef","fnRef","useEffect","current","clearTimeout","useMemo","args","setTimeout"],"sources":["../../../src/internal/use-debounced.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,OAAO,MAAMC,YAAY,GAAGA,CAC1BC,EAAK,EACLC,OAAsB,KACjB;EACL,MAAMC,UAAU,GAAGJ,KAAK,CAACK,MAAM,CAAuC,IAAI,CAAC;EAC3E,MAAMC,KAAK,GAAGN,KAAK,CAACK,MAAM,CAACH,EAAE,CAAC;EAE9BF,KAAK,CAACO,SAAS,CAAC,MAAK;IACnBD,KAAK,CAACE,OAAO,GAAGN,EAAE;EACpB,CAAC,CAAC;EAEFF,KAAK,CAACO,SAAS,CAAC,MAAK;IACnB,OAAO,MAAK;MACV,IAAIH,UAAU,CAACI,OAAO,KAAK,IAAI,EAAE;QAC/BC,YAAY,CAACL,UAAU,CAACI,OAAO,CAAC;MAClC;IACF,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,OAAOR,KAAK,CAACU,OAAO,CAClB,MACG,CAAC,GAAGC,IAAmB,KAAI;IAC1B,IAAIR,OAAO,KAAK,IAAI,IAAIA,OAAO,KAAK,CAAC,EAAE;MACrCG,KAAK,CAACE,OAAO,CAAC,GAAGG,IAAI,CAAC;MACtB;IACF;IACA,IAAIP,UAAU,CAACI,OAAO,KAAK,IAAI,EAAE;MAC/BC,YAAY,CAACL,UAAU,CAACI,OAAO,CAAC;IAClC;IACAJ,UAAU,CAACI,OAAO,GAAGI,UAAU,CAAC,MAAK;MACnCN,KAAK,CAACE,OAAO,CAAC,GAAGG,IAAI,CAAC;MACtBP,UAAU,CAACI,OAAO,GAAG,IAAI;IAC3B,CAAC,EAAEL,OAAO,CAAC;EACb,CAAO,EACT,CAACA,OAAO,CAAC,CACV;AACH,CAAC","ignoreList":[]}
@@ -1,4 +0,0 @@
1
- {
2
- "type": "module",
3
- "sideEffects": []
4
- }
@@ -1,39 +0,0 @@
1
- import * as React from "react";
2
-
3
- export const useDebounced = <T extends (...args: ReadonlyArray<any>) => void>(
4
- fn: T,
5
- delayMs: number | null,
6
- ): T => {
7
- const timeoutRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);
8
- const fnRef = React.useRef(fn);
9
-
10
- React.useEffect(() => {
11
- fnRef.current = fn;
12
- });
13
-
14
- React.useEffect(() => {
15
- return () => {
16
- if (timeoutRef.current !== null) {
17
- clearTimeout(timeoutRef.current);
18
- }
19
- };
20
- }, []);
21
-
22
- return React.useMemo(
23
- () =>
24
- ((...args: Parameters<T>) => {
25
- if (delayMs === null || delayMs === 0) {
26
- fnRef.current(...args);
27
- return;
28
- }
29
- if (timeoutRef.current !== null) {
30
- clearTimeout(timeoutRef.current);
31
- }
32
- timeoutRef.current = setTimeout(() => {
33
- fnRef.current(...args);
34
- timeoutRef.current = null;
35
- }, delayMs);
36
- }) as T,
37
- [delayMs],
38
- );
39
- };