@payloadcms/ui 3.62.0-canary.4 → 3.62.0-internal.0e1f2fb
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/elements/Autosave/index.js +2 -2
- package/dist/elements/Autosave/index.js.map +1 -1
- package/dist/elements/withMergedProps/index.d.ts +1 -1
- package/dist/elements/withMergedProps/index.js +1 -1
- package/dist/elements/withMergedProps/index.js.map +1 -1
- package/dist/exports/client/index.d.ts +1 -0
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +10 -10
- package/dist/exports/client/index.js.map +4 -4
- package/dist/exports/shared/index.js.map +1 -1
- package/dist/fields/Relationship/Input.js +2 -2
- package/dist/fields/Relationship/Input.js.map +1 -1
- package/dist/forms/Form/index.js +2 -2
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/hooks/useControllableState.d.ts +2 -1
- package/dist/hooks/useControllableState.d.ts.map +1 -1
- package/dist/hooks/useControllableState.js +9 -24
- package/dist/hooks/useControllableState.js.map +1 -1
- package/dist/hooks/{useQueues.d.ts → useQueue.d.ts} +3 -3
- package/dist/hooks/useQueue.d.ts.map +1 -0
- package/dist/hooks/{useQueues.js → useQueue.js} +3 -3
- package/dist/hooks/useQueue.js.map +1 -0
- package/dist/utilities/handleLivePreview.d.ts.map +1 -1
- package/package.json +5 -5
- package/dist/hooks/useQueues.d.ts.map +0 -1
- package/dist/hooks/useQueues.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["dequal","useRouter","serialize","deepCopyObjectSimpleWithoutReactComponents","getDataByPath","getDataByPathFunc","getSiblingData","getSiblingDataFunc","reduceFieldsToValues","wait","React","useCallback","useEffect","useReducer","useRef","useState","toast","FieldErrorsToast","useDebouncedEffect","useEffectEvent","useQueues","useThrottledEffect","useAuth","useConfig","useDocumentInfo","useLocale","useOperation","useRouteTransition","useServerFunctions","useTranslation","useUploadHandlers","abortAndIgnore","handleAbortRef","requests","BackgroundProcessingContext","DocumentFormContext","FormContext","FormFieldsContext","FormWatchContext","InitializingContext","ModifiedContext","ProcessingContext","SubmittedContext","useDocumentForm","errorMessages","fieldReducer","initContextState","baseClass","Form","props","id","collectionSlug","docConfig","docPermissions","getDocPreferences","globalSlug","validateDrafts","versions","drafts","validate","action","beforeSubmit","children","className","disabled","disabledFromProps","disableSuccessStatus","disableValidationOnSubmit","el","handleResponse","initialState","isDocumentForm","isInitializing","initializingFromProps","onChange","onSubmit","onSuccess","redirect","submitted","submittedFromProps","uuid","waitForAutocomplete","method","undefined","router","documentForm","code","locale","i18n","t","refreshCookie","user","operation","queueTask","getFormState","startRouteTransition","getUploadHandler","config","setDisabled","isMounted","setIsMounted","modified","setModified","isValid","setIsValid","initializing","setInitializing","processing","setProcessing","backgroundProcessing","setBackgroundProcessing","setSubmitted","formRef","contextRef","abortResetFormRef","isFirstRenderRef","fieldsReducer","formState","dispatchFields","current","fields","prevFormState","validateForm","validatedFieldState","data","getData","validationPromises","Object","entries","map","path","field","validatedField","pathSegments","split","passesCondition","validationResult","valid","valueToValidate","value","rows","Array","isArray","blockData","event","preferences","req","payload","siblingData","errorMessage","Promise","all","type","state","submit","options","e","acceptValues","actionArg","context","disableFormWhileProcessing","disableSuccessStatusFromArgs","methodToUse","overrides","overridesFromArgs","skipValidation","disableToast","preventDefault","errorToast","successToast","promise","resolve","reject","hasFormSubmitAction","success","error","loading","stopPropagation","serializableFormState","revalidatedFormState","reduce","priorOnChange","beforeSubmitFn","result","every","key","formData","createFormData","mergeOverrideData","Boolean","res","toLowerCase","body","headers","language","contentType","get","isJSON","indexOf","json","status","newFormState","prevStateRef","serverState","push","message","errors","fieldErrors","nonFieldErrors","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","forEach","dataError","_jsx","statusText","console","getFields","getField","dataFromArgs","file","upload","handler","filename","name","clientUploadContext","updateFilename","JSON","stringify","mimeType","size","dataToSerialize","_payload","indices","nullsAsUndefineds","reset","controller","docPreferences","newState","renderAllFields","schemaPath","signal","replaceState","addFieldRow","blockType","rowIndex","rowIndexArg","subFieldState","newRows","length","moveFieldRow","moveFromIndex","moveToIndex","removeFieldRow","replaceFieldRow","currentRows","abortOnChange","optimize","sanitize","classes","filter","join","executeOnChange","onChangeFn","DocumentFormContextComponent","Fragment","documentFormContextProps","El","noValidate","ref","Provider","useAllFormFields","useForm","useFormFields","useFormModified","useFormProcessing","useFormSubmitted","useWatchForm"],"sources":["../../../src/forms/Form/index.tsx"],"sourcesContent":["'use client'\nimport { dequal } from 'dequal/lite' // lite: no need for Map and Set support\nimport { useRouter } from 'next/navigation.js'\nimport { serialize } from 'object-to-formdata'\nimport { type FormState, type PayloadRequest } from 'payload'\nimport {\n deepCopyObjectSimpleWithoutReactComponents,\n getDataByPath as getDataByPathFunc,\n getSiblingData as getSiblingDataFunc,\n reduceFieldsToValues,\n wait,\n} from 'payload/shared'\nimport React, { useCallback, useEffect, useReducer, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type {\n CreateFormData,\n Context as FormContextType,\n FormProps,\n GetDataByPath,\n Submit,\n SubmitOptions,\n} from './types.js'\n\nimport { FieldErrorsToast } from '../../elements/Toasts/fieldErrors.js'\nimport { useDebouncedEffect } from '../../hooks/useDebouncedEffect.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useQueues } from '../../hooks/useQueues.js'\nimport { useThrottledEffect } from '../../hooks/useThrottledEffect.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useUploadHandlers } from '../../providers/UploadHandlers/index.js'\nimport { abortAndIgnore, handleAbortRef } from '../../utilities/abortAndIgnore.js'\nimport { requests } from '../../utilities/api.js'\nimport {\n BackgroundProcessingContext,\n DocumentFormContext,\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n InitializingContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n useDocumentForm,\n} from './context.js'\nimport { errorMessages } from './errorMessages.js'\nimport { fieldReducer } from './fieldReducer.js'\nimport { initContextState } from './initContextState.js'\n\nconst baseClass = 'form'\n\nexport const Form: React.FC<FormProps> = (props) => {\n const { id, collectionSlug, docConfig, docPermissions, getDocPreferences, globalSlug } =\n useDocumentInfo()\n\n const validateDrafts =\n docConfig?.versions?.drafts && typeof docConfig?.versions?.drafts === 'object'\n ? (docConfig.versions.drafts.validate ?? false)\n : false\n\n const {\n action,\n beforeSubmit,\n children,\n className,\n disabled: disabledFromProps,\n disableSuccessStatus,\n disableValidationOnSubmit,\n // fields: fieldsFromProps = collection?.fields || global?.fields,\n el,\n handleResponse,\n initialState, // fully formed initial field state\n isDocumentForm,\n isInitializing: initializingFromProps,\n onChange,\n onSubmit,\n onSuccess,\n redirect,\n submitted: submittedFromProps,\n uuid,\n waitForAutocomplete,\n } = props\n\n const method = 'method' in props ? props?.method : undefined\n\n const router = useRouter()\n\n const documentForm = useDocumentForm()\n\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n const { refreshCookie, user } = useAuth()\n const operation = useOperation()\n const { queueTask } = useQueues()\n\n const { getFormState } = useServerFunctions()\n const { startRouteTransition } = useRouteTransition()\n const { getUploadHandler } = useUploadHandlers()\n\n const { config } = useConfig()\n\n const [disabled, setDisabled] = useState(disabledFromProps || false)\n const [isMounted, setIsMounted] = useState(false)\n const [modified, setModified] = useState(false)\n\n /**\n * Tracks wether the form state passes validation.\n * For example the state could be submitted but invalid as field errors have been returned.\n */\n const [isValid, setIsValid] = useState(true)\n const [initializing, setInitializing] = useState(initializingFromProps)\n\n const [processing, setProcessing] = useState(false)\n const [backgroundProcessing, setBackgroundProcessing] = useState(false)\n\n const [submitted, setSubmitted] = useState(false)\n const formRef = useRef<HTMLFormElement>(null)\n const contextRef = useRef({} as FormContextType)\n const abortResetFormRef = useRef<AbortController>(null)\n const isFirstRenderRef = useRef(true)\n\n const fieldsReducer = useReducer(fieldReducer, {}, () => initialState)\n\n const [formState, dispatchFields] = fieldsReducer\n\n contextRef.current.fields = formState\n\n const prevFormState = useRef(formState)\n\n const validateForm = useCallback(async () => {\n const validatedFieldState = {}\n let isValid = true\n\n const data = contextRef.current.getData()\n\n const validationPromises = Object.entries(contextRef.current.fields).map(\n async ([path, field]) => {\n const validatedField = field\n const pathSegments = path ? path.split('.') : []\n\n if (field.passesCondition !== false) {\n let validationResult: boolean | string = validatedField.valid\n\n if ('validate' in field && typeof field.validate === 'function') {\n let valueToValidate = field.value\n\n if (field?.rows && Array.isArray(field.rows)) {\n valueToValidate = contextRef.current.getDataByPath(path)\n }\n\n validationResult = await field.validate(valueToValidate, {\n ...field,\n id,\n collectionSlug,\n // If there is a parent document form, we can get the data from that form\n blockData: undefined, // Will be expensive to get - not worth to pass to client-side validation, as this can be obtained by the user using `useFormFields()`\n data: documentForm?.getData ? documentForm.getData() : data,\n event: 'submit',\n operation,\n path: pathSegments,\n preferences: {} as any,\n req: {\n payload: {\n config,\n },\n t,\n user,\n } as unknown as PayloadRequest,\n siblingData: contextRef.current.getSiblingData(path),\n })\n\n if (typeof validationResult === 'string') {\n validatedField.errorMessage = validationResult\n validatedField.valid = false\n } else {\n validatedField.valid = true\n validatedField.errorMessage = undefined\n }\n }\n\n if (validatedField.valid === false) {\n isValid = false\n }\n }\n\n validatedFieldState[path] = validatedField\n },\n )\n\n await Promise.all(validationPromises)\n\n if (!dequal(contextRef.current.fields, validatedFieldState)) {\n dispatchFields({ type: 'REPLACE_STATE', state: validatedFieldState })\n }\n\n setIsValid(isValid)\n\n return isValid\n }, [collectionSlug, config, dispatchFields, id, operation, t, user, documentForm])\n\n const submit = useCallback<Submit>(\n async (options, e) => {\n const {\n acceptValues = true,\n action: actionArg = action,\n context,\n disableFormWhileProcessing = true,\n disableSuccessStatus: disableSuccessStatusFromArgs,\n method: methodToUse = method,\n overrides: overridesFromArgs = {},\n skipValidation,\n } = options || ({} as SubmitOptions)\n\n const disableToast = disableSuccessStatusFromArgs ?? disableSuccessStatus\n\n if (disabled) {\n if (e) {\n e.preventDefault()\n }\n return\n }\n\n // create new toast promise which will resolve manually later\n let errorToast, successToast\n\n const promise = new Promise((resolve, reject) => {\n successToast = resolve\n errorToast = reject\n })\n\n const hasFormSubmitAction =\n actionArg || typeof action === 'string' || typeof action === 'function'\n\n if (redirect || disableToast || !hasFormSubmitAction) {\n // Do not show submitting toast, as the promise toast may never disappear under these conditions.\n // Instead, make successToast() or errorToast() throw toast.success / toast.error\n successToast = (data) => toast.success(data)\n errorToast = (data) => toast.error(data)\n } else {\n toast.promise(promise, {\n error: (data) => {\n return data as string\n },\n loading: t('general:submitting'),\n success: (data) => {\n return data as string\n },\n })\n }\n\n if (e) {\n e.stopPropagation()\n e.preventDefault()\n }\n\n if (disableFormWhileProcessing) {\n setProcessing(true)\n setDisabled(true)\n }\n\n if (waitForAutocomplete) {\n await wait(100)\n }\n\n const data = reduceFieldsToValues(contextRef.current.fields, true)\n\n const serializableFormState = deepCopyObjectSimpleWithoutReactComponents(\n contextRef.current.fields,\n )\n\n // Execute server side validations\n if (Array.isArray(beforeSubmit)) {\n let revalidatedFormState: FormState\n\n await beforeSubmit.reduce(async (priorOnChange, beforeSubmitFn) => {\n await priorOnChange\n\n const result = await beforeSubmitFn({\n formState: serializableFormState,\n })\n\n revalidatedFormState = result\n }, Promise.resolve())\n\n const isValid = Object.entries(revalidatedFormState).every(\n ([, field]) => field.valid !== false,\n )\n\n setIsValid(isValid)\n\n if (!isValid) {\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return dispatchFields({ type: 'REPLACE_STATE', state: revalidatedFormState })\n }\n }\n\n const isValid =\n skipValidation || disableValidationOnSubmit ? true : await contextRef.current.validateForm()\n\n setIsValid(isValid)\n\n // If not valid, prevent submission\n if (!isValid) {\n errorToast(t('error:correctInvalidFields'))\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return\n }\n\n let overrides = {}\n\n if (typeof overridesFromArgs === 'function') {\n overrides = overridesFromArgs(contextRef.current.fields)\n } else if (typeof overridesFromArgs === 'object') {\n overrides = overridesFromArgs\n }\n\n // If submit handler comes through via props, run that\n if (onSubmit) {\n for (const [key, value] of Object.entries(overrides)) {\n data[key] = value\n }\n\n onSubmit(contextRef.current.fields, data)\n }\n\n if (!hasFormSubmitAction) {\n // No action provided, so we should return. An example where this happens are lexical link drawers. Upon submitting the drawer, we\n // want to close it without submitting the form. Stuff like validation would be handled by lexical before this, through beforeSubmit\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return\n }\n\n const formData = await contextRef.current.createFormData(overrides, {\n data,\n mergeOverrideData: Boolean(typeof overridesFromArgs !== 'function'),\n })\n\n try {\n let res\n\n if (typeof actionArg === 'string') {\n res = await requests[methodToUse.toLowerCase()](actionArg, {\n body: formData,\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n } else if (typeof action === 'function') {\n res = await action(formData)\n }\n\n setModified(false)\n setDisabled(false)\n\n if (typeof handleResponse === 'function') {\n handleResponse(res, successToast, errorToast)\n return\n }\n\n const contentType = res.headers.get('content-type')\n const isJSON = contentType && contentType.indexOf('application/json') !== -1\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let json: Record<string, any> = {}\n\n if (isJSON) {\n json = await res.json()\n }\n\n if (res.status < 400) {\n if (typeof onSuccess === 'function') {\n const newFormState = await onSuccess(json, {\n context,\n formState: serializableFormState,\n })\n\n if (newFormState) {\n dispatchFields({\n type: 'MERGE_SERVER_STATE',\n acceptValues,\n prevStateRef: prevFormState,\n serverState: newFormState,\n })\n }\n }\n\n setSubmitted(false)\n setProcessing(false)\n\n if (redirect) {\n startRouteTransition(() => router.push(redirect))\n } else if (!disableToast) {\n successToast(json.message || t('general:submissionSuccessful'))\n }\n } else {\n setProcessing(false)\n setSubmitted(true)\n\n // When there was an error submitting a draft,\n // set the form state to unsubmitted, to not trigger visible form validation on changes after the failed submit.\n if (!validateDrafts && overridesFromArgs['_status'] === 'draft') {\n setSubmitted(false)\n }\n\n contextRef.current = { ...contextRef.current } // triggers rerender of all components that subscribe to form\n\n if (json.message) {\n errorToast(json.message)\n return\n }\n\n if (Array.isArray(json.errors)) {\n const [fieldErrors, nonFieldErrors] = json.errors.reduce(\n ([fieldErrs, nonFieldErrs], err) => {\n const newFieldErrs = []\n const newNonFieldErrs = []\n\n if (err?.message) {\n newNonFieldErrs.push(err)\n }\n\n if (Array.isArray(err?.data?.errors)) {\n err.data?.errors.forEach((dataError) => {\n if (dataError?.path) {\n newFieldErrs.push(dataError)\n } else {\n newNonFieldErrs.push(dataError)\n }\n })\n }\n\n return [\n [...fieldErrs, ...newFieldErrs],\n [...nonFieldErrs, ...newNonFieldErrs],\n ]\n },\n [[], []],\n )\n\n setIsValid(false)\n\n dispatchFields({\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n })\n\n nonFieldErrors.forEach((err) => {\n errorToast(<FieldErrorsToast errorMessage={err.message || t('error:unknown')} />)\n })\n\n return\n }\n\n const message = errorMessages?.[res.status] || res?.statusText || t('error:unknown')\n\n errorToast(message)\n }\n\n return { formState: contextRef.current.fields, res }\n } catch (err) {\n console.error('Error submitting form', err) // eslint-disable-line no-console\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n errorToast(err.message)\n }\n },\n [\n beforeSubmit,\n startRouteTransition,\n action,\n disableSuccessStatus,\n disableValidationOnSubmit,\n disabled,\n dispatchFields,\n handleResponse,\n method,\n onSubmit,\n onSuccess,\n redirect,\n router,\n t,\n i18n,\n waitForAutocomplete,\n ],\n )\n\n const getFields = useCallback(() => contextRef.current.fields, [])\n\n const getField = useCallback((path: string) => contextRef.current.fields[path], [])\n\n const getData = useCallback(() => reduceFieldsToValues(contextRef.current.fields, true), [])\n\n const getSiblingData = useCallback(\n (path: string) => getSiblingDataFunc(contextRef.current.fields, path),\n [],\n )\n\n const getDataByPath = useCallback<GetDataByPath>(\n (path: string) => getDataByPathFunc(contextRef.current.fields, path),\n [],\n )\n\n const createFormData = useCallback<CreateFormData>(\n async (overrides, { data: dataFromArgs, mergeOverrideData = true }) => {\n let data = dataFromArgs || reduceFieldsToValues(contextRef.current.fields, true)\n\n let file = data?.file\n\n if (docConfig && 'upload' in docConfig && docConfig.upload && file) {\n delete data.file\n\n const handler = getUploadHandler({ collectionSlug })\n\n if (typeof handler === 'function') {\n let filename = file.name\n const clientUploadContext = await handler({\n file,\n updateFilename: (value) => {\n filename = value\n },\n })\n\n file = JSON.stringify({\n clientUploadContext,\n collectionSlug,\n filename,\n mimeType: file.type,\n size: file.size,\n })\n }\n }\n\n if (mergeOverrideData) {\n data = {\n ...data,\n ...overrides,\n }\n } else {\n data = overrides\n }\n\n const dataToSerialize: Record<string, unknown> = {\n _payload: JSON.stringify(data),\n }\n\n if (docConfig && 'upload' in docConfig && docConfig.upload && file) {\n dataToSerialize.file = file\n }\n\n // nullAsUndefineds is important to allow uploads and relationship fields to clear themselves\n const formData = serialize(dataToSerialize, {\n indices: true,\n nullsAsUndefineds: false,\n })\n\n return formData\n },\n [collectionSlug, docConfig, getUploadHandler],\n )\n\n const reset = useCallback(\n async (data: unknown) => {\n const controller = handleAbortRef(abortResetFormRef)\n\n const docPreferences = await getDocPreferences()\n\n const { state: newState } = await getFormState({\n id,\n collectionSlug,\n data,\n docPermissions,\n docPreferences,\n globalSlug,\n locale,\n operation,\n renderAllFields: true,\n schemaPath: collectionSlug ? collectionSlug : globalSlug,\n signal: controller.signal,\n skipValidation: true,\n })\n\n contextRef.current = { ...initContextState } as FormContextType\n setModified(false)\n dispatchFields({ type: 'REPLACE_STATE', state: newState })\n\n abortResetFormRef.current = null\n },\n [\n collectionSlug,\n dispatchFields,\n globalSlug,\n id,\n operation,\n getFormState,\n docPermissions,\n getDocPreferences,\n locale,\n ],\n )\n\n const replaceState = useCallback(\n (state: FormState) => {\n contextRef.current = { ...initContextState } as FormContextType\n setModified(false)\n dispatchFields({ type: 'REPLACE_STATE', state })\n },\n [dispatchFields],\n )\n\n const addFieldRow: FormContextType['addFieldRow'] = useCallback(\n ({ blockType, path, rowIndex: rowIndexArg, subFieldState }) => {\n const newRows: unknown[] = getDataByPath(path) || []\n const rowIndex = rowIndexArg === undefined ? newRows.length : rowIndexArg\n\n // dispatch ADD_ROW adds a blank row to local form state.\n // This performs no form state request, as the debounced onChange effect will do that for us.\n dispatchFields({\n type: 'ADD_ROW',\n blockType,\n path,\n rowIndex,\n subFieldState,\n })\n\n setModified(true)\n },\n [dispatchFields, getDataByPath],\n )\n\n const moveFieldRow: FormContextType['moveFieldRow'] = useCallback(\n ({ moveFromIndex, moveToIndex, path }) => {\n dispatchFields({\n type: 'MOVE_ROW',\n moveFromIndex,\n moveToIndex,\n path,\n })\n\n setModified(true)\n },\n [dispatchFields],\n )\n\n const removeFieldRow: FormContextType['removeFieldRow'] = useCallback(\n ({ path, rowIndex }) => {\n dispatchFields({ type: 'REMOVE_ROW', path, rowIndex })\n\n setModified(true)\n },\n [dispatchFields],\n )\n\n const replaceFieldRow: FormContextType['replaceFieldRow'] = useCallback(\n ({ blockType, path, rowIndex: rowIndexArg, subFieldState }) => {\n const currentRows: unknown[] = getDataByPath(path)\n const rowIndex = rowIndexArg === undefined ? currentRows.length : rowIndexArg\n\n dispatchFields({\n type: 'REPLACE_ROW',\n blockType,\n path,\n rowIndex,\n subFieldState,\n })\n\n setModified(true)\n },\n [dispatchFields, getDataByPath],\n )\n\n useEffect(() => {\n const abortOnChange = abortResetFormRef.current\n\n return () => {\n abortAndIgnore(abortOnChange)\n }\n }, [])\n\n useEffect(() => {\n if (initializingFromProps !== undefined) {\n setInitializing(initializingFromProps)\n }\n }, [initializingFromProps])\n\n contextRef.current.submit = submit\n contextRef.current.getFields = getFields\n contextRef.current.getField = getField\n contextRef.current.getData = getData\n contextRef.current.getSiblingData = getSiblingData\n contextRef.current.getDataByPath = getDataByPath\n contextRef.current.validateForm = validateForm\n contextRef.current.createFormData = createFormData\n contextRef.current.setModified = setModified\n contextRef.current.setProcessing = setProcessing\n contextRef.current.setBackgroundProcessing = setBackgroundProcessing\n\n contextRef.current.setSubmitted = setSubmitted\n contextRef.current.setIsValid = setIsValid\n contextRef.current.disabled = disabled\n contextRef.current.setDisabled = setDisabled\n contextRef.current.formRef = formRef\n contextRef.current.reset = reset\n contextRef.current.replaceState = replaceState\n contextRef.current.dispatchFields = dispatchFields\n contextRef.current.addFieldRow = addFieldRow\n contextRef.current.removeFieldRow = removeFieldRow\n contextRef.current.moveFieldRow = moveFieldRow\n contextRef.current.replaceFieldRow = replaceFieldRow\n contextRef.current.uuid = uuid\n contextRef.current.initializing = initializing\n contextRef.current.isValid = isValid\n\n useEffect(() => {\n setIsMounted(true)\n }, [])\n\n useEffect(() => {\n if (typeof disabledFromProps === 'boolean') {\n setDisabled(disabledFromProps)\n }\n }, [disabledFromProps])\n\n useEffect(() => {\n if (typeof submittedFromProps === 'boolean') {\n setSubmitted(submittedFromProps)\n }\n }, [submittedFromProps])\n\n useEffect(() => {\n if (initialState) {\n contextRef.current = { ...initContextState } as FormContextType\n dispatchFields({\n type: 'REPLACE_STATE',\n optimize: false,\n sanitize: true,\n state: initialState,\n })\n }\n }, [initialState, dispatchFields])\n\n useThrottledEffect(\n () => {\n refreshCookie()\n },\n 15000,\n [formState],\n )\n\n useEffect(() => {\n contextRef.current = { ...contextRef.current } // triggers rerender of all components that subscribe to form\n setModified(false)\n }, [locale])\n\n const classes = [className, baseClass].filter(Boolean).join(' ')\n\n const executeOnChange = useEffectEvent((submitted: boolean) => {\n queueTask(async () => {\n if (Array.isArray(onChange)) {\n let serverState: FormState\n\n for (const onChangeFn of onChange) {\n // Edit view default onChange is in packages/ui/src/views/Edit/index.tsx. This onChange usually sends a form state request\n serverState = await onChangeFn({\n formState: deepCopyObjectSimpleWithoutReactComponents(formState),\n submitted,\n })\n }\n\n dispatchFields({\n type: 'MERGE_SERVER_STATE',\n prevStateRef: prevFormState,\n serverState,\n })\n }\n })\n })\n\n useDebouncedEffect(\n () => {\n if ((isFirstRenderRef.current || !dequal(formState, prevFormState.current)) && modified) {\n executeOnChange(submitted)\n }\n\n prevFormState.current = formState\n isFirstRenderRef.current = false\n },\n [modified, submitted, formState],\n 250,\n )\n\n const DocumentFormContextComponent: React.FC<any> = isDocumentForm\n ? DocumentFormContext\n : React.Fragment\n\n const documentFormContextProps = isDocumentForm\n ? {\n value: contextRef.current,\n }\n : {}\n\n const El: 'form' = (el as unknown as 'form') || 'form'\n\n return (\n <El\n action={typeof action === 'function' ? void action : action}\n className={classes}\n method={method}\n noValidate\n onSubmit={(e) => void contextRef.current.submit({}, e)}\n ref={formRef}\n >\n <DocumentFormContextComponent {...documentFormContextProps}>\n <FormContext value={contextRef.current}>\n <FormWatchContext\n value={{\n fields: formState,\n ...contextRef.current,\n }}\n >\n <SubmittedContext value={submitted}>\n <InitializingContext value={!isMounted || (isMounted && initializing)}>\n <ProcessingContext value={processing}>\n <BackgroundProcessingContext value={backgroundProcessing}>\n <ModifiedContext value={modified}>\n {/* eslint-disable-next-line @eslint-react/no-context-provider */}\n <FormFieldsContext.Provider value={fieldsReducer}>\n {children}\n </FormFieldsContext.Provider>\n </ModifiedContext>\n </BackgroundProcessingContext>\n </ProcessingContext>\n </InitializingContext>\n </SubmittedContext>\n </FormWatchContext>\n </FormContext>\n </DocumentFormContextComponent>\n </El>\n )\n}\n\nexport {\n DocumentFormContext,\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n useAllFormFields,\n useDocumentForm,\n useForm,\n useFormFields,\n useFormModified,\n useFormProcessing,\n useFormSubmitted,\n useWatchForm,\n} from './context.js'\n\nexport { FormProps }\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["dequal","useRouter","serialize","deepCopyObjectSimpleWithoutReactComponents","getDataByPath","getDataByPathFunc","getSiblingData","getSiblingDataFunc","reduceFieldsToValues","wait","React","useCallback","useEffect","useReducer","useRef","useState","toast","FieldErrorsToast","useDebouncedEffect","useEffectEvent","useQueue","useThrottledEffect","useAuth","useConfig","useDocumentInfo","useLocale","useOperation","useRouteTransition","useServerFunctions","useTranslation","useUploadHandlers","abortAndIgnore","handleAbortRef","requests","BackgroundProcessingContext","DocumentFormContext","FormContext","FormFieldsContext","FormWatchContext","InitializingContext","ModifiedContext","ProcessingContext","SubmittedContext","useDocumentForm","errorMessages","fieldReducer","initContextState","baseClass","Form","props","id","collectionSlug","docConfig","docPermissions","getDocPreferences","globalSlug","validateDrafts","versions","drafts","validate","action","beforeSubmit","children","className","disabled","disabledFromProps","disableSuccessStatus","disableValidationOnSubmit","el","handleResponse","initialState","isDocumentForm","isInitializing","initializingFromProps","onChange","onSubmit","onSuccess","redirect","submitted","submittedFromProps","uuid","waitForAutocomplete","method","undefined","router","documentForm","code","locale","i18n","t","refreshCookie","user","operation","queueTask","getFormState","startRouteTransition","getUploadHandler","config","setDisabled","isMounted","setIsMounted","modified","setModified","isValid","setIsValid","initializing","setInitializing","processing","setProcessing","backgroundProcessing","setBackgroundProcessing","setSubmitted","formRef","contextRef","abortResetFormRef","isFirstRenderRef","fieldsReducer","formState","dispatchFields","current","fields","prevFormState","validateForm","validatedFieldState","data","getData","validationPromises","Object","entries","map","path","field","validatedField","pathSegments","split","passesCondition","validationResult","valid","valueToValidate","value","rows","Array","isArray","blockData","event","preferences","req","payload","siblingData","errorMessage","Promise","all","type","state","submit","options","e","acceptValues","actionArg","context","disableFormWhileProcessing","disableSuccessStatusFromArgs","methodToUse","overrides","overridesFromArgs","skipValidation","disableToast","preventDefault","errorToast","successToast","promise","resolve","reject","hasFormSubmitAction","success","error","loading","stopPropagation","serializableFormState","revalidatedFormState","reduce","priorOnChange","beforeSubmitFn","result","every","key","formData","createFormData","mergeOverrideData","Boolean","res","toLowerCase","body","headers","language","contentType","get","isJSON","indexOf","json","status","newFormState","prevStateRef","serverState","push","message","errors","fieldErrors","nonFieldErrors","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","forEach","dataError","_jsx","statusText","console","getFields","getField","dataFromArgs","file","upload","handler","filename","name","clientUploadContext","updateFilename","JSON","stringify","mimeType","size","dataToSerialize","_payload","indices","nullsAsUndefineds","reset","controller","docPreferences","newState","renderAllFields","schemaPath","signal","replaceState","addFieldRow","blockType","rowIndex","rowIndexArg","subFieldState","newRows","length","moveFieldRow","moveFromIndex","moveToIndex","removeFieldRow","replaceFieldRow","currentRows","abortOnChange","optimize","sanitize","classes","filter","join","executeOnChange","onChangeFn","DocumentFormContextComponent","Fragment","documentFormContextProps","El","noValidate","ref","Provider","useAllFormFields","useForm","useFormFields","useFormModified","useFormProcessing","useFormSubmitted","useWatchForm"],"sources":["../../../src/forms/Form/index.tsx"],"sourcesContent":["'use client'\nimport { dequal } from 'dequal/lite' // lite: no need for Map and Set support\nimport { useRouter } from 'next/navigation.js'\nimport { serialize } from 'object-to-formdata'\nimport { type FormState, type PayloadRequest } from 'payload'\nimport {\n deepCopyObjectSimpleWithoutReactComponents,\n getDataByPath as getDataByPathFunc,\n getSiblingData as getSiblingDataFunc,\n reduceFieldsToValues,\n wait,\n} from 'payload/shared'\nimport React, { useCallback, useEffect, useReducer, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type {\n CreateFormData,\n Context as FormContextType,\n FormProps,\n GetDataByPath,\n Submit,\n SubmitOptions,\n} from './types.js'\n\nimport { FieldErrorsToast } from '../../elements/Toasts/fieldErrors.js'\nimport { useDebouncedEffect } from '../../hooks/useDebouncedEffect.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useQueue } from '../../hooks/useQueue.js'\nimport { useThrottledEffect } from '../../hooks/useThrottledEffect.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useUploadHandlers } from '../../providers/UploadHandlers/index.js'\nimport { abortAndIgnore, handleAbortRef } from '../../utilities/abortAndIgnore.js'\nimport { requests } from '../../utilities/api.js'\nimport {\n BackgroundProcessingContext,\n DocumentFormContext,\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n InitializingContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n useDocumentForm,\n} from './context.js'\nimport { errorMessages } from './errorMessages.js'\nimport { fieldReducer } from './fieldReducer.js'\nimport { initContextState } from './initContextState.js'\n\nconst baseClass = 'form'\n\nexport const Form: React.FC<FormProps> = (props) => {\n const { id, collectionSlug, docConfig, docPermissions, getDocPreferences, globalSlug } =\n useDocumentInfo()\n\n const validateDrafts =\n docConfig?.versions?.drafts && typeof docConfig?.versions?.drafts === 'object'\n ? (docConfig.versions.drafts.validate ?? false)\n : false\n\n const {\n action,\n beforeSubmit,\n children,\n className,\n disabled: disabledFromProps,\n disableSuccessStatus,\n disableValidationOnSubmit,\n // fields: fieldsFromProps = collection?.fields || global?.fields,\n el,\n handleResponse,\n initialState, // fully formed initial field state\n isDocumentForm,\n isInitializing: initializingFromProps,\n onChange,\n onSubmit,\n onSuccess,\n redirect,\n submitted: submittedFromProps,\n uuid,\n waitForAutocomplete,\n } = props\n\n const method = 'method' in props ? props?.method : undefined\n\n const router = useRouter()\n\n const documentForm = useDocumentForm()\n\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n const { refreshCookie, user } = useAuth()\n const operation = useOperation()\n const { queueTask } = useQueue()\n\n const { getFormState } = useServerFunctions()\n const { startRouteTransition } = useRouteTransition()\n const { getUploadHandler } = useUploadHandlers()\n\n const { config } = useConfig()\n\n const [disabled, setDisabled] = useState(disabledFromProps || false)\n const [isMounted, setIsMounted] = useState(false)\n const [modified, setModified] = useState(false)\n\n /**\n * Tracks wether the form state passes validation.\n * For example the state could be submitted but invalid as field errors have been returned.\n */\n const [isValid, setIsValid] = useState(true)\n const [initializing, setInitializing] = useState(initializingFromProps)\n\n const [processing, setProcessing] = useState(false)\n const [backgroundProcessing, setBackgroundProcessing] = useState(false)\n\n const [submitted, setSubmitted] = useState(false)\n const formRef = useRef<HTMLFormElement>(null)\n const contextRef = useRef({} as FormContextType)\n const abortResetFormRef = useRef<AbortController>(null)\n const isFirstRenderRef = useRef(true)\n\n const fieldsReducer = useReducer(fieldReducer, {}, () => initialState)\n\n const [formState, dispatchFields] = fieldsReducer\n\n contextRef.current.fields = formState\n\n const prevFormState = useRef(formState)\n\n const validateForm = useCallback(async () => {\n const validatedFieldState = {}\n let isValid = true\n\n const data = contextRef.current.getData()\n\n const validationPromises = Object.entries(contextRef.current.fields).map(\n async ([path, field]) => {\n const validatedField = field\n const pathSegments = path ? path.split('.') : []\n\n if (field.passesCondition !== false) {\n let validationResult: boolean | string = validatedField.valid\n\n if ('validate' in field && typeof field.validate === 'function') {\n let valueToValidate = field.value\n\n if (field?.rows && Array.isArray(field.rows)) {\n valueToValidate = contextRef.current.getDataByPath(path)\n }\n\n validationResult = await field.validate(valueToValidate, {\n ...field,\n id,\n collectionSlug,\n // If there is a parent document form, we can get the data from that form\n blockData: undefined, // Will be expensive to get - not worth to pass to client-side validation, as this can be obtained by the user using `useFormFields()`\n data: documentForm?.getData ? documentForm.getData() : data,\n event: 'submit',\n operation,\n path: pathSegments,\n preferences: {} as any,\n req: {\n payload: {\n config,\n },\n t,\n user,\n } as unknown as PayloadRequest,\n siblingData: contextRef.current.getSiblingData(path),\n })\n\n if (typeof validationResult === 'string') {\n validatedField.errorMessage = validationResult\n validatedField.valid = false\n } else {\n validatedField.valid = true\n validatedField.errorMessage = undefined\n }\n }\n\n if (validatedField.valid === false) {\n isValid = false\n }\n }\n\n validatedFieldState[path] = validatedField\n },\n )\n\n await Promise.all(validationPromises)\n\n if (!dequal(contextRef.current.fields, validatedFieldState)) {\n dispatchFields({ type: 'REPLACE_STATE', state: validatedFieldState })\n }\n\n setIsValid(isValid)\n\n return isValid\n }, [collectionSlug, config, dispatchFields, id, operation, t, user, documentForm])\n\n const submit = useCallback<Submit>(\n async (options, e) => {\n const {\n acceptValues = true,\n action: actionArg = action,\n context,\n disableFormWhileProcessing = true,\n disableSuccessStatus: disableSuccessStatusFromArgs,\n method: methodToUse = method,\n overrides: overridesFromArgs = {},\n skipValidation,\n } = options || ({} as SubmitOptions)\n\n const disableToast = disableSuccessStatusFromArgs ?? disableSuccessStatus\n\n if (disabled) {\n if (e) {\n e.preventDefault()\n }\n return\n }\n\n // create new toast promise which will resolve manually later\n let errorToast, successToast\n\n const promise = new Promise((resolve, reject) => {\n successToast = resolve\n errorToast = reject\n })\n\n const hasFormSubmitAction =\n actionArg || typeof action === 'string' || typeof action === 'function'\n\n if (redirect || disableToast || !hasFormSubmitAction) {\n // Do not show submitting toast, as the promise toast may never disappear under these conditions.\n // Instead, make successToast() or errorToast() throw toast.success / toast.error\n successToast = (data) => toast.success(data)\n errorToast = (data) => toast.error(data)\n } else {\n toast.promise(promise, {\n error: (data) => {\n return data as string\n },\n loading: t('general:submitting'),\n success: (data) => {\n return data as string\n },\n })\n }\n\n if (e) {\n e.stopPropagation()\n e.preventDefault()\n }\n\n if (disableFormWhileProcessing) {\n setProcessing(true)\n setDisabled(true)\n }\n\n if (waitForAutocomplete) {\n await wait(100)\n }\n\n const data = reduceFieldsToValues(contextRef.current.fields, true)\n\n const serializableFormState = deepCopyObjectSimpleWithoutReactComponents(\n contextRef.current.fields,\n )\n\n // Execute server side validations\n if (Array.isArray(beforeSubmit)) {\n let revalidatedFormState: FormState\n\n await beforeSubmit.reduce(async (priorOnChange, beforeSubmitFn) => {\n await priorOnChange\n\n const result = await beforeSubmitFn({\n formState: serializableFormState,\n })\n\n revalidatedFormState = result\n }, Promise.resolve())\n\n const isValid = Object.entries(revalidatedFormState).every(\n ([, field]) => field.valid !== false,\n )\n\n setIsValid(isValid)\n\n if (!isValid) {\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return dispatchFields({ type: 'REPLACE_STATE', state: revalidatedFormState })\n }\n }\n\n const isValid =\n skipValidation || disableValidationOnSubmit ? true : await contextRef.current.validateForm()\n\n setIsValid(isValid)\n\n // If not valid, prevent submission\n if (!isValid) {\n errorToast(t('error:correctInvalidFields'))\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return\n }\n\n let overrides = {}\n\n if (typeof overridesFromArgs === 'function') {\n overrides = overridesFromArgs(contextRef.current.fields)\n } else if (typeof overridesFromArgs === 'object') {\n overrides = overridesFromArgs\n }\n\n // If submit handler comes through via props, run that\n if (onSubmit) {\n for (const [key, value] of Object.entries(overrides)) {\n data[key] = value\n }\n\n onSubmit(contextRef.current.fields, data)\n }\n\n if (!hasFormSubmitAction) {\n // No action provided, so we should return. An example where this happens are lexical link drawers. Upon submitting the drawer, we\n // want to close it without submitting the form. Stuff like validation would be handled by lexical before this, through beforeSubmit\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n return\n }\n\n const formData = await contextRef.current.createFormData(overrides, {\n data,\n mergeOverrideData: Boolean(typeof overridesFromArgs !== 'function'),\n })\n\n try {\n let res\n\n if (typeof actionArg === 'string') {\n res = await requests[methodToUse.toLowerCase()](actionArg, {\n body: formData,\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n } else if (typeof action === 'function') {\n res = await action(formData)\n }\n\n setModified(false)\n setDisabled(false)\n\n if (typeof handleResponse === 'function') {\n handleResponse(res, successToast, errorToast)\n return\n }\n\n const contentType = res.headers.get('content-type')\n const isJSON = contentType && contentType.indexOf('application/json') !== -1\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let json: Record<string, any> = {}\n\n if (isJSON) {\n json = await res.json()\n }\n\n if (res.status < 400) {\n if (typeof onSuccess === 'function') {\n const newFormState = await onSuccess(json, {\n context,\n formState: serializableFormState,\n })\n\n if (newFormState) {\n dispatchFields({\n type: 'MERGE_SERVER_STATE',\n acceptValues,\n prevStateRef: prevFormState,\n serverState: newFormState,\n })\n }\n }\n\n setSubmitted(false)\n setProcessing(false)\n\n if (redirect) {\n startRouteTransition(() => router.push(redirect))\n } else if (!disableToast) {\n successToast(json.message || t('general:submissionSuccessful'))\n }\n } else {\n setProcessing(false)\n setSubmitted(true)\n\n // When there was an error submitting a draft,\n // set the form state to unsubmitted, to not trigger visible form validation on changes after the failed submit.\n if (!validateDrafts && overridesFromArgs['_status'] === 'draft') {\n setSubmitted(false)\n }\n\n contextRef.current = { ...contextRef.current } // triggers rerender of all components that subscribe to form\n\n if (json.message) {\n errorToast(json.message)\n return\n }\n\n if (Array.isArray(json.errors)) {\n const [fieldErrors, nonFieldErrors] = json.errors.reduce(\n ([fieldErrs, nonFieldErrs], err) => {\n const newFieldErrs = []\n const newNonFieldErrs = []\n\n if (err?.message) {\n newNonFieldErrs.push(err)\n }\n\n if (Array.isArray(err?.data?.errors)) {\n err.data?.errors.forEach((dataError) => {\n if (dataError?.path) {\n newFieldErrs.push(dataError)\n } else {\n newNonFieldErrs.push(dataError)\n }\n })\n }\n\n return [\n [...fieldErrs, ...newFieldErrs],\n [...nonFieldErrs, ...newNonFieldErrs],\n ]\n },\n [[], []],\n )\n\n setIsValid(false)\n\n dispatchFields({\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n })\n\n nonFieldErrors.forEach((err) => {\n errorToast(<FieldErrorsToast errorMessage={err.message || t('error:unknown')} />)\n })\n\n return\n }\n\n const message = errorMessages?.[res.status] || res?.statusText || t('error:unknown')\n\n errorToast(message)\n }\n\n return { formState: contextRef.current.fields, res }\n } catch (err) {\n console.error('Error submitting form', err) // eslint-disable-line no-console\n setProcessing(false)\n setSubmitted(true)\n setDisabled(false)\n errorToast(err.message)\n }\n },\n [\n beforeSubmit,\n startRouteTransition,\n action,\n disableSuccessStatus,\n disableValidationOnSubmit,\n disabled,\n dispatchFields,\n handleResponse,\n method,\n onSubmit,\n onSuccess,\n redirect,\n router,\n t,\n i18n,\n waitForAutocomplete,\n ],\n )\n\n const getFields = useCallback(() => contextRef.current.fields, [])\n\n const getField = useCallback((path: string) => contextRef.current.fields[path], [])\n\n const getData = useCallback(() => reduceFieldsToValues(contextRef.current.fields, true), [])\n\n const getSiblingData = useCallback(\n (path: string) => getSiblingDataFunc(contextRef.current.fields, path),\n [],\n )\n\n const getDataByPath = useCallback<GetDataByPath>(\n (path: string) => getDataByPathFunc(contextRef.current.fields, path),\n [],\n )\n\n const createFormData = useCallback<CreateFormData>(\n async (overrides, { data: dataFromArgs, mergeOverrideData = true }) => {\n let data = dataFromArgs || reduceFieldsToValues(contextRef.current.fields, true)\n\n let file = data?.file\n\n if (docConfig && 'upload' in docConfig && docConfig.upload && file) {\n delete data.file\n\n const handler = getUploadHandler({ collectionSlug })\n\n if (typeof handler === 'function') {\n let filename = file.name\n const clientUploadContext = await handler({\n file,\n updateFilename: (value) => {\n filename = value\n },\n })\n\n file = JSON.stringify({\n clientUploadContext,\n collectionSlug,\n filename,\n mimeType: file.type,\n size: file.size,\n })\n }\n }\n\n if (mergeOverrideData) {\n data = {\n ...data,\n ...overrides,\n }\n } else {\n data = overrides\n }\n\n const dataToSerialize: Record<string, unknown> = {\n _payload: JSON.stringify(data),\n }\n\n if (docConfig && 'upload' in docConfig && docConfig.upload && file) {\n dataToSerialize.file = file\n }\n\n // nullAsUndefineds is important to allow uploads and relationship fields to clear themselves\n const formData = serialize(dataToSerialize, {\n indices: true,\n nullsAsUndefineds: false,\n })\n\n return formData\n },\n [collectionSlug, docConfig, getUploadHandler],\n )\n\n const reset = useCallback(\n async (data: unknown) => {\n const controller = handleAbortRef(abortResetFormRef)\n\n const docPreferences = await getDocPreferences()\n\n const { state: newState } = await getFormState({\n id,\n collectionSlug,\n data,\n docPermissions,\n docPreferences,\n globalSlug,\n locale,\n operation,\n renderAllFields: true,\n schemaPath: collectionSlug ? collectionSlug : globalSlug,\n signal: controller.signal,\n skipValidation: true,\n })\n\n contextRef.current = { ...initContextState } as FormContextType\n setModified(false)\n dispatchFields({ type: 'REPLACE_STATE', state: newState })\n\n abortResetFormRef.current = null\n },\n [\n collectionSlug,\n dispatchFields,\n globalSlug,\n id,\n operation,\n getFormState,\n docPermissions,\n getDocPreferences,\n locale,\n ],\n )\n\n const replaceState = useCallback(\n (state: FormState) => {\n contextRef.current = { ...initContextState } as FormContextType\n setModified(false)\n dispatchFields({ type: 'REPLACE_STATE', state })\n },\n [dispatchFields],\n )\n\n const addFieldRow: FormContextType['addFieldRow'] = useCallback(\n ({ blockType, path, rowIndex: rowIndexArg, subFieldState }) => {\n const newRows: unknown[] = getDataByPath(path) || []\n const rowIndex = rowIndexArg === undefined ? newRows.length : rowIndexArg\n\n // dispatch ADD_ROW adds a blank row to local form state.\n // This performs no form state request, as the debounced onChange effect will do that for us.\n dispatchFields({\n type: 'ADD_ROW',\n blockType,\n path,\n rowIndex,\n subFieldState,\n })\n\n setModified(true)\n },\n [dispatchFields, getDataByPath],\n )\n\n const moveFieldRow: FormContextType['moveFieldRow'] = useCallback(\n ({ moveFromIndex, moveToIndex, path }) => {\n dispatchFields({\n type: 'MOVE_ROW',\n moveFromIndex,\n moveToIndex,\n path,\n })\n\n setModified(true)\n },\n [dispatchFields],\n )\n\n const removeFieldRow: FormContextType['removeFieldRow'] = useCallback(\n ({ path, rowIndex }) => {\n dispatchFields({ type: 'REMOVE_ROW', path, rowIndex })\n\n setModified(true)\n },\n [dispatchFields],\n )\n\n const replaceFieldRow: FormContextType['replaceFieldRow'] = useCallback(\n ({ blockType, path, rowIndex: rowIndexArg, subFieldState }) => {\n const currentRows: unknown[] = getDataByPath(path)\n const rowIndex = rowIndexArg === undefined ? currentRows.length : rowIndexArg\n\n dispatchFields({\n type: 'REPLACE_ROW',\n blockType,\n path,\n rowIndex,\n subFieldState,\n })\n\n setModified(true)\n },\n [dispatchFields, getDataByPath],\n )\n\n useEffect(() => {\n const abortOnChange = abortResetFormRef.current\n\n return () => {\n abortAndIgnore(abortOnChange)\n }\n }, [])\n\n useEffect(() => {\n if (initializingFromProps !== undefined) {\n setInitializing(initializingFromProps)\n }\n }, [initializingFromProps])\n\n contextRef.current.submit = submit\n contextRef.current.getFields = getFields\n contextRef.current.getField = getField\n contextRef.current.getData = getData\n contextRef.current.getSiblingData = getSiblingData\n contextRef.current.getDataByPath = getDataByPath\n contextRef.current.validateForm = validateForm\n contextRef.current.createFormData = createFormData\n contextRef.current.setModified = setModified\n contextRef.current.setProcessing = setProcessing\n contextRef.current.setBackgroundProcessing = setBackgroundProcessing\n\n contextRef.current.setSubmitted = setSubmitted\n contextRef.current.setIsValid = setIsValid\n contextRef.current.disabled = disabled\n contextRef.current.setDisabled = setDisabled\n contextRef.current.formRef = formRef\n contextRef.current.reset = reset\n contextRef.current.replaceState = replaceState\n contextRef.current.dispatchFields = dispatchFields\n contextRef.current.addFieldRow = addFieldRow\n contextRef.current.removeFieldRow = removeFieldRow\n contextRef.current.moveFieldRow = moveFieldRow\n contextRef.current.replaceFieldRow = replaceFieldRow\n contextRef.current.uuid = uuid\n contextRef.current.initializing = initializing\n contextRef.current.isValid = isValid\n\n useEffect(() => {\n setIsMounted(true)\n }, [])\n\n useEffect(() => {\n if (typeof disabledFromProps === 'boolean') {\n setDisabled(disabledFromProps)\n }\n }, [disabledFromProps])\n\n useEffect(() => {\n if (typeof submittedFromProps === 'boolean') {\n setSubmitted(submittedFromProps)\n }\n }, [submittedFromProps])\n\n useEffect(() => {\n if (initialState) {\n contextRef.current = { ...initContextState } as FormContextType\n dispatchFields({\n type: 'REPLACE_STATE',\n optimize: false,\n sanitize: true,\n state: initialState,\n })\n }\n }, [initialState, dispatchFields])\n\n useThrottledEffect(\n () => {\n refreshCookie()\n },\n 15000,\n [formState],\n )\n\n useEffect(() => {\n contextRef.current = { ...contextRef.current } // triggers rerender of all components that subscribe to form\n setModified(false)\n }, [locale])\n\n const classes = [className, baseClass].filter(Boolean).join(' ')\n\n const executeOnChange = useEffectEvent((submitted: boolean) => {\n queueTask(async () => {\n if (Array.isArray(onChange)) {\n let serverState: FormState\n\n for (const onChangeFn of onChange) {\n // Edit view default onChange is in packages/ui/src/views/Edit/index.tsx. This onChange usually sends a form state request\n serverState = await onChangeFn({\n formState: deepCopyObjectSimpleWithoutReactComponents(formState),\n submitted,\n })\n }\n\n dispatchFields({\n type: 'MERGE_SERVER_STATE',\n prevStateRef: prevFormState,\n serverState,\n })\n }\n })\n })\n\n useDebouncedEffect(\n () => {\n if ((isFirstRenderRef.current || !dequal(formState, prevFormState.current)) && modified) {\n executeOnChange(submitted)\n }\n\n prevFormState.current = formState\n isFirstRenderRef.current = false\n },\n [modified, submitted, formState],\n 250,\n )\n\n const DocumentFormContextComponent: React.FC<any> = isDocumentForm\n ? DocumentFormContext\n : React.Fragment\n\n const documentFormContextProps = isDocumentForm\n ? {\n value: contextRef.current,\n }\n : {}\n\n const El: 'form' = (el as unknown as 'form') || 'form'\n\n return (\n <El\n action={typeof action === 'function' ? void action : action}\n className={classes}\n method={method}\n noValidate\n onSubmit={(e) => void contextRef.current.submit({}, e)}\n ref={formRef}\n >\n <DocumentFormContextComponent {...documentFormContextProps}>\n <FormContext value={contextRef.current}>\n <FormWatchContext\n value={{\n fields: formState,\n ...contextRef.current,\n }}\n >\n <SubmittedContext value={submitted}>\n <InitializingContext value={!isMounted || (isMounted && initializing)}>\n <ProcessingContext value={processing}>\n <BackgroundProcessingContext value={backgroundProcessing}>\n <ModifiedContext value={modified}>\n {/* eslint-disable-next-line @eslint-react/no-context-provider */}\n <FormFieldsContext.Provider value={fieldsReducer}>\n {children}\n </FormFieldsContext.Provider>\n </ModifiedContext>\n </BackgroundProcessingContext>\n </ProcessingContext>\n </InitializingContext>\n </SubmittedContext>\n </FormWatchContext>\n </FormContext>\n </DocumentFormContextComponent>\n </El>\n )\n}\n\nexport {\n DocumentFormContext,\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n useAllFormFields,\n useDocumentForm,\n useForm,\n useFormFields,\n useFormModified,\n useFormProcessing,\n useFormSubmitted,\n useWatchForm,\n} from './context.js'\n\nexport { FormProps }\n"],"mappings":"AAAA;;;AACA,SAASA,MAAM,QAAQ,cAAa,CAAC;AACrC,SAASC,SAAS,QAAQ;AAC1B,SAASC,SAAS,QAAQ;AAE1B,SACEC,0CAA0C,EAC1CC,aAAA,IAAiBC,iBAAiB,EAClCC,cAAA,IAAkBC,kBAAkB,EACpCC,oBAAoB,EACpBC,IAAI,QACC;AACP,OAAOC,KAAA,IAASC,WAAW,EAAEC,SAAS,EAAEC,UAAU,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAC5E,SAASC,KAAK,QAAQ;AAWtB,SAASC,gBAAgB,QAAQ;AACjC,SAASC,kBAAkB,QAAQ;AACnC,SAASC,cAAc,QAAQ;AAC/B,SAASC,QAAQ,QAAQ;AACzB,SAASC,kBAAkB,QAAQ;AACnC,SAASC,OAAO,QAAQ;AACxB,SAASC,SAAS,QAAQ;AAC1B,SAASC,eAAe,QAAQ;AAChC,SAASC,SAAS,QAAQ;AAC1B,SAASC,YAAY,QAAQ;AAC7B,SAASC,kBAAkB,QAAQ;AACnC,SAASC,kBAAkB,QAAQ;AACnC,SAASC,cAAc,QAAQ;AAC/B,SAASC,iBAAiB,QAAQ;AAClC,SAASC,cAAc,EAAEC,cAAc,QAAQ;AAC/C,SAASC,QAAQ,QAAQ;AACzB,SACEC,2BAA2B,EAC3BC,mBAAmB,EACnBC,WAAW,EACXC,iBAAiB,EACjBC,gBAAgB,EAChBC,mBAAmB,EACnBC,eAAe,EACfC,iBAAiB,EACjBC,gBAAgB,EAChBC,eAAe,QACV;AACP,SAASC,aAAa,QAAQ;AAC9B,SAASC,YAAY,QAAQ;AAC7B,SAASC,gBAAgB,QAAQ;AAEjC,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,IAAA,GAA6BC,KAAA;EACxC,MAAM;IAAEC,EAAE;IAAEC,cAAc;IAAEC,SAAS;IAAEC,cAAc;IAAEC,iBAAiB;IAAEC;EAAU,CAAE,GACpF/B,eAAA;EAEF,MAAMgC,cAAA,GACJJ,SAAA,EAAWK,QAAA,EAAUC,MAAA,IAAU,OAAON,SAAA,EAAWK,QAAA,EAAUC,MAAA,KAAW,WACjEN,SAAA,CAAUK,QAAQ,CAACC,MAAM,CAACC,QAAQ,IAAI,QACvC;EAEN,MAAM;IACJC,MAAM;IACNC,YAAY;IACZC,QAAQ;IACRC,SAAS;IACTC,QAAA,EAAUC,iBAAiB;IAC3BC,oBAAoB;IACpBC,yBAAyB;IACzB;IACAC,EAAE;IACFC,cAAc;IACdC,YAAY;IACZC,cAAc;IACdC,cAAA,EAAgBC,qBAAqB;IACrCC,QAAQ;IACRC,QAAQ;IACRC,SAAS;IACTC,QAAQ;IACRC,SAAA,EAAWC,kBAAkB;IAC7BC,IAAI;IACJC;EAAmB,CACpB,GAAGhC,KAAA;EAEJ,MAAMiC,MAAA,GAAS,YAAYjC,KAAA,GAAQA,KAAA,EAAOiC,MAAA,GAASC,SAAA;EAEnD,MAAMC,MAAA,GAASnF,SAAA;EAEf,MAAMoF,YAAA,GAAe1C,eAAA;EAErB,MAAM;IAAE2C,IAAA,EAAMC;EAAM,CAAE,GAAG9D,SAAA;EACzB,MAAM;IAAE+D,IAAI;IAAEC;EAAC,CAAE,GAAG5D,cAAA;EACpB,MAAM;IAAE6D,aAAa;IAAEC;EAAI,CAAE,GAAGrE,OAAA;EAChC,MAAMsE,SAAA,GAAYlE,YAAA;EAClB,MAAM;IAAEmE;EAAS,CAAE,GAAGzE,QAAA;EAEtB,MAAM;IAAE0E;EAAY,CAAE,GAAGlE,kBAAA;EACzB,MAAM;IAAEmE;EAAoB,CAAE,GAAGpE,kBAAA;EACjC,MAAM;IAAEqE;EAAgB,CAAE,GAAGlE,iBAAA;EAE7B,MAAM;IAAEmE;EAAM,CAAE,GAAG1E,SAAA;EAEnB,MAAM,CAACyC,QAAA,EAAUkC,WAAA,CAAY,GAAGnF,QAAA,CAASkD,iBAAA,IAAqB;EAC9D,MAAM,CAACkC,SAAA,EAAWC,YAAA,CAAa,GAAGrF,QAAA,CAAS;EAC3C,MAAM,CAACsF,QAAA,EAAUC,WAAA,CAAY,GAAGvF,QAAA,CAAS;EAEzC;;;;EAIA,MAAM,CAACwF,OAAA,EAASC,UAAA,CAAW,GAAGzF,QAAA,CAAS;EACvC,MAAM,CAAC0F,YAAA,EAAcC,eAAA,CAAgB,GAAG3F,QAAA,CAAS0D,qBAAA;EAEjD,MAAM,CAACkC,UAAA,EAAYC,aAAA,CAAc,GAAG7F,QAAA,CAAS;EAC7C,MAAM,CAAC8F,oBAAA,EAAsBC,uBAAA,CAAwB,GAAG/F,QAAA,CAAS;EAEjE,MAAM,CAAC+D,SAAA,EAAWiC,YAAA,CAAa,GAAGhG,QAAA,CAAS;EAC3C,MAAMiG,OAAA,GAAUlG,MAAA,CAAwB;EACxC,MAAMmG,UAAA,GAAanG,MAAA,CAAO,CAAC;EAC3B,MAAMoG,iBAAA,GAAoBpG,MAAA,CAAwB;EAClD,MAAMqG,gBAAA,GAAmBrG,MAAA,CAAO;EAEhC,MAAMsG,aAAA,GAAgBvG,UAAA,CAAWgC,YAAA,EAAc,CAAC,GAAG,MAAMyB,YAAA;EAEzD,MAAM,CAAC+C,SAAA,EAAWC,cAAA,CAAe,GAAGF,aAAA;EAEpCH,UAAA,CAAWM,OAAO,CAACC,MAAM,GAAGH,SAAA;EAE5B,MAAMI,aAAA,GAAgB3G,MAAA,CAAOuG,SAAA;EAE7B,MAAMK,YAAA,GAAe/G,WAAA,CAAY;IAC/B,MAAMgH,mBAAA,GAAsB,CAAC;IAC7B,IAAIpB,SAAA,GAAU;IAEd,MAAMqB,IAAA,GAAOX,UAAA,CAAWM,OAAO,CAACM,OAAO;IAEvC,MAAMC,kBAAA,GAAqBC,MAAA,CAAOC,OAAO,CAACf,UAAA,CAAWM,OAAO,CAACC,MAAM,EAAES,GAAG,CACtE,OAAO,CAACC,IAAA,EAAMC,KAAA,CAAM;MAClB,MAAMC,cAAA,GAAiBD,KAAA;MACvB,MAAME,YAAA,GAAeH,IAAA,GAAOA,IAAA,CAAKI,KAAK,CAAC,OAAO,EAAE;MAEhD,IAAIH,KAAA,CAAMI,eAAe,KAAK,OAAO;QACnC,IAAIC,gBAAA,GAAqCJ,cAAA,CAAeK,KAAK;QAE7D,IAAI,cAAcN,KAAA,IAAS,OAAOA,KAAA,CAAMxE,QAAQ,KAAK,YAAY;UAC/D,IAAI+E,eAAA,GAAkBP,KAAA,CAAMQ,KAAK;UAEjC,IAAIR,KAAA,EAAOS,IAAA,IAAQC,KAAA,CAAMC,OAAO,CAACX,KAAA,CAAMS,IAAI,GAAG;YAC5CF,eAAA,GAAkBzB,UAAA,CAAWM,OAAO,CAACnH,aAAa,CAAC8H,IAAA;UACrD;UAEAM,gBAAA,GAAmB,MAAML,KAAA,CAAMxE,QAAQ,CAAC+E,eAAA,EAAiB;YACvD,GAAGP,KAAK;YACRjF,EAAA;YACAC,cAAA;YACA;YACA4F,SAAA,EAAW5D,SAAA;YACXyC,IAAA,EAAMvC,YAAA,EAAcwC,OAAA,GAAUxC,YAAA,CAAawC,OAAO,KAAKD,IAAA;YACvDoB,KAAA,EAAO;YACPpD,SAAA;YACAsC,IAAA,EAAMG,YAAA;YACNY,WAAA,EAAa,CAAC;YACdC,GAAA,EAAK;cACHC,OAAA,EAAS;gBACPlD;cACF;cACAR,CAAA;cACAE;YACF;YACAyD,WAAA,EAAanC,UAAA,CAAWM,OAAO,CAACjH,cAAc,CAAC4H,IAAA;UACjD;UAEA,IAAI,OAAOM,gBAAA,KAAqB,UAAU;YACxCJ,cAAA,CAAeiB,YAAY,GAAGb,gBAAA;YAC9BJ,cAAA,CAAeK,KAAK,GAAG;UACzB,OAAO;YACLL,cAAA,CAAeK,KAAK,GAAG;YACvBL,cAAA,CAAeiB,YAAY,GAAGlE,SAAA;UAChC;QACF;QAEA,IAAIiD,cAAA,CAAeK,KAAK,KAAK,OAAO;UAClClC,SAAA,GAAU;QACZ;MACF;MAEAoB,mBAAmB,CAACO,IAAA,CAAK,GAAGE,cAAA;IAC9B;IAGF,MAAMkB,OAAA,CAAQC,GAAG,CAACzB,kBAAA;IAElB,IAAI,CAAC9H,MAAA,CAAOiH,UAAA,CAAWM,OAAO,CAACC,MAAM,EAAEG,mBAAA,GAAsB;MAC3DL,cAAA,CAAe;QAAEkC,IAAA,EAAM;QAAiBC,KAAA,EAAO9B;MAAoB;IACrE;IAEAnB,UAAA,CAAWD,SAAA;IAEX,OAAOA,SAAA;EACT,GAAG,CAACpD,cAAA,EAAgB8C,MAAA,EAAQqB,cAAA,EAAgBpE,EAAA,EAAI0C,SAAA,EAAWH,CAAA,EAAGE,IAAA,EAAMN,YAAA,CAAa;EAEjF,MAAMqE,MAAA,GAAS/I,WAAA,CACb,OAAOgJ,OAAA,EAASC,CAAA;IACd,MAAM;MACJC,YAAA,GAAe,IAAI;MACnBjG,MAAA,EAAQkG,SAAA,GAAYlG,MAAM;MAC1BmG,OAAO;MACPC,0BAAA,GAA6B,IAAI;MACjC9F,oBAAA,EAAsB+F,4BAA4B;MAClD/E,MAAA,EAAQgF,WAAA,GAAchF,MAAM;MAC5BiF,SAAA,EAAWC,iBAAA,GAAoB,CAAC,CAAC;MACjCC;IAAc,CACf,GAAGV,OAAA,IAAY,CAAC;IAEjB,MAAMW,YAAA,GAAeL,4BAAA,IAAgC/F,oBAAA;IAErD,IAAIF,QAAA,EAAU;MACZ,IAAI4F,CAAA,EAAG;QACLA,CAAA,CAAEW,cAAc;MAClB;MACA;IACF;IAEA;IACA,IAAIC,UAAA,EAAYC,YAAA;IAEhB,MAAMC,OAAA,GAAU,IAAIpB,OAAA,CAAQ,CAACqB,OAAA,EAASC,MAAA;MACpCH,YAAA,GAAeE,OAAA;MACfH,UAAA,GAAaI,MAAA;IACf;IAEA,MAAMC,mBAAA,GACJf,SAAA,IAAa,OAAOlG,MAAA,KAAW,YAAY,OAAOA,MAAA,KAAW;IAE/D,IAAIiB,QAAA,IAAYyF,YAAA,IAAgB,CAACO,mBAAA,EAAqB;MACpD;MACA;MACAJ,YAAA,GAAgB7C,MAAA,IAAS5G,KAAA,CAAM8J,OAAO,CAAClD,MAAA;MACvC4C,UAAA,GAAc5C,MAAA,IAAS5G,KAAA,CAAM+J,KAAK,CAACnD,MAAA;IACrC,OAAO;MACL5G,KAAA,CAAM0J,OAAO,CAACA,OAAA,EAAS;QACrBK,KAAA,EAAQnD,MAAA;UACN,OAAOA,MAAA;QACT;QACAoD,OAAA,EAASvF,CAAA,CAAE;QACXqF,OAAA,EAAUlD,MAAA;UACR,OAAOA,MAAA;QACT;MACF;IACF;IAEA,IAAIgC,CAAA,EAAG;MACLA,CAAA,CAAEqB,eAAe;MACjBrB,CAAA,CAAEW,cAAc;IAClB;IAEA,IAAIP,0BAAA,EAA4B;MAC9BpD,aAAA,CAAc;MACdV,WAAA,CAAY;IACd;IAEA,IAAIjB,mBAAA,EAAqB;MACvB,MAAMxE,IAAA,CAAK;IACb;IAEA,MAAMmH,MAAA,GAAOpH,oBAAA,CAAqByG,UAAA,CAAWM,OAAO,CAACC,MAAM,EAAE;IAE7D,MAAM0D,qBAAA,GAAwB/K,0CAAA,CAC5B8G,UAAA,CAAWM,OAAO,CAACC,MAAM;IAG3B;IACA,IAAIqB,KAAA,CAAMC,OAAO,CAACjF,YAAA,GAAe;MAC/B,IAAIsH,oBAAA;MAEJ,MAAMtH,YAAA,CAAauH,MAAM,CAAC,OAAOC,aAAA,EAAeC,cAAA;QAC9C,MAAMD,aAAA;QAEN,MAAME,MAAA,GAAS,MAAMD,cAAA,CAAe;UAClCjE,SAAA,EAAW6D;QACb;QAEAC,oBAAA,GAAuBI,MAAA;MACzB,GAAGjC,OAAA,CAAQqB,OAAO;MAElB,MAAMpE,SAAA,GAAUwB,MAAA,CAAOC,OAAO,CAACmD,oBAAA,EAAsBK,KAAK,CACxD,CAAC,GAAGrD,OAAA,CAAM,KAAKA,OAAA,CAAMM,KAAK,KAAK;MAGjCjC,UAAA,CAAWD,SAAA;MAEX,IAAI,CAACA,SAAA,EAAS;QACZK,aAAA,CAAc;QACdG,YAAA,CAAa;QACbb,WAAA,CAAY;QACZ,OAAOoB,cAAA,CAAe;UAAEkC,IAAA,EAAM;UAAiBC,KAAA,EAAO0B;QAAqB;MAC7E;IACF;IAEA,MAAM5E,SAAA,GACJ8D,cAAA,IAAkBlG,yBAAA,GAA4B,OAAO,MAAM8C,UAAA,CAAWM,OAAO,CAACG,YAAY;IAE5FlB,UAAA,CAAWD,SAAA;IAEX;IACA,IAAI,CAACA,SAAA,EAAS;MACZiE,UAAA,CAAW/E,CAAA,CAAE;MACbmB,aAAA,CAAc;MACdG,YAAA,CAAa;MACbb,WAAA,CAAY;MACZ;IACF;IAEA,IAAIiE,SAAA,GAAY,CAAC;IAEjB,IAAI,OAAOC,iBAAA,KAAsB,YAAY;MAC3CD,SAAA,GAAYC,iBAAA,CAAkBnD,UAAA,CAAWM,OAAO,CAACC,MAAM;IACzD,OAAO,IAAI,OAAO4C,iBAAA,KAAsB,UAAU;MAChDD,SAAA,GAAYC,iBAAA;IACd;IAEA;IACA,IAAIzF,QAAA,EAAU;MACZ,KAAK,MAAM,CAAC8G,GAAA,EAAK9C,KAAA,CAAM,IAAIZ,MAAA,CAAOC,OAAO,CAACmC,SAAA,GAAY;QACpDvC,MAAI,CAAC6D,GAAA,CAAI,GAAG9C,KAAA;MACd;MAEAhE,QAAA,CAASsC,UAAA,CAAWM,OAAO,CAACC,MAAM,EAAEI,MAAA;IACtC;IAEA,IAAI,CAACiD,mBAAA,EAAqB;MACxB;MACA;MACAjE,aAAA,CAAc;MACdG,YAAA,CAAa;MACbb,WAAA,CAAY;MACZ;IACF;IAEA,MAAMwF,QAAA,GAAW,MAAMzE,UAAA,CAAWM,OAAO,CAACoE,cAAc,CAACxB,SAAA,EAAW;MAClEvC,IAAA,EAAAA,MAAA;MACAgE,iBAAA,EAAmBC,OAAA,CAAQ,OAAOzB,iBAAA,KAAsB;IAC1D;IAEA,IAAI;MACF,IAAI0B,GAAA;MAEJ,IAAI,OAAOhC,SAAA,KAAc,UAAU;QACjCgC,GAAA,GAAM,MAAM7J,QAAQ,CAACiI,WAAA,CAAY6B,WAAW,GAAG,CAACjC,SAAA,EAAW;UACzDkC,IAAA,EAAMN,QAAA;UACNO,OAAA,EAAS;YACP,mBAAmBzG,IAAA,CAAK0G;UAC1B;QACF;MACF,OAAO,IAAI,OAAOtI,MAAA,KAAW,YAAY;QACvCkI,GAAA,GAAM,MAAMlI,MAAA,CAAO8H,QAAA;MACrB;MAEApF,WAAA,CAAY;MACZJ,WAAA,CAAY;MAEZ,IAAI,OAAO7B,cAAA,KAAmB,YAAY;QACxCA,cAAA,CAAeyH,GAAA,EAAKrB,YAAA,EAAcD,UAAA;QAClC;MACF;MAEA,MAAM2B,WAAA,GAAcL,GAAA,CAAIG,OAAO,CAACG,GAAG,CAAC;MACpC,MAAMC,MAAA,GAASF,WAAA,IAAeA,WAAA,CAAYG,OAAO,CAAC,wBAAwB,CAAC;MAE3E;MACA,IAAIC,IAAA,GAA4B,CAAC;MAEjC,IAAIF,MAAA,EAAQ;QACVE,IAAA,GAAO,MAAMT,GAAA,CAAIS,IAAI;MACvB;MAEA,IAAIT,GAAA,CAAIU,MAAM,GAAG,KAAK;QACpB,IAAI,OAAO5H,SAAA,KAAc,YAAY;UACnC,MAAM6H,YAAA,GAAe,MAAM7H,SAAA,CAAU2H,IAAA,EAAM;YACzCxC,OAAA;YACA1C,SAAA,EAAW6D;UACb;UAEA,IAAIuB,YAAA,EAAc;YAChBnF,cAAA,CAAe;cACbkC,IAAA,EAAM;cACNK,YAAA;cACA6C,YAAA,EAAcjF,aAAA;cACdkF,WAAA,EAAaF;YACf;UACF;QACF;QAEA1F,YAAA,CAAa;QACbH,aAAA,CAAc;QAEd,IAAI/B,QAAA,EAAU;UACZkB,oBAAA,CAAqB,MAAMX,MAAA,CAAOwH,IAAI,CAAC/H,QAAA;QACzC,OAAO,IAAI,CAACyF,YAAA,EAAc;UACxBG,YAAA,CAAa8B,IAAA,CAAKM,OAAO,IAAIpH,CAAA,CAAE;QACjC;MACF,OAAO;QACLmB,aAAA,CAAc;QACdG,YAAA,CAAa;QAEb;QACA;QACA,IAAI,CAACvD,cAAA,IAAkB4G,iBAAiB,CAAC,UAAU,KAAK,SAAS;UAC/DrD,YAAA,CAAa;QACf;QAEAE,UAAA,CAAWM,OAAO,GAAG;UAAE,GAAGN,UAAA,CAAWM;QAAQ,EAAE;QAAA;QAE/C,IAAIgF,IAAA,CAAKM,OAAO,EAAE;UAChBrC,UAAA,CAAW+B,IAAA,CAAKM,OAAO;UACvB;QACF;QAEA,IAAIhE,KAAA,CAAMC,OAAO,CAACyD,IAAA,CAAKO,MAAM,GAAG;UAC9B,MAAM,CAACC,WAAA,EAAaC,cAAA,CAAe,GAAGT,IAAA,CAAKO,MAAM,CAAC1B,MAAM,CACtD,CAAC,CAAC6B,SAAA,EAAWC,YAAA,CAAa,EAAEC,KAAA;YAC1B,MAAMC,YAAA,GAAe,EAAE;YACvB,MAAMC,eAAA,GAAkB,EAAE;YAE1B,IAAIF,KAAA,EAAKN,OAAA,EAAS;cAChBQ,eAAA,CAAgBT,IAAI,CAACO,KAAA;YACvB;YAEA,IAAItE,KAAA,CAAMC,OAAO,CAACqE,KAAA,EAAKvF,IAAA,EAAMkF,MAAA,GAAS;cACpCK,KAAA,CAAIvF,IAAI,EAAEkF,MAAA,CAAOQ,OAAA,CAASC,SAAA;gBACxB,IAAIA,SAAA,EAAWrF,IAAA,EAAM;kBACnBkF,YAAA,CAAaR,IAAI,CAACW,SAAA;gBACpB,OAAO;kBACLF,eAAA,CAAgBT,IAAI,CAACW,SAAA;gBACvB;cACF;YACF;YAEA,OAAO,CACL,C,GAAIN,SAAA,E,GAAcG,YAAA,CAAa,EAC/B,C,GAAIF,YAAA,E,GAAiBG,eAAA,CAAgB,CACtC;UACH,GACA,CAAC,EAAE,EAAE,EAAE,CAAC;UAGV7G,UAAA,CAAW;UAEXc,cAAA,CAAe;YACbkC,IAAA,EAAM;YACNsD,MAAA,EAAQC;UACV;UAEAC,cAAA,CAAeM,OAAO,CAAEH,KAAA;YACtB3C,UAAA,cAAWgD,IAAA,CAACvM,gBAAA;cAAiBoI,YAAA,EAAc8D,KAAA,CAAIN,OAAO,IAAIpH,CAAA,CAAE;;UAC9D;UAEA;QACF;QAEA,MAAMoH,OAAA,GAAUjK,aAAA,GAAgBkJ,GAAA,CAAIU,MAAM,CAAC,IAAIV,GAAA,EAAK2B,UAAA,IAAchI,CAAA,CAAE;QAEpE+E,UAAA,CAAWqC,OAAA;MACb;MAEA,OAAO;QAAExF,SAAA,EAAWJ,UAAA,CAAWM,OAAO,CAACC,MAAM;QAAEsE;MAAI;IACrD,EAAE,OAAOqB,GAAA,EAAK;MACZO,OAAA,CAAQ3C,KAAK,CAAC,yBAAyBoC,GAAA,EAAK;MAAA;MAC5CvG,aAAA,CAAc;MACdG,YAAA,CAAa;MACbb,WAAA,CAAY;MACZsE,UAAA,CAAW2C,GAAA,CAAIN,OAAO;IACxB;EACF,GACA,CACEhJ,YAAA,EACAkC,oBAAA,EACAnC,MAAA,EACAM,oBAAA,EACAC,yBAAA,EACAH,QAAA,EACAsD,cAAA,EACAjD,cAAA,EACAa,MAAA,EACAP,QAAA,EACAC,SAAA,EACAC,QAAA,EACAO,MAAA,EACAK,CAAA,EACAD,IAAA,EACAP,mBAAA,CACD;EAGH,MAAM0I,SAAA,GAAYhN,WAAA,CAAY,MAAMsG,UAAA,CAAWM,OAAO,CAACC,MAAM,EAAE,EAAE;EAEjE,MAAMoG,QAAA,GAAWjN,WAAA,CAAauH,MAAA,IAAiBjB,UAAA,CAAWM,OAAO,CAACC,MAAM,CAACU,MAAA,CAAK,EAAE,EAAE;EAElF,MAAML,OAAA,GAAUlH,WAAA,CAAY,MAAMH,oBAAA,CAAqByG,UAAA,CAAWM,OAAO,CAACC,MAAM,EAAE,OAAO,EAAE;EAE3F,MAAMlH,cAAA,GAAiBK,WAAA,CACpBuH,MAAA,IAAiB3H,kBAAA,CAAmB0G,UAAA,CAAWM,OAAO,CAACC,MAAM,EAAEU,MAAA,GAChE,EAAE;EAGJ,MAAM9H,aAAA,GAAgBO,WAAA,CACnBuH,MAAA,IAAiB7H,iBAAA,CAAkB4G,UAAA,CAAWM,OAAO,CAACC,MAAM,EAAEU,MAAA,GAC/D,EAAE;EAGJ,MAAMyD,cAAA,GAAiBhL,WAAA,CACrB,OAAOwJ,WAAA,EAAW;IAAEvC,IAAA,EAAMiG,YAAY;IAAEjC,iBAAA,GAAoB;EAAI,CAAE;IAChE,IAAIhE,MAAA,GAAOiG,YAAA,IAAgBrN,oBAAA,CAAqByG,UAAA,CAAWM,OAAO,CAACC,MAAM,EAAE;IAE3E,IAAIsG,IAAA,GAAOlG,MAAA,EAAMkG,IAAA;IAEjB,IAAI1K,SAAA,IAAa,YAAYA,SAAA,IAAaA,SAAA,CAAU2K,MAAM,IAAID,IAAA,EAAM;MAClE,OAAOlG,MAAA,CAAKkG,IAAI;MAEhB,MAAME,OAAA,GAAUhI,gBAAA,CAAiB;QAAE7C;MAAe;MAElD,IAAI,OAAO6K,OAAA,KAAY,YAAY;QACjC,IAAIC,QAAA,GAAWH,IAAA,CAAKI,IAAI;QACxB,MAAMC,mBAAA,GAAsB,MAAMH,OAAA,CAAQ;UACxCF,IAAA;UACAM,cAAA,EAAiBzF,OAAA;YACfsF,QAAA,GAAWtF,OAAA;UACb;QACF;QAEAmF,IAAA,GAAOO,IAAA,CAAKC,SAAS,CAAC;UACpBH,mBAAA;UACAhL,cAAA;UACA8K,QAAA;UACAM,QAAA,EAAUT,IAAA,CAAKtE,IAAI;UACnBgF,IAAA,EAAMV,IAAA,CAAKU;QACb;MACF;IACF;IAEA,IAAI5C,iBAAA,EAAmB;MACrBhE,MAAA,GAAO;QACL,GAAGA,MAAI;QACP,GAAGuC;MACL;IACF,OAAO;MACLvC,MAAA,GAAOuC,WAAA;IACT;IAEA,MAAMsE,eAAA,GAA2C;MAC/CC,QAAA,EAAUL,IAAA,CAAKC,SAAS,CAAC1G,MAAA;IAC3B;IAEA,IAAIxE,SAAA,IAAa,YAAYA,SAAA,IAAaA,SAAA,CAAU2K,MAAM,IAAID,IAAA,EAAM;MAClEW,eAAA,CAAgBX,IAAI,GAAGA,IAAA;IACzB;IAEA;IACA,MAAMpC,UAAA,GAAWxL,SAAA,CAAUuO,eAAA,EAAiB;MAC1CE,OAAA,EAAS;MACTC,iBAAA,EAAmB;IACrB;IAEA,OAAOlD,UAAA;EACT,GACA,CAACvI,cAAA,EAAgBC,SAAA,EAAW4C,gBAAA,CAAiB;EAG/C,MAAM6I,KAAA,GAAQlO,WAAA,CACZ,MAAOiH,MAAA;IACL,MAAMkH,UAAA,GAAa9M,cAAA,CAAekF,iBAAA;IAElC,MAAM6H,cAAA,GAAiB,MAAMzL,iBAAA;IAE7B,MAAM;MAAEmG,KAAA,EAAOuF;IAAQ,CAAE,GAAG,MAAMlJ,YAAA,CAAa;MAC7C5C,EAAA;MACAC,cAAA;MACAyE,IAAA,EAAAA,MAAA;MACAvE,cAAA;MACA0L,cAAA;MACAxL,UAAA;MACAgC,MAAA;MACAK,SAAA;MACAqJ,eAAA,EAAiB;MACjBC,UAAA,EAAY/L,cAAA,GAAiBA,cAAA,GAAiBI,UAAA;MAC9C4L,MAAA,EAAQL,UAAA,CAAWK,MAAM;MACzB9E,cAAA,EAAgB;IAClB;IAEApD,UAAA,CAAWM,OAAO,GAAG;MAAE,GAAGzE;IAAiB;IAC3CwD,WAAA,CAAY;IACZgB,cAAA,CAAe;MAAEkC,IAAA,EAAM;MAAiBC,KAAA,EAAOuF;IAAS;IAExD9H,iBAAA,CAAkBK,OAAO,GAAG;EAC9B,GACA,CACEpE,cAAA,EACAmE,cAAA,EACA/D,UAAA,EACAL,EAAA,EACA0C,SAAA,EACAE,YAAA,EACAzC,cAAA,EACAC,iBAAA,EACAiC,MAAA,CACD;EAGH,MAAM6J,YAAA,GAAezO,WAAA,CAClB8I,KAAA;IACCxC,UAAA,CAAWM,OAAO,GAAG;MAAE,GAAGzE;IAAiB;IAC3CwD,WAAA,CAAY;IACZgB,cAAA,CAAe;MAAEkC,IAAA,EAAM;MAAiBC;IAAM;EAChD,GACA,CAACnC,cAAA,CAAe;EAGlB,MAAM+H,WAAA,GAA8C1O,WAAA,CAClD,CAAC;IAAE2O,SAAS;IAAEpH,IAAI,EAAJA,MAAI;IAAEqH,QAAA,EAAUC,WAAW;IAAEC;EAAa,CAAE;IACxD,MAAMC,OAAA,GAAqBtP,aAAA,CAAc8H,MAAA,KAAS,EAAE;IACpD,MAAMqH,QAAA,GAAWC,WAAA,KAAgBrK,SAAA,GAAYuK,OAAA,CAAQC,MAAM,GAAGH,WAAA;IAE9D;IACA;IACAlI,cAAA,CAAe;MACbkC,IAAA,EAAM;MACN8F,SAAA;MACApH,IAAA,EAAAA,MAAA;MACAqH,QAAA;MACAE;IACF;IAEAnJ,WAAA,CAAY;EACd,GACA,CAACgB,cAAA,EAAgBlH,aAAA,CAAc;EAGjC,MAAMwP,YAAA,GAAgDjP,WAAA,CACpD,CAAC;IAAEkP,aAAa;IAAEC,WAAW;IAAE5H,IAAI,EAAJA;EAAI,CAAE;IACnCZ,cAAA,CAAe;MACbkC,IAAA,EAAM;MACNqG,aAAA;MACAC,WAAA;MACA5H,IAAA,EAAAA;IACF;IAEA5B,WAAA,CAAY;EACd,GACA,CAACgB,cAAA,CAAe;EAGlB,MAAMyI,cAAA,GAAoDpP,WAAA,CACxD,CAAC;IAAEuH,IAAI,EAAJA,MAAI;IAAEqH,QAAQ,EAARA;EAAQ,CAAE;IACjBjI,cAAA,CAAe;MAAEkC,IAAA,EAAM;MAActB,IAAA,EAAAA,MAAA;MAAMqH,QAAA,EAAAA;IAAS;IAEpDjJ,WAAA,CAAY;EACd,GACA,CAACgB,cAAA,CAAe;EAGlB,MAAM0I,eAAA,GAAsDrP,WAAA,CAC1D,CAAC;IAAE2O,SAAS,EAATA,WAAS;IAAEpH,IAAI,EAAJA,MAAI;IAAEqH,QAAA,EAAUC,aAAW;IAAEC,aAAa,EAAbA;EAAa,CAAE;IACxD,MAAMQ,WAAA,GAAyB7P,aAAA,CAAc8H,MAAA;IAC7C,MAAMqH,UAAA,GAAWC,aAAA,KAAgBrK,SAAA,GAAY8K,WAAA,CAAYN,MAAM,GAAGH,aAAA;IAElElI,cAAA,CAAe;MACbkC,IAAA,EAAM;MACN8F,SAAA,EAAAA,WAAA;MACApH,IAAA,EAAAA,MAAA;MACAqH,QAAA,EAAAA,UAAA;MACAE,aAAA,EAAAA;IACF;IAEAnJ,WAAA,CAAY;EACd,GACA,CAACgB,cAAA,EAAgBlH,aAAA,CAAc;EAGjCQ,SAAA,CAAU;IACR,MAAMsP,aAAA,GAAgBhJ,iBAAA,CAAkBK,OAAO;IAE/C,OAAO;MACLxF,cAAA,CAAemO,aAAA;IACjB;EACF,GAAG,EAAE;EAELtP,SAAA,CAAU;IACR,IAAI6D,qBAAA,KAA0BU,SAAA,EAAW;MACvCuB,eAAA,CAAgBjC,qBAAA;IAClB;EACF,GAAG,CAACA,qBAAA,CAAsB;EAE1BwC,UAAA,CAAWM,OAAO,CAACmC,MAAM,GAAGA,MAAA;EAC5BzC,UAAA,CAAWM,OAAO,CAACoG,SAAS,GAAGA,SAAA;EAC/B1G,UAAA,CAAWM,OAAO,CAACqG,QAAQ,GAAGA,QAAA;EAC9B3G,UAAA,CAAWM,OAAO,CAACM,OAAO,GAAGA,OAAA;EAC7BZ,UAAA,CAAWM,OAAO,CAACjH,cAAc,GAAGA,cAAA;EACpC2G,UAAA,CAAWM,OAAO,CAACnH,aAAa,GAAGA,aAAA;EACnC6G,UAAA,CAAWM,OAAO,CAACG,YAAY,GAAGA,YAAA;EAClCT,UAAA,CAAWM,OAAO,CAACoE,cAAc,GAAGA,cAAA;EACpC1E,UAAA,CAAWM,OAAO,CAACjB,WAAW,GAAGA,WAAA;EACjCW,UAAA,CAAWM,OAAO,CAACX,aAAa,GAAGA,aAAA;EACnCK,UAAA,CAAWM,OAAO,CAACT,uBAAuB,GAAGA,uBAAA;EAE7CG,UAAA,CAAWM,OAAO,CAACR,YAAY,GAAGA,YAAA;EAClCE,UAAA,CAAWM,OAAO,CAACf,UAAU,GAAGA,UAAA;EAChCS,UAAA,CAAWM,OAAO,CAACvD,QAAQ,GAAGA,QAAA;EAC9BiD,UAAA,CAAWM,OAAO,CAACrB,WAAW,GAAGA,WAAA;EACjCe,UAAA,CAAWM,OAAO,CAACP,OAAO,GAAGA,OAAA;EAC7BC,UAAA,CAAWM,OAAO,CAACsH,KAAK,GAAGA,KAAA;EAC3B5H,UAAA,CAAWM,OAAO,CAAC6H,YAAY,GAAGA,YAAA;EAClCnI,UAAA,CAAWM,OAAO,CAACD,cAAc,GAAGA,cAAA;EACpCL,UAAA,CAAWM,OAAO,CAAC8H,WAAW,GAAGA,WAAA;EACjCpI,UAAA,CAAWM,OAAO,CAACwI,cAAc,GAAGA,cAAA;EACpC9I,UAAA,CAAWM,OAAO,CAACqI,YAAY,GAAGA,YAAA;EAClC3I,UAAA,CAAWM,OAAO,CAACyI,eAAe,GAAGA,eAAA;EACrC/I,UAAA,CAAWM,OAAO,CAACvC,IAAI,GAAGA,IAAA;EAC1BiC,UAAA,CAAWM,OAAO,CAACd,YAAY,GAAGA,YAAA;EAClCQ,UAAA,CAAWM,OAAO,CAAChB,OAAO,GAAGA,OAAA;EAE7B3F,SAAA,CAAU;IACRwF,YAAA,CAAa;EACf,GAAG,EAAE;EAELxF,SAAA,CAAU;IACR,IAAI,OAAOqD,iBAAA,KAAsB,WAAW;MAC1CiC,WAAA,CAAYjC,iBAAA;IACd;EACF,GAAG,CAACA,iBAAA,CAAkB;EAEtBrD,SAAA,CAAU;IACR,IAAI,OAAOmE,kBAAA,KAAuB,WAAW;MAC3CgC,YAAA,CAAahC,kBAAA;IACf;EACF,GAAG,CAACA,kBAAA,CAAmB;EAEvBnE,SAAA,CAAU;IACR,IAAI0D,YAAA,EAAc;MAChB2C,UAAA,CAAWM,OAAO,GAAG;QAAE,GAAGzE;MAAiB;MAC3CwE,cAAA,CAAe;QACbkC,IAAA,EAAM;QACN2G,QAAA,EAAU;QACVC,QAAA,EAAU;QACV3G,KAAA,EAAOnF;MACT;IACF;EACF,GAAG,CAACA,YAAA,EAAcgD,cAAA,CAAe;EAEjCjG,kBAAA,CACE;IACEqE,aAAA;EACF,GACA,OACA,CAAC2B,SAAA,CAAU;EAGbzG,SAAA,CAAU;IACRqG,UAAA,CAAWM,OAAO,GAAG;MAAE,GAAGN,UAAA,CAAWM;IAAQ,EAAE;IAAA;IAC/CjB,WAAA,CAAY;EACd,GAAG,CAACf,MAAA,CAAO;EAEX,MAAM8K,OAAA,GAAU,CAACtM,SAAA,EAAWhB,SAAA,CAAU,CAACuN,MAAM,CAACzE,OAAA,EAAS0E,IAAI,CAAC;EAE5D,MAAMC,eAAA,GAAkBrP,cAAA,CAAgB2D,WAAA;IACtCe,SAAA,CAAU;MACR,IAAIgD,KAAA,CAAMC,OAAO,CAACpE,QAAA,GAAW;QAC3B,IAAIiI,WAAA;QAEJ,KAAK,MAAM8D,UAAA,IAAc/L,QAAA,EAAU;UACjC;UACAiI,WAAA,GAAc,MAAM8D,UAAA,CAAW;YAC7BpJ,SAAA,EAAWlH,0CAAA,CAA2CkH,SAAA;YACtDvC,SAAA,EAAAA;UACF;QACF;QAEAwC,cAAA,CAAe;UACbkC,IAAA,EAAM;UACNkD,YAAA,EAAcjF,aAAA;UACdkF;QACF;MACF;IACF;EACF;EAEAzL,kBAAA,CACE;IACE,IAAI,CAACiG,gBAAA,CAAiBI,OAAO,IAAI,CAACvH,MAAA,CAAOqH,SAAA,EAAWI,aAAA,CAAcF,OAAO,MAAMlB,QAAA,EAAU;MACvFmK,eAAA,CAAgB1L,SAAA;IAClB;IAEA2C,aAAA,CAAcF,OAAO,GAAGF,SAAA;IACxBF,gBAAA,CAAiBI,OAAO,GAAG;EAC7B,GACA,CAAClB,QAAA,EAAUvB,SAAA,EAAWuC,SAAA,CAAU,EAChC;EAGF,MAAMqJ,4BAAA,GAA8CnM,cAAA,GAChDpC,mBAAA,GACAzB,KAAA,CAAMiQ,QAAQ;EAElB,MAAMC,wBAAA,GAA2BrM,cAAA,GAC7B;IACEoE,KAAA,EAAO1B,UAAA,CAAWM;EACpB,IACA,CAAC;EAEL,MAAMsJ,EAAA,GAAazM,EAAC,IAA4B;EAEhD,oBACEoJ,IAAA,CAACqD,EAAA;IACCjN,MAAA,EAAQ,OAAOA,MAAA,KAAW,aAAa,KAAKA,MAAA,GAASA,MAAA;IACrDG,SAAA,EAAWsM,OAAA;IACXnL,MAAA,EAAQA,MAAA;IACR4L,UAAU;IACVnM,QAAA,EAAWiF,GAAA,IAAM,KAAK3C,UAAA,CAAWM,OAAO,CAACmC,MAAM,CAAC,CAAC,GAAGE,GAAA;IACpDmH,GAAA,EAAK/J,OAAA;cAEL,aAAAwG,IAAA,CAACkD,4BAAA;MAA8B,GAAGE,wBAAwB;gBACxD,aAAApD,IAAA,CAACpL,WAAA;QAAYuG,KAAA,EAAO1B,UAAA,CAAWM,OAAO;kBACpC,aAAAiG,IAAA,CAAClL,gBAAA;UACCqG,KAAA,EAAO;YACLnB,MAAA,EAAQH,SAAA;YACR,GAAGJ,UAAA,CAAWM;UAChB;oBAEA,aAAAiG,IAAA,CAAC9K,gBAAA;YAAiBiG,KAAA,EAAO7D,SAAA;sBACvB,aAAA0I,IAAA,CAACjL,mBAAA;cAAoBoG,KAAA,EAAO,CAACxC,SAAA,IAAcA,SAAA,IAAaM,YAAA;wBACtD,aAAA+G,IAAA,CAAC/K,iBAAA;gBAAkBkG,KAAA,EAAOhC,UAAA;0BACxB,aAAA6G,IAAA,CAACtL,2BAAA;kBAA4ByG,KAAA,EAAO9B,oBAAA;4BAClC,aAAA2G,IAAA,CAAChL,eAAA;oBAAgBmG,KAAA,EAAOtC,QAAA;8BAEtB,aAAAmH,IAAA,CAACnL,iBAAA,CAAkB2O,QAAQ;sBAACrI,KAAA,EAAOvB,aAAA;gCAChCtD;;;;;;;;;;;AAYzB;AAEA,SACE3B,mBAAmB,EACnBC,WAAW,EACXC,iBAAiB,EACjBC,gBAAgB,EAChBE,eAAe,EACfC,iBAAiB,EACjBC,gBAAgB,EAChBuO,gBAAgB,EAChBtO,eAAe,EACfuO,OAAO,EACPC,aAAa,EACbC,eAAe,EACfC,iBAAiB,EACjBC,gBAAgB,EAChBC,YAAY,QACP","ignoreList":[]}
|
|
@@ -4,5 +4,6 @@
|
|
|
4
4
|
*
|
|
5
5
|
* @internal - may change or be removed without a major version bump
|
|
6
6
|
*/
|
|
7
|
-
export declare function useControllableState<T>(propValue: T, defaultValue
|
|
7
|
+
export declare function useControllableState<T, D>(propValue: T, defaultValue: D): [T extends NonNullable<T> ? T : D | NonNullable<T>, (value: ((prev: T) => T) | T) => void];
|
|
8
|
+
export declare function useControllableState<T>(propValue: T): [T, (value: ((prev: T) => T) | T) => void];
|
|
8
9
|
//# sourceMappingURL=useControllableState.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useControllableState.d.ts","sourceRoot":"","sources":["../../src/hooks/useControllableState.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"useControllableState.d.ts","sourceRoot":"","sources":["../../src/hooks/useControllableState.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,CAAC,EACvC,SAAS,EAAE,CAAC,EACZ,YAAY,EAAE,CAAC,GACd,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAA;AAC7F,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAA"}
|
|
@@ -1,16 +1,10 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import { c as _c } from "react/compiler-runtime";
|
|
4
|
-
import {
|
|
5
|
-
/**
|
|
6
|
-
* A hook for managing state that can be controlled by props but also overridden locally.
|
|
7
|
-
* Props always take precedence if they change, but local state can override them temporarily.
|
|
8
|
-
*
|
|
9
|
-
* @internal - may change or be removed without a major version bump
|
|
10
|
-
*/
|
|
4
|
+
import { useEffect, useRef, useState } from 'react';
|
|
11
5
|
export function useControllableState(propValue, defaultValue) {
|
|
12
|
-
const $ = _c(
|
|
13
|
-
const [localValue, setLocalValue] = useState(propValue
|
|
6
|
+
const $ = _c(5);
|
|
7
|
+
const [localValue, setLocalValue] = useState(propValue);
|
|
14
8
|
const initialRenderRef = useRef(true);
|
|
15
9
|
let t0;
|
|
16
10
|
let t1;
|
|
@@ -31,23 +25,14 @@ export function useControllableState(propValue, defaultValue) {
|
|
|
31
25
|
t1 = $[2];
|
|
32
26
|
}
|
|
33
27
|
useEffect(t0, t1);
|
|
34
|
-
|
|
35
|
-
if ($[3] === Symbol.for("react.memo_cache_sentinel")) {
|
|
36
|
-
t2 = value => {
|
|
37
|
-
setLocalValue(value);
|
|
38
|
-
};
|
|
39
|
-
$[3] = t2;
|
|
40
|
-
} else {
|
|
41
|
-
t2 = $[3];
|
|
42
|
-
}
|
|
43
|
-
const setValue = t2;
|
|
28
|
+
const t2 = localValue ?? defaultValue;
|
|
44
29
|
let t3;
|
|
45
|
-
if ($[
|
|
46
|
-
t3 = [
|
|
47
|
-
$[
|
|
48
|
-
$[
|
|
30
|
+
if ($[3] !== t2) {
|
|
31
|
+
t3 = [t2, setLocalValue];
|
|
32
|
+
$[3] = t2;
|
|
33
|
+
$[4] = t3;
|
|
49
34
|
} else {
|
|
50
|
-
t3 = $[
|
|
35
|
+
t3 = $[4];
|
|
51
36
|
}
|
|
52
37
|
return t3;
|
|
53
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useControllableState.js","names":["c","_c","
|
|
1
|
+
{"version":3,"file":"useControllableState.js","names":["c","_c","useEffect","useRef","useState","useControllableState","propValue","defaultValue","$","localValue","setLocalValue","initialRenderRef","t0","t1","current","t2","t3"],"sources":["../../src/hooks/useControllableState.ts"],"sourcesContent":["'use client'\nimport { useEffect, useRef, useState } from 'react'\n\n/**\n * A hook for managing state that can be controlled by props but also overridden locally.\n * Props always take precedence if they change, but local state can override them temporarily.\n *\n * @internal - may change or be removed without a major version bump\n */\nexport function useControllableState<T, D>(\n propValue: T,\n defaultValue: D,\n): [T extends NonNullable<T> ? T : D | NonNullable<T>, (value: ((prev: T) => T) | T) => void]\nexport function useControllableState<T>(propValue: T): [T, (value: ((prev: T) => T) | T) => void]\nexport function useControllableState<T, D>(\n propValue: T,\n defaultValue?: D,\n): [T extends NonNullable<T> ? T : D | NonNullable<T>, (value: ((prev: T) => T) | T) => void] {\n const [localValue, setLocalValue] = useState<T>(propValue)\n const initialRenderRef = useRef(true)\n\n useEffect(() => {\n if (initialRenderRef.current) {\n initialRenderRef.current = false\n return\n }\n\n setLocalValue(propValue)\n }, [propValue])\n\n return [localValue ?? defaultValue, setLocalValue] as [\n T extends NonNullable<T> ? T : D | NonNullable<T>,\n (value: ((prev: T) => T) | T) => void,\n ]\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AACA,SAASC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAa5C,OAAO,SAAAC,qBAAAC,SAAA,EAAAC,YAAA;EAAA,MAAAC,CAAA,GAAAP,EAAA;EAIL,OAAAQ,UAAA,EAAAC,aAAA,IAAoCN,QAAA,CAAYE,SAAA;EAChD,MAAAK,gBAAA,GAAyBR,MAAA,KAAO;EAAA,IAAAS,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAL,CAAA,QAAAF,SAAA;IAEtBM,EAAA,GAAAA,CAAA;MAAA,IACJD,gBAAA,CAAAG,OAAA;QACFH,gBAAA,CAAAG,OAAA;QAAA;MAAA;MAIFJ,aAAA,CAAcJ,SAAA;IAAA;IACbO,EAAA,IAACP,SAAA;IAAUE,CAAA,MAAAF,SAAA;IAAAE,CAAA,MAAAI,EAAA;IAAAJ,CAAA,MAAAK,EAAA;EAAA;IAAAD,EAAA,GAAAJ,CAAA;IAAAK,EAAA,GAAAL,CAAA;EAAA;EAPdN,SAAA,CAAUU,EAOV,EAAGC,EAAW;EAEN,MAAAE,EAAA,GAAAN,UAAA,IAAcF,YAAA;EAAA,IAAAS,EAAA;EAAA,IAAAR,CAAA,QAAAO,EAAA;IAAfC,EAAA,IAACD,EAAc,EAAcL,aAAA;IAAcF,CAAA,MAAAO,EAAA;IAAAP,CAAA,MAAAQ,EAAA;EAAA;IAAAA,EAAA,GAAAR,CAAA;EAAA;EAAA,OAA3CQ,EAA2C;AAAA","ignoreList":[]}
|
|
@@ -25,13 +25,13 @@ type QueueTask = (fn: QueuedFunction, options?: QueuedTaskOptions) => void;
|
|
|
25
25
|
* 3. All remaining tasks will be discarded
|
|
26
26
|
* @returns {queueTask} A function used to queue a function.
|
|
27
27
|
* @example
|
|
28
|
-
* const { queueTask } =
|
|
28
|
+
* const { queueTask } = useQueue()
|
|
29
29
|
* queueTask(async () => {
|
|
30
30
|
* await fetch('https://api.example.com')
|
|
31
31
|
* })
|
|
32
32
|
*/
|
|
33
|
-
export declare function
|
|
33
|
+
export declare function useQueue(): {
|
|
34
34
|
queueTask: QueueTask;
|
|
35
35
|
};
|
|
36
36
|
export {};
|
|
37
|
-
//# sourceMappingURL=
|
|
37
|
+
//# sourceMappingURL=useQueue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useQueue.d.ts","sourceRoot":"","sources":["../../src/hooks/useQueue.ts"],"names":[],"mappings":"AAEA,KAAK,cAAc,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;AAEzC,KAAK,iBAAiB,GAAG;IACvB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,OAAO,GAAG,IAAI,CAAA;CACrC,CAAA;AAED,KAAK,SAAS,GAAG,CAAC,EAAE,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,iBAAiB,KAAK,IAAI,CAAA;AAE1E;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,QAAQ,IAAI;IAC1B,SAAS,EAAE,SAAS,CAAA;CACrB,CA8CA"}
|
|
@@ -10,12 +10,12 @@ import { useCallback, useRef } from 'react';
|
|
|
10
10
|
* 3. All remaining tasks will be discarded
|
|
11
11
|
* @returns {queueTask} A function used to queue a function.
|
|
12
12
|
* @example
|
|
13
|
-
* const { queueTask } =
|
|
13
|
+
* const { queueTask } = useQueue()
|
|
14
14
|
* queueTask(async () => {
|
|
15
15
|
* await fetch('https://api.example.com')
|
|
16
16
|
* })
|
|
17
17
|
*/
|
|
18
|
-
export function
|
|
18
|
+
export function useQueue() {
|
|
19
19
|
const queue = useRef([]);
|
|
20
20
|
const isProcessing = useRef(false);
|
|
21
21
|
const queueTask = useCallback((fn, options) => {
|
|
@@ -56,4 +56,4 @@ export function useQueues() {
|
|
|
56
56
|
queueTask
|
|
57
57
|
};
|
|
58
58
|
}
|
|
59
|
-
//# sourceMappingURL=
|
|
59
|
+
//# sourceMappingURL=useQueue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useQueue.js","names":["useCallback","useRef","useQueue","queue","isProcessing","queueTask","fn","options","current","push","processQueue","beforeProcess","shouldContinue","length","latestTask","pop","err","console","error","afterProcess"],"sources":["../../src/hooks/useQueue.ts"],"sourcesContent":["import { useCallback, useRef } from 'react'\n\ntype QueuedFunction = () => Promise<void>\n\ntype QueuedTaskOptions = {\n /**\n * A function that is called after the queue has processed a function\n * Used to perform side effects after processing the queue\n * @returns {void}\n */\n afterProcess?: () => void\n /**\n * A function that can be used to prevent the queue from processing under certain conditions\n * Can also be used to perform side effects before processing the queue\n * @returns {boolean} If `false`, the queue will not process\n */\n beforeProcess?: () => boolean | void\n}\n\ntype QueueTask = (fn: QueuedFunction, options?: QueuedTaskOptions) => void\n\n/**\n * A React hook that allows you to queue up functions to be executed in order.\n * This is useful when you need to ensure long running networks requests are processed sequentially.\n * Builds up a \"queue\" of functions to be executed in order, only ever processing the last function in the queue.\n * This ensures that a long queue of tasks doesn't cause a backlog of tasks to be processed.\n * E.g. if you queue a task and it begins running, then you queue 9 more tasks:\n * 1. The currently task will finish\n * 2. The next task in the queue will run\n * 3. All remaining tasks will be discarded\n * @returns {queueTask} A function used to queue a function.\n * @example\n * const { queueTask } = useQueue()\n * queueTask(async () => {\n * await fetch('https://api.example.com')\n * })\n */\nexport function useQueue(): {\n queueTask: QueueTask\n} {\n const queue = useRef<QueuedFunction[]>([])\n\n const isProcessing = useRef(false)\n\n const queueTask = useCallback<QueueTask>((fn, options) => {\n queue.current.push(fn)\n\n async function processQueue() {\n if (isProcessing.current) {\n return\n }\n\n // Allow the consumer to prevent the queue from processing under certain conditions\n if (typeof options?.beforeProcess === 'function') {\n const shouldContinue = options.beforeProcess()\n\n if (shouldContinue === false) {\n return\n }\n }\n\n while (queue.current.length > 0) {\n const latestTask = queue.current.pop() // Only process the last task in the queue\n queue.current = [] // Discard all other tasks\n\n isProcessing.current = true\n\n try {\n await latestTask()\n } catch (err) {\n console.error('Error in queued function:', err) // eslint-disable-line no-console\n } finally {\n isProcessing.current = false\n\n if (typeof options?.afterProcess === 'function') {\n options.afterProcess()\n }\n }\n }\n }\n\n void processQueue()\n }, [])\n\n return { queueTask }\n}\n"],"mappings":"AAAA,SAASA,WAAW,EAAEC,MAAM,QAAQ;AAqBpC;;;;;;;;;;;;;;;;AAgBA,OAAO,SAASC,SAAA;EAGd,MAAMC,KAAA,GAAQF,MAAA,CAAyB,EAAE;EAEzC,MAAMG,YAAA,GAAeH,MAAA,CAAO;EAE5B,MAAMI,SAAA,GAAYL,WAAA,CAAuB,CAACM,EAAA,EAAIC,OAAA;IAC5CJ,KAAA,CAAMK,OAAO,CAACC,IAAI,CAACH,EAAA;IAEnB,eAAeI,aAAA;MACb,IAAIN,YAAA,CAAaI,OAAO,EAAE;QACxB;MACF;MAEA;MACA,IAAI,OAAOD,OAAA,EAASI,aAAA,KAAkB,YAAY;QAChD,MAAMC,cAAA,GAAiBL,OAAA,CAAQI,aAAa;QAE5C,IAAIC,cAAA,KAAmB,OAAO;UAC5B;QACF;MACF;MAEA,OAAOT,KAAA,CAAMK,OAAO,CAACK,MAAM,GAAG,GAAG;QAC/B,MAAMC,UAAA,GAAaX,KAAA,CAAMK,OAAO,CAACO,GAAG,GAAG;QAAA;QACvCZ,KAAA,CAAMK,OAAO,GAAG,EAAE,CAAC;QAAA;QAEnBJ,YAAA,CAAaI,OAAO,GAAG;QAEvB,IAAI;UACF,MAAMM,UAAA;QACR,EAAE,OAAOE,GAAA,EAAK;UACZC,OAAA,CAAQC,KAAK,CAAC,6BAA6BF,GAAA,EAAK;UAAA;QAClD,UAAU;UACRZ,YAAA,CAAaI,OAAO,GAAG;UAEvB,IAAI,OAAOD,OAAA,EAASY,YAAA,KAAiB,YAAY;YAC/CZ,OAAA,CAAQY,YAAY;UACtB;QACF;MACF;IACF;IAEA,KAAKT,YAAA;EACP,GAAG,EAAE;EAEL,OAAO;IAAEL;EAAU;AACrB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleLivePreview.d.ts","sourceRoot":"","sources":["../../src/utilities/handleLivePreview.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACT,cAAc,EACd,eAAe,EAChB,MAAM,SAAS,CAAA;AAEhB,eAAO,MAAM,oBAAoB,sEAK9B;IACD,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,MAAM,EAAE,eAAe,CAAA;IACvB,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,oBAAoB,EAAE,OAAO,CAAA;CAC9B;;;;;;;;
|
|
1
|
+
{"version":3,"file":"handleLivePreview.d.ts","sourceRoot":"","sources":["../../src/utilities/handleLivePreview.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACT,cAAc,EACd,eAAe,EAChB,MAAM,SAAS,CAAA;AAEhB,eAAO,MAAM,oBAAoB,sEAK9B;IACD,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,MAAM,EAAE,eAAe,CAAA;IACvB,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,oBAAoB,EAAE,OAAO,CAAA;CAC9B;;;;;;;;wBAsHs9D,CAAC;;oBAAoF,CAAC;;;;;;;CAlH3iE,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,gDAI9B;IACD,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,MAAM,EAAE,eAAe,CAAA;IACvB,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B,KAAG,OAcH,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,kEAO3B;IACD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,GAAG,EAAE,cAAc,CAAA;CACpB,KAAG,OAAO,CAAC;IACV,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,cAAc,CAAC,EAAE,kBAAkB,CAAA;CACpC,CAqDA,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payloadcms/ui",
|
|
3
|
-
"version": "3.62.0-
|
|
3
|
+
"version": "3.62.0-internal.0e1f2fb",
|
|
4
4
|
"homepage": "https://payloadcms.com",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -136,7 +136,7 @@
|
|
|
136
136
|
"ts-essentials": "10.0.3",
|
|
137
137
|
"use-context-selector": "2.0.0",
|
|
138
138
|
"uuid": "10.0.0",
|
|
139
|
-
"@payloadcms/translations": "3.62.0-
|
|
139
|
+
"@payloadcms/translations": "3.62.0-internal.0e1f2fb"
|
|
140
140
|
},
|
|
141
141
|
"devDependencies": {
|
|
142
142
|
"@babel/cli": "7.27.2",
|
|
@@ -151,14 +151,14 @@
|
|
|
151
151
|
"babel-plugin-react-compiler": "19.1.0-rc.3",
|
|
152
152
|
"esbuild": "0.25.5",
|
|
153
153
|
"esbuild-sass-plugin": "3.3.1",
|
|
154
|
-
"
|
|
155
|
-
"
|
|
154
|
+
"@payloadcms/eslint-config": "3.28.0",
|
|
155
|
+
"payload": "3.62.0-internal.0e1f2fb"
|
|
156
156
|
},
|
|
157
157
|
"peerDependencies": {
|
|
158
158
|
"next": "^15.2.3",
|
|
159
159
|
"react": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020",
|
|
160
160
|
"react-dom": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020",
|
|
161
|
-
"payload": "3.62.0-
|
|
161
|
+
"payload": "3.62.0-internal.0e1f2fb"
|
|
162
162
|
},
|
|
163
163
|
"engines": {
|
|
164
164
|
"node": "^18.20.2 || >=20.9.0"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useQueues.d.ts","sourceRoot":"","sources":["../../src/hooks/useQueues.ts"],"names":[],"mappings":"AAEA,KAAK,cAAc,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;AAEzC,KAAK,iBAAiB,GAAG;IACvB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,OAAO,GAAG,IAAI,CAAA;CACrC,CAAA;AAED,KAAK,SAAS,GAAG,CAAC,EAAE,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,iBAAiB,KAAK,IAAI,CAAA;AAE1E;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,IAAI;IAC3B,SAAS,EAAE,SAAS,CAAA;CACrB,CA8CA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useQueues.js","names":["useCallback","useRef","useQueues","queue","isProcessing","queueTask","fn","options","current","push","processQueue","beforeProcess","shouldContinue","length","latestTask","pop","err","console","error","afterProcess"],"sources":["../../src/hooks/useQueues.ts"],"sourcesContent":["import { useCallback, useRef } from 'react'\n\ntype QueuedFunction = () => Promise<void>\n\ntype QueuedTaskOptions = {\n /**\n * A function that is called after the queue has processed a function\n * Used to perform side effects after processing the queue\n * @returns {void}\n */\n afterProcess?: () => void\n /**\n * A function that can be used to prevent the queue from processing under certain conditions\n * Can also be used to perform side effects before processing the queue\n * @returns {boolean} If `false`, the queue will not process\n */\n beforeProcess?: () => boolean | void\n}\n\ntype QueueTask = (fn: QueuedFunction, options?: QueuedTaskOptions) => void\n\n/**\n * A React hook that allows you to queue up functions to be executed in order.\n * This is useful when you need to ensure long running networks requests are processed sequentially.\n * Builds up a \"queue\" of functions to be executed in order, only ever processing the last function in the queue.\n * This ensures that a long queue of tasks doesn't cause a backlog of tasks to be processed.\n * E.g. if you queue a task and it begins running, then you queue 9 more tasks:\n * 1. The currently task will finish\n * 2. The next task in the queue will run\n * 3. All remaining tasks will be discarded\n * @returns {queueTask} A function used to queue a function.\n * @example\n * const { queueTask } = useQueues()\n * queueTask(async () => {\n * await fetch('https://api.example.com')\n * })\n */\nexport function useQueues(): {\n queueTask: QueueTask\n} {\n const queue = useRef<QueuedFunction[]>([])\n\n const isProcessing = useRef(false)\n\n const queueTask = useCallback<QueueTask>((fn, options) => {\n queue.current.push(fn)\n\n async function processQueue() {\n if (isProcessing.current) {\n return\n }\n\n // Allow the consumer to prevent the queue from processing under certain conditions\n if (typeof options?.beforeProcess === 'function') {\n const shouldContinue = options.beforeProcess()\n\n if (shouldContinue === false) {\n return\n }\n }\n\n while (queue.current.length > 0) {\n const latestTask = queue.current.pop() // Only process the last task in the queue\n queue.current = [] // Discard all other tasks\n\n isProcessing.current = true\n\n try {\n await latestTask()\n } catch (err) {\n console.error('Error in queued function:', err) // eslint-disable-line no-console\n } finally {\n isProcessing.current = false\n\n if (typeof options?.afterProcess === 'function') {\n options.afterProcess()\n }\n }\n }\n }\n\n void processQueue()\n }, [])\n\n return { queueTask }\n}\n"],"mappings":"AAAA,SAASA,WAAW,EAAEC,MAAM,QAAQ;AAqBpC;;;;;;;;;;;;;;;;AAgBA,OAAO,SAASC,UAAA;EAGd,MAAMC,KAAA,GAAQF,MAAA,CAAyB,EAAE;EAEzC,MAAMG,YAAA,GAAeH,MAAA,CAAO;EAE5B,MAAMI,SAAA,GAAYL,WAAA,CAAuB,CAACM,EAAA,EAAIC,OAAA;IAC5CJ,KAAA,CAAMK,OAAO,CAACC,IAAI,CAACH,EAAA;IAEnB,eAAeI,aAAA;MACb,IAAIN,YAAA,CAAaI,OAAO,EAAE;QACxB;MACF;MAEA;MACA,IAAI,OAAOD,OAAA,EAASI,aAAA,KAAkB,YAAY;QAChD,MAAMC,cAAA,GAAiBL,OAAA,CAAQI,aAAa;QAE5C,IAAIC,cAAA,KAAmB,OAAO;UAC5B;QACF;MACF;MAEA,OAAOT,KAAA,CAAMK,OAAO,CAACK,MAAM,GAAG,GAAG;QAC/B,MAAMC,UAAA,GAAaX,KAAA,CAAMK,OAAO,CAACO,GAAG,GAAG;QAAA;QACvCZ,KAAA,CAAMK,OAAO,GAAG,EAAE,CAAC;QAAA;QAEnBJ,YAAA,CAAaI,OAAO,GAAG;QAEvB,IAAI;UACF,MAAMM,UAAA;QACR,EAAE,OAAOE,GAAA,EAAK;UACZC,OAAA,CAAQC,KAAK,CAAC,6BAA6BF,GAAA,EAAK;UAAA;QAClD,UAAU;UACRZ,YAAA,CAAaI,OAAO,GAAG;UAEvB,IAAI,OAAOD,OAAA,EAASY,YAAA,KAAiB,YAAY;YAC/CZ,OAAA,CAAQY,YAAY;UACtB;QACF;MACF;IACF;IAEA,KAAKT,YAAA;EACP,GAAG,EAAE;EAEL,OAAO;IAAEL;EAAU;AACrB","ignoreList":[]}
|