@payloadcms/ui 3.4.0 → 3.4.1-canary.2a8fa30

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.
Files changed (47) hide show
  1. package/dist/elements/CodeEditor/CodeEditor.js +39 -32
  2. package/dist/elements/CodeEditor/CodeEditor.js.map +1 -1
  3. package/dist/elements/CodeEditor/types.d.ts +4 -0
  4. package/dist/elements/CodeEditor/types.d.ts.map +1 -1
  5. package/dist/elements/CodeEditor/types.js.map +1 -1
  6. package/dist/elements/PublishButton/index.js +15 -18
  7. package/dist/elements/PublishButton/index.js.map +1 -1
  8. package/dist/exports/client/{CodeEditor-RZ32B2QF.js → CodeEditor-QIIK6FKF.js} +2 -2
  9. package/dist/exports/client/{chunk-CKHKQPOO.js → chunk-MFQ5YTBK.js} +6 -6
  10. package/dist/exports/client/chunk-MFQ5YTBK.js.map +8 -0
  11. package/dist/exports/client/index.d.ts +4 -0
  12. package/dist/exports/client/index.d.ts.map +1 -1
  13. package/dist/exports/client/index.js +10 -10
  14. package/dist/exports/client/index.js.map +4 -4
  15. package/dist/exports/shared/index.js +2 -2
  16. package/dist/exports/shared/index.js.map +3 -3
  17. package/dist/fields/Group/index.d.ts.map +1 -1
  18. package/dist/fields/Group/index.js +2 -1
  19. package/dist/fields/Group/index.js.map +1 -1
  20. package/dist/fields/Relationship/index.d.ts.map +1 -1
  21. package/dist/fields/Relationship/index.js +1 -1
  22. package/dist/fields/Relationship/index.js.map +1 -1
  23. package/dist/fields/Select/Input.d.ts +1 -0
  24. package/dist/fields/Select/Input.d.ts.map +1 -1
  25. package/dist/fields/Select/Input.js +41 -38
  26. package/dist/fields/Select/Input.js.map +1 -1
  27. package/dist/fields/Tabs/index.d.ts +15 -0
  28. package/dist/fields/Tabs/index.d.ts.map +1 -1
  29. package/dist/fields/Tabs/index.js +2 -2
  30. package/dist/fields/Tabs/index.js.map +1 -1
  31. package/dist/forms/Form/index.d.ts.map +1 -1
  32. package/dist/forms/Form/index.js +2 -1
  33. package/dist/forms/Form/index.js.map +1 -1
  34. package/dist/providers/Locale/index.d.ts +15 -1
  35. package/dist/providers/Locale/index.d.ts.map +1 -1
  36. package/dist/providers/Locale/index.js +50 -119
  37. package/dist/providers/Locale/index.js.map +1 -1
  38. package/dist/providers/SearchParams/index.d.ts.map +1 -1
  39. package/dist/providers/SearchParams/index.js +25 -68
  40. package/dist/providers/SearchParams/index.js.map +1 -1
  41. package/dist/styles.css +1 -1
  42. package/dist/utilities/groupNavItems.d.ts.map +1 -1
  43. package/dist/utilities/groupNavItems.js +6 -6
  44. package/dist/utilities/groupNavItems.js.map +1 -1
  45. package/package.json +5 -5
  46. package/dist/exports/client/chunk-CKHKQPOO.js.map +0 -8
  47. /package/dist/exports/client/{CodeEditor-RZ32B2QF.js.map → CodeEditor-QIIK6FKF.js.map} +0 -0
