@payloadcms/ui 3.28.0 → 3.28.1

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 (147) hide show
  1. package/dist/elements/BulkUpload/FormsManager/index.js +2 -2
  2. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  3. package/dist/elements/BulkUpload/index.d.ts.map +1 -1
  4. package/dist/elements/BulkUpload/index.js +2 -4
  5. package/dist/elements/BulkUpload/index.js.map +1 -1
  6. package/dist/elements/Collapsible/provider.d.ts.map +1 -1
  7. package/dist/elements/Collapsible/provider.js +3 -5
  8. package/dist/elements/Collapsible/provider.js.map +1 -1
  9. package/dist/elements/DocumentDrawer/Provider.d.ts.map +1 -1
  10. package/dist/elements/DocumentDrawer/Provider.js +3 -3
  11. package/dist/elements/DocumentDrawer/Provider.js.map +1 -1
  12. package/dist/elements/Drawer/index.d.ts.map +1 -1
  13. package/dist/elements/Drawer/index.js +3 -5
  14. package/dist/elements/Drawer/index.js.map +1 -1
  15. package/dist/elements/EditMany/DrawerContent.js +1 -1
  16. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  17. package/dist/elements/ListDrawer/Provider.js +3 -3
  18. package/dist/elements/ListDrawer/Provider.js.map +1 -1
  19. package/dist/elements/LoadingOverlay/index.js +3 -3
  20. package/dist/elements/LoadingOverlay/index.js.map +1 -1
  21. package/dist/elements/Nav/context.d.ts.map +1 -1
  22. package/dist/elements/Nav/context.js +2 -4
  23. package/dist/elements/Nav/context.js.map +1 -1
  24. package/dist/elements/StepNav/context.d.ts.map +1 -1
  25. package/dist/elements/StepNav/context.js +3 -5
  26. package/dist/elements/StepNav/context.js.map +1 -1
  27. package/dist/elements/Table/RelationshipProvider/index.d.ts.map +1 -1
  28. package/dist/elements/Table/RelationshipProvider/index.js +3 -5
  29. package/dist/elements/Table/RelationshipProvider/index.js.map +1 -1
  30. package/dist/elements/TableColumns/RenderDefaultCell/index.d.ts.map +1 -1
  31. package/dist/elements/TableColumns/RenderDefaultCell/index.js +2 -4
  32. package/dist/elements/TableColumns/RenderDefaultCell/index.js.map +1 -1
  33. package/dist/elements/TableColumns/context.d.ts.map +1 -1
  34. package/dist/elements/TableColumns/context.js +2 -2
  35. package/dist/elements/TableColumns/context.js.map +1 -1
  36. package/dist/elements/TableColumns/index.js +1 -1
  37. package/dist/elements/TableColumns/index.js.map +1 -1
  38. package/dist/elements/Toasts/fieldErrors.d.ts.map +1 -1
  39. package/dist/elements/Toasts/fieldErrors.js +2 -2
  40. package/dist/elements/Toasts/fieldErrors.js.map +1 -1
  41. package/dist/exports/client/{CodeEditor-TQ5ADFPC.js → CodeEditor-J4IKAVAK.js} +2 -2
  42. package/dist/exports/client/{DatePicker-HHQ6TPOW.js → DatePicker-DMHV2M2L.js} +2 -2
  43. package/dist/exports/client/{chunk-IMEQ6NKQ.js → chunk-3AA2TJQ5.js} +2 -2
  44. package/dist/exports/client/{chunk-IMEQ6NKQ.js.map → chunk-3AA2TJQ5.js.map} +3 -3
  45. package/dist/exports/client/{chunk-LMYT7O7U.js → chunk-PKQOCWZD.js} +2 -2
  46. package/dist/exports/client/{chunk-LMYT7O7U.js.map → chunk-PKQOCWZD.js.map} +3 -3
  47. package/dist/exports/client/index.js +23 -23
  48. package/dist/exports/client/index.js.map +3 -3
  49. package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
  50. package/dist/fields/Blocks/BlockRow.js +26 -20
  51. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  52. package/dist/fields/Group/provider.d.ts.map +1 -1
  53. package/dist/fields/Group/provider.js +3 -5
  54. package/dist/fields/Group/provider.js.map +1 -1
  55. package/dist/fields/Row/provider.d.ts.map +1 -1
  56. package/dist/fields/Row/provider.js +3 -5
  57. package/dist/fields/Row/provider.js.map +1 -1
  58. package/dist/fields/Tabs/provider.d.ts.map +1 -1
  59. package/dist/fields/Tabs/provider.js +3 -5
  60. package/dist/fields/Tabs/provider.js.map +1 -1
  61. package/dist/forms/Form/context.d.ts.map +1 -1
  62. package/dist/forms/Form/context.js +9 -25
  63. package/dist/forms/Form/context.js.map +1 -1
  64. package/dist/forms/Form/index.d.ts.map +1 -1
  65. package/dist/forms/Form/index.js +8 -8
  66. package/dist/forms/Form/index.js.map +1 -1
  67. package/dist/forms/RowLabel/Context/index.d.ts.map +1 -1
  68. package/dist/forms/RowLabel/Context/index.js +2 -2
  69. package/dist/forms/RowLabel/Context/index.js.map +1 -1
  70. package/dist/forms/RowLabel/index.d.ts.map +1 -1
  71. package/dist/forms/RowLabel/index.js +2 -2
  72. package/dist/forms/RowLabel/index.js.map +1 -1
  73. package/dist/forms/RowLabel/types.d.ts +1 -1
  74. package/dist/forms/RowLabel/types.d.ts.map +1 -1
  75. package/dist/forms/RowLabel/types.js.map +1 -1
  76. package/dist/hooks/useQueues.js +3 -3
  77. package/dist/hooks/useQueues.js.map +1 -1
  78. package/dist/providers/Actions/index.d.ts.map +1 -1
  79. package/dist/providers/Actions/index.js +3 -5
  80. package/dist/providers/Actions/index.js.map +1 -1
  81. package/dist/providers/Auth/index.d.ts.map +1 -1
  82. package/dist/providers/Auth/index.js +3 -5
  83. package/dist/providers/Auth/index.js.map +1 -1
  84. package/dist/providers/ClientFunction/index.d.ts.map +1 -1
  85. package/dist/providers/ClientFunction/index.js +4 -4
  86. package/dist/providers/ClientFunction/index.js.map +1 -1
  87. package/dist/providers/Config/index.d.ts.map +1 -1
  88. package/dist/providers/Config/index.js +3 -5
  89. package/dist/providers/Config/index.js.map +1 -1
  90. package/dist/providers/DocumentEvents/index.d.ts.map +1 -1
  91. package/dist/providers/DocumentEvents/index.js +3 -5
  92. package/dist/providers/DocumentEvents/index.js.map +1 -1
  93. package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
  94. package/dist/providers/DocumentInfo/index.js +3 -5
  95. package/dist/providers/DocumentInfo/index.js.map +1 -1
  96. package/dist/providers/EditDepth/index.d.ts.map +1 -1
  97. package/dist/providers/EditDepth/index.js +3 -5
  98. package/dist/providers/EditDepth/index.js.map +1 -1
  99. package/dist/providers/EntityVisibility/index.d.ts.map +1 -1
  100. package/dist/providers/EntityVisibility/index.js +3 -5
  101. package/dist/providers/EntityVisibility/index.js.map +1 -1
  102. package/dist/providers/ListQuery/context.d.ts.map +1 -1
  103. package/dist/providers/ListQuery/context.js +2 -2
  104. package/dist/providers/ListQuery/context.js.map +1 -1
  105. package/dist/providers/ListQuery/index.js +1 -1
  106. package/dist/providers/ListQuery/index.js.map +1 -1
  107. package/dist/providers/Locale/index.d.ts.map +1 -1
  108. package/dist/providers/Locale/index.js +5 -9
  109. package/dist/providers/Locale/index.js.map +1 -1
  110. package/dist/providers/Operation/index.d.ts.map +1 -1
  111. package/dist/providers/Operation/index.js +3 -5
  112. package/dist/providers/Operation/index.js.map +1 -1
  113. package/dist/providers/Params/index.d.ts.map +1 -1
  114. package/dist/providers/Params/index.js +3 -5
  115. package/dist/providers/Params/index.js.map +1 -1
  116. package/dist/providers/Preferences/index.d.ts.map +1 -1
  117. package/dist/providers/Preferences/index.js +3 -5
  118. package/dist/providers/Preferences/index.js.map +1 -1
  119. package/dist/providers/RouteCache/index.d.ts.map +1 -1
  120. package/dist/providers/RouteCache/index.js +3 -5
  121. package/dist/providers/RouteCache/index.js.map +1 -1
  122. package/dist/providers/RouteTransition/index.d.ts.map +1 -1
  123. package/dist/providers/RouteTransition/index.js +2 -4
  124. package/dist/providers/RouteTransition/index.js.map +1 -1
  125. package/dist/providers/SearchParams/index.d.ts.map +1 -1
  126. package/dist/providers/SearchParams/index.js +3 -5
  127. package/dist/providers/SearchParams/index.js.map +1 -1
  128. package/dist/providers/Selection/index.d.ts.map +1 -1
  129. package/dist/providers/Selection/index.js +3 -5
  130. package/dist/providers/Selection/index.js.map +1 -1
  131. package/dist/providers/ServerFunctions/index.js +2 -2
  132. package/dist/providers/ServerFunctions/index.js.map +1 -1
  133. package/dist/providers/Theme/index.d.ts.map +1 -1
  134. package/dist/providers/Theme/index.js +3 -5
  135. package/dist/providers/Theme/index.js.map +1 -1
  136. package/dist/providers/Translation/index.d.ts.map +1 -1
  137. package/dist/providers/Translation/index.js +3 -5
  138. package/dist/providers/Translation/index.js.map +1 -1
  139. package/dist/providers/UploadEdits/index.d.ts.map +1 -1
  140. package/dist/providers/UploadEdits/index.js +2 -4
  141. package/dist/providers/UploadEdits/index.js.map +1 -1
  142. package/dist/providers/UploadHandlers/index.d.ts.map +1 -1
  143. package/dist/providers/UploadHandlers/index.js +3 -3
  144. package/dist/providers/UploadHandlers/index.js.map +1 -1
  145. package/package.json +5 -5
  146. /package/dist/exports/client/{CodeEditor-TQ5ADFPC.js.map → CodeEditor-J4IKAVAK.js.map} +0 -0
  147. /package/dist/exports/client/{DatePicker-HHQ6TPOW.js.map → DatePicker-DMHV2M2L.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","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","mergeServerFormState","baseClass","Form","props","id","collectionSlug","docPermissions","getDocPreferences","globalSlug","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","fields","dispatchFields","current","prevFields","validateForm","validatedFieldState","data","getData","validationPromises","Object","entries","map","path","field","validatedField","pathSegments","split","passesCondition","validationResult","valid","validate","valueToValidate","value","rows","Array","isArray","blockData","event","preferences","req","payload","siblingData","errorMessage","Promise","all","type","state","submit","options","e","actionArg","methodToUse","overrides","overridesFromArgs","skipValidation","preventDefault","errorToast","successToast","promise","resolve","reject","hasFormSubmitAction","success","error","loading","stopPropagation","revalidatedFormState","serializableFields","reduce","priorOnChange","beforeSubmitFn","result","formState","every","key","formData","createFormData","mergeOverrideData","Boolean","res","toLowerCase","body","headers","language","contentType","get","isJSON","indexOf","json","status","newFormState","newState","mergedFormState","acceptValues","existingState","incomingState","optimize","push","message","errors","fieldErrors","nonFieldErrors","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","forEach","dataError","_jsx","statusText","console","getFields","getField","file","handler","filename","name","clientUploadContext","updateFilename","JSON","stringify","mimeType","size","dataToSerialize","_payload","indices","nullsAsUndefineds","reset","controller","docPreferences","renderAllFields","schemaPath","signal","replaceState","addFieldRow","blockType","rowIndex","rowIndexArg","subFieldState","newRows","length","removeFieldRow","replaceFieldRow","currentRows","abortOnChange","sanitize","classes","filter","join","executeOnChange","onChangeFn","aborted","changed","DocumentFormContextComponent","Provider","Fragment","documentFormContextProps","El","noValidate","ref","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, useMemo, useReducer, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type {\n CreateFormData,\n Context as FormContextType,\n FormProps,\n GetDataByPath,\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'\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 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 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 [fields, dispatchFields] = fieldsReducer\n\n contextRef.current.fields = fields\n\n const prevFields = useRef(fields)\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(\n async (options: SubmitOptions = {}, e): Promise<void> => {\n const {\n action: actionArg = action,\n method: methodToUse = method,\n overrides: overridesFromArgs = {},\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\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(\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 // 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 const serializableFields = deepCopyObjectSimpleWithoutReactComponents(\n contextRef.current.fields,\n )\n\n const data = reduceFieldsToValues(serializableFields, true)\n\n for (const [key, value] of Object.entries(overrides)) {\n data[key] = value\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 = await contextRef.current.createFormData(overrides, {\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 if (res.status < 400) {\n if (typeof onSuccess === 'function') {\n const newFormState = await onSuccess(json)\n if (newFormState) {\n const { newState: mergedFormState } = mergeServerFormState({\n acceptValues: true,\n existingState: contextRef.current.fields || {},\n incomingState: 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 startRouteTransition(() => 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 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 } 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, { mergeOverrideData = true }) => {\n let data = reduceFieldsToValues(contextRef.current.fields, true)\n\n let file = data?.file\n\n if (file) {\n delete data.file\n }\n\n if (mergeOverrideData) {\n data = {\n ...data,\n ...overrides,\n }\n } else {\n data = overrides\n }\n\n const handler = getUploadHandler({ collectionSlug })\n\n if (file && 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 const dataToSerialize = {\n _payload: JSON.stringify(data),\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 [collectionSlug, 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 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 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.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 [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 const executeOnChange = useEffectEvent(async (submitted: boolean, signal: AbortSignal) => {\n if (Array.isArray(onChange)) {\n let revalidatedFormState: FormState = contextRef.current.fields\n\n for (const onChangeFn of onChange) {\n if (signal.aborted) {\n return\n }\n\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 submitted,\n })\n }\n\n if (!revalidatedFormState) {\n return\n }\n\n const { changed, newState } = mergeServerFormState({\n existingState: contextRef.current.fields || {},\n incomingState: revalidatedFormState,\n })\n\n if (changed && !signal.aborted) {\n prevFields.current = newState\n\n dispatchFields({\n type: 'REPLACE_STATE',\n optimize: false,\n state: newState,\n })\n }\n }\n })\n\n useDebouncedEffect(\n () => {\n if ((isFirstRenderRef.current || !dequal(fields, prevFields.current)) && modified) {\n queueTask(async (signal) => executeOnChange(submitted, signal))\n }\n\n prevFields.current = fields\n isFirstRenderRef.current = false\n },\n [modified, submitted, fields, queueTask],\n 250,\n )\n\n const DocumentFormContextComponent: React.FC<any> = isDocumentForm\n ? DocumentFormContext.Provider\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.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 <BackgroundProcessingContext.Provider value={backgroundProcessing}>\n <ModifiedContext.Provider value={modified}>\n <FormFieldsContext.Provider value={fieldsReducer}>\n {children}\n </FormFieldsContext.Provider>\n </ModifiedContext.Provider>\n </BackgroundProcessingContext.Provider>\n </ProcessingContext.Provider>\n </InitializingContext.Provider>\n </SubmittedContext.Provider>\n </FormWatchContext.Provider>\n </FormContext.Provider>\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","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","mergeServerFormState","baseClass","Form","props","id","collectionSlug","docPermissions","getDocPreferences","globalSlug","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","fields","dispatchFields","current","prevFields","validateForm","validatedFieldState","data","getData","validationPromises","Object","entries","map","path","field","validatedField","pathSegments","split","passesCondition","validationResult","valid","validate","valueToValidate","value","rows","Array","isArray","blockData","event","preferences","req","payload","siblingData","errorMessage","Promise","all","type","state","submit","options","e","actionArg","methodToUse","overrides","overridesFromArgs","skipValidation","preventDefault","errorToast","successToast","promise","resolve","reject","hasFormSubmitAction","success","error","loading","stopPropagation","revalidatedFormState","serializableFields","reduce","priorOnChange","beforeSubmitFn","result","formState","every","key","formData","createFormData","mergeOverrideData","Boolean","res","toLowerCase","body","headers","language","contentType","get","isJSON","indexOf","json","status","newFormState","newState","mergedFormState","acceptValues","existingState","incomingState","optimize","push","message","errors","fieldErrors","nonFieldErrors","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","forEach","dataError","_jsx","statusText","console","getFields","getField","file","handler","filename","name","clientUploadContext","updateFilename","JSON","stringify","mimeType","size","dataToSerialize","_payload","indices","nullsAsUndefineds","reset","controller","docPreferences","renderAllFields","schemaPath","signal","replaceState","addFieldRow","blockType","rowIndex","rowIndexArg","subFieldState","newRows","length","removeFieldRow","replaceFieldRow","currentRows","abortOnChange","sanitize","classes","filter","join","executeOnChange","onChangeFn","aborted","changed","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, useMemo, useReducer, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type {\n CreateFormData,\n Context as FormContextType,\n FormProps,\n GetDataByPath,\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'\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 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 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 [fields, dispatchFields] = fieldsReducer\n\n contextRef.current.fields = fields\n\n const prevFields = useRef(fields)\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(\n async (options: SubmitOptions = {}, e): Promise<void> => {\n const {\n action: actionArg = action,\n method: methodToUse = method,\n overrides: overridesFromArgs = {},\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\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(\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 // 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 const serializableFields = deepCopyObjectSimpleWithoutReactComponents(\n contextRef.current.fields,\n )\n\n const data = reduceFieldsToValues(serializableFields, true)\n\n for (const [key, value] of Object.entries(overrides)) {\n data[key] = value\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 = await contextRef.current.createFormData(overrides, {\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 if (res.status < 400) {\n if (typeof onSuccess === 'function') {\n const newFormState = await onSuccess(json)\n if (newFormState) {\n const { newState: mergedFormState } = mergeServerFormState({\n acceptValues: true,\n existingState: contextRef.current.fields || {},\n incomingState: 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 startRouteTransition(() => 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 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 } 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, { mergeOverrideData = true }) => {\n let data = reduceFieldsToValues(contextRef.current.fields, true)\n\n let file = data?.file\n\n if (file) {\n delete data.file\n }\n\n if (mergeOverrideData) {\n data = {\n ...data,\n ...overrides,\n }\n } else {\n data = overrides\n }\n\n const handler = getUploadHandler({ collectionSlug })\n\n if (file && 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 const dataToSerialize = {\n _payload: JSON.stringify(data),\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 [collectionSlug, 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 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 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.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 [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 const executeOnChange = useEffectEvent(async (submitted: boolean, signal: AbortSignal) => {\n if (Array.isArray(onChange)) {\n let revalidatedFormState: FormState = contextRef.current.fields\n\n for (const onChangeFn of onChange) {\n if (signal.aborted) {\n return\n }\n\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 submitted,\n })\n }\n\n if (!revalidatedFormState) {\n return\n }\n\n const { changed, newState } = mergeServerFormState({\n existingState: contextRef.current.fields || {},\n incomingState: revalidatedFormState,\n })\n\n if (changed && !signal.aborted) {\n prevFields.current = newState\n\n dispatchFields({\n type: 'REPLACE_STATE',\n optimize: false,\n state: newState,\n })\n }\n }\n })\n\n useDebouncedEffect(\n () => {\n if ((isFirstRenderRef.current || !dequal(fields, prevFields.current)) && modified) {\n queueTask(async (signal) => executeOnChange(submitted, signal))\n }\n\n prevFields.current = fields\n isFirstRenderRef.current = false\n },\n [modified, submitted, fields, queueTask],\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,\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 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/forms/RowLabel/Context/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,KAAK,YAAY,CAAC,CAAC,GAAG,OAAO,IAAI;IAC/B,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IAChB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B,CAAA;AAQD,KAAK,KAAK,CAAC,CAAC,IAAI;IACd,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;AAEjC,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CASrD,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,CAAC,OACU,YAAY,CAAC,CAAC,CACpD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/forms/RowLabel/Context/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,KAAK,YAAY,CAAC,CAAC,GAAG,OAAO,IAAI;IAC/B,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IAChB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B,CAAA;AAQD,KAAK,KAAK,CAAC,CAAC,IAAI;IACd,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;AAEjC,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CASrD,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,CAAC,OACG,YAAY,CAAC,CAAC,CAC7C,CAAA"}
@@ -22,7 +22,7 @@ export const RowLabelProvider = ({
22
22
  const collapsibleData = getSiblingData(path);
23
23
  const arrayData = getDataByPath(path);
24
24
  const data = arrayData || collapsibleData;
25
- return /*#__PURE__*/_jsx(RowLabel.Provider, {
25
+ return /*#__PURE__*/_jsx(RowLabel, {
26
26
  value: {
27
27
  data,
28
28
  path,
@@ -32,6 +32,6 @@ export const RowLabelProvider = ({
32
32
  });
33
33
  };
34
34
  export const useRowLabel = () => {
35
- return React.useContext(RowLabel);
35
+ return React.use(RowLabel);
36
36
  };
37
37
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","useWatchForm","RowLabel","createContext","data","path","rowNumber","undefined","RowLabelProvider","children","getDataByPath","getSiblingData","collapsibleData","arrayData","_jsx","Provider","value","useRowLabel","useContext"],"sources":["../../../../src/forms/RowLabel/Context/index.tsx"],"sourcesContent":["'use client'\n\nimport React from 'react'\n\nimport { useWatchForm } from '../../Form/context.js'\n\ntype RowLabelType<T = unknown> = {\n readonly data: T\n readonly path: string\n readonly rowNumber?: number\n}\n\nconst RowLabel = React.createContext<RowLabelType>({\n data: {},\n path: '',\n rowNumber: undefined,\n})\n\ntype Props<T> = {\n readonly children: React.ReactNode\n} & Omit<RowLabelType<T>, 'data'>\n\nexport const RowLabelProvider: React.FC<Props<unknown>> = ({ children, path, rowNumber }) => {\n 'use no memo'\n const { getDataByPath, getSiblingData } = useWatchForm()\n const collapsibleData = getSiblingData(path)\n const arrayData = getDataByPath(path)\n\n const data = arrayData || collapsibleData\n\n return <RowLabel.Provider value={{ data, path, rowNumber }}>{children}</RowLabel.Provider>\n}\n\nexport const useRowLabel = <T,>() => {\n return React.useContext(RowLabel) as RowLabelType<T>\n}\n"],"mappings":"AAAA;;;AAEA,OAAOA,KAAA,MAAW;AAElB,SAASC,YAAY,QAAQ;AAQ7B,MAAMC,QAAA,gBAAWF,KAAA,CAAMG,aAAa,CAAe;EACjDC,IAAA,EAAM,CAAC;EACPC,IAAA,EAAM;EACNC,SAAA,EAAWC;AACb;AAMA,OAAO,MAAMC,gBAAA,GAA6CA,CAAC;EAAEC,QAAQ;EAAEJ,IAAI;EAAEC;AAAS,CAAE;EACtF;;EACA,MAAM;IAAEI,aAAa;IAAEC;EAAc,CAAE,GAAGV,YAAA;EAC1C,MAAMW,eAAA,GAAkBD,cAAA,CAAeN,IAAA;EACvC,MAAMQ,SAAA,GAAYH,aAAA,CAAcL,IAAA;EAEhC,MAAMD,IAAA,GAAOS,SAAA,IAAaD,eAAA;EAE1B,oBAAOE,IAAA,CAACZ,QAAA,CAASa,QAAQ;IAACC,KAAA,EAAO;MAAEZ,IAAA;MAAMC,IAAA;MAAMC;IAAU;cAAIG;;AAC/D;AAEA,OAAO,MAAMQ,WAAA,GAAcA,CAAA;EAAA,OAClBjB,KAAA,CAAAkB,UAAA,CAAAhB,QAAiB;AAAA,CAC1B","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","useWatchForm","RowLabel","createContext","data","path","rowNumber","undefined","RowLabelProvider","children","getDataByPath","getSiblingData","collapsibleData","arrayData","_jsx","value","useRowLabel","use"],"sources":["../../../../src/forms/RowLabel/Context/index.tsx"],"sourcesContent":["'use client'\n\nimport React from 'react'\n\nimport { useWatchForm } from '../../Form/context.js'\n\ntype RowLabelType<T = unknown> = {\n readonly data: T\n readonly path: string\n readonly rowNumber?: number\n}\n\nconst RowLabel = React.createContext<RowLabelType>({\n data: {},\n path: '',\n rowNumber: undefined,\n})\n\ntype Props<T> = {\n readonly children: React.ReactNode\n} & Omit<RowLabelType<T>, 'data'>\n\nexport const RowLabelProvider: React.FC<Props<unknown>> = ({ children, path, rowNumber }) => {\n 'use no memo'\n const { getDataByPath, getSiblingData } = useWatchForm()\n const collapsibleData = getSiblingData(path)\n const arrayData = getDataByPath(path)\n\n const data = arrayData || collapsibleData\n\n return <RowLabel value={{ data, path, rowNumber }}>{children}</RowLabel>\n}\n\nexport const useRowLabel = <T,>() => {\n return React.use(RowLabel) as RowLabelType<T>\n}\n"],"mappings":"AAAA;;;AAEA,OAAOA,KAAA,MAAW;AAElB,SAASC,YAAY,QAAQ;AAQ7B,MAAMC,QAAA,gBAAWF,KAAA,CAAMG,aAAa,CAAe;EACjDC,IAAA,EAAM,CAAC;EACPC,IAAA,EAAM;EACNC,SAAA,EAAWC;AACb;AAMA,OAAO,MAAMC,gBAAA,GAA6CA,CAAC;EAAEC,QAAQ;EAAEJ,IAAI;EAAEC;AAAS,CAAE;EACtF;;EACA,MAAM;IAAEI,aAAa;IAAEC;EAAc,CAAE,GAAGV,YAAA;EAC1C,MAAMW,eAAA,GAAkBD,cAAA,CAAeN,IAAA;EACvC,MAAMQ,SAAA,GAAYH,aAAA,CAAcL,IAAA;EAEhC,MAAMD,IAAA,GAAOS,SAAA,IAAaD,eAAA;EAE1B,oBAAOE,IAAA,CAACZ,QAAA;IAASa,KAAA,EAAO;MAAEX,IAAA;MAAMC,IAAA;MAAMC;IAAU;cAAIG;;AACtD;AAEA,OAAO,MAAMO,WAAA,GAAcA,CAAA;EACzB,OAAOhB,KAAA,CAAMiB,GAAG,CAACf,QAAA;AACnB","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/RowLabel/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAI/C,YAAY,EAAE,aAAa,EAAE,CAAA;AAI7B,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAoB5C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/RowLabel/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAI/C,YAAY,EAAE,aAAa,EAAE,CAAA;AAI7B,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAwB5C,CAAA"}
@@ -18,13 +18,13 @@ export const RowLabel = props => {
18
18
  rowNumber: rowNumber,
19
19
  children: /*#__PURE__*/_jsx(RenderCustomComponent, {
20
20
  CustomComponent: CustomComponent,
21
- Fallback: /*#__PURE__*/_jsx("span", {
21
+ Fallback: typeof label === 'string' ? /*#__PURE__*/_jsx("span", {
22
22
  className: [baseClass, className].filter(Boolean).join(' '),
23
23
  style: {
24
24
  pointerEvents: 'none'
25
25
  },
26
26
  children: label
27
- })
27
+ }) : label
28
28
  })
29
29
  });
30
30
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","RenderCustomComponent","RowLabelProvider","baseClass","RowLabel","props","className","CustomComponent","label","path","rowNumber","_jsx","Fallback","filter","Boolean","join","style","pointerEvents"],"sources":["../../../src/forms/RowLabel/index.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport type { RowLabelProps } from './types.js'\n\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { RowLabelProvider } from './Context/index.js'\nexport type { RowLabelProps }\n\nconst baseClass = 'row-label'\n\nexport const RowLabel: React.FC<RowLabelProps> = (props) => {\n const { className, CustomComponent, label, path, rowNumber } = props\n\n return (\n <RowLabelProvider path={path} rowNumber={rowNumber}>\n <RenderCustomComponent\n CustomComponent={CustomComponent}\n Fallback={\n <span\n className={[baseClass, className].filter(Boolean).join(' ')}\n style={{\n pointerEvents: 'none',\n }}\n >\n {label}\n </span>\n }\n />\n </RowLabelProvider>\n )\n}\n"],"mappings":"AAAA;;;AACA,OAAOA,KAAA,MAAW;AAIlB,SAASC,qBAAqB,QAAQ;AACtC,SAASC,gBAAgB,QAAQ;AAGjC,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,QAAA,GAAqCC,KAAA;EAChD,MAAM;IAAEC,SAAS;IAAEC,eAAe;IAAEC,KAAK;IAAEC,IAAI;IAAEC;EAAS,CAAE,GAAGL,KAAA;EAE/D,oBACEM,IAAA,CAACT,gBAAA;IAAiBO,IAAA,EAAMA,IAAA;IAAMC,SAAA,EAAWA,SAAA;cACvC,aAAAC,IAAA,CAACV,qBAAA;MACCM,eAAA,EAAiBA,eAAA;MACjBK,QAAA,eACED,IAAA,CAAC;QACCL,SAAA,EAAW,CAACH,SAAA,EAAWG,SAAA,CAAU,CAACO,MAAM,CAACC,OAAA,EAASC,IAAI,CAAC;QACvDC,KAAA,EAAO;UACLC,aAAA,EAAe;QACjB;kBAECT;;;;AAMb","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","RenderCustomComponent","RowLabelProvider","baseClass","RowLabel","props","className","CustomComponent","label","path","rowNumber","_jsx","Fallback","filter","Boolean","join","style","pointerEvents"],"sources":["../../../src/forms/RowLabel/index.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport type { RowLabelProps } from './types.js'\n\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { RowLabelProvider } from './Context/index.js'\nexport type { RowLabelProps }\n\nconst baseClass = 'row-label'\n\nexport const RowLabel: React.FC<RowLabelProps> = (props) => {\n const { className, CustomComponent, label, path, rowNumber } = props\n\n return (\n <RowLabelProvider path={path} rowNumber={rowNumber}>\n <RenderCustomComponent\n CustomComponent={CustomComponent}\n Fallback={\n typeof label === 'string' ? (\n <span\n className={[baseClass, className].filter(Boolean).join(' ')}\n style={{\n pointerEvents: 'none',\n }}\n >\n {label}\n </span>\n ) : (\n label\n )\n }\n />\n </RowLabelProvider>\n )\n}\n"],"mappings":"AAAA;;;AACA,OAAOA,KAAA,MAAW;AAIlB,SAASC,qBAAqB,QAAQ;AACtC,SAASC,gBAAgB,QAAQ;AAGjC,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,QAAA,GAAqCC,KAAA;EAChD,MAAM;IAAEC,SAAS;IAAEC,eAAe;IAAEC,KAAK;IAAEC,IAAI;IAAEC;EAAS,CAAE,GAAGL,KAAA;EAE/D,oBACEM,IAAA,CAACT,gBAAA;IAAiBO,IAAA,EAAMA,IAAA;IAAMC,SAAA,EAAWA,SAAA;cACvC,aAAAC,IAAA,CAACV,qBAAA;MACCM,eAAA,EAAiBA,eAAA;MACjBK,QAAA,EACE,OAAOJ,KAAA,KAAU,wBACfG,IAAA,CAAC;QACCL,SAAA,EAAW,CAACH,SAAA,EAAWG,SAAA,CAAU,CAACO,MAAM,CAACC,OAAA,EAASC,IAAI,CAAC;QACvDC,KAAA,EAAO;UACLC,aAAA,EAAe;QACjB;kBAECT;WAGHA;;;AAMZ","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  export type RowLabelProps = {
2
2
  readonly className?: string;
3
3
  readonly CustomComponent?: React.ReactNode;
4
- readonly label?: string;
4
+ readonly label?: React.ReactNode | string;
5
5
  readonly path: string;
6
6
  readonly rowNumber?: number;
7
7
  };
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/forms/RowLabel/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/forms/RowLabel/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1C,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,MAAM,CAAA;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../src/forms/RowLabel/types.ts"],"sourcesContent":["export type RowLabelProps = {\n readonly className?: string\n readonly CustomComponent?: React.ReactNode\n readonly label?: string\n readonly path: string\n readonly rowNumber?: number\n}\n"],"mappings":"AAAA","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../src/forms/RowLabel/types.ts"],"sourcesContent":["export type RowLabelProps = {\n readonly className?: string\n readonly CustomComponent?: React.ReactNode\n readonly label?: React.ReactNode | string\n readonly path: string\n readonly rowNumber?: number\n}\n"],"mappings":"AAAA","ignoreList":[]}
@@ -1,9 +1,9 @@
1
- import { useRef } from 'react';
1
+ import { useCallback, useRef } from 'react';
2
2
  export function useQueues() {
3
3
  const runningTaskRef = useRef(null);
4
4
  const queuedTask = useRef(null);
5
5
  const abortControllerRef = useRef(null);
6
- const queueTask = fn => {
6
+ const queueTask = useCallback(fn => {
7
7
  // Overwrite the queued task every time a new one arrives
8
8
  queuedTask.current = fn;
9
9
  // If a task is already running, abort it and return
@@ -35,7 +35,7 @@ export function useQueues() {
35
35
  }
36
36
  };
37
37
  void executeTask();
38
- };
38
+ }, []);
39
39
  return {
40
40
  queueTask
41
41
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useQueues.js","names":["useRef","useQueues","runningTaskRef","queuedTask","abortControllerRef","queueTask","fn","current","abort","executeTask","taskToRun","controller","AbortController","signal","err","name","console","error"],"sources":["../../src/hooks/useQueues.ts"],"sourcesContent":["import { useRef } from 'react'\n\nexport function useQueues(): {\n queueTask: (fn: (signal: AbortSignal) => Promise<void>) => void\n} {\n const runningTaskRef = useRef<null | Promise<void>>(null)\n const queuedTask = useRef<((signal: AbortSignal) => Promise<void>) | null>(null)\n const abortControllerRef = useRef<AbortController | null>(null)\n\n const queueTask = (fn: (signal: AbortSignal) => Promise<void>) => {\n // Overwrite the queued task every time a new one arrives\n queuedTask.current = fn\n\n // If a task is already running, abort it and return\n if (runningTaskRef.current !== null) {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort()\n }\n\n return\n }\n\n const executeTask = async () => {\n while (queuedTask.current) {\n const taskToRun = queuedTask.current\n queuedTask.current = null // Reset latest task before running\n\n const controller = new AbortController()\n abortControllerRef.current = controller\n\n try {\n runningTaskRef.current = taskToRun(controller.signal)\n await runningTaskRef.current // Wait for the task to complete\n } catch (err) {\n if (err.name !== 'AbortError') {\n console.error('Error in queued function:', err) // eslint-disable-line no-console\n }\n } finally {\n runningTaskRef.current = null\n }\n }\n }\n\n void executeTask()\n }\n\n return { queueTask }\n}\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ;AAEvB,OAAO,SAASC,UAAA;EAGd,MAAMC,cAAA,GAAiBF,MAAA,CAA6B;EACpD,MAAMG,UAAA,GAAaH,MAAA,CAAwD;EAC3E,MAAMI,kBAAA,GAAqBJ,MAAA,CAA+B;EAE1D,MAAMK,SAAA,GAAaC,EAAA;IACjB;IACAH,UAAA,CAAWI,OAAO,GAAGD,EAAA;IAErB;IACA,IAAIJ,cAAA,CAAeK,OAAO,KAAK,MAAM;MACnC,IAAIH,kBAAA,CAAmBG,OAAO,EAAE;QAC9BH,kBAAA,CAAmBG,OAAO,CAACC,KAAK;MAClC;MAEA;IACF;IAEA,MAAMC,WAAA,GAAc,MAAAA,CAAA;MAClB,OAAON,UAAA,CAAWI,OAAO,EAAE;QACzB,MAAMG,SAAA,GAAYP,UAAA,CAAWI,OAAO;QACpCJ,UAAA,CAAWI,OAAO,GAAG,KAAK;QAAA;QAE1B,MAAMI,UAAA,GAAa,IAAIC,eAAA;QACvBR,kBAAA,CAAmBG,OAAO,GAAGI,UAAA;QAE7B,IAAI;UACFT,cAAA,CAAeK,OAAO,GAAGG,SAAA,CAAUC,UAAA,CAAWE,MAAM;UACpD,MAAMX,cAAA,CAAeK,OAAO,CAAC;UAAA;QAC/B,EAAE,OAAOO,GAAA,EAAK;UACZ,IAAIA,GAAA,CAAIC,IAAI,KAAK,cAAc;YAC7BC,OAAA,CAAQC,KAAK,CAAC,6BAA6BH,GAAA,EAAK;YAAA;UAClD;QACF,UAAU;UACRZ,cAAA,CAAeK,OAAO,GAAG;QAC3B;MACF;IACF;IAEA,KAAKE,WAAA;EACP;EAEA,OAAO;IAAEJ;EAAU;AACrB","ignoreList":[]}
1
+ {"version":3,"file":"useQueues.js","names":["useCallback","useRef","useQueues","runningTaskRef","queuedTask","abortControllerRef","queueTask","fn","current","abort","executeTask","taskToRun","controller","AbortController","signal","err","name","console","error"],"sources":["../../src/hooks/useQueues.ts"],"sourcesContent":["import { useCallback, useRef } from 'react'\n\nexport function useQueues(): {\n queueTask: (fn: (signal: AbortSignal) => Promise<void>) => void\n} {\n const runningTaskRef = useRef<null | Promise<void>>(null)\n const queuedTask = useRef<((signal: AbortSignal) => Promise<void>) | null>(null)\n const abortControllerRef = useRef<AbortController | null>(null)\n\n const queueTask = useCallback((fn: (signal: AbortSignal) => Promise<void>) => {\n // Overwrite the queued task every time a new one arrives\n queuedTask.current = fn\n\n // If a task is already running, abort it and return\n if (runningTaskRef.current !== null) {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort()\n }\n\n return\n }\n\n const executeTask = async () => {\n while (queuedTask.current) {\n const taskToRun = queuedTask.current\n queuedTask.current = null // Reset latest task before running\n\n const controller = new AbortController()\n abortControllerRef.current = controller\n\n try {\n runningTaskRef.current = taskToRun(controller.signal)\n await runningTaskRef.current // Wait for the task to complete\n } catch (err) {\n if (err.name !== 'AbortError') {\n console.error('Error in queued function:', err) // eslint-disable-line no-console\n }\n } finally {\n runningTaskRef.current = null\n }\n }\n }\n\n void executeTask()\n }, [])\n\n return { queueTask }\n}\n"],"mappings":"AAAA,SAASA,WAAW,EAAEC,MAAM,QAAQ;AAEpC,OAAO,SAASC,UAAA;EAGd,MAAMC,cAAA,GAAiBF,MAAA,CAA6B;EACpD,MAAMG,UAAA,GAAaH,MAAA,CAAwD;EAC3E,MAAMI,kBAAA,GAAqBJ,MAAA,CAA+B;EAE1D,MAAMK,SAAA,GAAYN,WAAA,CAAaO,EAAA;IAC7B;IACAH,UAAA,CAAWI,OAAO,GAAGD,EAAA;IAErB;IACA,IAAIJ,cAAA,CAAeK,OAAO,KAAK,MAAM;MACnC,IAAIH,kBAAA,CAAmBG,OAAO,EAAE;QAC9BH,kBAAA,CAAmBG,OAAO,CAACC,KAAK;MAClC;MAEA;IACF;IAEA,MAAMC,WAAA,GAAc,MAAAA,CAAA;MAClB,OAAON,UAAA,CAAWI,OAAO,EAAE;QACzB,MAAMG,SAAA,GAAYP,UAAA,CAAWI,OAAO;QACpCJ,UAAA,CAAWI,OAAO,GAAG,KAAK;QAAA;QAE1B,MAAMI,UAAA,GAAa,IAAIC,eAAA;QACvBR,kBAAA,CAAmBG,OAAO,GAAGI,UAAA;QAE7B,IAAI;UACFT,cAAA,CAAeK,OAAO,GAAGG,SAAA,CAAUC,UAAA,CAAWE,MAAM;UACpD,MAAMX,cAAA,CAAeK,OAAO,CAAC;UAAA;QAC/B,EAAE,OAAOO,GAAA,EAAK;UACZ,IAAIA,GAAA,CAAIC,IAAI,KAAK,cAAc;YAC7BC,OAAA,CAAQC,KAAK,CAAC,6BAA6BH,GAAA,EAAK;YAAA;UAClD;QACF,UAAU;UACRZ,cAAA,CAAeK,OAAO,GAAG;QAC3B;MACF;IACF;IAEA,KAAKE,WAAA;EACP,GAAG,EAAE;EAEL,OAAO;IAAEJ;EAAU;AACrB","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Actions/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA8C,MAAM,OAAO,CAAA;AAElE,KAAK,kBAAkB,GAAG;IACxB,OAAO,EAAE;QACP,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAA;KAC/B,CAAA;IACD,cAAc,EAAE,CAAC,OAAO,EAAE,kBAAkB,CAAC,SAAS,CAAC,KAAK,IAAI,CAAA;CACjE,CAAA;AAOD,eAAO,MAAM,UAAU,0BAAmC,CAAA;AAE1D,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE;QACjB,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAA;KAC/B,CAAA;IACD,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC,CAgBA,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Actions/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAuC,MAAM,OAAO,CAAA;AAE3D,KAAK,kBAAkB,GAAG;IACxB,OAAO,EAAE;QACP,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAA;KAC/B,CAAA;IACD,cAAc,EAAE,CAAC,OAAO,EAAE,kBAAkB,CAAC,SAAS,CAAC,KAAK,IAAI,CAAA;CACjE,CAAA;AAOD,eAAO,MAAM,UAAU,0BAA4B,CAAA;AAEnD,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE;QACjB,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAA;KAC/B,CAAA;IACD,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC,CAgBA,CAAA"}
@@ -2,14 +2,12 @@
2
2
 
3
3
  import { c as _c } from "react/compiler-runtime";
4
4
  import { jsx as _jsx } from "react/jsx-runtime";
5
- import React, { createContext, useContext, useState } from 'react';
5
+ import React, { createContext, use, useState } from 'react';
6
6
  const ActionsContext = /*#__PURE__*/createContext({
7
7
  Actions: {},
8
8
  setViewActions: () => {}
9
9
  });
10
- export const useActions = () => {
11
- return useContext(ActionsContext);
12
- };
10
+ export const useActions = () => use(ActionsContext);
13
11
  export const ActionsProvider = t0 => {
14
12
  const $ = _c(4);
15
13
  const {
@@ -19,7 +17,7 @@ export const ActionsProvider = t0 => {
19
17
  const [viewActions, setViewActions] = useState(Actions);
20
18
  let t1;
21
19
  if ($[0] !== Actions || $[1] !== children || $[2] !== viewActions) {
22
- t1 = _jsx(ActionsContext.Provider, {
20
+ t1 = _jsx(ActionsContext, {
23
21
  value: {
24
22
  Actions: {
25
23
  ...viewActions,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","createContext","useContext","useState","ActionsContext","Actions","setViewActions","useActions","ActionsProvider","t0","$","children","viewActions","t1","_jsx","Provider","value"],"sources":["../../../src/providers/Actions/index.tsx"],"sourcesContent":["'use client'\n\nimport React, { createContext, useContext, useState } from 'react'\n\ntype ActionsContextType = {\n Actions: {\n [key: string]: React.ReactNode\n }\n setViewActions: (actions: ActionsContextType['Actions']) => void\n}\n\nconst ActionsContext = createContext<ActionsContextType>({\n Actions: {},\n setViewActions: () => {},\n})\n\nexport const useActions = () => useContext(ActionsContext)\n\nexport const ActionsProvider: React.FC<{\n readonly Actions?: {\n [key: string]: React.ReactNode\n }\n readonly children: React.ReactNode\n}> = ({ Actions, children }) => {\n const [viewActions, setViewActions] = useState(Actions)\n\n return (\n <ActionsContext.Provider\n value={{\n Actions: {\n ...viewActions,\n ...Actions,\n },\n setViewActions,\n }}\n >\n {children}\n </ActionsContext.Provider>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAEA,OAAOC,KAAA,IAASC,aAAa,EAAEC,UAAU,EAAEC,QAAQ,QAAQ;AAS3D,MAAMC,cAAA,gBAAiBH,aAAA,CAAkC;EACvDI,OAAA,EAAS,CAAC;EACVC,cAAA,EAAgBA,CAAA,MAAO;AACzB;AAEA,OAAO,MAAMC,UAAA,GAAaA,CAAA;EAAA,OAAML,UAAA,CAAAE,cAAW;AAAA;AAE3C,OAAO,MAAMI,eAAA,GAKRC,EAAA;EAAA,MAAAC,CAAA,GAAAX,EAAA;EAAC;IAAAM,OAAA;IAAAM;EAAA,IAAAF,EAAqB;EACzB,OAAAG,WAAA,EAAAN,cAAA,IAAsCH,QAAA,CAASE,OAAA;EAAA,IAAAQ,EAAA;EAAA,IAAAH,CAAA,QAAAL,OAAA,IAAAK,CAAA,QAAAC,QAAA,IAAAD,CAAA,QAAAE,WAAA;IAG7CC,EAAA,GAAAC,IAAA,CAAAV,cAAA,CAAAW,QAAA;MAAAC,KAAA;QAAAX,OAAA;UAAA,GAGSO,WAAW;UAAA,GACXP;QAAO;QAAAC;MAAA;MAAAK;IAAA,C;;;;;;;;SAJhBE,E;CAYJ","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","createContext","use","useState","ActionsContext","Actions","setViewActions","useActions","ActionsProvider","t0","$","children","viewActions","t1","_jsx","value"],"sources":["../../../src/providers/Actions/index.tsx"],"sourcesContent":["'use client'\n\nimport React, { createContext, use, useState } from 'react'\n\ntype ActionsContextType = {\n Actions: {\n [key: string]: React.ReactNode\n }\n setViewActions: (actions: ActionsContextType['Actions']) => void\n}\n\nconst ActionsContext = createContext<ActionsContextType>({\n Actions: {},\n setViewActions: () => {},\n})\n\nexport const useActions = () => use(ActionsContext)\n\nexport const ActionsProvider: React.FC<{\n readonly Actions?: {\n [key: string]: React.ReactNode\n }\n readonly children: React.ReactNode\n}> = ({ Actions, children }) => {\n const [viewActions, setViewActions] = useState(Actions)\n\n return (\n <ActionsContext\n value={{\n Actions: {\n ...viewActions,\n ...Actions,\n },\n setViewActions,\n }}\n >\n {children}\n </ActionsContext>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAEA,OAAOC,KAAA,IAASC,aAAa,EAAEC,GAAG,EAAEC,QAAQ,QAAQ;AASpD,MAAMC,cAAA,gBAAiBH,aAAA,CAAkC;EACvDI,OAAA,EAAS,CAAC;EACVC,cAAA,EAAgBA,CAAA,MAAO;AACzB;AAEA,OAAO,MAAMC,UAAA,GAAaA,CAAA,KAAML,GAAA,CAAIE,cAAA;AAEpC,OAAO,MAAMI,eAAA,GAKRC,EAAA;EAAA,MAAAC,CAAA,GAAAX,EAAA;EAAC;IAAAM,OAAA;IAAAM;EAAA,IAAAF,EAAqB;EACzB,OAAAG,WAAA,EAAAN,cAAA,IAAsCH,QAAA,CAASE,OAAA;EAAA,IAAAQ,EAAA;EAAA,IAAAH,CAAA,QAAAL,OAAA,IAAAK,CAAA,QAAAC,QAAA,IAAAD,CAAA,QAAAE,WAAA;IAG7CC,EAAA,GAAAC,IAAA,CAAAV,cAAA;MAAAW,KAAA;QAAAV,OAAA;UAAA,GAGSO,WAAW;UAAA,GACXP;QAAO;QAAAC;MAAA;MAAAK;IAAA,C;;;;;;;;SAJhBE,E;CAYJ","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Auth/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAMrE,OAAO,KAAsE,MAAM,OAAO,CAAA;AAU1F,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,UAAU,IAAI;IAC1C,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,CAAC,CAAA;CACR,CAAA;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,UAAU,IAAI;IACxC,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAAA;IACzC,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IAC9B,WAAW,CAAC,EAAE,oBAAoB,CAAA;IAClC,aAAa,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;IAC/C,kBAAkB,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAA;IAC7C,kBAAkB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACvC,cAAc,EAAE,CAAC,WAAW,EAAE,oBAAoB,KAAK,IAAI,CAAA;IAC3D,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,CAAA;CAChB,CAAA;AAMD,KAAK,KAAK,GAAG;IACX,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,WAAW,CAAC,EAAE,oBAAoB,CAAA;IAClC,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;CACzB,CAAA;AAED,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,WAAW,EAAE,kBAAkB,EAC/B,IAAI,EAAE,WAAW,GAClB,EAAE,KAAK,qBAkRP;AAED,eAAO,MAAM,OAAO,GAAI,CAAC,oBAAmB,WAAW,CAAC,CAAC,CAA0C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Auth/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAMrE,OAAO,KAA+D,MAAM,OAAO,CAAA;AAUnF,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,UAAU,IAAI;IAC1C,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,CAAC,CAAA;CACR,CAAA;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,UAAU,IAAI;IACxC,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAAA;IACzC,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IAC9B,WAAW,CAAC,EAAE,oBAAoB,CAAA;IAClC,aAAa,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;IAC/C,kBAAkB,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAA;IAC7C,kBAAkB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACvC,cAAc,EAAE,CAAC,WAAW,EAAE,oBAAoB,KAAK,IAAI,CAAA;IAC3D,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,CAAA;CAChB,CAAA;AAMD,KAAK,KAAK,GAAG;IACX,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,WAAW,CAAC,EAAE,oBAAoB,CAAA;IAClC,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;CACzB,CAAA;AAED,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,WAAW,EAAE,kBAAkB,EAC/B,IAAI,EAAE,WAAW,GAClB,EAAE,KAAK,qBAkRP;AAED,eAAO,MAAM,OAAO,GAAI,CAAC,oBAAmB,WAAW,CAAC,CAAC,CAAmC,CAAA"}
@@ -5,7 +5,7 @@ import { useModal } from '@faceless-ui/modal';
5
5
  import { usePathname, useRouter } from 'next/navigation.js';
6
6
  import { formatAdminURL } from 'payload/shared';
7
7
  import * as qs from 'qs-esm';
8
- import React, { createContext, useCallback, useContext, useEffect, useState } from 'react';
8
+ import React, { createContext, use, useCallback, useEffect, useState } from 'react';
9
9
  import { toast } from 'sonner';
10
10
  import { stayLoggedInModalSlug } from '../../elements/StayLoggedIn/index.js';
11
11
  import { useDebounce } from '../../hooks/useDebounce.js';
@@ -227,7 +227,7 @@ export function AuthProvider({
227
227
  }
228
228
  };
229
229
  }, [tokenExpiration, openModal, i18n, setNewUser, user, redirectToInactivityRoute]);
230
- return /*#__PURE__*/_jsx(Context.Provider, {
230
+ return /*#__PURE__*/_jsx(Context, {
231
231
  value: {
232
232
  fetchFullUser,
233
233
  logOut,
@@ -243,7 +243,5 @@ export function AuthProvider({
243
243
  children: children
244
244
  });
245
245
  }
246
- export const useAuth = () => {
247
- return useContext(Context);
248
- };
246
+ export const useAuth = () => use(Context);
249
247
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useModal","usePathname","useRouter","formatAdminURL","qs","React","createContext","useCallback","useContext","useEffect","useState","toast","stayLoggedInModalSlug","useDebounce","useTranslation","requests","useConfig","useRouteTransition","Context","maxTimeoutTime","AuthProvider","children","permissions","initialPermissions","user","initialUser","setUserInMemory","tokenInMemory","setTokenInMemory","tokenExpiration","setTokenExpiration","pathname","router","config","admin","routes","inactivity","logoutInactivityRoute","userSlug","adminRoute","api","apiRoute","serverURL","setPermissions","i18n","closeAllModals","openModal","lastLocationChange","setLastLocationChange","debouncedLocationChange","refreshTokenTimeoutRef","useRef","startRouteTransition","id","redirectToInactivityRoute","replace","path","window","location","startsWith","encodeURIComponent","revokeTokenAndExpire","undefined","clearTimeout","current","setNewUser","userResponse","token","exp","refreshCookie","forceRefresh","now","Math","round","Date","getTime","remainingTime","setTimeout","refresh","request","post","headers","language","status","json","e","error","message","refreshCookieAsync","skipSetUser","logOut","collection","refreshPermissions","locale","params","stringify","addQueryPrefix","get","Error","fetchFullUser","credentials","reminder","forceLogOut","remindInTimeFromNow","max","min","forceLogOutInTimeFromNow","_jsx","Provider","value","setUser","useAuth"],"sources":["../../../src/providers/Auth/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientUser, SanitizedPermissions, User } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { usePathname, useRouter } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { createContext, useCallback, useContext, useEffect, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { stayLoggedInModalSlug } from '../../elements/StayLoggedIn/index.js'\nimport { useDebounce } from '../../hooks/useDebounce.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { useConfig } from '../Config/index.js'\nimport { useRouteTransition } from '../RouteTransition/index.js'\n\nexport type UserWithToken<T = ClientUser> = {\n exp: number\n token: string\n user: T\n}\n\nexport type AuthContext<T = ClientUser> = {\n fetchFullUser: () => Promise<null | User>\n logOut: () => Promise<boolean>\n permissions?: SanitizedPermissions\n refreshCookie: (forceRefresh?: boolean) => void\n refreshCookieAsync: () => Promise<ClientUser>\n refreshPermissions: () => Promise<void>\n setPermissions: (permissions: SanitizedPermissions) => void\n setUser: (user: null | UserWithToken<T>) => void\n strategy?: string\n token?: string\n tokenExpiration?: number\n user?: null | T\n}\n\nconst Context = createContext({} as AuthContext)\n\nconst maxTimeoutTime = 2147483647\n\ntype Props = {\n children: React.ReactNode\n permissions?: SanitizedPermissions\n user?: ClientUser | null\n}\n\nexport function AuthProvider({\n children,\n permissions: initialPermissions,\n user: initialUser,\n}: Props) {\n const [user, setUserInMemory] = useState<ClientUser | null>(initialUser)\n const [tokenInMemory, setTokenInMemory] = useState<string>()\n const [tokenExpiration, setTokenExpiration] = useState<number>()\n const pathname = usePathname()\n const router = useRouter()\n\n const { config } = useConfig()\n\n const {\n admin: {\n routes: { inactivity: logoutInactivityRoute },\n user: userSlug,\n },\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n } = config\n\n const [permissions, setPermissions] = useState<SanitizedPermissions>(initialPermissions)\n\n const { i18n } = useTranslation()\n const { closeAllModals, openModal } = useModal()\n const [lastLocationChange, setLastLocationChange] = useState(0)\n const debouncedLocationChange = useDebounce(lastLocationChange, 10000)\n const refreshTokenTimeoutRef = React.useRef<ReturnType<typeof setTimeout>>(null)\n const { startRouteTransition } = useRouteTransition()\n\n const id = user?.id\n\n const redirectToInactivityRoute = useCallback(() => {\n startRouteTransition(() =>\n router.replace(\n formatAdminURL({\n adminRoute,\n path: `${logoutInactivityRoute}${window.location.pathname.startsWith(adminRoute) ? `?redirect=${encodeURIComponent(window.location.pathname)}` : ''}`,\n }),\n ),\n )\n\n closeAllModals()\n }, [router, adminRoute, logoutInactivityRoute, closeAllModals, startRouteTransition])\n\n const revokeTokenAndExpire = useCallback(() => {\n setTokenInMemory(undefined)\n setTokenExpiration(undefined)\n clearTimeout(refreshTokenTimeoutRef.current)\n }, [])\n\n const setNewUser = useCallback(\n (userResponse: null | UserWithToken) => {\n if (userResponse?.user) {\n setUserInMemory(userResponse.user)\n setTokenInMemory(userResponse.token)\n setTokenExpiration(userResponse.exp)\n } else {\n setUserInMemory(null)\n revokeTokenAndExpire()\n }\n },\n [revokeTokenAndExpire],\n )\n\n const refreshCookie = useCallback(\n (forceRefresh?: boolean) => {\n const now = Math.round(new Date().getTime() / 1000)\n const remainingTime = (typeof tokenExpiration === 'number' ? tokenExpiration : 0) - now\n\n if (forceRefresh || (tokenExpiration && remainingTime < 120)) {\n refreshTokenTimeoutRef.current = setTimeout(() => {\n async function refresh() {\n try {\n const request = await requests.post(\n `${serverURL}${apiRoute}/${userSlug}/refresh-token?refresh`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n )\n\n if (request.status === 200) {\n const json = await request.json()\n setNewUser(json)\n } else {\n setNewUser(null)\n redirectToInactivityRoute()\n }\n } catch (e) {\n toast.error(e.message)\n }\n }\n\n void refresh()\n }, 1000)\n }\n\n return () => {\n clearTimeout(refreshTokenTimeoutRef.current)\n }\n },\n [\n apiRoute,\n i18n.language,\n redirectToInactivityRoute,\n serverURL,\n setNewUser,\n tokenExpiration,\n userSlug,\n ],\n )\n\n const refreshCookieAsync = useCallback(\n async (skipSetUser?: boolean): Promise<ClientUser> => {\n try {\n const request = await requests.post(`${serverURL}${apiRoute}/${userSlug}/refresh-token`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json = await request.json()\n if (!skipSetUser) {\n setNewUser(json)\n }\n return json.user\n }\n\n setNewUser(null)\n redirectToInactivityRoute()\n return null\n } catch (e) {\n toast.error(`Refreshing token failed: ${e.message}`)\n return null\n }\n },\n [apiRoute, i18n.language, redirectToInactivityRoute, serverURL, setNewUser, userSlug],\n )\n\n const logOut = useCallback(async () => {\n try {\n await requests.post(`${serverURL}${apiRoute}/${user.collection}/logout`)\n setNewUser(null)\n revokeTokenAndExpire()\n return true\n } catch (e) {\n toast.error(`Logging out failed: ${e.message}`)\n return false\n }\n }, [apiRoute, revokeTokenAndExpire, serverURL, setNewUser, user])\n\n const refreshPermissions = useCallback(\n async ({ locale }: { locale?: string } = {}) => {\n const params = qs.stringify(\n {\n locale,\n },\n {\n addQueryPrefix: true,\n },\n )\n\n try {\n const request = await requests.get(`${serverURL}${apiRoute}/access${params}`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json: SanitizedPermissions = await request.json()\n setPermissions(json)\n } else {\n throw new Error(`Fetching permissions failed with status code ${request.status}`)\n }\n } catch (e) {\n toast.error(`Refreshing permissions failed: ${e.message}`)\n }\n },\n [serverURL, apiRoute, i18n],\n )\n\n const fetchFullUser = React.useCallback(async () => {\n try {\n const request = await requests.get(`${serverURL}${apiRoute}/${userSlug}/me`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json: UserWithToken = await request.json()\n const user = null\n\n setNewUser(json)\n return user\n }\n } catch (e) {\n toast.error(`Fetching user failed: ${e.message}`)\n }\n\n return null\n }, [serverURL, apiRoute, userSlug, i18n.language, setNewUser])\n\n // On mount, get user and set\n useEffect(() => {\n void fetchFullUser()\n }, [fetchFullUser])\n\n // When location changes, refresh cookie\n useEffect(() => {\n if (id) {\n refreshCookie()\n }\n }, [debouncedLocationChange, refreshCookie, id])\n\n useEffect(() => {\n setLastLocationChange(Date.now())\n }, [pathname])\n\n useEffect(() => {\n let reminder: ReturnType<typeof setTimeout>\n let forceLogOut: ReturnType<typeof setTimeout>\n const now = Math.round(new Date().getTime() / 1000)\n const remainingTime = typeof tokenExpiration === 'number' ? tokenExpiration - now : 0\n const remindInTimeFromNow = Math.max(Math.min((remainingTime - 60) * 1000, maxTimeoutTime), 0)\n const forceLogOutInTimeFromNow = Math.max(Math.min(remainingTime * 1000, maxTimeoutTime), 0)\n\n if (!user) {\n clearTimeout(reminder)\n clearTimeout(forceLogOut)\n return\n }\n\n if (remainingTime > 0) {\n reminder = setTimeout(() => {\n openModal(stayLoggedInModalSlug)\n }, remindInTimeFromNow)\n\n forceLogOut = setTimeout(() => {\n setNewUser(null)\n redirectToInactivityRoute()\n }, forceLogOutInTimeFromNow)\n }\n\n return () => {\n if (reminder) {\n clearTimeout(reminder)\n }\n if (forceLogOut) {\n clearTimeout(forceLogOut)\n }\n }\n }, [tokenExpiration, openModal, i18n, setNewUser, user, redirectToInactivityRoute])\n\n return (\n <Context.Provider\n value={{\n fetchFullUser,\n logOut,\n permissions,\n refreshCookie,\n refreshCookieAsync,\n refreshPermissions,\n setPermissions,\n setUser: setNewUser,\n token: tokenInMemory,\n user,\n }}\n >\n {children}\n </Context.Provider>\n )\n}\n\nexport const useAuth = <T = ClientUser,>(): AuthContext<T> => useContext(Context) as AuthContext<T>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useModal","usePathname","useRouter","formatAdminURL","qs","React","createContext","use","useCallback","useEffect","useState","toast","stayLoggedInModalSlug","useDebounce","useTranslation","requests","useConfig","useRouteTransition","Context","maxTimeoutTime","AuthProvider","children","permissions","initialPermissions","user","initialUser","setUserInMemory","tokenInMemory","setTokenInMemory","tokenExpiration","setTokenExpiration","pathname","router","config","admin","routes","inactivity","logoutInactivityRoute","userSlug","adminRoute","api","apiRoute","serverURL","setPermissions","i18n","closeAllModals","openModal","lastLocationChange","setLastLocationChange","debouncedLocationChange","refreshTokenTimeoutRef","useRef","startRouteTransition","id","redirectToInactivityRoute","replace","path","window","location","startsWith","encodeURIComponent","revokeTokenAndExpire","undefined","clearTimeout","current","setNewUser","userResponse","token","exp","refreshCookie","forceRefresh","now","Math","round","Date","getTime","remainingTime","setTimeout","refresh","request","post","headers","language","status","json","e","error","message","refreshCookieAsync","skipSetUser","logOut","collection","refreshPermissions","locale","params","stringify","addQueryPrefix","get","Error","fetchFullUser","credentials","reminder","forceLogOut","remindInTimeFromNow","max","min","forceLogOutInTimeFromNow","_jsx","value","setUser","useAuth"],"sources":["../../../src/providers/Auth/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientUser, SanitizedPermissions, User } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { usePathname, useRouter } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { createContext, use, useCallback, useEffect, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { stayLoggedInModalSlug } from '../../elements/StayLoggedIn/index.js'\nimport { useDebounce } from '../../hooks/useDebounce.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { useConfig } from '../Config/index.js'\nimport { useRouteTransition } from '../RouteTransition/index.js'\n\nexport type UserWithToken<T = ClientUser> = {\n exp: number\n token: string\n user: T\n}\n\nexport type AuthContext<T = ClientUser> = {\n fetchFullUser: () => Promise<null | User>\n logOut: () => Promise<boolean>\n permissions?: SanitizedPermissions\n refreshCookie: (forceRefresh?: boolean) => void\n refreshCookieAsync: () => Promise<ClientUser>\n refreshPermissions: () => Promise<void>\n setPermissions: (permissions: SanitizedPermissions) => void\n setUser: (user: null | UserWithToken<T>) => void\n strategy?: string\n token?: string\n tokenExpiration?: number\n user?: null | T\n}\n\nconst Context = createContext({} as AuthContext)\n\nconst maxTimeoutTime = 2147483647\n\ntype Props = {\n children: React.ReactNode\n permissions?: SanitizedPermissions\n user?: ClientUser | null\n}\n\nexport function AuthProvider({\n children,\n permissions: initialPermissions,\n user: initialUser,\n}: Props) {\n const [user, setUserInMemory] = useState<ClientUser | null>(initialUser)\n const [tokenInMemory, setTokenInMemory] = useState<string>()\n const [tokenExpiration, setTokenExpiration] = useState<number>()\n const pathname = usePathname()\n const router = useRouter()\n\n const { config } = useConfig()\n\n const {\n admin: {\n routes: { inactivity: logoutInactivityRoute },\n user: userSlug,\n },\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n } = config\n\n const [permissions, setPermissions] = useState<SanitizedPermissions>(initialPermissions)\n\n const { i18n } = useTranslation()\n const { closeAllModals, openModal } = useModal()\n const [lastLocationChange, setLastLocationChange] = useState(0)\n const debouncedLocationChange = useDebounce(lastLocationChange, 10000)\n const refreshTokenTimeoutRef = React.useRef<ReturnType<typeof setTimeout>>(null)\n const { startRouteTransition } = useRouteTransition()\n\n const id = user?.id\n\n const redirectToInactivityRoute = useCallback(() => {\n startRouteTransition(() =>\n router.replace(\n formatAdminURL({\n adminRoute,\n path: `${logoutInactivityRoute}${window.location.pathname.startsWith(adminRoute) ? `?redirect=${encodeURIComponent(window.location.pathname)}` : ''}`,\n }),\n ),\n )\n\n closeAllModals()\n }, [router, adminRoute, logoutInactivityRoute, closeAllModals, startRouteTransition])\n\n const revokeTokenAndExpire = useCallback(() => {\n setTokenInMemory(undefined)\n setTokenExpiration(undefined)\n clearTimeout(refreshTokenTimeoutRef.current)\n }, [])\n\n const setNewUser = useCallback(\n (userResponse: null | UserWithToken) => {\n if (userResponse?.user) {\n setUserInMemory(userResponse.user)\n setTokenInMemory(userResponse.token)\n setTokenExpiration(userResponse.exp)\n } else {\n setUserInMemory(null)\n revokeTokenAndExpire()\n }\n },\n [revokeTokenAndExpire],\n )\n\n const refreshCookie = useCallback(\n (forceRefresh?: boolean) => {\n const now = Math.round(new Date().getTime() / 1000)\n const remainingTime = (typeof tokenExpiration === 'number' ? tokenExpiration : 0) - now\n\n if (forceRefresh || (tokenExpiration && remainingTime < 120)) {\n refreshTokenTimeoutRef.current = setTimeout(() => {\n async function refresh() {\n try {\n const request = await requests.post(\n `${serverURL}${apiRoute}/${userSlug}/refresh-token?refresh`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n )\n\n if (request.status === 200) {\n const json = await request.json()\n setNewUser(json)\n } else {\n setNewUser(null)\n redirectToInactivityRoute()\n }\n } catch (e) {\n toast.error(e.message)\n }\n }\n\n void refresh()\n }, 1000)\n }\n\n return () => {\n clearTimeout(refreshTokenTimeoutRef.current)\n }\n },\n [\n apiRoute,\n i18n.language,\n redirectToInactivityRoute,\n serverURL,\n setNewUser,\n tokenExpiration,\n userSlug,\n ],\n )\n\n const refreshCookieAsync = useCallback(\n async (skipSetUser?: boolean): Promise<ClientUser> => {\n try {\n const request = await requests.post(`${serverURL}${apiRoute}/${userSlug}/refresh-token`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json = await request.json()\n if (!skipSetUser) {\n setNewUser(json)\n }\n return json.user\n }\n\n setNewUser(null)\n redirectToInactivityRoute()\n return null\n } catch (e) {\n toast.error(`Refreshing token failed: ${e.message}`)\n return null\n }\n },\n [apiRoute, i18n.language, redirectToInactivityRoute, serverURL, setNewUser, userSlug],\n )\n\n const logOut = useCallback(async () => {\n try {\n await requests.post(`${serverURL}${apiRoute}/${user.collection}/logout`)\n setNewUser(null)\n revokeTokenAndExpire()\n return true\n } catch (e) {\n toast.error(`Logging out failed: ${e.message}`)\n return false\n }\n }, [apiRoute, revokeTokenAndExpire, serverURL, setNewUser, user])\n\n const refreshPermissions = useCallback(\n async ({ locale }: { locale?: string } = {}) => {\n const params = qs.stringify(\n {\n locale,\n },\n {\n addQueryPrefix: true,\n },\n )\n\n try {\n const request = await requests.get(`${serverURL}${apiRoute}/access${params}`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json: SanitizedPermissions = await request.json()\n setPermissions(json)\n } else {\n throw new Error(`Fetching permissions failed with status code ${request.status}`)\n }\n } catch (e) {\n toast.error(`Refreshing permissions failed: ${e.message}`)\n }\n },\n [serverURL, apiRoute, i18n],\n )\n\n const fetchFullUser = React.useCallback(async () => {\n try {\n const request = await requests.get(`${serverURL}${apiRoute}/${userSlug}/me`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json: UserWithToken = await request.json()\n const user = null\n\n setNewUser(json)\n return user\n }\n } catch (e) {\n toast.error(`Fetching user failed: ${e.message}`)\n }\n\n return null\n }, [serverURL, apiRoute, userSlug, i18n.language, setNewUser])\n\n // On mount, get user and set\n useEffect(() => {\n void fetchFullUser()\n }, [fetchFullUser])\n\n // When location changes, refresh cookie\n useEffect(() => {\n if (id) {\n refreshCookie()\n }\n }, [debouncedLocationChange, refreshCookie, id])\n\n useEffect(() => {\n setLastLocationChange(Date.now())\n }, [pathname])\n\n useEffect(() => {\n let reminder: ReturnType<typeof setTimeout>\n let forceLogOut: ReturnType<typeof setTimeout>\n const now = Math.round(new Date().getTime() / 1000)\n const remainingTime = typeof tokenExpiration === 'number' ? tokenExpiration - now : 0\n const remindInTimeFromNow = Math.max(Math.min((remainingTime - 60) * 1000, maxTimeoutTime), 0)\n const forceLogOutInTimeFromNow = Math.max(Math.min(remainingTime * 1000, maxTimeoutTime), 0)\n\n if (!user) {\n clearTimeout(reminder)\n clearTimeout(forceLogOut)\n return\n }\n\n if (remainingTime > 0) {\n reminder = setTimeout(() => {\n openModal(stayLoggedInModalSlug)\n }, remindInTimeFromNow)\n\n forceLogOut = setTimeout(() => {\n setNewUser(null)\n redirectToInactivityRoute()\n }, forceLogOutInTimeFromNow)\n }\n\n return () => {\n if (reminder) {\n clearTimeout(reminder)\n }\n if (forceLogOut) {\n clearTimeout(forceLogOut)\n }\n }\n }, [tokenExpiration, openModal, i18n, setNewUser, user, redirectToInactivityRoute])\n\n return (\n <Context\n value={{\n fetchFullUser,\n logOut,\n permissions,\n refreshCookie,\n refreshCookieAsync,\n refreshPermissions,\n setPermissions,\n setUser: setNewUser,\n token: tokenInMemory,\n user,\n }}\n >\n {children}\n </Context>\n )\n}\n\nexport const useAuth = <T = ClientUser,>(): AuthContext<T> => use(Context) as AuthContext<T>\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/ClientFunction/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAMzB,KAAK,0BAA0B,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAUrD,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CA+B1E,CAAA;AAED,eAAO,MAAM,oBAAoB,QAAS,MAAM,QAAQ,GAAG,SAgB1D,CAAA;AAED,eAAO,MAAM,kBAAkB,kCAE9B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/ClientFunction/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAMzB,KAAK,0BAA0B,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAUrD,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CA6B1E,CAAA;AAED,eAAO,MAAM,oBAAoB,QAAS,MAAM,QAAQ,GAAG,SAgB1D,CAAA;AAED,eAAO,MAAM,kBAAkB,kCAE9B,CAAA"}
@@ -55,12 +55,12 @@ export const ClientFunctionProvider = t0 => {
55
55
  const removeClientFunction = t3;
56
56
  let t4;
57
57
  if ($[3] !== children || $[4] !== clientFunctions) {
58
- t4 = _jsx(ModifyClientFunctionContext.Provider, {
58
+ t4 = _jsx(ModifyClientFunctionContext, {
59
59
  value: {
60
60
  addClientFunction,
61
61
  removeClientFunction
62
62
  },
63
- children: _jsx(ClientFunctionsContext.Provider, {
63
+ children: _jsx(ClientFunctionsContext, {
64
64
  value: clientFunctions,
65
65
  children
66
66
  })
@@ -78,7 +78,7 @@ export const useAddClientFunction = (key, func) => {
78
78
  const {
79
79
  addClientFunction,
80
80
  removeClientFunction
81
- } = React.useContext(ModifyClientFunctionContext);
81
+ } = React.use(ModifyClientFunctionContext);
82
82
  let t0;
83
83
  let t1;
84
84
  if ($[0] !== addClientFunction || $[1] !== func || $[2] !== key || $[3] !== removeClientFunction) {
@@ -108,6 +108,6 @@ export const useAddClientFunction = (key, func) => {
108
108
  React.useEffect(t0, t1);
109
109
  };
110
110
  export const useClientFunctions = () => {
111
- return React.useContext(ClientFunctionsContext);
111
+ return React.use(ClientFunctionsContext);
112
112
  };
113
113
  //# sourceMappingURL=index.js.map