@payloadcms/ui 3.38.0 → 3.39.0-canary.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 (85) hide show
  1. package/dist/elements/AddNewRelation/index.d.ts.map +1 -1
  2. package/dist/elements/AddNewRelation/index.js +19 -12
  3. package/dist/elements/AddNewRelation/index.js.map +1 -1
  4. package/dist/elements/AddNewRelation/types.d.ts +11 -4
  5. package/dist/elements/AddNewRelation/types.d.ts.map +1 -1
  6. package/dist/elements/AddNewRelation/types.js.map +1 -1
  7. package/dist/elements/Autosave/index.d.ts.map +1 -1
  8. package/dist/elements/Autosave/index.js.map +1 -1
  9. package/dist/elements/DeleteDocument/index.js +2 -2
  10. package/dist/elements/DeleteDocument/index.js.map +1 -1
  11. package/dist/elements/DocumentDrawer/DrawerHeader/index.d.ts.map +1 -1
  12. package/dist/elements/DocumentDrawer/DrawerHeader/index.js +5 -2
  13. package/dist/elements/DocumentDrawer/DrawerHeader/index.js.map +1 -1
  14. package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts.map +1 -1
  15. package/dist/elements/PublishButton/ScheduleDrawer/index.js +5 -2
  16. package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
  17. package/dist/elements/RenderTitle/index.d.ts.map +1 -1
  18. package/dist/elements/RenderTitle/index.js +5 -2
  19. package/dist/elements/RenderTitle/index.js.map +1 -1
  20. package/dist/elements/SaveDraftButton/index.d.ts.map +1 -1
  21. package/dist/elements/SaveDraftButton/index.js.map +1 -1
  22. package/dist/elements/Status/index.d.ts.map +1 -1
  23. package/dist/elements/Status/index.js.map +1 -1
  24. package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
  25. package/dist/elements/Table/OrderableTable.js +3 -0
  26. package/dist/elements/Table/OrderableTable.js.map +1 -1
  27. package/dist/exports/client/index.d.ts +2 -1
  28. package/dist/exports/client/index.d.ts.map +1 -1
  29. package/dist/exports/client/index.js +11 -11
  30. package/dist/exports/client/index.js.map +4 -4
  31. package/dist/exports/shared/index.js.map +2 -2
  32. package/dist/fields/Group/index.js +1 -1
  33. package/dist/fields/Group/index.js.map +1 -1
  34. package/dist/fields/Relationship/Input.d.ts +5 -0
  35. package/dist/fields/Relationship/Input.d.ts.map +1 -0
  36. package/dist/fields/Relationship/Input.js +721 -0
  37. package/dist/fields/Relationship/Input.js.map +1 -0
  38. package/dist/fields/Relationship/createRelationMap.d.ts +3 -5
  39. package/dist/fields/Relationship/createRelationMap.d.ts.map +1 -1
  40. package/dist/fields/Relationship/createRelationMap.js +21 -34
  41. package/dist/fields/Relationship/createRelationMap.js.map +1 -1
  42. package/dist/fields/Relationship/findOptionsByValue.d.ts +3 -2
  43. package/dist/fields/Relationship/findOptionsByValue.d.ts.map +1 -1
  44. package/dist/fields/Relationship/findOptionsByValue.js +2 -8
  45. package/dist/fields/Relationship/findOptionsByValue.js.map +1 -1
  46. package/dist/fields/Relationship/index.d.ts +4 -1
  47. package/dist/fields/Relationship/index.d.ts.map +1 -1
  48. package/dist/fields/Relationship/index.js +100 -631
  49. package/dist/fields/Relationship/index.js.map +1 -1
  50. package/dist/fields/Relationship/optionsReducer.d.ts.map +1 -1
  51. package/dist/fields/Relationship/optionsReducer.js +1 -1
  52. package/dist/fields/Relationship/optionsReducer.js.map +1 -1
  53. package/dist/fields/Relationship/types.d.ts +51 -6
  54. package/dist/fields/Relationship/types.d.ts.map +1 -1
  55. package/dist/fields/Relationship/types.js.map +1 -1
  56. package/dist/hooks/useDebouncedCallback.d.ts +1 -1
  57. package/dist/hooks/useDebouncedCallback.d.ts.map +1 -1
  58. package/dist/hooks/useDebouncedCallback.js.map +1 -1
  59. package/dist/providers/DocumentInfo/index.d.ts +1 -1
  60. package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
  61. package/dist/providers/DocumentInfo/index.js +14 -3
  62. package/dist/providers/DocumentInfo/index.js.map +1 -1
  63. package/dist/providers/DocumentInfo/types.d.ts +22 -2
  64. package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
  65. package/dist/providers/DocumentInfo/types.js +2 -1
  66. package/dist/providers/DocumentInfo/types.js.map +1 -1
  67. package/dist/providers/DocumentTitle/context.d.ts +2 -0
  68. package/dist/providers/DocumentTitle/context.d.ts.map +1 -0
  69. package/dist/providers/DocumentTitle/context.js +2 -0
  70. package/dist/providers/DocumentTitle/context.js.map +1 -0
  71. package/dist/providers/DocumentTitle/index.d.ts +10 -0
  72. package/dist/providers/DocumentTitle/index.d.ts.map +1 -0
  73. package/dist/providers/DocumentTitle/index.js +62 -0
  74. package/dist/providers/DocumentTitle/index.js.map +1 -0
  75. package/dist/styles.css +1 -1
  76. package/dist/utilities/formatDocTitle/index.d.ts.map +1 -1
  77. package/dist/utilities/formatDocTitle/index.js.map +1 -1
  78. package/dist/views/Edit/Auth/index.d.ts.map +1 -1
  79. package/dist/views/Edit/Auth/index.js.map +1 -1
  80. package/dist/views/Edit/SetDocumentStepNav/index.d.ts.map +1 -1
  81. package/dist/views/Edit/SetDocumentStepNav/index.js +5 -2
  82. package/dist/views/Edit/SetDocumentStepNav/index.js.map +1 -1
  83. package/dist/views/Edit/SetDocumentTitle/index.js +2 -2
  84. package/dist/views/Edit/SetDocumentTitle/index.js.map +1 -1
  85. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["dequal","formatAdminURL","wordBoundariesRegex","qs","useCallback","useEffect","useMemo","useReducer","useRef","useState","AddNewRelation","useDocumentDrawer","useListDrawer","ReactSelect","RenderCustomComponent","FieldDescription","FieldError","FieldLabel","useField","withCondition","useDebouncedCallback","useEffectEvent","useAuth","useConfig","useLocale","useTranslation","sanitizeFilterOptionsQuery","mergeFieldStyles","fieldBaseClass","createRelationMap","findOptionsByValue","optionsReducer","MultiValueLabel","SingleValue","maxResultsPerRequest","baseClass","RelationshipFieldComponent","props","field","admin","allowCreate","allowEdit","appearance","className","description","isSortable","placeholder","sortOptions","hasMany","label","localized","relationTo","required","path","pathFromProps","readOnly","validate","config","getEntityConfig","routes","api","serverURL","i18n","t","permissions","code","locale","hasMultipleRelations","Array","isArray","currentlyOpenRelationship","setCurrentlyOpenRelationship","id","undefined","collectionSlug","hasReadPermission","lastFullyLoadedRelation","setLastFullyLoadedRelation","lastLoadedPage","setLastLoadedPage","errorLoading","setErrorLoading","search","setSearch","isLoading","setIsLoading","enableWordBoundarySearch","setEnableWordBoundarySearch","menuIsOpen","setMenuIsOpen","hasLoadedFirstPageRef","memoizedValidate","value","validationOptions","customComponents","AfterInput","BeforeInput","Description","Error","Label","disabled","filterOptions","initialValue","setValue","showError","potentiallyStalePath","options","dispatchOptions","valueRef","current","DocumentDrawer","isDrawerOpen","openDrawer","listDrawerFilterOptions","newFilterOptions","valuesByRelation","reduce","acc","val","push","relation","forEach","not_in","ListDrawer","closeDrawer","closeListDrawer","isListDrawerOpen","openListDrawer","collectionSlugs","onListSelect","doc","formattedSelection","withSelection","openDrawerWhenRelationChanges","getResults","lastFullyLoadedRelationArg","lastLoadedPageArg","onSuccess","searchArg","sort","valueArg","lastFullyLoadedRelationToUse","relations","relationsToFetch","slice","resultsFetched","relationMap","priorRelation","relationFilterOption","lastLoadedPageToUse","indexOf","Promise","resolve","collection","fieldToSearch","useAsTitle","fieldToSort","defaultSort","query","depth","draft","limit","page","select","where","and","like","response","fetch","body","stringify","credentials","headers","language","method","ok","data","json","prevState","nextPage","docs","length","type","status","ids","updateSearch","handleInputChange","handleValueChange","Object","entries","idsToLoad","filter","find","optionGroup","option","in","prevValue","isFirstRenderRef","isIdOnly","idOnly","getResultsEffectEvent","args","exemptValues","onSave","collectionConfig","currentValue","docID","unchanged","some","valuesToSet","map","slug","onDuplicate","concat","onDelete","filterOption","item","searchFilter","r","breakApartThreshold","labelString","String","indexOfSpace","test","onDocumentOpen","openInNewTab","docUrl","adminRoute","window","open","valueToRender","styles","_jsxs","Boolean","join","replace","style","_jsx","CustomComponent","Fallback","backspaceRemovesValue","components","DropdownIndicator","customProps","disableKeyDown","disableMouseDown","getOptionValue","isMulti","isSearchable","onChange","selected","onInputChange","newSearch","onMenuClose","onMenuOpen","onMenuScrollToBottom","enableRowSelections","onSelect","RelationshipField"],"sources":["../../../src/fields/Relationship/index.tsx"],"sourcesContent":["'use client'\nimport type {\n FilterOptionsResult,\n PaginatedDocs,\n RelationshipFieldClientComponent,\n Where,\n} from 'payload'\n\nimport { dequal } from 'dequal/lite'\nimport { formatAdminURL, wordBoundariesRegex } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport { useCallback, useEffect, useMemo, useReducer, useRef, useState } from 'react'\n\nimport type { DocumentDrawerProps } from '../../elements/DocumentDrawer/types.js'\nimport type { ListDrawerProps } from '../../elements/ListDrawer/types.js'\nimport type { ReactSelectAdapterProps } from '../../elements/ReactSelect/types.js'\nimport type { GetResults, Option, Value } from './types.js'\n\nimport { AddNewRelation } from '../../elements/AddNewRelation/index.js'\nimport { useDocumentDrawer } from '../../elements/DocumentDrawer/index.js'\nimport { useListDrawer } from '../../elements/ListDrawer/index.js'\nimport { ReactSelect } from '../../elements/ReactSelect/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useDebouncedCallback } from '../../hooks/useDebouncedCallback.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport './index.scss'\nimport { sanitizeFilterOptionsQuery } from '../../utilities/sanitizeFilterOptionsQuery.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport { createRelationMap } from './createRelationMap.js'\nimport { findOptionsByValue } from './findOptionsByValue.js'\nimport { optionsReducer } from './optionsReducer.js'\nimport { MultiValueLabel } from './select-components/MultiValueLabel/index.js'\nimport { SingleValue } from './select-components/SingleValue/index.js'\n\nconst maxResultsPerRequest = 10\n\nconst baseClass = 'relationship'\n\nconst RelationshipFieldComponent: RelationshipFieldClientComponent = (props) => {\n const {\n field,\n field: {\n admin: {\n allowCreate = true,\n allowEdit = true,\n appearance = 'select',\n className,\n description,\n isSortable = true,\n placeholder,\n sortOptions,\n } = {},\n hasMany,\n label,\n localized,\n relationTo,\n required,\n },\n path: pathFromProps,\n readOnly,\n validate,\n } = props\n\n const { config, getEntityConfig } = useConfig()\n\n const {\n routes: { api },\n serverURL,\n } = config\n\n const { i18n, t } = useTranslation()\n const { permissions } = useAuth()\n const { code: locale } = useLocale()\n const hasMultipleRelations = Array.isArray(relationTo)\n\n const [currentlyOpenRelationship, setCurrentlyOpenRelationship] = useState<\n Parameters<ReactSelectAdapterProps['customProps']['onDocumentOpen']>[0]\n >({\n id: undefined,\n collectionSlug: undefined,\n hasReadPermission: false,\n })\n\n const [lastFullyLoadedRelation, setLastFullyLoadedRelation] = useState(-1)\n const [lastLoadedPage, setLastLoadedPage] = useState<Record<string, number>>({})\n const [errorLoading, setErrorLoading] = useState('')\n const [search, setSearch] = useState('')\n const [isLoading, setIsLoading] = useState(false)\n const [enableWordBoundarySearch, setEnableWordBoundarySearch] = useState(false)\n const [menuIsOpen, setMenuIsOpen] = useState(false)\n const hasLoadedFirstPageRef = useRef(false)\n\n const memoizedValidate = useCallback(\n (value, validationOptions) => {\n if (typeof validate === 'function') {\n return validate(value, { ...validationOptions, required })\n }\n },\n [validate, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n filterOptions,\n initialValue,\n path,\n setValue,\n showError,\n value,\n } = useField<Value | Value[]>({\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const [options, dispatchOptions] = useReducer(optionsReducer, [])\n\n const valueRef = useRef(value)\n valueRef.current = value\n\n const [DocumentDrawer, , { isDrawerOpen, openDrawer }] = useDocumentDrawer({\n id: currentlyOpenRelationship.id,\n collectionSlug: currentlyOpenRelationship.collectionSlug,\n })\n\n // Filter selected values from displaying in the list drawer\n const listDrawerFilterOptions = useMemo<FilterOptionsResult>(() => {\n let newFilterOptions = filterOptions\n\n if (value) {\n const valuesByRelation = (Array.isArray(value) ? value : [value]).reduce((acc, val) => {\n if (typeof val === 'object' && val.relationTo) {\n if (!acc[val.relationTo]) {\n acc[val.relationTo] = []\n }\n acc[val.relationTo].push(val.value)\n } else if (val) {\n const relation = Array.isArray(relationTo) ? undefined : relationTo\n if (relation) {\n if (!acc[relation]) {\n acc[relation] = []\n }\n acc[relation].push(val)\n }\n }\n return acc\n }, {})\n\n ;(Array.isArray(relationTo) ? relationTo : [relationTo]).forEach((relation) => {\n newFilterOptions = {\n ...(newFilterOptions || {}),\n [relation]: {\n ...(typeof filterOptions?.[relation] === 'object' ? filterOptions[relation] : {}),\n ...(valuesByRelation[relation]\n ? {\n id: {\n not_in: valuesByRelation[relation],\n },\n }\n : {}),\n },\n }\n })\n }\n\n return newFilterOptions\n }, [filterOptions, value, relationTo])\n\n const [\n ListDrawer,\n ,\n { closeDrawer: closeListDrawer, isDrawerOpen: isListDrawerOpen, openDrawer: openListDrawer },\n ] = useListDrawer({\n collectionSlugs: hasMultipleRelations ? relationTo : [relationTo],\n filterOptions: listDrawerFilterOptions,\n })\n\n const onListSelect = useCallback<NonNullable<ListDrawerProps['onSelect']>>(\n ({ collectionSlug, doc }) => {\n const formattedSelection = hasMultipleRelations\n ? {\n relationTo: collectionSlug,\n value: doc.id,\n }\n : doc.id\n\n if (hasMany) {\n const withSelection = Array.isArray(value) ? value : []\n setValue([...withSelection, formattedSelection])\n } else {\n setValue(formattedSelection)\n }\n\n closeListDrawer()\n },\n [hasMany, hasMultipleRelations, setValue, closeListDrawer, value],\n )\n\n const openDrawerWhenRelationChanges = useRef(false)\n\n const getResults: GetResults = useCallback(\n async ({\n filterOptions,\n lastFullyLoadedRelation: lastFullyLoadedRelationArg,\n lastLoadedPage: lastLoadedPageArg,\n onSuccess,\n search: searchArg,\n sort,\n value: valueArg,\n }) => {\n if (!permissions) {\n return\n }\n const lastFullyLoadedRelationToUse =\n typeof lastFullyLoadedRelationArg !== 'undefined' ? lastFullyLoadedRelationArg : -1\n\n const relations = Array.isArray(relationTo) ? relationTo : [relationTo]\n const relationsToFetch =\n lastFullyLoadedRelationToUse === -1\n ? relations\n : relations.slice(lastFullyLoadedRelationToUse + 1)\n\n let resultsFetched = 0\n const relationMap = createRelationMap({\n hasMany,\n relationTo,\n value: valueArg,\n })\n\n if (!errorLoading) {\n await relationsToFetch.reduce(async (priorRelation, relation) => {\n const relationFilterOption = filterOptions?.[relation]\n\n let lastLoadedPageToUse\n if (search !== searchArg) {\n lastLoadedPageToUse = 1\n } else {\n lastLoadedPageToUse = lastLoadedPageArg[relation] + 1\n }\n await priorRelation\n\n if (relationFilterOption === false) {\n setLastFullyLoadedRelation(relations.indexOf(relation))\n return Promise.resolve()\n }\n\n if (resultsFetched < 10) {\n const collection = getEntityConfig({ collectionSlug: relation })\n const fieldToSearch = collection?.admin?.useAsTitle || 'id'\n let fieldToSort = collection?.defaultSort || 'id'\n if (typeof sortOptions === 'string') {\n fieldToSort = sortOptions\n } else if (sortOptions?.[relation]) {\n fieldToSort = sortOptions[relation]\n }\n\n const query: {\n [key: string]: unknown\n where: Where\n } = {\n depth: 0,\n draft: true,\n limit: maxResultsPerRequest,\n locale,\n page: lastLoadedPageToUse,\n select: {\n [fieldToSearch]: true,\n },\n sort: fieldToSort,\n where: {\n and: [\n {\n id: {\n not_in: relationMap[relation],\n },\n },\n ],\n },\n }\n\n if (searchArg) {\n query.where.and.push({\n [fieldToSearch]: {\n like: searchArg,\n },\n })\n }\n\n if (relationFilterOption && typeof relationFilterOption !== 'boolean') {\n query.where.and.push(relationFilterOption)\n }\n\n sanitizeFilterOptionsQuery(query.where)\n\n const response = await fetch(`${serverURL}${api}/${relation}`, {\n body: qs.stringify(query),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'X-HTTP-Method-Override': 'GET',\n },\n method: 'POST',\n })\n\n if (response.ok) {\n const data: PaginatedDocs<unknown> = await response.json()\n setLastLoadedPage((prevState) => {\n return {\n ...prevState,\n [relation]: lastLoadedPageToUse,\n }\n })\n\n if (!data.nextPage) {\n setLastFullyLoadedRelation(relations.indexOf(relation))\n }\n\n if (data.docs.length > 0) {\n resultsFetched += data.docs.length\n\n dispatchOptions({\n type: 'ADD',\n collection,\n config,\n docs: data.docs,\n i18n,\n sort,\n })\n }\n } else if (response.status === 403) {\n setLastFullyLoadedRelation(relations.indexOf(relation))\n dispatchOptions({\n type: 'ADD',\n collection,\n config,\n docs: [],\n i18n,\n ids: relationMap[relation],\n sort,\n })\n } else {\n setErrorLoading(t('error:unspecific'))\n }\n }\n }, Promise.resolve())\n\n if (typeof onSuccess === 'function') {\n onSuccess()\n }\n }\n },\n [\n permissions,\n relationTo,\n hasMany,\n errorLoading,\n search,\n getEntityConfig,\n locale,\n serverURL,\n sortOptions,\n api,\n i18n,\n config,\n t,\n ],\n )\n\n const updateSearch = useDebouncedCallback((searchArg: string, valueArg: Value | Value[]) => {\n void getResults({\n filterOptions,\n lastLoadedPage: {},\n search: searchArg,\n sort: true,\n value: valueArg,\n })\n setSearch(searchArg)\n }, 300)\n\n const handleInputChange = useCallback(\n (searchArg: string, valueArg: Value | Value[]) => {\n if (search !== searchArg) {\n setLastLoadedPage({})\n updateSearch(searchArg, valueArg, searchArg !== '')\n }\n },\n [search, updateSearch],\n )\n\n const handleValueChange = useEffectEvent((value: Value | Value[]) => {\n const relationMap = createRelationMap({\n hasMany,\n relationTo,\n value,\n })\n\n void Object.entries(relationMap).reduce(async (priorRelation, [relation, ids]) => {\n await priorRelation\n\n const idsToLoad = ids.filter((id) => {\n return !options.find((optionGroup) =>\n optionGroup?.options?.find(\n (option) => option.value === id && option.relationTo === relation,\n ),\n )\n })\n\n if (idsToLoad.length > 0) {\n const query = {\n depth: 0,\n draft: true,\n limit: idsToLoad.length,\n locale,\n where: {\n id: {\n in: idsToLoad,\n },\n },\n }\n\n if (!errorLoading) {\n const response = await fetch(`${serverURL}${api}/${relation}`, {\n body: qs.stringify(query),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'X-HTTP-Method-Override': 'GET',\n },\n method: 'POST',\n })\n\n const collection = getEntityConfig({ collectionSlug: relation })\n let docs = []\n\n if (response.ok) {\n const data = await response.json()\n docs = data.docs\n }\n\n dispatchOptions({\n type: 'ADD',\n collection,\n config,\n docs,\n i18n,\n ids: idsToLoad,\n sort: true,\n })\n }\n }\n }, Promise.resolve())\n })\n\n const prevValue = useRef(value)\n const isFirstRenderRef = useRef(true)\n // ///////////////////////////////////\n // Ensure we have an option for each value\n // ///////////////////////////////////\n useEffect(() => {\n if (isFirstRenderRef.current || !dequal(value, prevValue.current)) {\n handleValueChange(value)\n }\n isFirstRenderRef.current = false\n prevValue.current = value\n }, [value])\n\n // Determine if we should switch to word boundary search\n useEffect(() => {\n const relations = Array.isArray(relationTo) ? relationTo : [relationTo]\n const isIdOnly = relations.reduce((idOnly, relation) => {\n const collection = getEntityConfig({ collectionSlug: relation })\n const fieldToSearch = collection?.admin?.useAsTitle || 'id'\n return fieldToSearch === 'id' && idOnly\n }, true)\n setEnableWordBoundarySearch(!isIdOnly)\n }, [relationTo, getEntityConfig])\n\n const getResultsEffectEvent: GetResults = useEffectEvent(async (args) => {\n return await getResults(args)\n })\n\n // When (`relationTo` || `filterOptions` || `locale`) changes, reset component\n // Note - effect should not run on first run\n useEffect(() => {\n // If the menu is open while filterOptions changes\n // due to latency of form state and fast clicking into this field,\n // re-fetch options\n if (hasLoadedFirstPageRef.current && menuIsOpen) {\n setIsLoading(true)\n void getResultsEffectEvent({\n filterOptions,\n lastLoadedPage: {},\n onSuccess: () => {\n hasLoadedFirstPageRef.current = true\n setIsLoading(false)\n },\n value: valueRef.current,\n })\n }\n\n // If the menu is not open, still reset the field state\n // because we need to get new options next time the menu opens\n dispatchOptions({\n type: 'CLEAR',\n exemptValues: valueRef.current,\n })\n\n setLastFullyLoadedRelation(-1)\n setLastLoadedPage({})\n }, [relationTo, filterOptions, locale, path, menuIsOpen])\n\n const onSave = useCallback<DocumentDrawerProps['onSave']>(\n (args) => {\n dispatchOptions({\n type: 'UPDATE',\n collection: args.collectionConfig,\n config,\n doc: args.doc,\n i18n,\n })\n\n const currentValue = valueRef.current\n const docID = args.doc.id\n\n if (hasMany) {\n const unchanged = (currentValue as Option[]).some((option) =>\n typeof option === 'string' ? option === docID : option.value === docID,\n )\n\n const valuesToSet = (currentValue as Option[]).map((option) =>\n option.value === docID\n ? { relationTo: args.collectionConfig.slug, value: docID }\n : option,\n )\n\n setValue(valuesToSet, unchanged)\n } else {\n const unchanged = currentValue === docID\n\n setValue({ relationTo: args.collectionConfig.slug, value: docID }, unchanged)\n }\n },\n [i18n, config, hasMany, setValue],\n )\n\n const onDuplicate = useCallback<DocumentDrawerProps['onDuplicate']>(\n (args) => {\n dispatchOptions({\n type: 'ADD',\n collection: args.collectionConfig,\n config,\n docs: [args.doc],\n i18n,\n sort: true,\n })\n\n if (hasMany) {\n setValue(\n valueRef.current\n ? (valueRef.current as Option[]).concat({\n relationTo: args.collectionConfig.slug,\n value: args.doc.id,\n } as Option)\n : null,\n )\n } else {\n setValue({\n relationTo: args.collectionConfig.slug,\n value: args.doc.id,\n })\n }\n },\n [i18n, config, hasMany, setValue],\n )\n\n const onDelete = useCallback<DocumentDrawerProps['onDelete']>(\n (args) => {\n dispatchOptions({\n id: args.id,\n type: 'REMOVE',\n collection: args.collectionConfig,\n config,\n i18n,\n })\n\n if (hasMany) {\n setValue(\n valueRef.current\n ? (valueRef.current as Option[]).filter((option) => {\n return option.value !== args.id\n })\n : null,\n )\n } else {\n setValue(null)\n }\n\n return\n },\n [i18n, config, hasMany, setValue],\n )\n\n const filterOption = useCallback((item: Option, searchFilter: string) => {\n if (!searchFilter) {\n return true\n }\n const r = wordBoundariesRegex(searchFilter || '')\n // breaking the labels to search into smaller parts increases performance\n const breakApartThreshold = 250\n let labelString = String(item.label)\n // strings less than breakApartThreshold length won't be chunked\n while (labelString.length > breakApartThreshold) {\n // slicing by the next space after the length of the search input prevents slicing the string up by partial words\n const indexOfSpace = labelString.indexOf(' ', searchFilter.length)\n if (\n r.test(labelString.slice(0, indexOfSpace === -1 ? searchFilter.length : indexOfSpace + 1))\n ) {\n return true\n }\n labelString = labelString.slice(indexOfSpace === -1 ? searchFilter.length : indexOfSpace + 1)\n }\n return r.test(labelString.slice(-breakApartThreshold))\n }, [])\n\n const onDocumentOpen = useCallback<ReactSelectAdapterProps['customProps']['onDocumentOpen']>(\n ({ id, collectionSlug, hasReadPermission, openInNewTab }) => {\n if (openInNewTab) {\n if (hasReadPermission && id && collectionSlug) {\n const docUrl = formatAdminURL({\n adminRoute: config.routes.admin,\n path: `/collections/${collectionSlug}/${id}`,\n })\n\n window.open(docUrl, '_blank')\n }\n } else {\n openDrawerWhenRelationChanges.current = true\n\n setCurrentlyOpenRelationship({\n id,\n collectionSlug,\n hasReadPermission,\n })\n }\n },\n [setCurrentlyOpenRelationship, config.routes.admin],\n )\n\n useEffect(() => {\n if (openDrawerWhenRelationChanges.current) {\n openDrawer()\n openDrawerWhenRelationChanges.current = false\n }\n }, [openDrawer, currentlyOpenRelationship])\n\n const valueToRender = findOptionsByValue({ allowEdit, options, value })\n\n if (!Array.isArray(valueToRender) && valueToRender?.value === 'null') {\n valueToRender.value = null\n }\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n showError && 'error',\n errorLoading && 'error-loading',\n (readOnly || disabled) && `${baseClass}--read-only`,\n !(readOnly || disabled) && allowCreate && `${baseClass}--allow-create`,\n ]\n .filter(Boolean)\n .join(' ')}\n id={`field-${path.replace(/\\./g, '__')}`}\n style={styles}\n >\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n }\n />\n <div className={`${fieldBaseClass}__wrap`}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n {BeforeInput}\n {!errorLoading && (\n <div className={`${baseClass}__wrap`}>\n <ReactSelect\n backspaceRemovesValue={!(isDrawerOpen || isListDrawerOpen)}\n components={{\n MultiValueLabel,\n SingleValue,\n ...(appearance !== 'select' && { DropdownIndicator: null }),\n }}\n customProps={{\n disableKeyDown: isDrawerOpen || isListDrawerOpen,\n disableMouseDown: isDrawerOpen || isListDrawerOpen,\n onDocumentOpen,\n onSave,\n }}\n disabled={readOnly || disabled || isDrawerOpen || isListDrawerOpen}\n filterOption={enableWordBoundarySearch ? filterOption : undefined}\n getOptionValue={(option) => {\n if (!option) {\n return undefined\n }\n return hasMany && Array.isArray(relationTo)\n ? `${option.relationTo}_${option.value}`\n : (option.value as string)\n }}\n isLoading={appearance === 'select' && isLoading}\n isMulti={hasMany}\n isSearchable={appearance === 'select'}\n isSortable={isSortable}\n menuIsOpen={appearance === 'select' ? menuIsOpen : false}\n onChange={\n !(readOnly || disabled)\n ? (selected) => {\n if (selected === null) {\n setValue(hasMany ? [] : null)\n } else if (hasMany && Array.isArray(selected)) {\n setValue(\n selected\n ? selected.map((option) => {\n if (hasMultipleRelations) {\n return {\n relationTo: option.relationTo,\n value: option.value,\n }\n }\n\n return option.value\n })\n : null,\n )\n } else if (hasMultipleRelations && !Array.isArray(selected)) {\n setValue({\n relationTo: selected.relationTo,\n value: selected.value,\n })\n } else if (!Array.isArray(selected)) {\n setValue(selected.value)\n }\n }\n : undefined\n }\n onInputChange={(newSearch) => handleInputChange(newSearch, value)}\n onMenuClose={() => {\n setMenuIsOpen(false)\n }}\n onMenuOpen={() => {\n if (appearance === 'drawer') {\n openListDrawer()\n } else if (appearance === 'select') {\n setMenuIsOpen(true)\n if (!hasLoadedFirstPageRef.current) {\n setIsLoading(true)\n void getResults({\n filterOptions,\n lastLoadedPage: {},\n onSuccess: () => {\n hasLoadedFirstPageRef.current = true\n setIsLoading(false)\n },\n value: initialValue,\n })\n }\n }\n }}\n onMenuScrollToBottom={() => {\n void getResults({\n filterOptions,\n lastFullyLoadedRelation,\n lastLoadedPage,\n search,\n sort: false,\n value: initialValue,\n })\n }}\n options={options}\n placeholder={placeholder}\n showError={showError}\n value={valueToRender ?? null}\n />\n {!(readOnly || disabled) && allowCreate && (\n <AddNewRelation\n hasMany={hasMany}\n path={path}\n relationTo={relationTo}\n setValue={setValue}\n value={value}\n />\n )}\n </div>\n )}\n {errorLoading && <div className={`${baseClass}__error-loading`}>{errorLoading}</div>}\n {AfterInput}\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n {currentlyOpenRelationship.collectionSlug && currentlyOpenRelationship.hasReadPermission && (\n <DocumentDrawer onDelete={onDelete} onDuplicate={onDuplicate} onSave={onSave} />\n )}\n {appearance === 'drawer' && !readOnly && (\n <ListDrawer allowCreate={allowCreate} enableRowSelections={false} onSelect={onListSelect} />\n )}\n </div>\n )\n}\n\nexport const RelationshipField = withCondition(RelationshipFieldComponent)\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","useCallback","useMemo","useField","withCondition","mergeFieldStyles","RelationshipInput","RelationshipFieldComponent","props","field","admin","allowCreate","allowEdit","appearance","className","description","isSortable","placeholder","sortOptions","hasMany","label","localized","relationTo","relationToProp","required","path","pathFromProps","readOnly","validate","memoizedValidate","value","validationOptions","customComponents","AfterInput","BeforeInput","Description","Error","Label","disabled","filterOptions","initialValue","setValue","showError","potentiallyStalePath","styles","isPolymorphic","Array","isArray","useState","handleChangeHasMulti","newValue","disableFormModication","length","every","val","idx","newVal","dataToSet","map","handleChangeSingle","memoizedValue","memoizedInitialValue","_jsx","maxResultsPerRequest","maxRows","minRows","style","onChange","RelationshipField"],"sources":["../../../src/fields/Relationship/index.tsx"],"sourcesContent":["'use client'\nimport type { RelationshipFieldClientComponent, ValueWithRelation } from 'payload'\n\nimport React, { useCallback, useMemo } from 'react'\n\nimport type { PolymorphicRelationValue, Value } from './types.js'\n\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport { RelationshipInput } from './Input.js'\nimport './index.scss'\n\nexport { RelationshipInput }\n\nconst RelationshipFieldComponent: RelationshipFieldClientComponent = (props) => {\n const {\n field,\n field: {\n admin: {\n allowCreate = true,\n allowEdit = true,\n appearance = 'select',\n className,\n description,\n isSortable = true,\n placeholder,\n sortOptions,\n } = {},\n hasMany,\n label,\n localized,\n relationTo: relationToProp,\n required,\n },\n path: pathFromProps,\n readOnly,\n validate,\n } = props\n\n const memoizedValidate = useCallback(\n (value, validationOptions) => {\n if (typeof validate === 'function') {\n return validate(value, { ...validationOptions, required })\n }\n },\n [validate, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n filterOptions,\n initialValue,\n path,\n setValue,\n showError,\n value,\n } = useField<Value>({\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n const isPolymorphic = Array.isArray(relationToProp)\n const [relationTo] = React.useState(() =>\n Array.isArray(relationToProp) ? relationToProp : [relationToProp],\n )\n\n const handleChangeHasMulti = useCallback(\n (newValue: ValueWithRelation[]) => {\n if (!newValue) {\n setValue(null, newValue === value)\n return\n }\n\n let disableFormModication = false\n if (isPolymorphic) {\n disableFormModication =\n Array.isArray(value) &&\n Array.isArray(newValue) &&\n value.length === newValue.length &&\n (value as PolymorphicRelationValue[]).every((val, idx) => {\n const newVal = newValue[idx]\n return val.value === newVal.value && val.relationTo === newVal.relationTo\n })\n } else {\n disableFormModication =\n Array.isArray(value) &&\n Array.isArray(newValue) &&\n value.length === newValue.length &&\n value.every((val, idx) => val === newValue[idx].value)\n }\n\n const dataToSet = newValue.map((val) => {\n if (isPolymorphic) {\n return val\n } else {\n return val.value\n }\n })\n setValue(dataToSet, disableFormModication)\n },\n [isPolymorphic, setValue, value],\n )\n\n const handleChangeSingle = useCallback(\n (newValue: ValueWithRelation) => {\n if (!newValue) {\n setValue(null, newValue === value)\n return\n }\n\n let disableFormModication = false\n if (isPolymorphic) {\n disableFormModication =\n value &&\n newValue &&\n (value as PolymorphicRelationValue).value === newValue.value &&\n (value as PolymorphicRelationValue).relationTo === newValue.relationTo\n } else {\n disableFormModication = value && newValue && value === newValue.value\n }\n\n const dataToSet = isPolymorphic ? newValue : newValue.value\n setValue(dataToSet, disableFormModication)\n },\n [isPolymorphic, setValue, value],\n )\n\n const memoizedValue: ValueWithRelation | ValueWithRelation[] = React.useMemo(() => {\n if (hasMany === true) {\n return (\n Array.isArray(value)\n ? value.map((val) => {\n return isPolymorphic\n ? val\n : {\n relationTo: Array.isArray(relationTo) ? relationTo[0] : relationTo,\n value: val,\n }\n })\n : value\n ) as ValueWithRelation[]\n } else {\n return (\n value\n ? isPolymorphic\n ? value\n : {\n relationTo: Array.isArray(relationTo) ? relationTo[0] : relationTo,\n value,\n }\n : value\n ) as ValueWithRelation\n }\n }, [hasMany, value, isPolymorphic, relationTo])\n\n const memoizedInitialValue: ValueWithRelation | ValueWithRelation[] = React.useMemo(() => {\n if (hasMany === true) {\n return (\n Array.isArray(initialValue)\n ? initialValue.map((val) => {\n return isPolymorphic\n ? val\n : {\n relationTo: Array.isArray(relationTo) ? relationTo[0] : relationTo,\n value: val,\n }\n })\n : initialValue\n ) as ValueWithRelation[]\n } else {\n return (\n initialValue\n ? isPolymorphic\n ? initialValue\n : {\n relationTo: Array.isArray(relationTo) ? relationTo[0] : relationTo,\n value: initialValue,\n }\n : initialValue\n ) as ValueWithRelation\n }\n }, [initialValue, isPolymorphic, relationTo, hasMany])\n\n return (\n <RelationshipInput\n AfterInput={AfterInput}\n allowCreate={allowCreate}\n allowEdit={allowEdit}\n appearance={appearance}\n BeforeInput={BeforeInput}\n className={className}\n Description={Description}\n description={description}\n Error={Error}\n filterOptions={filterOptions}\n isSortable={isSortable}\n Label={Label}\n label={label}\n localized={localized}\n maxResultsPerRequest={10}\n maxRows={field?.maxRows}\n minRows={field?.minRows}\n path={path}\n placeholder={placeholder}\n readOnly={readOnly || disabled}\n relationTo={relationTo}\n required={required}\n showError={showError}\n sortOptions={sortOptions as any}\n style={styles}\n {...(hasMany === true\n ? {\n hasMany: true,\n initialValue: memoizedInitialValue as ValueWithRelation[],\n onChange: handleChangeHasMulti,\n value: memoizedValue as ValueWithRelation[],\n }\n : {\n hasMany: false,\n initialValue: memoizedInitialValue as ValueWithRelation,\n onChange: handleChangeSingle,\n value: memoizedValue as ValueWithRelation,\n })}\n />\n )\n}\n\nexport const RelationshipField = withCondition(RelationshipFieldComponent)\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"optionsReducer.d.ts","sourceRoot":"","sources":["../../../src/fields/Relationship/optionsReducer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAU,WAAW,EAAE,MAAM,YAAY,CAAA;AAyB7D,eAAO,MAAM,cAAc,UAAW,WAAW,EAAE,UAAU,MAAM,KAAG,WAAW,EAkJhF,CAAA"}
1
+ {"version":3,"file":"optionsReducer.d.ts","sourceRoot":"","sources":["../../../src/fields/Relationship/optionsReducer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAU,WAAW,EAAE,MAAM,YAAY,CAAA;AAyB7D,eAAO,MAAM,cAAc,UAAW,WAAW,EAAE,UAAU,MAAM,KAAG,WAAW,EA+IhF,CAAA"}
@@ -86,7 +86,7 @@ export const optionsReducer = (state, action) => {
86
86
  const clearedOptions = optionGroup.options.filter(option => {
87
87
  if (exemptValues) {
88
88
  return exemptValues.some(exemptValue => {
89
- return exemptValue && option.value === (typeof exemptValue === 'object' ? exemptValue.value : exemptValue);
89
+ return exemptValue && option.value === exemptValue.value;
90
90
  });
91
91
  }
92
92
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"optionsReducer.js","names":["getTranslation","formatDocTitle","reduceToIDs","options","reduce","ids","option","id","value","relationTo","sortOptions","sort","a","b","label","localeCompare","optionsReducer","state","action","type","collection","config","docs","i18n","relation","slug","loadedIDs","newOptions","optionsToAddTo","find","optionGroup","labels","plural","newSubOptions","docSubOptions","doc","filter","item","length","push","docTitle","collectionConfig","data","dateFormat","admin","fallback","t","forEach","allowEdit","subOptions","exemptValues","Array","isArray","clearedStateWithExemptValues","clearedOptions","some","exemptValue","indexOfGroup","findIndex","foundOptionGroup","foundOption"],"sources":["../../../src/fields/Relationship/optionsReducer.ts"],"sourcesContent":["'use client'\nimport { getTranslation } from '@payloadcms/translations'\n\nimport type { Action, Option, OptionGroup } from './types.js'\n\nimport { formatDocTitle } from '../../utilities/formatDocTitle/index.js'\n\nconst reduceToIDs = (options) =>\n options.reduce((ids, option) => {\n if (option.options) {\n return [...ids, ...reduceToIDs(option.options)]\n }\n\n return [...ids, { id: option.value, relationTo: option.relationTo }]\n }, [])\n\nconst sortOptions = (options: Option[]): Option[] =>\n options.sort((a: Option, b: Option) => {\n if (\n typeof a?.label?.localeCompare === 'function' &&\n typeof b?.label?.localeCompare === 'function'\n ) {\n return a.label.localeCompare(b.label)\n }\n\n return 0\n })\n\nexport const optionsReducer = (state: OptionGroup[], action: Action): OptionGroup[] => {\n switch (action.type) {\n case 'ADD': {\n const { collection, config, docs, i18n, ids = [], sort } = action\n const relation = collection.slug\n const loadedIDs = reduceToIDs(state)\n const newOptions = [...state]\n const optionsToAddTo = newOptions.find(\n (optionGroup) => optionGroup.label === collection.labels.plural,\n )\n const newSubOptions = docs.reduce((docSubOptions, doc) => {\n if (\n loadedIDs.filter((item) => item.id === doc.id && item.relationTo === relation).length ===\n 0\n ) {\n loadedIDs.push({ id: doc.id, relationTo: relation })\n\n const docTitle = formatDocTitle({\n collectionConfig: collection,\n data: doc,\n dateFormat: config.admin.dateFormat,\n fallback: `${i18n.t('general:untitled')} - ID: ${doc.id}`,\n i18n,\n })\n\n return [\n ...docSubOptions,\n {\n label: docTitle,\n relationTo: relation,\n value: doc.id,\n },\n ]\n }\n\n return docSubOptions\n }, [])\n\n ids.forEach((id) => {\n if (\n loadedIDs.filter((item) => item.id === id && item.relationTo === relation).length === 0\n ) {\n loadedIDs.push({ id, relationTo: relation })\n newSubOptions.push({\n allowEdit: false,\n label: `${i18n.t('general:untitled')} - ID: ${id}`,\n relationTo: relation,\n value: id,\n })\n }\n })\n\n if (optionsToAddTo) {\n const subOptions = [...optionsToAddTo.options, ...newSubOptions]\n\n optionsToAddTo.options = sort ? sortOptions(subOptions) : subOptions\n } else {\n newOptions.push({\n label: getTranslation(collection.labels.plural, i18n),\n options: sort ? sortOptions(newSubOptions) : newSubOptions,\n })\n }\n\n return newOptions\n }\n\n case 'CLEAR': {\n const exemptValues = action.exemptValues\n ? Array.isArray(action.exemptValues)\n ? action.exemptValues\n : [action.exemptValues]\n : []\n\n const clearedStateWithExemptValues = state.filter((optionGroup) => {\n const clearedOptions = optionGroup.options.filter((option) => {\n if (exemptValues) {\n return exemptValues.some((exemptValue) => {\n return (\n exemptValue &&\n option.value === (typeof exemptValue === 'object' ? exemptValue.value : exemptValue)\n )\n })\n }\n\n return false\n })\n\n optionGroup.options = clearedOptions\n\n return clearedOptions.length > 0\n })\n\n return clearedStateWithExemptValues\n }\n\n case 'REMOVE': {\n const { id, collection } = action\n\n const newOptions = [...state]\n\n const indexOfGroup = newOptions.findIndex(\n (optionGroup) => optionGroup.label === collection.labels.plural,\n )\n\n if (indexOfGroup === -1) {\n return newOptions\n }\n\n newOptions[indexOfGroup] = {\n ...newOptions[indexOfGroup],\n options: newOptions[indexOfGroup].options.filter((option) => option.value !== id),\n }\n\n return newOptions\n }\n\n case 'UPDATE': {\n const { collection, config, doc, i18n } = action\n const relation = collection.slug\n const newOptions = [...state]\n\n const docTitle = formatDocTitle({\n collectionConfig: collection,\n data: doc,\n dateFormat: config.admin.dateFormat,\n fallback: `${i18n.t('general:untitled')} - ID: ${doc.id}`,\n i18n,\n })\n\n const foundOptionGroup = newOptions.find(\n (optionGroup) => optionGroup.label === collection.labels.plural,\n )\n const foundOption = foundOptionGroup?.options?.find((option) => option.value === doc.id)\n\n if (foundOption) {\n foundOption.label = docTitle\n foundOption.relationTo = relation\n }\n\n return newOptions\n }\n\n default: {\n return state\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"optionsReducer.js","names":["getTranslation","formatDocTitle","reduceToIDs","options","reduce","ids","option","id","value","relationTo","sortOptions","sort","a","b","label","localeCompare","optionsReducer","state","action","type","collection","config","docs","i18n","relation","slug","loadedIDs","newOptions","optionsToAddTo","find","optionGroup","labels","plural","newSubOptions","docSubOptions","doc","filter","item","length","push","docTitle","collectionConfig","data","dateFormat","admin","fallback","t","forEach","allowEdit","subOptions","exemptValues","Array","isArray","clearedStateWithExemptValues","clearedOptions","some","exemptValue","indexOfGroup","findIndex","foundOptionGroup","foundOption"],"sources":["../../../src/fields/Relationship/optionsReducer.ts"],"sourcesContent":["'use client'\nimport { getTranslation } from '@payloadcms/translations'\n\nimport type { Action, Option, OptionGroup } from './types.js'\n\nimport { formatDocTitle } from '../../utilities/formatDocTitle/index.js'\n\nconst reduceToIDs = (options) =>\n options.reduce((ids, option) => {\n if (option.options) {\n return [...ids, ...reduceToIDs(option.options)]\n }\n\n return [...ids, { id: option.value, relationTo: option.relationTo }]\n }, [])\n\nconst sortOptions = (options: Option[]): Option[] =>\n options.sort((a: Option, b: Option) => {\n if (\n typeof a?.label?.localeCompare === 'function' &&\n typeof b?.label?.localeCompare === 'function'\n ) {\n return a.label.localeCompare(b.label)\n }\n\n return 0\n })\n\nexport const optionsReducer = (state: OptionGroup[], action: Action): OptionGroup[] => {\n switch (action.type) {\n case 'ADD': {\n const { collection, config, docs, i18n, ids = [], sort } = action\n const relation = collection.slug\n const loadedIDs = reduceToIDs(state)\n const newOptions = [...state]\n const optionsToAddTo = newOptions.find(\n (optionGroup) => optionGroup.label === collection.labels.plural,\n )\n const newSubOptions = docs.reduce((docSubOptions, doc) => {\n if (\n loadedIDs.filter((item) => item.id === doc.id && item.relationTo === relation).length ===\n 0\n ) {\n loadedIDs.push({ id: doc.id, relationTo: relation })\n\n const docTitle = formatDocTitle({\n collectionConfig: collection,\n data: doc,\n dateFormat: config.admin.dateFormat,\n fallback: `${i18n.t('general:untitled')} - ID: ${doc.id}`,\n i18n,\n })\n\n return [\n ...docSubOptions,\n {\n label: docTitle,\n relationTo: relation,\n value: doc.id,\n },\n ]\n }\n\n return docSubOptions\n }, [])\n\n ids.forEach((id) => {\n if (\n loadedIDs.filter((item) => item.id === id && item.relationTo === relation).length === 0\n ) {\n loadedIDs.push({ id, relationTo: relation })\n newSubOptions.push({\n allowEdit: false,\n label: `${i18n.t('general:untitled')} - ID: ${id}`,\n relationTo: relation,\n value: id,\n })\n }\n })\n\n if (optionsToAddTo) {\n const subOptions = [...optionsToAddTo.options, ...newSubOptions]\n\n optionsToAddTo.options = sort ? sortOptions(subOptions) : subOptions\n } else {\n newOptions.push({\n label: getTranslation(collection.labels.plural, i18n),\n options: sort ? sortOptions(newSubOptions) : newSubOptions,\n })\n }\n\n return newOptions\n }\n\n case 'CLEAR': {\n const exemptValues = action.exemptValues\n ? Array.isArray(action.exemptValues)\n ? action.exemptValues\n : [action.exemptValues]\n : []\n\n const clearedStateWithExemptValues = state.filter((optionGroup) => {\n const clearedOptions = optionGroup.options.filter((option) => {\n if (exemptValues) {\n return exemptValues.some((exemptValue) => {\n return exemptValue && option.value === exemptValue.value\n })\n }\n\n return false\n })\n\n optionGroup.options = clearedOptions\n\n return clearedOptions.length > 0\n })\n\n return clearedStateWithExemptValues\n }\n\n case 'REMOVE': {\n const { id, collection } = action\n\n const newOptions = [...state]\n\n const indexOfGroup = newOptions.findIndex(\n (optionGroup) => optionGroup.label === collection.labels.plural,\n )\n\n if (indexOfGroup === -1) {\n return newOptions\n }\n\n newOptions[indexOfGroup] = {\n ...newOptions[indexOfGroup],\n options: newOptions[indexOfGroup].options.filter((option) => option.value !== id),\n }\n\n return newOptions\n }\n\n case 'UPDATE': {\n const { collection, config, doc, i18n } = action\n const relation = collection.slug\n const newOptions = [...state]\n\n const docTitle = formatDocTitle({\n collectionConfig: collection,\n data: doc,\n dateFormat: config.admin.dateFormat,\n fallback: `${i18n.t('general:untitled')} - ID: ${doc.id}`,\n i18n,\n })\n\n const foundOptionGroup = newOptions.find(\n (optionGroup) => optionGroup.label === collection.labels.plural,\n )\n const foundOption = foundOptionGroup?.options?.find((option) => option.value === doc.id)\n\n if (foundOption) {\n foundOption.label = docTitle\n foundOption.relationTo = relation\n }\n\n return newOptions\n }\n\n default: {\n return state\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import type { I18nClient } from '@payloadcms/translations';
2
- import type { ClientCollectionConfig, ClientConfig, FilterOptionsResult } from 'payload';
2
+ import type { ClientCollectionConfig, ClientConfig, CollectionSlug, FilterOptionsResult, LabelFunction, StaticDescription, StaticLabel } from 'payload';
3
3
  export type Option = {
4
4
  allowEdit: boolean;
5
5
  label: string;
@@ -11,13 +11,14 @@ export type OptionGroup = {
11
11
  label: string;
12
12
  options: Option[];
13
13
  };
14
- export type ValueWithRelation = {
14
+ export type PolymorphicRelationValue = {
15
15
  relationTo: string;
16
16
  value: number | string;
17
17
  };
18
- export type Value = number | string | ValueWithRelation;
18
+ export type MonomorphicRelationValue = number | string;
19
+ export type Value = MonomorphicRelationValue | MonomorphicRelationValue[] | PolymorphicRelationValue | PolymorphicRelationValue[];
19
20
  type CLEAR = {
20
- exemptValues?: Value | Value[];
21
+ exemptValues?: PolymorphicRelationValue | PolymorphicRelationValue[];
21
22
  type: 'CLEAR';
22
23
  };
23
24
  type UPDATE = {
@@ -44,6 +45,13 @@ type REMOVE = {
44
45
  type: 'REMOVE';
45
46
  };
46
47
  export type Action = ADD | CLEAR | REMOVE | UPDATE;
48
+ export type HasManyValueUnion = {
49
+ hasMany: false;
50
+ value?: PolymorphicRelationValue;
51
+ } | {
52
+ hasMany: true;
53
+ value?: PolymorphicRelationValue[];
54
+ };
47
55
  export type GetResults = (args: {
48
56
  filterOptions?: FilterOptionsResult;
49
57
  lastFullyLoadedRelation?: number;
@@ -51,7 +59,44 @@ export type GetResults = (args: {
51
59
  onSuccess?: () => void;
52
60
  search?: string;
53
61
  sort?: boolean;
54
- value?: Value | Value[];
55
- }) => Promise<void>;
62
+ } & HasManyValueUnion) => Promise<void>;
63
+ export type RelationshipInputProps = {
64
+ readonly AfterInput?: React.ReactNode;
65
+ readonly allowCreate?: boolean;
66
+ readonly allowEdit?: boolean;
67
+ readonly appearance?: 'drawer' | 'select';
68
+ readonly BeforeInput?: React.ReactNode;
69
+ readonly className?: string;
70
+ readonly Description?: React.ReactNode;
71
+ readonly description?: StaticDescription;
72
+ readonly Error?: React.ReactNode;
73
+ readonly filterOptions?: FilterOptionsResult;
74
+ readonly isSortable?: boolean;
75
+ readonly Label?: React.ReactNode;
76
+ readonly label?: StaticLabel;
77
+ readonly localized?: boolean;
78
+ readonly maxResultsPerRequest?: number;
79
+ readonly maxRows?: number;
80
+ readonly minRows?: number;
81
+ readonly path: string;
82
+ readonly placeholder?: LabelFunction | string;
83
+ readonly readOnly?: boolean;
84
+ readonly relationTo: string[];
85
+ readonly required?: boolean;
86
+ readonly showError?: boolean;
87
+ readonly sortOptions?: Partial<Record<CollectionSlug, string>>;
88
+ readonly style?: React.CSSProperties;
89
+ } & SharedRelationshipInputProps;
90
+ type SharedRelationshipInputProps = {
91
+ readonly hasMany: false;
92
+ readonly initialValue?: null | PolymorphicRelationValue;
93
+ readonly onChange: (value: PolymorphicRelationValue) => void;
94
+ readonly value?: null | PolymorphicRelationValue;
95
+ } | {
96
+ readonly hasMany: true;
97
+ readonly initialValue?: null | PolymorphicRelationValue[];
98
+ readonly onChange: (value: PolymorphicRelationValue[]) => void;
99
+ readonly value?: null | PolymorphicRelationValue[];
100
+ };
56
101
  export {};
57
102
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/fields/Relationship/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAExF,MAAM,MAAM,MAAM,GAAG;IACnB,SAAS,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,iBAAiB,CAAA;AAEvD,KAAK,KAAK,GAAG;IACX,YAAY,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,CAAA;IAC9B,IAAI,EAAE,OAAO,CAAA;CACd,CAAA;AAED,KAAK,MAAM,GAAG;IACZ,UAAU,EAAE,sBAAsB,CAAA;IAClC,MAAM,EAAE,YAAY,CAAA;IACpB,GAAG,EAAE,GAAG,CAAA;IACR,IAAI,EAAE,UAAU,CAAA;IAChB,IAAI,EAAE,QAAQ,CAAA;CACf,CAAA;AAED,KAAK,GAAG,GAAG;IACT,UAAU,EAAE,sBAAsB,CAAA;IAClC,MAAM,EAAE,YAAY,CAAA;IACpB,IAAI,EAAE,GAAG,EAAE,CAAA;IACX,IAAI,EAAE,UAAU,CAAA;IAChB,GAAG,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IACzB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,IAAI,EAAE,KAAK,CAAA;CACZ,CAAA;AAED,KAAK,MAAM,GAAG;IACZ,UAAU,EAAE,sBAAsB,CAAA;IAClC,MAAM,EAAE,YAAY,CAAA;IACpB,IAAI,EAAE,UAAU,CAAA;IAChB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,QAAQ,CAAA;CACf,CAAA;AAED,MAAM,MAAM,MAAM,GAAG,GAAG,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAA;AAElD,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE;IAC9B,aAAa,CAAC,EAAE,mBAAmB,CAAA;IACnC,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACtC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,CAAA;CACxB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/fields/Relationship/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../src/fields/Relationship/types.ts"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type { ClientCollectionConfig, ClientConfig, FilterOptionsResult } from 'payload'\n\nexport type Option = {\n allowEdit: boolean\n label: string\n options?: Option[]\n relationTo?: string\n value: number | string\n}\n\nexport type OptionGroup = {\n label: string\n options: Option[]\n}\n\nexport type ValueWithRelation = {\n relationTo: string\n value: number | string\n}\n\nexport type Value = number | string | ValueWithRelation\n\ntype CLEAR = {\n exemptValues?: Value | Value[]\n type: 'CLEAR'\n}\n\ntype UPDATE = {\n collection: ClientCollectionConfig\n config: ClientConfig\n doc: any\n i18n: I18nClient\n type: 'UPDATE'\n}\n\ntype ADD = {\n collection: ClientCollectionConfig\n config: ClientConfig\n docs: any[]\n i18n: I18nClient\n ids?: (number | string)[]\n sort?: boolean\n type: 'ADD'\n}\n\ntype REMOVE = {\n collection: ClientCollectionConfig\n config: ClientConfig\n i18n: I18nClient\n id: string\n type: 'REMOVE'\n}\n\nexport type Action = ADD | CLEAR | REMOVE | UPDATE\n\nexport type GetResults = (args: {\n filterOptions?: FilterOptionsResult\n lastFullyLoadedRelation?: number\n lastLoadedPage: Record<string, number>\n onSuccess?: () => void\n search?: string\n sort?: boolean\n value?: Value | Value[]\n}) => Promise<void>\n"],"mappings":"AAwDA","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../src/fields/Relationship/types.ts"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type {\n ClientCollectionConfig,\n ClientConfig,\n CollectionSlug,\n FilterOptionsResult,\n LabelFunction,\n StaticDescription,\n StaticLabel,\n} from 'payload'\n\nexport type Option = {\n allowEdit: boolean\n label: string\n options?: Option[]\n relationTo?: string\n value: number | string\n}\n\nexport type OptionGroup = {\n label: string\n options: Option[]\n}\n\nexport type PolymorphicRelationValue = {\n relationTo: string\n value: number | string\n}\n\nexport type MonomorphicRelationValue = number | string\n\nexport type Value =\n | MonomorphicRelationValue\n | MonomorphicRelationValue[]\n | PolymorphicRelationValue\n | PolymorphicRelationValue[]\n\ntype CLEAR = {\n exemptValues?: PolymorphicRelationValue | PolymorphicRelationValue[]\n type: 'CLEAR'\n}\n\ntype UPDATE = {\n collection: ClientCollectionConfig\n config: ClientConfig\n doc: any\n i18n: I18nClient\n type: 'UPDATE'\n}\n\ntype ADD = {\n collection: ClientCollectionConfig\n config: ClientConfig\n docs: any[]\n i18n: I18nClient\n ids?: (number | string)[]\n sort?: boolean\n type: 'ADD'\n}\n\ntype REMOVE = {\n collection: ClientCollectionConfig\n config: ClientConfig\n i18n: I18nClient\n id: string\n type: 'REMOVE'\n}\n\nexport type Action = ADD | CLEAR | REMOVE | UPDATE\n\nexport type HasManyValueUnion =\n | {\n hasMany: false\n value?: PolymorphicRelationValue\n }\n | {\n hasMany: true\n value?: PolymorphicRelationValue[]\n }\n\nexport type GetResults = (\n args: {\n filterOptions?: FilterOptionsResult\n lastFullyLoadedRelation?: number\n lastLoadedPage: Record<string, number>\n onSuccess?: () => void\n search?: string\n sort?: boolean\n } & HasManyValueUnion,\n) => Promise<void>\n\nexport type RelationshipInputProps = {\n readonly AfterInput?: React.ReactNode\n readonly allowCreate?: boolean\n readonly allowEdit?: boolean\n readonly appearance?: 'drawer' | 'select'\n readonly BeforeInput?: React.ReactNode\n readonly className?: string\n readonly Description?: React.ReactNode\n readonly description?: StaticDescription\n readonly Error?: React.ReactNode\n readonly filterOptions?: FilterOptionsResult\n readonly isSortable?: boolean\n readonly Label?: React.ReactNode\n readonly label?: StaticLabel\n readonly localized?: boolean\n readonly maxResultsPerRequest?: number\n readonly maxRows?: number\n readonly minRows?: number\n readonly path: string\n readonly placeholder?: LabelFunction | string\n readonly readOnly?: boolean\n readonly relationTo: string[]\n readonly required?: boolean\n readonly showError?: boolean\n readonly sortOptions?: Partial<Record<CollectionSlug, string>>\n readonly style?: React.CSSProperties\n} & SharedRelationshipInputProps\n\ntype SharedRelationshipInputProps =\n | {\n readonly hasMany: false\n readonly initialValue?: null | PolymorphicRelationValue\n readonly onChange: (value: PolymorphicRelationValue) => void\n readonly value?: null | PolymorphicRelationValue\n }\n | {\n readonly hasMany: true\n readonly initialValue?: null | PolymorphicRelationValue[]\n readonly onChange: (value: PolymorphicRelationValue[]) => void\n readonly value?: null | PolymorphicRelationValue[]\n }\n"],"mappings":"AA2FA","ignoreList":[]}
@@ -4,5 +4,5 @@
4
4
  * @param wait Wait period after function hasn't been called for
5
5
  * @returns A memoized function that is debounced
6
6
  */
7
- export declare const useDebouncedCallback: (func: any, wait: any) => (...args: any[]) => void;
7
+ export declare const useDebouncedCallback: <TFunctionArgs = any>(func: any, wait: any) => (...args: TFunctionArgs[]) => void;
8
8
  //# sourceMappingURL=useDebouncedCallback.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useDebouncedCallback.d.ts","sourceRoot":"","sources":["../../src/hooks/useDebouncedCallback.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,oDAiBhC,CAAA"}
1
+ {"version":3,"file":"useDebouncedCallback.d.ts","sourceRoot":"","sources":["../../src/hooks/useDebouncedCallback.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAAI,aAAa,2CAMpC,aAAa,EAAE,SAW5B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useDebouncedCallback.js","names":["c","_c","useCallback","useRef","useDebouncedCallback","func","wait","$","timeout","undefined","t0","t1","args","later","clearTimeout","current","setTimeout"],"sources":["../../src/hooks/useDebouncedCallback.ts"],"sourcesContent":["'use client'\nimport { useCallback, useRef } from 'react'\n\n/**\n * Returns a memoized function that will only call the passed function when it hasn't been called for the wait period\n * @param func The function to be called\n * @param wait Wait period after function hasn't been called for\n * @returns A memoized function that is debounced\n */\nexport const useDebouncedCallback = (func, wait) => {\n // Use a ref to store the timeout between renders\n // and prevent changes to it from causing re-renders\n const timeout = useRef<ReturnType<typeof setTimeout>>(undefined)\n\n return useCallback(\n (...args) => {\n const later = () => {\n clearTimeout(timeout.current)\n func(...args)\n }\n\n clearTimeout(timeout.current)\n timeout.current = setTimeout(later, wait)\n },\n [func, wait],\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AACA,SAASC,WAAW,EAAEC,MAAM,QAAQ;AAEpC;;;;;;AAMA,OAAO,MAAMC,oBAAA,GAAuBA,CAAAC,IAAA,EAAAC,IAAA;EAAA,MAAAC,CAAA,GAAAN,EAAA;EAGlC,MAAAO,OAAA,GAAgBL,MAAA,CAAAM,SAAsC;EAAA,IAAAC,EAAA;EAAA,IAAAH,CAAA,QAAAF,IAAA,IAAAE,CAAA,QAAAD,IAAA;IAGpDI,EAAA,GAAAA,CAAA,GAAAC,EAAA;MAAC,MAAAC,IAAA,GAAAD,EAAG;MACF,MAAAE,KAAA,GAAAA,CAAA;QACEC,YAAA,CAAaN,OAAA,CAAAO,OAAe;QAC5BV,IAAA,IAAQO,IAAA;MAAA;MAGVE,YAAA,CAAaN,OAAA,CAAAO,OAAe;MAC5BP,OAAA,CAAAO,OAAA,GAAkBC,UAAA,CAAWH,KAAA,EAAOP,IAAA;IAAA;IACtCC,CAAA,MAAAF,IAAA;IAAAE,CAAA,MAAAD,IAAA;IAAAC,CAAA,MAAAG,EAAA;EAAA;IAAAA,EAAA,GAAAH,CAAA;EAAA;EAAA,OATKG,EAUO;AAAA,CAEhB","ignoreList":[]}
1
+ {"version":3,"file":"useDebouncedCallback.js","names":["c","_c","useCallback","useRef","useDebouncedCallback","func","wait","$","timeout","undefined","t0","t1","args","later","clearTimeout","current","setTimeout"],"sources":["../../src/hooks/useDebouncedCallback.ts"],"sourcesContent":["'use client'\nimport { useCallback, useRef } from 'react'\n\n/**\n * Returns a memoized function that will only call the passed function when it hasn't been called for the wait period\n * @param func The function to be called\n * @param wait Wait period after function hasn't been called for\n * @returns A memoized function that is debounced\n */\nexport const useDebouncedCallback = <TFunctionArgs = any>(func, wait) => {\n // Use a ref to store the timeout between renders\n // and prevent changes to it from causing re-renders\n const timeout = useRef<ReturnType<typeof setTimeout>>(undefined)\n\n return useCallback(\n (...args: TFunctionArgs[]) => {\n const later = () => {\n clearTimeout(timeout.current)\n func(...args)\n }\n\n clearTimeout(timeout.current)\n timeout.current = setTimeout(later, wait)\n },\n [func, wait],\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AACA,SAASC,WAAW,EAAEC,MAAM,QAAQ;AAEpC;;;;;;AAMA,OAAO,MAAMC,oBAAA,GAAuBA,CAAAC,IAAA,EAAAC,IAAA;EAAA,MAAAC,CAAA,GAAAN,EAAA;EAGlC,MAAAO,OAAA,GAAgBL,MAAA,CAAAM,SAAsC;EAAA,IAAAC,EAAA;EAAA,IAAAH,CAAA,QAAAF,IAAA,IAAAE,CAAA,QAAAD,IAAA;IAGpDI,EAAA,GAAAA,CAAA,GAAAC,EAAA;MAAC,MAAAC,IAAA,GAAAD,EAAG;MACF,MAAAE,KAAA,GAAAA,CAAA;QACEC,YAAA,CAAaN,OAAA,CAAAO,OAAe;QAC5BV,IAAA,IAAQO,IAAA;MAAA;MAGVE,YAAA,CAAaN,OAAA,CAAAO,OAAe;MAC5BP,OAAA,CAAAO,OAAA,GAAkBC,UAAA,CAAWH,KAAA,EAAOP,IAAA;IAAA;IACtCC,CAAA,MAAAF,IAAA;IAAAE,CAAA,MAAAD,IAAA;IAAAC,CAAA,MAAAG,EAAA;EAAA;IAAAA,EAAA,GAAAH,CAAA;EAAA;EAAA,OATKG,EAUO;AAAA,CAEhB","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import type { DocumentInfoContext, DocumentInfoProps } from './types.js';
2
+ import { type DocumentInfoContext, type DocumentInfoProps } from './types.js';
3
3
  export type * from './types.js';
4
4
  export declare const useDocumentInfo: () => DocumentInfoContext;
5
5
  export declare const DocumentInfoProvider: React.FC<{
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/DocumentInfo/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAgF,MAAM,OAAO,CAAA;AAEpG,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAcxE,mBAAmB,YAAY,CAAA;AAE/B,eAAO,MAAM,eAAe,QAAO,mBAAmC,CAAA;AA+UtE,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CACzC;IACE,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC,GAAG,iBAAiB,CAOtB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/DocumentInfo/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAgF,MAAM,OAAO,CAAA;AAWpG,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAK7E,mBAAmB,YAAY,CAAA;AAE/B,eAAO,MAAM,eAAe,QAAO,mBAAmC,CAAA;AA2VtE,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CACzC;IACE,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC,GAAG,iBAAiB,CAOtB,CAAA"}
@@ -7,6 +7,7 @@ import { useAuth } from '../../providers/Auth/index.js';
7
7
  import { requests } from '../../utilities/api.js';
8
8
  import { formatDocTitle } from '../../utilities/formatDocTitle/index.js';
9
9
  import { useConfig } from '../Config/index.js';
10
+ import { DocumentTitleProvider } from '../DocumentTitle/index.js';
10
11
  import { useLocale, useLocaleLoading } from '../Locale/index.js';
11
12
  import { usePreferences } from '../Preferences/index.js';
12
13
  import { useTranslation } from '../Translation/index.js';
@@ -67,7 +68,11 @@ const DocumentInfo = ({
67
68
  const {
68
69
  uploadEdits
69
70
  } = useUploadEdits();
70
- const [documentTitle, setDocumentTitle] = useState(() => formatDocTitle({
71
+ /**
72
+ * @deprecated This state will be removed in v4.
73
+ * This is for performance reasons. Use the `DocumentTitleContext` instead.
74
+ */
75
+ const [title, setDocumentTitle] = useState(() => formatDocTitle({
71
76
  collectionConfig,
72
77
  data: {
73
78
  ...(initialData || {}),
@@ -227,6 +232,10 @@ const DocumentInfo = ({
227
232
  const updateSavedDocumentData = React.useCallback(json => {
228
233
  setSavedDocumentData(json);
229
234
  }, []);
235
+ /**
236
+ * @todo: Remove this in v4
237
+ * Users should use the `DocumentTitleContext` instead.
238
+ */
230
239
  useEffect(() => {
231
240
  setDocumentTitle(formatDocTitle({
232
241
  collectionConfig,
@@ -294,7 +303,7 @@ const DocumentInfo = ({
294
303
  setMostRecentVersionIsAutosaved,
295
304
  setUnpublishedVersionCount,
296
305
  setUploadStatus: updateUploadStatus,
297
- title: documentTitle,
306
+ title,
298
307
  unlockDocument,
299
308
  unpublishedVersionCount,
300
309
  updateDocumentEditor,
@@ -304,7 +313,9 @@ const DocumentInfo = ({
304
313
  };
305
314
  return /*#__PURE__*/_jsx(Context, {
306
315
  value: value,
307
- children: children
316
+ children: /*#__PURE__*/_jsx(DocumentTitleProvider, {
317
+ children: children
318
+ })
308
319
  });
309
320
  };
310
321
  export const DocumentInfoProvider = props => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["qs","React","createContext","use","useCallback","useEffect","useMemo","useRef","useState","useAuth","requests","formatDocTitle","useConfig","useLocale","useLocaleLoading","usePreferences","useTranslation","UploadEditsProvider","useUploadEdits","useGetDocPermissions","Context","useDocumentInfo","DocumentInfo","children","props","id","collectionSlug","currentEditor","currentEditorFromProps","docPermissions","docPermissionsFromProps","globalSlug","hasPublishedDoc","hasPublishedDocFromProps","hasPublishPermission","hasPublishPermissionFromProps","hasSavePermission","hasSavePermissionFromProps","initialData","initialState","isLocked","isLockedFromProps","lastUpdateTime","lastUpdateTimeFromProps","mostRecentVersionIsAutosaved","mostRecentVersionIsAutosavedFromProps","unpublishedVersionCount","unpublishedVersionCountFromProps","versionCount","versionCountFromProps","setDocPermissions","setHasSavePermission","setHasPublishPermission","permissions","config","admin","dateFormat","routes","api","serverURL","getEntityConfig","collectionConfig","globalConfig","abortControllerRef","AbortController","docConfig","i18n","uploadEdits","documentTitle","setDocumentTitle","data","fallback","toString","setMostRecentVersionIsAutosaved","setVersionCount","setHasPublishedDoc","setUnpublishedVersionCount","documentIsLocked","setDocumentIsLocked","setCurrentEditor","setLastUpdateTime","savedDocumentData","setSavedDocumentData","uploadStatus","setUploadStatus","updateUploadStatus","status","getPreference","setPreference","code","locale","localeIsLoading","isInitializing","undefined","baseURL","slug","pluralType","preferencesKey","unlockDocument","docID","isGlobal","query","request","get","docs","json","length","lockID","delete","headers","error","console","updateDocumentEditor","user","userData","relationTo","collection","value","patch","body","JSON","stringify","getDocPermissions","getDocPreferences","setDocFieldPreferences","path","fieldPreferences","allPreferences","fields","e","incrementVersionCount","newCount","versions","maxPerDoc","Math","min","max","updateSavedDocumentData","re1","current","abort","_err","action","docURL","params","depth","addQueryPrefix","title","_jsx","DocumentInfoProvider"],"sources":["../../../src/providers/DocumentInfo/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientUser, DocumentPreferences, SanitizedDocumentPermissions } from 'payload'\n\nimport * as qs from 'qs-esm'\nimport React, { createContext, use, useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport type { DocumentInfoContext, DocumentInfoProps } from './types.js'\n\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { formatDocTitle } from '../../utilities/formatDocTitle/index.js'\nimport { useConfig } from '../Config/index.js'\nimport { useLocale, useLocaleLoading } from '../Locale/index.js'\nimport { usePreferences } from '../Preferences/index.js'\nimport { useTranslation } from '../Translation/index.js'\nimport { UploadEditsProvider, useUploadEdits } from '../UploadEdits/index.js'\nimport { useGetDocPermissions } from './useGetDocPermissions.js'\n\nconst Context = createContext({} as DocumentInfoContext)\n\nexport type * from './types.js'\n\nexport const useDocumentInfo = (): DocumentInfoContext => use(Context)\n\nconst DocumentInfo: React.FC<\n {\n readonly children: React.ReactNode\n } & DocumentInfoProps\n> = ({ children, ...props }) => {\n const {\n id,\n collectionSlug,\n currentEditor: currentEditorFromProps,\n docPermissions: docPermissionsFromProps,\n globalSlug,\n hasPublishedDoc: hasPublishedDocFromProps,\n hasPublishPermission: hasPublishPermissionFromProps,\n hasSavePermission: hasSavePermissionFromProps,\n initialData,\n initialState,\n isLocked: isLockedFromProps,\n lastUpdateTime: lastUpdateTimeFromProps,\n mostRecentVersionIsAutosaved: mostRecentVersionIsAutosavedFromProps,\n unpublishedVersionCount: unpublishedVersionCountFromProps,\n versionCount: versionCountFromProps,\n } = props\n\n const [docPermissions, setDocPermissions] =\n useState<SanitizedDocumentPermissions>(docPermissionsFromProps)\n\n const [hasSavePermission, setHasSavePermission] = useState<boolean>(hasSavePermissionFromProps)\n\n const [hasPublishPermission, setHasPublishPermission] = useState<boolean>(\n hasPublishPermissionFromProps,\n )\n\n const { permissions } = useAuth()\n\n const {\n config: {\n admin: { dateFormat },\n routes: { api },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const globalConfig = getEntityConfig({ globalSlug })\n\n const abortControllerRef = useRef(new AbortController())\n const docConfig = collectionConfig || globalConfig\n\n const { i18n } = useTranslation()\n\n const { uploadEdits } = useUploadEdits()\n\n const [documentTitle, setDocumentTitle] = useState(() =>\n formatDocTitle({\n collectionConfig,\n data: { ...(initialData || {}), id },\n dateFormat,\n fallback: id?.toString(),\n globalConfig,\n i18n,\n }),\n )\n\n const [mostRecentVersionIsAutosaved, setMostRecentVersionIsAutosaved] = useState(\n mostRecentVersionIsAutosavedFromProps,\n )\n\n const [versionCount, setVersionCount] = useState(versionCountFromProps)\n\n const [hasPublishedDoc, setHasPublishedDoc] = useState(hasPublishedDocFromProps)\n const [unpublishedVersionCount, setUnpublishedVersionCount] = useState(\n unpublishedVersionCountFromProps,\n )\n\n const [documentIsLocked, setDocumentIsLocked] = useState<boolean | undefined>(isLockedFromProps)\n const [currentEditor, setCurrentEditor] = useState<ClientUser | null>(currentEditorFromProps)\n const [lastUpdateTime, setLastUpdateTime] = useState<number>(lastUpdateTimeFromProps)\n const [savedDocumentData, setSavedDocumentData] = useState(initialData)\n const [uploadStatus, setUploadStatus] = useState<'failed' | 'idle' | 'uploading'>('idle')\n\n const updateUploadStatus = useCallback((status: 'failed' | 'idle' | 'uploading') => {\n setUploadStatus(status)\n }, [])\n\n const { getPreference, setPreference } = usePreferences()\n const { code: locale } = useLocale()\n const { localeIsLoading } = useLocaleLoading()\n\n const isInitializing = useMemo(\n () => initialState === undefined || initialData === undefined || localeIsLoading,\n [initialData, initialState, localeIsLoading],\n )\n\n const baseURL = `${serverURL}${api}`\n let slug: string\n let pluralType: 'collections' | 'globals'\n let preferencesKey: string\n\n if (globalSlug) {\n slug = globalSlug\n pluralType = 'globals'\n preferencesKey = `global-${slug}`\n }\n\n if (collectionSlug) {\n slug = collectionSlug\n pluralType = 'collections'\n\n if (id) {\n preferencesKey = `collection-${slug}-${id}`\n }\n }\n\n const unlockDocument = useCallback(\n async (docID: number | string, slug: string) => {\n try {\n const isGlobal = slug === globalSlug\n\n const query = isGlobal\n ? `where[globalSlug][equals]=${slug}`\n : `where[document.value][equals]=${docID}&where[document.relationTo][equals]=${slug}`\n\n const request = await requests.get(`${serverURL}${api}/payload-locked-documents?${query}`)\n\n const { docs } = await request.json()\n\n if (docs.length > 0) {\n const lockID = docs[0].id\n await requests.delete(`${serverURL}${api}/payload-locked-documents/${lockID}`, {\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n setDocumentIsLocked(false)\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to unlock the document', error)\n }\n },\n [serverURL, api, globalSlug],\n )\n\n const updateDocumentEditor = useCallback(\n async (docID: number | string, slug: string, user: ClientUser | number | string) => {\n try {\n const isGlobal = slug === globalSlug\n\n const query = isGlobal\n ? `where[globalSlug][equals]=${slug}`\n : `where[document.value][equals]=${docID}&where[document.relationTo][equals]=${slug}`\n\n // Check if the document is already locked\n const request = await requests.get(`${serverURL}${api}/payload-locked-documents?${query}`)\n\n const { docs } = await request.json()\n\n if (docs.length > 0) {\n const lockID = docs[0].id\n\n const userData =\n typeof user === 'object'\n ? { relationTo: user.collection, value: user.id }\n : { relationTo: 'users', value: user }\n\n // Send a patch request to update the _lastEdited info\n await requests.patch(`${serverURL}${api}/payload-locked-documents/${lockID}`, {\n body: JSON.stringify({\n user: userData,\n }),\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to update the document editor', error)\n }\n },\n [serverURL, api, globalSlug],\n )\n\n const getDocPermissions = useGetDocPermissions({\n id: id as string,\n api,\n collectionSlug,\n globalSlug,\n i18n,\n locale,\n permissions,\n serverURL,\n setDocPermissions,\n setHasPublishPermission,\n setHasSavePermission,\n })\n\n const getDocPreferences = useCallback(() => {\n return getPreference<DocumentPreferences>(preferencesKey)\n }, [getPreference, preferencesKey])\n\n const setDocFieldPreferences = useCallback<DocumentInfoContext['setDocFieldPreferences']>(\n async (path, fieldPreferences) => {\n const allPreferences = await getDocPreferences()\n\n if (preferencesKey) {\n try {\n await setPreference(preferencesKey, {\n ...allPreferences,\n fields: {\n ...(allPreferences?.fields || {}),\n [path]: {\n ...allPreferences?.fields?.[path],\n ...fieldPreferences,\n },\n },\n })\n } catch (e) {\n console.error(e) // eslint-disable-line no-console\n }\n }\n },\n [setPreference, preferencesKey, getDocPreferences],\n )\n\n const incrementVersionCount = useCallback(() => {\n const newCount = versionCount + 1\n if (collectionConfig && collectionConfig.versions) {\n if (collectionConfig.versions.maxPerDoc > 0) {\n setVersionCount(Math.min(newCount, collectionConfig.versions.maxPerDoc))\n } else {\n setVersionCount(newCount)\n }\n } else if (globalConfig && globalConfig.versions) {\n if (globalConfig.versions.max > 0) {\n setVersionCount(Math.min(newCount, globalConfig.versions.max))\n } else {\n setVersionCount(newCount)\n }\n }\n }, [collectionConfig, globalConfig, versionCount])\n\n const updateSavedDocumentData = React.useCallback<DocumentInfoContext['updateSavedDocumentData']>(\n (json) => {\n setSavedDocumentData(json)\n },\n [],\n )\n\n useEffect(() => {\n setDocumentTitle(\n formatDocTitle({\n collectionConfig,\n data: { ...savedDocumentData, id },\n dateFormat,\n fallback: id?.toString(),\n globalConfig,\n i18n,\n }),\n )\n }, [collectionConfig, globalConfig, savedDocumentData, dateFormat, i18n, id])\n\n // clean on unmount\n useEffect(() => {\n const re1 = abortControllerRef.current\n\n return () => {\n if (re1) {\n try {\n re1.abort()\n } catch (_err) {\n // swallow error\n }\n }\n }\n }, [])\n\n const action: string = React.useMemo(() => {\n const docURL = `${baseURL}${pluralType === 'globals' ? `/globals` : ''}/${slug}${id ? `/${id}` : ''}`\n const params = {\n depth: 0,\n 'fallback-locale': 'null',\n locale,\n uploadEdits: uploadEdits || undefined,\n }\n\n return `${docURL}${qs.stringify(params, {\n addQueryPrefix: true,\n })}`\n }, [baseURL, locale, pluralType, id, slug, uploadEdits])\n\n const value: DocumentInfoContext = {\n ...props,\n action,\n currentEditor,\n docConfig,\n docPermissions,\n documentIsLocked,\n getDocPermissions,\n getDocPreferences,\n hasPublishedDoc,\n hasPublishPermission,\n hasSavePermission,\n incrementVersionCount,\n initialData,\n initialState,\n isInitializing,\n lastUpdateTime,\n mostRecentVersionIsAutosaved,\n preferencesKey,\n savedDocumentData,\n setCurrentEditor,\n setDocFieldPreferences,\n setDocumentIsLocked,\n setDocumentTitle,\n setHasPublishedDoc,\n setLastUpdateTime,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n setUploadStatus: updateUploadStatus,\n title: documentTitle,\n unlockDocument,\n unpublishedVersionCount,\n updateDocumentEditor,\n updateSavedDocumentData,\n uploadStatus,\n versionCount,\n }\n\n return <Context value={value}>{children}</Context>\n}\n\nexport const DocumentInfoProvider: React.FC<\n {\n readonly children: React.ReactNode\n } & DocumentInfoProps\n> = (props) => {\n return (\n <UploadEditsProvider>\n <DocumentInfo {...props} />\n </UploadEditsProvider>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["qs","React","createContext","use","useCallback","useEffect","useMemo","useRef","useState","useAuth","requests","formatDocTitle","useConfig","DocumentTitleProvider","useLocale","useLocaleLoading","usePreferences","useTranslation","UploadEditsProvider","useUploadEdits","useGetDocPermissions","Context","useDocumentInfo","DocumentInfo","children","props","id","collectionSlug","currentEditor","currentEditorFromProps","docPermissions","docPermissionsFromProps","globalSlug","hasPublishedDoc","hasPublishedDocFromProps","hasPublishPermission","hasPublishPermissionFromProps","hasSavePermission","hasSavePermissionFromProps","initialData","initialState","isLocked","isLockedFromProps","lastUpdateTime","lastUpdateTimeFromProps","mostRecentVersionIsAutosaved","mostRecentVersionIsAutosavedFromProps","unpublishedVersionCount","unpublishedVersionCountFromProps","versionCount","versionCountFromProps","setDocPermissions","setHasSavePermission","setHasPublishPermission","permissions","config","admin","dateFormat","routes","api","serverURL","getEntityConfig","collectionConfig","globalConfig","abortControllerRef","AbortController","docConfig","i18n","uploadEdits","title","setDocumentTitle","data","fallback","toString","setMostRecentVersionIsAutosaved","setVersionCount","setHasPublishedDoc","setUnpublishedVersionCount","documentIsLocked","setDocumentIsLocked","setCurrentEditor","setLastUpdateTime","savedDocumentData","setSavedDocumentData","uploadStatus","setUploadStatus","updateUploadStatus","status","getPreference","setPreference","code","locale","localeIsLoading","isInitializing","undefined","baseURL","slug","pluralType","preferencesKey","unlockDocument","docID","isGlobal","query","request","get","docs","json","length","lockID","delete","headers","error","console","updateDocumentEditor","user","userData","relationTo","collection","value","patch","body","JSON","stringify","getDocPermissions","getDocPreferences","setDocFieldPreferences","path","fieldPreferences","allPreferences","fields","e","incrementVersionCount","newCount","versions","maxPerDoc","Math","min","max","updateSavedDocumentData","re1","current","abort","_err","action","docURL","params","depth","addQueryPrefix","_jsx","DocumentInfoProvider"],"sources":["../../../src/providers/DocumentInfo/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientUser, DocumentPreferences, SanitizedDocumentPermissions } from 'payload'\n\nimport * as qs from 'qs-esm'\nimport React, { createContext, use, useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { formatDocTitle } from '../../utilities/formatDocTitle/index.js'\nimport { useConfig } from '../Config/index.js'\nimport { DocumentTitleProvider } from '../DocumentTitle/index.js'\nimport { useLocale, useLocaleLoading } from '../Locale/index.js'\nimport { usePreferences } from '../Preferences/index.js'\nimport { useTranslation } from '../Translation/index.js'\nimport { UploadEditsProvider, useUploadEdits } from '../UploadEdits/index.js'\nimport { type DocumentInfoContext, type DocumentInfoProps } from './types.js'\nimport { useGetDocPermissions } from './useGetDocPermissions.js'\n\nconst Context = createContext({} as DocumentInfoContext)\n\nexport type * from './types.js'\n\nexport const useDocumentInfo = (): DocumentInfoContext => use(Context)\n\nconst DocumentInfo: React.FC<\n {\n readonly children: React.ReactNode\n } & DocumentInfoProps\n> = ({ children, ...props }) => {\n const {\n id,\n collectionSlug,\n currentEditor: currentEditorFromProps,\n docPermissions: docPermissionsFromProps,\n globalSlug,\n hasPublishedDoc: hasPublishedDocFromProps,\n hasPublishPermission: hasPublishPermissionFromProps,\n hasSavePermission: hasSavePermissionFromProps,\n initialData,\n initialState,\n isLocked: isLockedFromProps,\n lastUpdateTime: lastUpdateTimeFromProps,\n mostRecentVersionIsAutosaved: mostRecentVersionIsAutosavedFromProps,\n unpublishedVersionCount: unpublishedVersionCountFromProps,\n versionCount: versionCountFromProps,\n } = props\n\n const [docPermissions, setDocPermissions] =\n useState<SanitizedDocumentPermissions>(docPermissionsFromProps)\n\n const [hasSavePermission, setHasSavePermission] = useState<boolean>(hasSavePermissionFromProps)\n\n const [hasPublishPermission, setHasPublishPermission] = useState<boolean>(\n hasPublishPermissionFromProps,\n )\n\n const { permissions } = useAuth()\n\n const {\n config: {\n admin: { dateFormat },\n routes: { api },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const globalConfig = getEntityConfig({ globalSlug })\n\n const abortControllerRef = useRef(new AbortController())\n const docConfig = collectionConfig || globalConfig\n\n const { i18n } = useTranslation()\n\n const { uploadEdits } = useUploadEdits()\n\n /**\n * @deprecated This state will be removed in v4.\n * This is for performance reasons. Use the `DocumentTitleContext` instead.\n */\n const [title, setDocumentTitle] = useState(() =>\n formatDocTitle({\n collectionConfig,\n data: { ...(initialData || {}), id },\n dateFormat,\n fallback: id?.toString(),\n globalConfig,\n i18n,\n }),\n )\n\n const [mostRecentVersionIsAutosaved, setMostRecentVersionIsAutosaved] = useState(\n mostRecentVersionIsAutosavedFromProps,\n )\n\n const [versionCount, setVersionCount] = useState(versionCountFromProps)\n\n const [hasPublishedDoc, setHasPublishedDoc] = useState(hasPublishedDocFromProps)\n const [unpublishedVersionCount, setUnpublishedVersionCount] = useState(\n unpublishedVersionCountFromProps,\n )\n\n const [documentIsLocked, setDocumentIsLocked] = useState<boolean | undefined>(isLockedFromProps)\n const [currentEditor, setCurrentEditor] = useState<ClientUser | null>(currentEditorFromProps)\n const [lastUpdateTime, setLastUpdateTime] = useState<number>(lastUpdateTimeFromProps)\n const [savedDocumentData, setSavedDocumentData] = useState(initialData)\n const [uploadStatus, setUploadStatus] = useState<'failed' | 'idle' | 'uploading'>('idle')\n\n const updateUploadStatus = useCallback((status: 'failed' | 'idle' | 'uploading') => {\n setUploadStatus(status)\n }, [])\n\n const { getPreference, setPreference } = usePreferences()\n const { code: locale } = useLocale()\n const { localeIsLoading } = useLocaleLoading()\n\n const isInitializing = useMemo(\n () => initialState === undefined || initialData === undefined || localeIsLoading,\n [initialData, initialState, localeIsLoading],\n )\n\n const baseURL = `${serverURL}${api}`\n let slug: string\n let pluralType: 'collections' | 'globals'\n let preferencesKey: string\n\n if (globalSlug) {\n slug = globalSlug\n pluralType = 'globals'\n preferencesKey = `global-${slug}`\n }\n\n if (collectionSlug) {\n slug = collectionSlug\n pluralType = 'collections'\n\n if (id) {\n preferencesKey = `collection-${slug}-${id}`\n }\n }\n\n const unlockDocument = useCallback(\n async (docID: number | string, slug: string) => {\n try {\n const isGlobal = slug === globalSlug\n\n const query = isGlobal\n ? `where[globalSlug][equals]=${slug}`\n : `where[document.value][equals]=${docID}&where[document.relationTo][equals]=${slug}`\n\n const request = await requests.get(`${serverURL}${api}/payload-locked-documents?${query}`)\n\n const { docs } = await request.json()\n\n if (docs.length > 0) {\n const lockID = docs[0].id\n await requests.delete(`${serverURL}${api}/payload-locked-documents/${lockID}`, {\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n setDocumentIsLocked(false)\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to unlock the document', error)\n }\n },\n [serverURL, api, globalSlug],\n )\n\n const updateDocumentEditor = useCallback(\n async (docID: number | string, slug: string, user: ClientUser | number | string) => {\n try {\n const isGlobal = slug === globalSlug\n\n const query = isGlobal\n ? `where[globalSlug][equals]=${slug}`\n : `where[document.value][equals]=${docID}&where[document.relationTo][equals]=${slug}`\n\n // Check if the document is already locked\n const request = await requests.get(`${serverURL}${api}/payload-locked-documents?${query}`)\n\n const { docs } = await request.json()\n\n if (docs.length > 0) {\n const lockID = docs[0].id\n\n const userData =\n typeof user === 'object'\n ? { relationTo: user.collection, value: user.id }\n : { relationTo: 'users', value: user }\n\n // Send a patch request to update the _lastEdited info\n await requests.patch(`${serverURL}${api}/payload-locked-documents/${lockID}`, {\n body: JSON.stringify({\n user: userData,\n }),\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to update the document editor', error)\n }\n },\n [serverURL, api, globalSlug],\n )\n\n const getDocPermissions = useGetDocPermissions({\n id: id as string,\n api,\n collectionSlug,\n globalSlug,\n i18n,\n locale,\n permissions,\n serverURL,\n setDocPermissions,\n setHasPublishPermission,\n setHasSavePermission,\n })\n\n const getDocPreferences = useCallback(() => {\n return getPreference<DocumentPreferences>(preferencesKey)\n }, [getPreference, preferencesKey])\n\n const setDocFieldPreferences = useCallback<DocumentInfoContext['setDocFieldPreferences']>(\n async (path, fieldPreferences) => {\n const allPreferences = await getDocPreferences()\n\n if (preferencesKey) {\n try {\n await setPreference(preferencesKey, {\n ...allPreferences,\n fields: {\n ...(allPreferences?.fields || {}),\n [path]: {\n ...allPreferences?.fields?.[path],\n ...fieldPreferences,\n },\n },\n })\n } catch (e) {\n console.error(e) // eslint-disable-line no-console\n }\n }\n },\n [setPreference, preferencesKey, getDocPreferences],\n )\n\n const incrementVersionCount = useCallback(() => {\n const newCount = versionCount + 1\n if (collectionConfig && collectionConfig.versions) {\n if (collectionConfig.versions.maxPerDoc > 0) {\n setVersionCount(Math.min(newCount, collectionConfig.versions.maxPerDoc))\n } else {\n setVersionCount(newCount)\n }\n } else if (globalConfig && globalConfig.versions) {\n if (globalConfig.versions.max > 0) {\n setVersionCount(Math.min(newCount, globalConfig.versions.max))\n } else {\n setVersionCount(newCount)\n }\n }\n }, [collectionConfig, globalConfig, versionCount])\n\n const updateSavedDocumentData = React.useCallback<DocumentInfoContext['updateSavedDocumentData']>(\n (json) => {\n setSavedDocumentData(json)\n },\n [],\n )\n\n /**\n * @todo: Remove this in v4\n * Users should use the `DocumentTitleContext` instead.\n */\n useEffect(() => {\n setDocumentTitle(\n formatDocTitle({\n collectionConfig,\n data: { ...savedDocumentData, id },\n dateFormat,\n fallback: id?.toString(),\n globalConfig,\n i18n,\n }),\n )\n }, [collectionConfig, globalConfig, savedDocumentData, dateFormat, i18n, id])\n\n // clean on unmount\n useEffect(() => {\n const re1 = abortControllerRef.current\n\n return () => {\n if (re1) {\n try {\n re1.abort()\n } catch (_err) {\n // swallow error\n }\n }\n }\n }, [])\n\n const action: string = React.useMemo(() => {\n const docURL = `${baseURL}${pluralType === 'globals' ? `/globals` : ''}/${slug}${id ? `/${id}` : ''}`\n const params = {\n depth: 0,\n 'fallback-locale': 'null',\n locale,\n uploadEdits: uploadEdits || undefined,\n }\n\n return `${docURL}${qs.stringify(params, {\n addQueryPrefix: true,\n })}`\n }, [baseURL, locale, pluralType, id, slug, uploadEdits])\n\n const value: DocumentInfoContext = {\n ...props,\n action,\n currentEditor,\n docConfig,\n docPermissions,\n documentIsLocked,\n getDocPermissions,\n getDocPreferences,\n hasPublishedDoc,\n hasPublishPermission,\n hasSavePermission,\n incrementVersionCount,\n initialData,\n initialState,\n isInitializing,\n lastUpdateTime,\n mostRecentVersionIsAutosaved,\n preferencesKey,\n savedDocumentData,\n setCurrentEditor,\n setDocFieldPreferences,\n setDocumentIsLocked,\n setDocumentTitle,\n setHasPublishedDoc,\n setLastUpdateTime,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n setUploadStatus: updateUploadStatus,\n title,\n unlockDocument,\n unpublishedVersionCount,\n updateDocumentEditor,\n updateSavedDocumentData,\n uploadStatus,\n versionCount,\n }\n\n return (\n <Context value={value}>\n <DocumentTitleProvider>{children}</DocumentTitleProvider>\n </Context>\n )\n}\n\nexport const DocumentInfoProvider: React.FC<\n {\n readonly children: React.ReactNode\n } & DocumentInfoProps\n> = (props) => {\n return (\n <UploadEditsProvider>\n <DocumentInfo {...props} />\n </UploadEditsProvider>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import type { ClientCollectionConfig, ClientGlobalConfig, ClientUser, Data, DocumentPreferences, FormState, InsideFieldsPreferences, SanitizedCollectionConfig, SanitizedDocumentPermissions, SanitizedGlobalConfig, TypedUser } from 'payload';
2
- import type React from 'react';
2
+ import React from 'react';
3
3
  export type DocumentInfoProps = {
4
4
  readonly action?: string;
5
5
  readonly AfterDocument?: React.ReactNode;
@@ -45,12 +45,31 @@ export type DocumentInfoContext = {
45
45
  [key: string]: unknown;
46
46
  } & Partial<InsideFieldsPreferences>) => void;
47
47
  setDocumentIsLocked?: React.Dispatch<React.SetStateAction<boolean>>;
48
- setDocumentTitle: (title: string) => void;
48
+ /**
49
+ *
50
+ * @deprecated This property is deprecated and will be removed in v4.
51
+ * This is for performance reasons. Use the `DocumentTitleContext` instead.
52
+ * @example
53
+ * ```tsx
54
+ * import { useDocumentTitle } from '@payloadcms/ui'
55
+ * const { setDocumentTitle } = useDocumentTitle()
56
+ * ```
57
+ */
58
+ setDocumentTitle: React.Dispatch<React.SetStateAction<string>>;
49
59
  setHasPublishedDoc: React.Dispatch<React.SetStateAction<boolean>>;
50
60
  setLastUpdateTime: React.Dispatch<React.SetStateAction<number>>;
51
61
  setMostRecentVersionIsAutosaved: React.Dispatch<React.SetStateAction<boolean>>;
52
62
  setUnpublishedVersionCount: React.Dispatch<React.SetStateAction<number>>;
53
63
  setUploadStatus?: (status: 'failed' | 'idle' | 'uploading') => void;
64
+ /**
65
+ * @deprecated This property is deprecated and will be removed in v4.
66
+ * This is for performance reasons. Use the `DocumentTitleContext` instead.
67
+ * @example
68
+ * ```tsx
69
+ * import { useDocumentTitle } from '@payloadcms/ui'
70
+ * const { title } = useDocumentTitle()
71
+ * ```
72
+ */
54
73
  title: string;
55
74
  unlockDocument: (docID: number | string, slug: string) => Promise<void>;
56
75
  unpublishedVersionCount: number;
@@ -59,4 +78,5 @@ export type DocumentInfoContext = {
59
78
  uploadStatus?: 'failed' | 'idle' | 'uploading';
60
79
  versionCount: number;
61
80
  } & DocumentInfoProps;
81
+ export declare const DocumentTitleContext: React.Context<string>;
62
82
  //# sourceMappingURL=types.d.ts.map