@@ -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","useIgnoredEffectDebounced","useThrottledEffect","useAuth","useConfig","useDocumentInfo","useLocale","useOperation","useServerFunctions","useTranslation","abortAndIgnore","requests","FormContext","FormFieldsContext","FormWatchContext","InitializingContext","ModifiedContext","ProcessingContext","SubmittedContext","errorMessages","fieldReducer","initContextState","mergeServerFormState","baseClass","Form","props","id","collectionSlug","docPermissions","getDocPreferences","globalSlug","action","beforeSubmit","children","className","disabled","disabledFromProps","disableSuccessStatus","disableValidationOnSubmit","handleResponse","initialState","isInitializing","initializingFromProps","onChange","onSubmit","onSuccess","redirect","submitted","submittedFromProps","uuid","waitForAutocomplete","method","undefined","router","code","locale","i18n","t","refreshCookie","user","operation","getFormState","config","setDisabled","isMounted","setIsMounted","modified","setModified","initializing","setInitializing","processing","setProcessing","setSubmitted","formRef","contextRef","resetFormStateAbortControllerRef","fieldsReducer","fields","dispatchFields","current","validateForm","validatedFieldState","isValid","dataFromContext","getData","data","validationPromises","Object","entries","map","path","field","validatedField","passesCondition","validationResult","valid","validate","valueToValidate","value","rows","Array","isArray","preferences","req","payload","siblingData","errorMessage","Promise","all","type","state","submit","options","e","actionArg","methodToUse","overrides","skipValidation","preventDefault","errorToast","successToast","promise","resolve","reject","hasFormSubmitAction","success","error","loading","stopPropagation","revalidatedFormState","serializableFields","reduce","priorOnChange","beforeSubmitFn","result","formState","every","key","formData","createFormData","res","toLowerCase","body","headers","language","contentType","get","isJSON","indexOf","json","status","newFormState","newState","mergedFormState","optimize","push","message","errors","fieldErrors","nonFieldErrors","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","forEach","dataError","statusText","console","getFields","getField","file","dataWithOverrides","dataToSerialize","_payload","JSON","stringify","indices","nullsAsUndefineds","reset","controller","AbortController","docPreferences","renderAllFields","schemaPath","signal","replaceState","addFieldRow","blockType","rowIndex","rowIndexArg","subFieldState","newRows","length","removeFieldRow","replaceFieldRow","currentRows","classes","filter","Boolean","join","executeOnChange","onChangeFn","changed","delay","_jsx","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 Context as FormContextType,\n FormProps,\n GetDataByPath,\n SubmitOptions,\n} from './types.js'\n\nimport { useIgnoredEffectDebounced } from '../../hooks/useIgnoredEffect.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 { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { abortAndIgnore } from '../../utilities/abortAndIgnore.js'\nimport { requests } from '../../utilities/api.js'\nimport {\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n InitializingContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n} from './context.js'\nimport { errorMessages } from './errorMessages.js'\nimport { fieldReducer } from './fieldReducer.js'\nimport { initContextState } from './initContextState.js'\nimport { mergeServerFormState } from './mergeServerFormState.js'\n\nconst baseClass = 'form'\n\nexport const Form: React.FC<FormProps> = (props) => {\n const { id, collectionSlug, docPermissions, getDocPreferences, globalSlug } = useDocumentInfo()\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 handleResponse,\n initialState, // fully formed initial field state\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 { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n const { refreshCookie, user } = useAuth()\n const operation = useOperation()\n\n const { getFormState } = useServerFunctions()\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 const [initializing, setInitializing] = useState(initializingFromProps)\n const [processing, setProcessing] = useState(false)\n const [submitted, setSubmitted] = useState(false)\n const formRef = useRef<HTMLFormElement>(null)\n const contextRef = useRef({} as FormContextType)\n const resetFormStateAbortControllerRef = useRef<AbortController>(null)\n\n const fieldsReducer = useReducer(fieldReducer, {}, () => initialState)\n\n /**\n * `fields` is the current, up-to-date state/data of all fields in the form. It can be modified by using dispatchFields,\n * which calls the fieldReducer, which then updates the state.\n */\n const [fields, dispatchFields] = fieldsReducer\n\n contextRef.current.fields = fields\n\n const validateForm = useCallback(async () => {\n const validatedFieldState = {}\n let isValid = true\n\n const dataFromContext = contextRef.current.getData()\n const data = dataFromContext\n\n const validationPromises = Object.entries(contextRef.current.fields).map(\n async ([path, field]) => {\n const validatedField = field\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 data,\n operation,\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 return isValid\n }, [collectionSlug, config, dispatchFields, id, operation, t, user])\n\n const submit = useCallback(\n async (options: SubmitOptions = {}, e): Promise<void> => {\n const {\n action: actionArg = action,\n method: methodToUse = method,\n overrides = {},\n skipValidation,\n } = options\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 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 || disableSuccessStatus || !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 setProcessing(true)\n setDisabled(true)\n\n if (waitForAutocomplete) {\n await wait(100)\n }\n\n // Execute server side validations\n if (Array.isArray(beforeSubmit)) {\n let revalidatedFormState: FormState\n const serializableFields = deepCopyObjectSimpleWithoutReactComponents(\n contextRef.current.fields,\n )\n\n await beforeSubmit.reduce(async (priorOnChange, beforeSubmitFn) => {\n await priorOnChange\n\n const result = await beforeSubmitFn({\n formState: serializableFields,\n })\n\n revalidatedFormState = result\n }, Promise.resolve())\n\n const isValid = Object.entries(revalidatedFormState).every(([, field]) => field.valid)\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 // 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 // If submit handler comes through via props, run that\n if (onSubmit) {\n const serializableFields = deepCopyObjectSimpleWithoutReactComponents(\n contextRef.current.fields,\n )\n const data = reduceFieldsToValues(serializableFields, true)\n\n if (overrides) {\n for (const [key, value] of Object.entries(overrides)) {\n data[key] = value\n }\n }\n\n onSubmit(serializableFields, 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 = contextRef.current.createFormData(overrides)\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 if (res.status < 400) {\n if (typeof onSuccess === 'function') {\n const newFormState = await onSuccess(json)\n if (newFormState) {\n const { newState: mergedFormState } = mergeServerFormState(\n contextRef.current.fields || {},\n newFormState,\n )\n\n dispatchFields({\n type: 'REPLACE_STATE',\n optimize: false,\n state: mergedFormState,\n })\n }\n }\n setSubmitted(false)\n setProcessing(false)\n\n if (redirect) {\n router.push(redirect)\n } else if (!disableSuccessStatus) {\n successToast(json.message || t('general:submissionSuccessful'))\n }\n } else {\n setProcessing(false)\n setSubmitted(true)\n\n contextRef.current = { ...contextRef.current } // triggers rerender of all components that subscribe to form\n if (json.message) {\n errorToast(json.message)\n\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 dispatchFields({\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n })\n\n nonFieldErrors.forEach((err) => {\n errorToast(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 } 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 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const createFormData = useCallback((overrides: any = {}) => {\n const data = reduceFieldsToValues(contextRef.current.fields, true)\n\n const file = data?.file\n\n if (file) {\n delete data.file\n }\n\n const dataWithOverrides = {\n ...data,\n ...overrides,\n }\n\n const dataToSerialize = {\n _payload: JSON.stringify(dataWithOverrides),\n file,\n }\n\n // nullAsUndefineds is important to allow uploads and relationship fields to clear themselves\n const formData = serialize(dataToSerialize, { indices: true, nullsAsUndefineds: false })\n\n return formData\n }, [])\n\n const reset = useCallback(\n async (data: unknown) => {\n abortAndIgnore(resetFormStateAbortControllerRef.current)\n\n const controller = new AbortController()\n resetFormStateAbortControllerRef.current = controller\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 operation,\n renderAllFields: true,\n schemaPath: collectionSlug ? collectionSlug : globalSlug,\n signal: controller.signal,\n })\n\n contextRef.current = { ...initContextState } as FormContextType\n setModified(false)\n dispatchFields({ type: 'REPLACE_STATE', state: newState })\n },\n [\n collectionSlug,\n dispatchFields,\n globalSlug,\n id,\n operation,\n getFormState,\n docPermissions,\n getDocPreferences,\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 that sets requiresRender: true and 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 removeFieldRow: FormContextType['removeFieldRow'] = useCallback(\n ({ path, rowIndex }) => {\n dispatchFields({ type: 'REMOVE_ROW', path, rowIndex })\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 return () => {\n abortAndIgnore(resetFormStateAbortControllerRef.current)\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.setSubmitted = setSubmitted\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.replaceFieldRow = replaceFieldRow\n contextRef.current.uuid = uuid\n contextRef.current.initializing = initializing\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({ type: 'REPLACE_STATE', optimize: false, state: initialState })\n }\n }, [initialState, dispatchFields])\n\n useThrottledEffect(\n () => {\n refreshCookie()\n },\n 15000,\n [fields],\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 useIgnoredEffectDebounced(\n () => {\n const executeOnChange = async () => {\n if (Array.isArray(onChange)) {\n let revalidatedFormState: FormState = contextRef.current.fields\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 revalidatedFormState = await onChangeFn({\n formState: deepCopyObjectSimpleWithoutReactComponents(contextRef.current.fields),\n })\n }\n\n if (!revalidatedFormState) {\n return\n }\n\n const { changed, newState } = mergeServerFormState(\n contextRef.current.fields || {},\n revalidatedFormState,\n )\n\n if (changed) {\n dispatchFields({\n type: 'REPLACE_STATE',\n optimize: false,\n state: newState,\n })\n }\n }\n }\n\n if (modified) {\n void executeOnChange()\n }\n },\n /*\n Make sure we trigger this whenever modified changes (not just when `fields` changes),\n otherwise we will miss merging server form state for the first form update/onChange.\n\n Here's why:\n `fields` updates before `modified`, because setModified is in a setTimeout.\n So on the first change, modified is false, so we don't trigger the effect even though we should.\n **/\n [contextRef.current.fields, modified],\n [dispatchFields, onChange],\n {\n delay: 250,\n },\n )\n\n return (\n <form\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 <FormContext.Provider value={contextRef.current}>\n <FormWatchContext.Provider\n value={{\n fields,\n ...contextRef.current,\n }}\n >\n <SubmittedContext.Provider value={submitted}>\n <InitializingContext.Provider value={!isMounted || (isMounted && initializing)}>\n <ProcessingContext.Provider value={processing}>\n <ModifiedContext.Provider value={modified}>\n <FormFieldsContext.Provider value={fieldsReducer}>\n {children}\n </FormFieldsContext.Provider>\n </ModifiedContext.Provider>\n </ProcessingContext.Provider>\n </InitializingContext.Provider>\n </SubmittedContext.Provider>\n </FormWatchContext.Provider>\n </FormContext.Provider>\n </form>\n )\n}\n\nexport {\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n useAllFormFields,\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","useIgnoredEffectDebounced","useThrottledEffect","useAuth","useConfig","useDocumentInfo","useLocale","useOperation","useServerFunctions","useTranslation","abortAndIgnore","requests","FormContext","FormFieldsContext","FormWatchContext","InitializingContext","ModifiedContext","ProcessingContext","SubmittedContext","errorMessages","fieldReducer","initContextState","mergeServerFormState","baseClass","Form","props","id","collectionSlug","docPermissions","getDocPreferences","globalSlug","action","beforeSubmit","children","className","disabled","disabledFromProps","disableSuccessStatus","disableValidationOnSubmit","handleResponse","initialState","isInitializing","initializingFromProps","onChange","onSubmit","onSuccess","redirect","submitted","submittedFromProps","uuid","waitForAutocomplete","method","undefined","router","code","locale","i18n","t","refreshCookie","user","operation","getFormState","config","setDisabled","isMounted","setIsMounted","modified","setModified","initializing","setInitializing","processing","setProcessing","setSubmitted","formRef","contextRef","resetFormStateAbortControllerRef","fieldsReducer","fields","dispatchFields","current","validateForm","validatedFieldState","isValid","dataFromContext","getData","data","validationPromises","Object","entries","map","path","field","validatedField","passesCondition","validationResult","valid","validate","valueToValidate","value","rows","Array","isArray","preferences","req","payload","siblingData","errorMessage","Promise","all","type","state","submit","options","e","actionArg","methodToUse","overrides","skipValidation","preventDefault","errorToast","successToast","promise","resolve","reject","hasFormSubmitAction","success","error","loading","stopPropagation","revalidatedFormState","serializableFields","reduce","priorOnChange","beforeSubmitFn","result","formState","every","key","formData","createFormData","res","toLowerCase","body","headers","language","contentType","get","isJSON","indexOf","json","status","newFormState","newState","mergedFormState","optimize","push","message","errors","fieldErrors","nonFieldErrors","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","forEach","dataError","statusText","console","getFields","getField","file","dataWithOverrides","dataToSerialize","_payload","JSON","stringify","indices","nullsAsUndefineds","reset","controller","AbortController","docPreferences","renderAllFields","schemaPath","signal","replaceState","addFieldRow","blockType","rowIndex","rowIndexArg","subFieldState","newRows","length","removeFieldRow","replaceFieldRow","currentRows","classes","filter","Boolean","join","executeOnChange","onChangeFn","changed","delay","_jsx","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 Context as FormContextType,\n FormProps,\n GetDataByPath,\n SubmitOptions,\n} from './types.js'\n\nimport { useIgnoredEffectDebounced } from '../../hooks/useIgnoredEffect.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 { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { abortAndIgnore } from '../../utilities/abortAndIgnore.js'\nimport { requests } from '../../utilities/api.js'\nimport {\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n InitializingContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n} from './context.js'\nimport { errorMessages } from './errorMessages.js'\nimport { fieldReducer } from './fieldReducer.js'\nimport { initContextState } from './initContextState.js'\nimport { mergeServerFormState } from './mergeServerFormState.js'\n\nconst baseClass = 'form'\n\nexport const Form: React.FC<FormProps> = (props) => {\n const { id, collectionSlug, docPermissions, getDocPreferences, globalSlug } = useDocumentInfo()\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 handleResponse,\n initialState, // fully formed initial field state\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 { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n const { refreshCookie, user } = useAuth()\n const operation = useOperation()\n\n const { getFormState } = useServerFunctions()\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 const [initializing, setInitializing] = useState(initializingFromProps)\n const [processing, setProcessing] = useState(false)\n const [submitted, setSubmitted] = useState(false)\n const formRef = useRef<HTMLFormElement>(null)\n const contextRef = useRef({} as FormContextType)\n const resetFormStateAbortControllerRef = useRef<AbortController>(null)\n\n const fieldsReducer = useReducer(fieldReducer, {}, () => initialState)\n\n /**\n * `fields` is the current, up-to-date state/data of all fields in the form. It can be modified by using dispatchFields,\n * which calls the fieldReducer, which then updates the state.\n */\n const [fields, dispatchFields] = fieldsReducer\n\n contextRef.current.fields = fields\n\n const validateForm = useCallback(async () => {\n const validatedFieldState = {}\n let isValid = true\n\n const dataFromContext = contextRef.current.getData()\n const data = dataFromContext\n\n const validationPromises = Object.entries(contextRef.current.fields).map(\n async ([path, field]) => {\n const validatedField = field\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 data,\n operation,\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 return isValid\n }, [collectionSlug, config, dispatchFields, id, operation, t, user])\n\n const submit = useCallback(\n async (options: SubmitOptions = {}, e): Promise<void> => {\n const {\n action: actionArg = action,\n method: methodToUse = method,\n overrides = {},\n skipValidation,\n } = options\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 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 || disableSuccessStatus || !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 setProcessing(true)\n setDisabled(true)\n\n if (waitForAutocomplete) {\n await wait(100)\n }\n\n // Execute server side validations\n if (Array.isArray(beforeSubmit)) {\n let revalidatedFormState: FormState\n const serializableFields = deepCopyObjectSimpleWithoutReactComponents(\n contextRef.current.fields,\n )\n\n await beforeSubmit.reduce(async (priorOnChange, beforeSubmitFn) => {\n await priorOnChange\n\n const result = await beforeSubmitFn({\n formState: serializableFields,\n })\n\n revalidatedFormState = result\n }, Promise.resolve())\n\n const isValid = Object.entries(revalidatedFormState).every(([, field]) => field.valid)\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 // 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 // If submit handler comes through via props, run that\n if (onSubmit) {\n const serializableFields = deepCopyObjectSimpleWithoutReactComponents(\n contextRef.current.fields,\n )\n const data = reduceFieldsToValues(serializableFields, true)\n\n if (overrides) {\n for (const [key, value] of Object.entries(overrides)) {\n data[key] = value\n }\n }\n\n onSubmit(serializableFields, 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 = contextRef.current.createFormData(overrides)\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 if (res.status < 400) {\n if (typeof onSuccess === 'function') {\n const newFormState = await onSuccess(json)\n if (newFormState) {\n const { newState: mergedFormState } = mergeServerFormState(\n contextRef.current.fields || {},\n newFormState,\n )\n\n dispatchFields({\n type: 'REPLACE_STATE',\n optimize: false,\n state: mergedFormState,\n })\n }\n }\n setSubmitted(false)\n setProcessing(false)\n\n if (redirect) {\n router.push(redirect)\n } else if (!disableSuccessStatus) {\n successToast(json.message || t('general:submissionSuccessful'))\n }\n } else {\n setProcessing(false)\n setSubmitted(true)\n\n contextRef.current = { ...contextRef.current } // triggers rerender of all components that subscribe to form\n if (json.message) {\n errorToast(json.message)\n\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 dispatchFields({\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n })\n\n nonFieldErrors.forEach((err) => {\n errorToast(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 } 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 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const createFormData = useCallback((overrides: any = {}) => {\n const data = reduceFieldsToValues(contextRef.current.fields, true)\n\n const file = data?.file\n\n if (file) {\n delete data.file\n }\n\n const dataWithOverrides = {\n ...data,\n ...overrides,\n }\n\n const dataToSerialize = {\n _payload: JSON.stringify(dataWithOverrides),\n file,\n }\n\n // nullAsUndefineds is important to allow uploads and relationship fields to clear themselves\n const formData = serialize(dataToSerialize, { indices: true, nullsAsUndefineds: false })\n\n return formData\n }, [])\n\n const reset = useCallback(\n async (data: unknown) => {\n abortAndIgnore(resetFormStateAbortControllerRef.current)\n\n const controller = new AbortController()\n resetFormStateAbortControllerRef.current = controller\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 })\n\n contextRef.current = { ...initContextState } as FormContextType\n setModified(false)\n dispatchFields({ type: 'REPLACE_STATE', state: newState })\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 that sets requiresRender: true and 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 removeFieldRow: FormContextType['removeFieldRow'] = useCallback(\n ({ path, rowIndex }) => {\n dispatchFields({ type: 'REMOVE_ROW', path, rowIndex })\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 return () => {\n abortAndIgnore(resetFormStateAbortControllerRef.current)\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.setSubmitted = setSubmitted\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.replaceFieldRow = replaceFieldRow\n contextRef.current.uuid = uuid\n contextRef.current.initializing = initializing\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({ type: 'REPLACE_STATE', optimize: false, state: initialState })\n }\n }, [initialState, dispatchFields])\n\n useThrottledEffect(\n () => {\n refreshCookie()\n },\n 15000,\n [fields],\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 useIgnoredEffectDebounced(\n () => {\n const executeOnChange = async () => {\n if (Array.isArray(onChange)) {\n let revalidatedFormState: FormState = contextRef.current.fields\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 revalidatedFormState = await onChangeFn({\n formState: deepCopyObjectSimpleWithoutReactComponents(contextRef.current.fields),\n })\n }\n\n if (!revalidatedFormState) {\n return\n }\n\n const { changed, newState } = mergeServerFormState(\n contextRef.current.fields || {},\n revalidatedFormState,\n )\n\n if (changed) {\n dispatchFields({\n type: 'REPLACE_STATE',\n optimize: false,\n state: newState,\n })\n }\n }\n }\n\n if (modified) {\n void executeOnChange()\n }\n },\n /*\n Make sure we trigger this whenever modified changes (not just when `fields` changes),\n otherwise we will miss merging server form state for the first form update/onChange.\n\n Here's why:\n `fields` updates before `modified`, because setModified is in a setTimeout.\n So on the first change, modified is false, so we don't trigger the effect even though we should.\n **/\n [contextRef.current.fields, modified],\n [dispatchFields, onChange],\n {\n delay: 250,\n },\n )\n\n return (\n <form\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 <FormContext.Provider value={contextRef.current}>\n <FormWatchContext.Provider\n value={{\n fields,\n ...contextRef.current,\n }}\n >\n <SubmittedContext.Provider value={submitted}>\n <InitializingContext.Provider value={!isMounted || (isMounted && initializing)}>\n <ProcessingContext.Provider value={processing}>\n <ModifiedContext.Provider value={modified}>\n <FormFieldsContext.Provider value={fieldsReducer}>\n {children}\n </FormFieldsContext.Provider>\n </ModifiedContext.Provider>\n </ProcessingContext.Provider>\n </InitializingContext.Provider>\n </SubmittedContext.Provider>\n </FormWatchContext.Provider>\n </FormContext.Provider>\n </form>\n )\n}\n\nexport {\n FormContext,\n FormFieldsContext,\n FormWatchContext,\n ModifiedContext,\n ProcessingContext,\n SubmittedContext,\n useAllFormFields,\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":[]}
@@ -4,7 +4,21 @@ export declare const LocaleProvider: React.FC<{
4
4
  children?: React.ReactNode;
5
5
  }>;
6
6
  /**
7
- * A hook that returns the current locale object.
7
+ * @deprecated A hook that returns the current locale object.
8
+ *
9
+ * ---
10
+ *
11
+ * #### 🚨 V4 Breaking Change
12
+ * The `useLocale` return type now reflects `null | Locale` instead of `false | Locale`.
13
+ *
14
+ * **Old (V3):**
15
+ * ```ts
16
+ * const { code } = useLocale();
17
+ * ```
18
+ * **New (V4):**
19
+ * ```ts
20
+ * const locale = useLocale();
21
+ * ```
8
22
  */
9
23
  export declare const useLocale: () => Locale;
10
24
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Locale/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAGrC,OAAO,KAAyD,MAAM,OAAO,CAAA;AAS7E,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAyEnE,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,QAAO,MAAmC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Locale/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAGrC,OAAO,KAAyD,MAAM,OAAO,CAAA;AAS7E,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAkDnE,CAAA;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,SAAS,QAAO,MAAmC,CAAA"}
@@ -1,6 +1,5 @@
1
1
  'use client';
2
2
 
3
- import { c as _c } from "react/compiler-runtime";
4
3
  import { jsx as _jsx } from "react/jsx-runtime";
5
4
  import { useSearchParams } from 'next/navigation.js';
6
5
  import React, { createContext, useContext, useEffect, useState } from 'react';
@@ -9,138 +8,70 @@ import { useAuth } from '../Auth/index.js';
9
8
  import { useConfig } from '../Config/index.js';
10
9
  import { usePreferences } from '../Preferences/index.js';
11
10
  const LocaleContext = /*#__PURE__*/createContext({});
12
- export const LocaleProvider = t0 => {
13
- const $ = _c(28);
11
+ export const LocaleProvider = ({
12
+ children
13
+ }) => {
14
14
  const {
15
- children
16
- } = t0;
17
- const {
18
- config: t1
15
+ config: {
16
+ localization = false
17
+ }
19
18
  } = useConfig();
20
- const {
21
- localization: t2
22
- } = t1;
23
- const localization = t2 === undefined ? false : t2;
24
19
  const {
25
20
  user
26
21
  } = useAuth();
27
- const defaultLocale = localization && localization.defaultLocale ? localization.defaultLocale : "en";
28
- const searchParams = useSearchParams();
29
- let t3;
30
- if ($[0] !== searchParams) {
31
- t3 = searchParams.get("locale");
32
- $[0] = searchParams;
33
- $[1] = t3;
34
- } else {
35
- t3 = $[1];
36
- }
37
- const localeFromParams = t3;
38
- const [localeCode, setLocaleCode] = useState(localeFromParams || defaultLocale);
39
- let t4;
40
- if ($[2] !== localeCode || $[3] !== localization) {
41
- t4 = localization && findLocaleFromCode(localization, localeCode);
42
- $[2] = localeCode;
43
- $[3] = localization;
44
- $[4] = t4;
45
- } else {
46
- t4 = $[4];
47
- }
48
- const [locale, setLocale] = useState(t4);
22
+ const defaultLocale = localization && localization.defaultLocale ? localization.defaultLocale : 'en';
49
23
  const {
50
24
  getPreference,
51
25
  setPreference
52
26
  } = usePreferences();
53
- let t5;
54
- if ($[5] !== defaultLocale || $[6] !== localeCode || $[7] !== localization || $[8] !== setPreference || $[9] !== user) {
55
- t5 = async newLocale => {
56
- if (!localization) {
57
- return;
58
- }
59
- const localeToSet = localization.localeCodes.indexOf(newLocale) > -1 ? newLocale : defaultLocale;
60
- if (localeToSet !== localeCode) {
61
- setLocaleCode(localeToSet);
62
- setLocale(findLocaleFromCode(localization, localeToSet));
63
- ;
64
- try {
65
- if (user) {
66
- await setPreference("locale", localeToSet);
27
+ const searchParams = useSearchParams();
28
+ const localeFromParams = searchParams.get('locale');
29
+ const [localeCode, setLocaleCode] = useState(defaultLocale);
30
+ const locale = React.useMemo(() => {
31
+ if (!localization) {
32
+ // TODO: return null V4
33
+ return {};
34
+ }
35
+ return findLocaleFromCode(localization, localeFromParams || localeCode) || findLocaleFromCode(localization, defaultLocale);
36
+ }, [localeCode, localeFromParams, localization, defaultLocale]);
37
+ useEffect(() => {
38
+ async function setInitialLocale() {
39
+ if (localization && user) {
40
+ if (typeof localeFromParams !== 'string') {
41
+ try {
42
+ const localeToSet = await getPreference('locale');
43
+ setLocaleCode(localeToSet);
44
+ } catch (_) {
45
+ setLocaleCode(defaultLocale);
67
46
  }
68
- } catch (t6) {
69
- const error = t6;
70
- }
71
- }
72
- };
73
- $[5] = defaultLocale;
74
- $[6] = localeCode;
75
- $[7] = localization;
76
- $[8] = setPreference;
77
- $[9] = user;
78
- $[10] = t5;
79
- } else {
80
- t5 = $[10];
81
- }
82
- const switchLocale = t5;
83
- let t6;
84
- if ($[11] !== defaultLocale || $[12] !== getPreference || $[13] !== localeFromParams || $[14] !== switchLocale || $[15] !== user) {
85
- t6 = () => {
86
- const setInitialLocale = async function setInitialLocale() {
87
- let localeToSet_0 = defaultLocale;
88
- if (typeof localeFromParams === "string") {
89
- localeToSet_0 = localeFromParams;
90
47
  } else {
91
- if (user) {
92
- ;
93
- try {
94
- localeToSet_0 = await getPreference("locale");
95
- } catch (t7) {
96
- const error_0 = t7;
97
- }
98
- }
48
+ void setPreference('locale', findLocaleFromCode(localization, localeFromParams)?.code || defaultLocale);
99
49
  }
100
- await switchLocale(localeToSet_0);
101
- };
102
- setInitialLocale();
103
- };
104
- $[11] = defaultLocale;
105
- $[12] = getPreference;
106
- $[13] = localeFromParams;
107
- $[14] = switchLocale;
108
- $[15] = user;
109
- $[16] = t6;
110
- } else {
111
- t6 = $[16];
112
- }
113
- let t7;
114
- if ($[17] !== defaultLocale || $[18] !== getPreference || $[19] !== localeFromParams || $[20] !== localization || $[21] !== setPreference || $[22] !== switchLocale || $[23] !== user) {
115
- t7 = [defaultLocale, getPreference, localization, localeFromParams, setPreference, user, switchLocale];
116
- $[17] = defaultLocale;
117
- $[18] = getPreference;
118
- $[19] = localeFromParams;
119
- $[20] = localization;
120
- $[21] = setPreference;
121
- $[22] = switchLocale;
122
- $[23] = user;
123
- $[24] = t7;
124
- } else {
125
- t7 = $[24];
126
- }
127
- useEffect(t6, t7);
128
- let t8;
129
- if ($[25] !== children || $[26] !== locale) {
130
- t8 = _jsx(LocaleContext.Provider, {
131
- value: locale,
132
- children
133
- });
134
- $[25] = children;
135
- $[26] = locale;
136
- $[27] = t8;
137
- } else {
138
- t8 = $[27];
139
- }
140
- return t8;
50
+ }
51
+ }
52
+ void setInitialLocale();
53
+ }, [defaultLocale, getPreference, localization, localeFromParams, setPreference, user]);
54
+ return /*#__PURE__*/_jsx(LocaleContext.Provider, {
55
+ value: locale,
56
+ children: children
57
+ });
141
58
  };
142
59
  /**
143
- * A hook that returns the current locale object.
60
+ * @deprecated A hook that returns the current locale object.
61
+ *
62
+ * ---
63
+ *
64
+ * #### 🚨 V4 Breaking Change
65
+ * The `useLocale` return type now reflects `null | Locale` instead of `false | Locale`.
66
+ *
67
+ * **Old (V3):**
68
+ * ```ts
69
+ * const { code } = useLocale();
70
+ * ```
71
+ * **New (V4):**
72
+ * ```ts
73
+ * const locale = useLocale();
74
+ * ```
144
75
  */
145
76
  export const useLocale = () => {
146
77
  return useContext(LocaleContext);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useSearchParams","React","createContext","useContext","useEffect","useState","findLocaleFromCode","useAuth","useConfig","usePreferences","LocaleContext","LocaleProvider","t0","$","children","config","t1","localization","t2","undefined","user","defaultLocale","searchParams","t3","get","localeFromParams","localeCode","setLocaleCode","t4","locale","setLocale","getPreference","setPreference","t5","newLocale","localeToSet","localeCodes","indexOf","t6","error","switchLocale","setInitialLocale","localeToSet_0","t7","t8","_jsx","Provider","value","useLocale"],"sources":["../../../src/providers/Locale/index.tsx"],"sourcesContent":["'use client'\n\nimport type { Locale } from 'payload'\n\nimport { useSearchParams } from 'next/navigation.js'\nimport React, { createContext, useContext, useEffect, useState } from 'react'\n\nimport { findLocaleFromCode } from '../../utilities/findLocaleFromCode.js'\nimport { useAuth } from '../Auth/index.js'\nimport { useConfig } from '../Config/index.js'\nimport { usePreferences } from '../Preferences/index.js'\n\nconst LocaleContext = createContext({} as Locale)\n\nexport const LocaleProvider: React.FC<{ children?: React.ReactNode }> = ({ children }) => {\n const {\n config: { localization = false },\n } = useConfig()\n\n const { user } = useAuth()\n const defaultLocale =\n localization && localization.defaultLocale ? localization.defaultLocale : 'en'\n\n const searchParams = useSearchParams()\n const localeFromParams = searchParams.get('locale')\n\n const [localeCode, setLocaleCode] = useState<string>(localeFromParams || defaultLocale)\n\n const [locale, setLocale] = useState<Locale | null>(\n localization && findLocaleFromCode(localization, localeCode),\n )\n\n const { getPreference, setPreference } = usePreferences()\n\n const switchLocale = React.useCallback(\n async (newLocale: string) => {\n if (!localization) {\n return\n }\n\n const localeToSet =\n localization.localeCodes.indexOf(newLocale) > -1 ? newLocale : defaultLocale\n\n if (localeToSet !== localeCode) {\n setLocaleCode(localeToSet)\n setLocale(findLocaleFromCode(localization, localeToSet))\n try {\n if (user) {\n await setPreference('locale', localeToSet)\n }\n } catch (error) {\n // swallow error\n }\n }\n },\n [localization, setPreference, user, defaultLocale, localeCode],\n )\n\n useEffect(() => {\n async function setInitialLocale() {\n let localeToSet = defaultLocale\n\n if (typeof localeFromParams === 'string') {\n localeToSet = localeFromParams\n } else if (user) {\n try {\n localeToSet = await getPreference<string>('locale')\n } catch (error) {\n // swallow error\n }\n }\n\n await switchLocale(localeToSet)\n }\n\n void setInitialLocale()\n }, [\n defaultLocale,\n getPreference,\n localization,\n localeFromParams,\n setPreference,\n user,\n switchLocale,\n ])\n\n return <LocaleContext.Provider value={locale}>{children}</LocaleContext.Provider>\n}\n\n/**\n * A hook that returns the current locale object.\n */\nexport const useLocale = (): Locale => useContext(LocaleContext)\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAIA,SAASC,eAAe,QAAQ;AAChC,OAAOC,KAAA,IAASC,aAAa,EAAEC,UAAU,EAAEC,SAAS,EAAEC,QAAQ,QAAQ;AAEtE,SAASC,kBAAkB,QAAQ;AACnC,SAASC,OAAO,QAAQ;AACxB,SAASC,SAAS,QAAQ;AAC1B,SAASC,cAAc,QAAQ;AAE/B,MAAMC,aAAA,gBAAgBR,aAAA,CAAc,CAAC;AAErC,OAAO,MAAMS,cAAA,GAA2DC,EAAA;EAAA,MAAAC,CAAA,GAAAd,EAAA;EAAC;IAAAe;EAAA,IAAAF,EAAY;EACnF;IAAAG,MAAA,EAAAC;EAAA,IAEIR,SAAA;EADM;IAAAS,YAAA,EAAAC;EAAA,IAAAF,EAAwB;EAAtB,MAAAC,YAAA,GAAAC,EAAoB,KAAAC,SAAA,WAApBD,EAAoB;EAGhC;IAAAE;EAAA,IAAiBb,OAAA;EACjB,MAAAc,aAAA,GACEJ,YAAA,IAAgBA,YAAA,CAAAI,aAA0B,GAAGJ,YAAA,CAAAI,aAAA,GAA6B;EAE5E,MAAAC,YAAA,GAAqBtB,eAAA;EAAA,IAAAuB,EAAA;EAAA,IAAAV,CAAA,QAAAS,YAAA;IACIC,EAAA,GAAAD,YAAA,CAAAE,GAAA,CAAiB;IAAAX,CAAA,MAAAS,YAAA;IAAAT,CAAA,MAAAU,EAAA;EAAA;IAAAA,EAAA,GAAAV,CAAA;EAAA;EAA1C,MAAAY,gBAAA,GAAyBF,EAAiB;EAE1C,OAAAG,UAAA,EAAAC,aAAA,IAAoCtB,QAAA,CAAiBoB,gBAAA,IAAoBJ,aAAA;EAAA,IAAAO,EAAA;EAAA,IAAAf,CAAA,QAAAa,UAAA,IAAAb,CAAA,QAAAI,YAAA;IAGvEW,EAAA,GAAAX,YAAA,IAAgBX,kBAAA,CAAmBW,YAAA,EAAcS,UAAA;IAAAb,CAAA,MAAAa,UAAA;IAAAb,CAAA,MAAAI,YAAA;IAAAJ,CAAA,MAAAe,EAAA;EAAA;IAAAA,EAAA,GAAAf,CAAA;EAAA;EADnD,OAAAgB,MAAA,EAAAC,SAAA,IAA4BzB,QAAA,CAC1BuB,EAAiD;EAGnD;IAAAG,aAAA;IAAAC;EAAA,IAAyCvB,cAAA;EAAA,IAAAwB,EAAA;EAAA,IAAApB,CAAA,QAAAQ,aAAA,IAAAR,CAAA,QAAAa,UAAA,IAAAb,CAAA,QAAAI,YAAA,IAAAJ,CAAA,QAAAmB,aAAA,IAAAnB,CAAA,QAAAO,IAAA;IAGvCa,EAAA,SAAAC,SAAA;MAAA,KACOjB,YAAA;QAAA;MAAA;MAIL,MAAAkB,WAAA,GACElB,YAAA,CAAAmB,WAAA,CAAAC,OAAA,CAAiCH,SAAA,MAAc,GAAIA,SAAA,GAAYb,aAAA;MAAA,IAE7Dc,WAAA,KAAgBT,UAAA;QAClBC,aAAA,CAAcQ,WAAA;QACdL,SAAA,CAAUxB,kBAAA,CAAmBW,YAAA,EAAckB,WAAA;QAAA;QAAA;UAAA,IAErCf,IAAA;YAAA,MACIY,aAAA,CAAc,UAAUG,WAAA;UAAA;QAAA,SAAAG,EAAA;UAEzBC,KAAA,CAAAA,KAAA,CAAAA,CAAA,CAAAA,EAAA;QAAA;MAAA;IAAA;IAIb1B,CAAA,MAAAQ,aAAA;IAAAR,CAAA,MAAAa,UAAA;IAAAb,CAAA,MAAAI,YAAA;IAAAJ,CAAA,MAAAmB,aAAA;IAAAnB,CAAA,MAAAO,IAAA;IAAAP,CAAA,OAAAoB,EAAA;EAAA;IAAAA,EAAA,GAAApB,CAAA;EAAA;EApBF,MAAA2B,YAAA,GAAqBP,EAqB2C;EAAA,IAAAK,EAAA;EAAA,IAAAzB,CAAA,SAAAQ,aAAA,IAAAR,CAAA,SAAAkB,aAAA,IAAAlB,CAAA,SAAAY,gBAAA,IAAAZ,CAAA,SAAA2B,YAAA,IAAA3B,CAAA,SAAAO,IAAA;IAGtDkB,EAAA,GAAAA,CAAA;MACR,MAAAG,gBAAA,kBAAAA,iBAAA;QACE,IAAAC,aAAA,GAAkBrB,aAAA;QAAA,IAEd,OAAOI,gBAAA,KAAqB;UAC9BU,aAAA,CAAAA,CAAA,CAAcV,gBAAA;QAAd;UAAA,IACSL,IAAA;YAAA;YAAA;cAEPe,aAAA,CAAAA,CAAA,CAAAA,KAAA,CAAoBJ,aAAA,CAAsB;YAA1C,SAAAY,EAAA;cACOJ,KAAA,CAAAA,OAAA,CAAAA,CAAA,CAAAA,EAAA;YAAA;UAAA;QAAA;QAAA,MAKLC,YAAA,CAAaL,aAAA;MAAA;MAGhBM,gBAAA;IAAA;IACP5B,CAAA,OAAAQ,aAAA;IAAAR,CAAA,OAAAkB,aAAA;IAAAlB,CAAA,OAAAY,gBAAA;IAAAZ,CAAA,OAAA2B,YAAA;IAAA3B,CAAA,OAAAO,IAAA;IAAAP,CAAA,OAAAyB,EAAA;EAAA;IAAAA,EAAA,GAAAzB,CAAA;EAAA;EAAA,IAAA8B,EAAA;EAAA,IAAA9B,CAAA,SAAAQ,aAAA,IAAAR,CAAA,SAAAkB,aAAA,IAAAlB,CAAA,SAAAY,gBAAA,IAAAZ,CAAA,SAAAI,YAAA,IAAAJ,CAAA,SAAAmB,aAAA,IAAAnB,CAAA,SAAA2B,YAAA,IAAA3B,CAAA,SAAAO,IAAA;IAAGuB,EAAA,IACDtB,aAAA,EACAU,aAAA,EACAd,YAAA,EACAQ,gBAAA,EACAO,aAAA,EACAZ,IAAA,EACAoB,YAAA;IACD3B,CAAA,OAAAQ,aAAA;IAAAR,CAAA,OAAAkB,aAAA;IAAAlB,CAAA,OAAAY,gBAAA;IAAAZ,CAAA,OAAAI,YAAA;IAAAJ,CAAA,OAAAmB,aAAA;IAAAnB,CAAA,OAAA2B,YAAA;IAAA3B,CAAA,OAAAO,IAAA;IAAAP,CAAA,OAAA8B,EAAA;EAAA;IAAAA,EAAA,GAAA9B,CAAA;EAAA;EA1BDT,SAAA,CAAUkC,EAkBV,EAAGK,EAQF;EAAA,IAAAC,EAAA;EAAA,IAAA/B,CAAA,SAAAC,QAAA,IAAAD,CAAA,SAAAgB,MAAA;IAEMe,EAAA,GAAAC,IAAA,CAAAnC,aAAA,CAAAoC,QAAA;MAAAC,KAAA,EAA+BlB,MAAA;MAAAf;IAAA,C;;;;;;;SAA/B8B,E;CACT;AAEA;;;AAGA,OAAO,MAAMI,SAAA,GAAYA,CAAA;EAAA,OAAc7C,UAAA,CAAAO,aAAW;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useSearchParams","React","createContext","useContext","useEffect","useState","findLocaleFromCode","useAuth","useConfig","usePreferences","LocaleContext","LocaleProvider","children","config","localization","user","defaultLocale","getPreference","setPreference","searchParams","localeFromParams","get","localeCode","setLocaleCode","locale","useMemo","setInitialLocale","localeToSet","_","code","_jsx","Provider","value","useLocale"],"sources":["../../../src/providers/Locale/index.tsx"],"sourcesContent":["'use client'\n\nimport type { Locale } from 'payload'\n\nimport { useSearchParams } from 'next/navigation.js'\nimport React, { createContext, useContext, useEffect, useState } from 'react'\n\nimport { findLocaleFromCode } from '../../utilities/findLocaleFromCode.js'\nimport { useAuth } from '../Auth/index.js'\nimport { useConfig } from '../Config/index.js'\nimport { usePreferences } from '../Preferences/index.js'\n\nconst LocaleContext = createContext({} as Locale)\n\nexport const LocaleProvider: React.FC<{ children?: React.ReactNode }> = ({ children }) => {\n const {\n config: { localization = false },\n } = useConfig()\n\n const { user } = useAuth()\n const defaultLocale =\n localization && localization.defaultLocale ? localization.defaultLocale : 'en'\n\n const { getPreference, setPreference } = usePreferences()\n const searchParams = useSearchParams()\n const localeFromParams = searchParams.get('locale')\n\n const [localeCode, setLocaleCode] = useState<string>(defaultLocale)\n\n const locale: Locale = React.useMemo(() => {\n if (!localization) {\n // TODO: return null V4\n return {} as Locale\n }\n\n return (\n findLocaleFromCode(localization, localeFromParams || localeCode) ||\n findLocaleFromCode(localization, defaultLocale)\n )\n }, [localeCode, localeFromParams, localization, defaultLocale])\n\n useEffect(() => {\n async function setInitialLocale() {\n if (localization && user) {\n if (typeof localeFromParams !== 'string') {\n try {\n const localeToSet = await getPreference<string>('locale')\n setLocaleCode(localeToSet)\n } catch (_) {\n setLocaleCode(defaultLocale)\n }\n } else {\n void setPreference(\n 'locale',\n findLocaleFromCode(localization, localeFromParams)?.code || defaultLocale,\n )\n }\n }\n }\n\n void setInitialLocale()\n }, [defaultLocale, getPreference, localization, localeFromParams, setPreference, user])\n\n return <LocaleContext.Provider value={locale}>{children}</LocaleContext.Provider>\n}\n\n/**\n * @deprecated A hook that returns the current locale object.\n *\n * ---\n *\n * #### 🚨 V4 Breaking Change\n * The `useLocale` return type now reflects `null | Locale` instead of `false | Locale`.\n *\n * **Old (V3):**\n * ```ts\n * const { code } = useLocale();\n * ```\n * **New (V4):**\n * ```ts\n * const locale = useLocale();\n * ```\n */\nexport const useLocale = (): Locale => useContext(LocaleContext)\n"],"mappings":"AAAA;;;AAIA,SAASA,eAAe,QAAQ;AAChC,OAAOC,KAAA,IAASC,aAAa,EAAEC,UAAU,EAAEC,SAAS,EAAEC,QAAQ,QAAQ;AAEtE,SAASC,kBAAkB,QAAQ;AACnC,SAASC,OAAO,QAAQ;AACxB,SAASC,SAAS,QAAQ;AAC1B,SAASC,cAAc,QAAQ;AAE/B,MAAMC,aAAA,gBAAgBR,aAAA,CAAc,CAAC;AAErC,OAAO,MAAMS,cAAA,GAA2DA,CAAC;EAAEC;AAAQ,CAAE;EACnF,MAAM;IACJC,MAAA,EAAQ;MAAEC,YAAA,GAAe;IAAK;EAAE,CACjC,GAAGN,SAAA;EAEJ,MAAM;IAAEO;EAAI,CAAE,GAAGR,OAAA;EACjB,MAAMS,aAAA,GACJF,YAAA,IAAgBA,YAAA,CAAaE,aAAa,GAAGF,YAAA,CAAaE,aAAa,GAAG;EAE5E,MAAM;IAAEC,aAAa;IAAEC;EAAa,CAAE,GAAGT,cAAA;EACzC,MAAMU,YAAA,GAAenB,eAAA;EACrB,MAAMoB,gBAAA,GAAmBD,YAAA,CAAaE,GAAG,CAAC;EAE1C,MAAM,CAACC,UAAA,EAAYC,aAAA,CAAc,GAAGlB,QAAA,CAAiBW,aAAA;EAErD,MAAMQ,MAAA,GAAiBvB,KAAA,CAAMwB,OAAO,CAAC;IACnC,IAAI,CAACX,YAAA,EAAc;MACjB;MACA,OAAO,CAAC;IACV;IAEA,OACER,kBAAA,CAAmBQ,YAAA,EAAcM,gBAAA,IAAoBE,UAAA,KACrDhB,kBAAA,CAAmBQ,YAAA,EAAcE,aAAA;EAErC,GAAG,CAACM,UAAA,EAAYF,gBAAA,EAAkBN,YAAA,EAAcE,aAAA,CAAc;EAE9DZ,SAAA,CAAU;IACR,eAAesB,iBAAA;MACb,IAAIZ,YAAA,IAAgBC,IAAA,EAAM;QACxB,IAAI,OAAOK,gBAAA,KAAqB,UAAU;UACxC,IAAI;YACF,MAAMO,WAAA,GAAc,MAAMV,aAAA,CAAsB;YAChDM,aAAA,CAAcI,WAAA;UAChB,EAAE,OAAOC,CAAA,EAAG;YACVL,aAAA,CAAcP,aAAA;UAChB;QACF,OAAO;UACL,KAAKE,aAAA,CACH,UACAZ,kBAAA,CAAmBQ,YAAA,EAAcM,gBAAA,GAAmBS,IAAA,IAAQb,aAAA;QAEhE;MACF;IACF;IAEA,KAAKU,gBAAA;EACP,GAAG,CAACV,aAAA,EAAeC,aAAA,EAAeH,YAAA,EAAcM,gBAAA,EAAkBF,aAAA,EAAeH,IAAA,CAAK;EAEtF,oBAAOe,IAAA,CAACpB,aAAA,CAAcqB,QAAQ;IAACC,KAAA,EAAOR,MAAA;cAASZ;;AACjD;AAEA;;;;;;;;;;;;;;;;;AAiBA,OAAO,MAAMqB,SAAA,GAAYA,CAAA;EAAA,OAAc9B,UAAA,CAAAO,aAAW;AAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/SearchParams/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC5B,OAAO,KAAoC,MAAM,OAAO,CAAA;AAIxD,MAAM,MAAM,mBAAmB,GAAG;IAChC,YAAY,EAAE,EAAE,CAAC,QAAQ,CAAA;IACzB,eAAe,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;QAAE,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,MAAM,CAAA;CAC7F,CAAA;AASD;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAuBzE,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe,QAAO,mBAA0C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/SearchParams/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC5B,OAAO,KAAoC,MAAM,OAAO,CAAA;AAExD,MAAM,MAAM,mBAAmB,GAAG;IAChC,YAAY,EAAE,EAAE,CAAC,QAAQ,CAAA;IACzB,eAAe,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;QAAE,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,MAAM,CAAA;CAC7F,CAAA;AASD;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CA2BzE,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe,QAAO,mBAA0C,CAAA"}
@@ -1,11 +1,9 @@
1
1
  'use client';
2
2
 
3
- import { c as _c } from "react/compiler-runtime";
4
3
  import { jsx as _jsx } from "react/jsx-runtime";
5
4
  import { useSearchParams as useNextSearchParams } from 'next/navigation.js';
6
5
  import * as qs from 'qs-esm';
7
6
  import React, { createContext, useContext } from 'react';
8
- import { parseSearchParams } from '../../utilities/parseSearchParams.js';
9
7
  const initialContext = {
10
8
  searchParams: {},
11
9
  stringifyParams: () => ''
@@ -19,74 +17,33 @@ const Context = /*#__PURE__*/createContext(initialContext);
19
17
  * import { useSearchParams } from 'next/navigation'
20
18
  * ```
21
19
  */
22
- export const SearchParamsProvider = t0 => {
23
- const $ = _c(11);
24
- const {
25
- children
26
- } = t0;
20
+ export const SearchParamsProvider = ({
21
+ children
22
+ }) => {
27
23
  const nextSearchParams = useNextSearchParams();
28
- let t1;
29
- if ($[0] !== nextSearchParams) {
30
- t1 = () => parseSearchParams(nextSearchParams);
31
- $[0] = nextSearchParams;
32
- $[1] = t1;
33
- } else {
34
- t1 = $[1];
35
- }
36
- const [searchParams, setSearchParams] = React.useState(t1);
37
- let t2;
38
- if ($[2] !== searchParams) {
39
- t2 = t3 => {
40
- const {
41
- params,
42
- replace: t4
43
- } = t3;
44
- const replace = t4 === undefined ? false : t4;
45
- return qs.stringify({
46
- ...(replace ? {} : searchParams),
47
- ...params
48
- }, {
49
- addQueryPrefix: true
50
- });
51
- };
52
- $[2] = searchParams;
53
- $[3] = t2;
54
- } else {
55
- t2 = $[3];
56
- }
57
- const stringifyParams = t2;
58
- let t3;
59
- let t4;
60
- if ($[4] !== nextSearchParams) {
61
- t3 = () => {
62
- setSearchParams(parseSearchParams(nextSearchParams));
63
- };
64
- t4 = [nextSearchParams];
65
- $[4] = nextSearchParams;
66
- $[5] = t3;
67
- $[6] = t4;
68
- } else {
69
- t3 = $[5];
70
- t4 = $[6];
71
- }
72
- React.useEffect(t3, t4);
73
- let t5;
74
- if ($[7] !== children || $[8] !== searchParams || $[9] !== stringifyParams) {
75
- t5 = _jsx(Context.Provider, {
76
- value: {
77
- searchParams,
78
- stringifyParams
79
- },
80
- children
24
+ const searchString = nextSearchParams.toString();
25
+ const searchParams = React.useMemo(() => qs.parse(searchString, {
26
+ depth: 10,
27
+ ignoreQueryPrefix: true
28
+ }), [searchString]);
29
+ const stringifyParams = React.useCallback(({
30
+ params,
31
+ replace = false
32
+ }) => {
33
+ return qs.stringify({
34
+ ...(replace ? {} : searchParams),
35
+ ...params
36
+ }, {
37
+ addQueryPrefix: true
81
38
  });
82
- $[7] = children;
83
- $[8] = searchParams;
84
- $[9] = stringifyParams;
85
- $[10] = t5;
86
- } else {
87
- t5 = $[10];
88
- }
89
- return t5;
39
+ }, [searchParams]);
40
+ return /*#__PURE__*/_jsx(Context.Provider, {
41
+ value: {
42
+ searchParams,
43
+ stringifyParams
44
+ },
45
+ children: children
46
+ });
90
47
  };
91
48
  /**
92
49
  * @deprecated
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useSearchParams","useNextSearchParams","qs","React","createContext","useContext","parseSearchParams","initialContext","searchParams","stringifyParams","Context","SearchParamsProvider","t0","$","children","nextSearchParams","t1","setSearchParams","useState","t2","t3","params","replace","t4","undefined","stringify","addQueryPrefix","useEffect","t5","_jsx","Provider","value"],"sources":["../../../src/providers/SearchParams/index.tsx"],"sourcesContent":["'use client'\n\nimport { useSearchParams as useNextSearchParams } from 'next/navigation.js'\nimport * as qs from 'qs-esm'\nimport React, { createContext, useContext } from 'react'\n\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\n\nexport type SearchParamsContext = {\n searchParams: qs.ParsedQs\n stringifyParams: ({ params, replace }: { params: qs.ParsedQs; replace?: boolean }) => string\n}\n\nconst initialContext: SearchParamsContext = {\n searchParams: {},\n stringifyParams: () => '',\n}\n\nconst Context = createContext(initialContext)\n\n/**\n * @deprecated\n * The SearchParamsProvider is deprecated and will be removed in the next major release. Instead, use the `useSearchParams` hook from `next/navigation` directly. See https://github.com/payloadcms/payload/pull/9581.\n * @example\n * ```tsx\n * import { useSearchParams } from 'next/navigation'\n * ```\n */\nexport const SearchParamsProvider: React.FC<{ children?: React.ReactNode }> = ({ children }) => {\n const nextSearchParams = useNextSearchParams()\n\n const [searchParams, setSearchParams] = React.useState(() => parseSearchParams(nextSearchParams))\n\n const stringifyParams = React.useCallback(\n ({ params, replace = false }: { params: qs.ParsedQs; replace?: boolean }) => {\n return qs.stringify(\n {\n ...(replace ? {} : searchParams),\n ...params,\n },\n { addQueryPrefix: true },\n )\n },\n [searchParams],\n )\n\n React.useEffect(() => {\n setSearchParams(parseSearchParams(nextSearchParams))\n }, [nextSearchParams])\n\n return <Context.Provider value={{ searchParams, stringifyParams }}>{children}</Context.Provider>\n}\n\n/**\n * @deprecated\n * The `useSearchParams` hook is deprecated and will be removed in the next major release. Instead, use the `useSearchParams` hook from `next/navigation` directly. See https://github.com/payloadcms/payload/pull/9581.\n * @example\n * ```tsx\n * import { useSearchParams } from 'next/navigation'\n * ```\n * If you need to parse the `where` query, you can do so with the `parseSearchParams` utility.\n * ```tsx\n * import { parseSearchParams } from '@payloadcms/ui'\n * const parsedSearchParams = parseSearchParams(searchParams)\n * ```\n */\nexport const useSearchParams = (): SearchParamsContext => useContext(Context)\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAEA,SAASC,eAAA,IAAmBC,mBAAmB,QAAQ;AACvD,YAAYC,EAAA,MAAQ;AACpB,OAAOC,KAAA,IAASC,aAAa,EAAEC,UAAU,QAAQ;AAEjD,SAASC,iBAAiB,QAAQ;AAOlC,MAAMC,cAAA,GAAsC;EAC1CC,YAAA,EAAc,CAAC;EACfC,eAAA,EAAiBA,CAAA,KAAM;AACzB;AAEA,MAAMC,OAAA,gBAAUN,aAAA,CAAcG,cAAA;AAE9B;;;;;;;;AAQA,OAAO,MAAMI,oBAAA,GAAiEC,EAAA;EAAA,MAAAC,CAAA,GAAAd,EAAA;EAAC;IAAAe;EAAA,IAAAF,EAAY;EACzF,MAAAG,gBAAA,GAAyBd,mBAAA;EAAA,IAAAe,EAAA;EAAA,IAAAH,CAAA,QAAAE,gBAAA;IAE8BC,EAAA,GAAAA,CAAA,KAAMV,iBAAA,CAAkBS,gBAAA;IAAAF,CAAA,MAAAE,gBAAA;IAAAF,CAAA,MAAAG,EAAA;EAAA;IAAAA,EAAA,GAAAH,CAAA;EAAA;EAA/E,OAAAL,YAAA,EAAAS,eAAA,IAAwCd,KAAA,CAAAe,QAAA,CAAeF,EAAwB;EAAA,IAAAG,EAAA;EAAA,IAAAN,CAAA,QAAAL,YAAA;IAG7EW,EAAA,GAAAC,EAAA;MAAC;QAAAC,MAAA;QAAAC,OAAA,EAAAC;MAAA,IAAAH,EAAuE;MAA7D,MAAAE,OAAA,GAAAC,EAAe,KAAAC,SAAA,WAAfD,EAAe;MAAA,OACjBrB,EAAA,CAAAuB,SAAA;QAAA,IAECH,OAAA,QAAed,YAAY;QAAA,GAC5Ba;MAAM;QAAAK,cAAA;MAAA,CAEY;IAAA;IAE3Bb,CAAA,MAAAL,YAAA;IAAAK,CAAA,MAAAM,EAAA;EAAA;IAAAA,EAAA,GAAAN,CAAA;EAAA;EATF,MAAAJ,eAAA,GAAwBU,EAUR;EAAA,IAAAC,EAAA;EAAA,IAAAG,EAAA;EAAA,IAAAV,CAAA,QAAAE,gBAAA;IAGAK,EAAA,GAAAA,CAAA;MACdH,eAAA,CAAgBX,iBAAA,CAAkBS,gBAAA;IAAA;IACjCQ,EAAA,IAACR,gBAAA;IAAiBF,CAAA,MAAAE,gBAAA;IAAAF,CAAA,MAAAO,EAAA;IAAAP,CAAA,MAAAU,EAAA;EAAA;IAAAH,EAAA,GAAAP,CAAA;IAAAU,EAAA,GAAAV,CAAA;EAAA;EAFrBV,KAAA,CAAAwB,SAAA,CAAgBP,EAEhB,EAAGG,EAAkB;EAAA,IAAAK,EAAA;EAAA,IAAAf,CAAA,QAAAC,QAAA,IAAAD,CAAA,QAAAL,YAAA,IAAAK,CAAA,QAAAJ,eAAA;IAEdmB,EAAA,GAAAC,IAAA,CAAAnB,OAAA,CAAAoB,QAAA;MAAAC,KAAA;QAAAvB,YAAA;QAAAC;MAAA;MAAAK;IAAA,C;;;;;;;;SAAAc,E;CACT;AAEA;;;;;;;;;;;;;AAaA,OAAO,MAAM5B,eAAA,GAAkBA,CAAA;EAAA,OAA2BK,UAAA,CAAAK,OAAW;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useSearchParams","useNextSearchParams","qs","React","createContext","useContext","initialContext","searchParams","stringifyParams","Context","SearchParamsProvider","children","nextSearchParams","searchString","toString","useMemo","parse","depth","ignoreQueryPrefix","useCallback","params","replace","stringify","addQueryPrefix","_jsx","Provider","value"],"sources":["../../../src/providers/SearchParams/index.tsx"],"sourcesContent":["'use client'\n\nimport { useSearchParams as useNextSearchParams } from 'next/navigation.js'\nimport * as qs from 'qs-esm'\nimport React, { createContext, useContext } from 'react'\n\nexport type SearchParamsContext = {\n searchParams: qs.ParsedQs\n stringifyParams: ({ params, replace }: { params: qs.ParsedQs; replace?: boolean }) => string\n}\n\nconst initialContext: SearchParamsContext = {\n searchParams: {},\n stringifyParams: () => '',\n}\n\nconst Context = createContext(initialContext)\n\n/**\n * @deprecated\n * The SearchParamsProvider is deprecated and will be removed in the next major release. Instead, use the `useSearchParams` hook from `next/navigation` directly. See https://github.com/payloadcms/payload/pull/9581.\n * @example\n * ```tsx\n * import { useSearchParams } from 'next/navigation'\n * ```\n */\nexport const SearchParamsProvider: React.FC<{ children?: React.ReactNode }> = ({ children }) => {\n const nextSearchParams = useNextSearchParams()\n const searchString = nextSearchParams.toString()\n\n const searchParams = React.useMemo(\n () =>\n qs.parse(searchString, {\n depth: 10,\n ignoreQueryPrefix: true,\n }),\n [searchString],\n )\n\n const stringifyParams = React.useCallback(\n ({ params, replace = false }: { params: qs.ParsedQs; replace?: boolean }) => {\n return qs.stringify(\n {\n ...(replace ? {} : searchParams),\n ...params,\n },\n { addQueryPrefix: true },\n )\n },\n [searchParams],\n )\n\n return <Context.Provider value={{ searchParams, stringifyParams }}>{children}</Context.Provider>\n}\n\n/**\n * @deprecated\n * The `useSearchParams` hook is deprecated and will be removed in the next major release. Instead, use the `useSearchParams` hook from `next/navigation` directly. See https://github.com/payloadcms/payload/pull/9581.\n * @example\n * ```tsx\n * import { useSearchParams } from 'next/navigation'\n * ```\n * If you need to parse the `where` query, you can do so with the `parseSearchParams` utility.\n * ```tsx\n * import { parseSearchParams } from '@payloadcms/ui'\n * const parsedSearchParams = parseSearchParams(searchParams)\n * ```\n */\nexport const useSearchParams = (): SearchParamsContext => useContext(Context)\n"],"mappings":"AAAA;;;AAEA,SAASA,eAAA,IAAmBC,mBAAmB,QAAQ;AACvD,YAAYC,EAAA,MAAQ;AACpB,OAAOC,KAAA,IAASC,aAAa,EAAEC,UAAU,QAAQ;AAOjD,MAAMC,cAAA,GAAsC;EAC1CC,YAAA,EAAc,CAAC;EACfC,eAAA,EAAiBA,CAAA,KAAM;AACzB;AAEA,MAAMC,OAAA,gBAAUL,aAAA,CAAcE,cAAA;AAE9B;;;;;;;;AAQA,OAAO,MAAMI,oBAAA,GAAiEA,CAAC;EAAEC;AAAQ,CAAE;EACzF,MAAMC,gBAAA,GAAmBX,mBAAA;EACzB,MAAMY,YAAA,GAAeD,gBAAA,CAAiBE,QAAQ;EAE9C,MAAMP,YAAA,GAAeJ,KAAA,CAAMY,OAAO,CAChC,MACEb,EAAA,CAAGc,KAAK,CAACH,YAAA,EAAc;IACrBI,KAAA,EAAO;IACPC,iBAAA,EAAmB;EACrB,IACF,CAACL,YAAA,CAAa;EAGhB,MAAML,eAAA,GAAkBL,KAAA,CAAMgB,WAAW,CACvC,CAAC;IAAEC,MAAM;IAAEC,OAAA,GAAU;EAAK,CAA8C;IACtE,OAAOnB,EAAA,CAAGoB,SAAS,CACjB;MACE,IAAID,OAAA,GAAU,CAAC,IAAId,YAAY;MAC/B,GAAGa;IACL,GACA;MAAEG,cAAA,EAAgB;IAAK;EAE3B,GACA,CAAChB,YAAA,CAAa;EAGhB,oBAAOiB,IAAA,CAACf,OAAA,CAAQgB,QAAQ;IAACC,KAAA,EAAO;MAAEnB,YAAA;MAAcC;IAAgB;cAAIG;;AACtE;AAEA;;;;;;;;;;;;;AAaA,OAAO,MAAMX,eAAA,GAAkBA,CAAA;EAAA,OAA2BK,UAAA,CAAAI,OAAW;AAAA","ignoreList":[]}