{"version":3,"file":"generateLabelFromValue.js","names":["fieldAffectsData","fieldIsPresentationalOnly","fieldShouldBeLocalized","flattenTopLevelFields","generateLabelFromValue","field","locale","parentIsLocalized","req","value","relatedDoc","relationTo","valueToReturn","relatedCollection","payload","collections","config","useAsTitle","admin","flattenedRelatedCollectionFields","fields","moveSubFieldsToTop","useAsTitleField","find","f","name","titleFieldIsLocalized","fetchedDoc","findByID","id","collection","depth","undefined","select","i18n","t","error","String","JSON","stringify"],"sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Relationship/generateLabelFromValue.ts"],"sourcesContent":["import type { PayloadRequest, RelationshipField, TypeWithID } from 'payload'\n\nimport {\n fieldAffectsData,\n fieldIsPresentationalOnly,\n fieldShouldBeLocalized,\n flattenTopLevelFields,\n} from 'payload/shared'\n\nimport type { RelationshipValue } from './index.js'\n\nexport const generateLabelFromValue = async ({\n field,\n locale,\n parentIsLocalized,\n req,\n value,\n}: {\n field: RelationshipField\n locale: string\n parentIsLocalized: boolean\n req: PayloadRequest\n value: RelationshipValue\n}): Promise => {\n let relatedDoc: number | string | TypeWithID\n let relationTo: string = field.relationTo as string\n let valueToReturn: string = ''\n\n if (typeof value === 'object' && 'relationTo' in value) {\n relatedDoc = value.value\n relationTo = value.relationTo\n } else {\n // Non-polymorphic relationship or deleted document\n relatedDoc = value\n }\n\n const relatedCollection = req.payload.collections[relationTo].config\n\n const useAsTitle = relatedCollection?.admin?.useAsTitle\n\n const flattenedRelatedCollectionFields = flattenTopLevelFields(relatedCollection.fields, {\n moveSubFieldsToTop: true,\n })\n\n const useAsTitleField = flattenedRelatedCollectionFields.find(\n (f) => fieldAffectsData(f) && !fieldIsPresentationalOnly(f) && f.name === useAsTitle,\n )\n let titleFieldIsLocalized = false\n\n if (useAsTitleField && fieldAffectsData(useAsTitleField)) {\n titleFieldIsLocalized = fieldShouldBeLocalized({ field: useAsTitleField, parentIsLocalized })\n }\n\n if (typeof relatedDoc?.[useAsTitle] !== 'undefined') {\n valueToReturn = relatedDoc[useAsTitle]\n } else if (typeof relatedDoc === 'string' || typeof relatedDoc === 'number') {\n // When relatedDoc is just an ID (due to maxDepth: 0), fetch the document to get the title\n try {\n const fetchedDoc = await req.payload.findByID({\n id: relatedDoc,\n collection: relationTo,\n depth: 0,\n locale: titleFieldIsLocalized ? locale : undefined,\n req,\n select: {\n [useAsTitle]: true,\n },\n })\n\n if (fetchedDoc?.[useAsTitle]) {\n valueToReturn = fetchedDoc[useAsTitle]\n } else {\n valueToReturn = `${req.i18n.t('general:untitled')} - ID: ${relatedDoc}`\n }\n } catch (error) {\n // Document might have been deleted or user doesn't have access\n valueToReturn = `${req.i18n.t('general:untitled')} - ID: ${relatedDoc}`\n }\n } else {\n valueToReturn = String(typeof relatedDoc === 'object' ? relatedDoc.id : relatedDoc)\n }\n\n if (\n typeof valueToReturn === 'object' &&\n valueToReturn &&\n titleFieldIsLocalized &&\n valueToReturn?.[locale]\n ) {\n valueToReturn = valueToReturn[locale]\n }\n\n if (\n (valueToReturn && typeof valueToReturn === 'object' && valueToReturn !== null) ||\n typeof valueToReturn !== 'string'\n ) {\n valueToReturn = JSON.stringify(valueToReturn)\n }\n\n return valueToReturn\n}\n"],"mappings":"AAEA,SACEA,gBAAgB,EAChBC,yBAAyB,EACzBC,sBAAsB,EACtBC,qBAAqB,QAChB;AAIP,OAAO,MAAMC,sBAAA,GAAyB,MAAAA,CAAO;EAC3CC,KAAK;EACLC,MAAM;EACNC,iBAAiB;EACjBC,GAAG;EACHC;AAAK,CAON;EACC,IAAIC,UAAA;EACJ,IAAIC,UAAA,GAAqBN,KAAA,CAAMM,UAAU;EACzC,IAAIC,aAAA,GAAwB;EAE5B,IAAI,OAAOH,KAAA,KAAU,YAAY,gBAAgBA,KAAA,EAAO;IACtDC,UAAA,GAAaD,KAAA,CAAMA,KAAK;IACxBE,UAAA,GAAaF,KAAA,CAAME,UAAU;EAC/B,OAAO;IACL;IACAD,UAAA,GAAaD,KAAA;EACf;EAEA,MAAMI,iBAAA,GAAoBL,GAAA,CAAIM,OAAO,CAACC,WAAW,CAACJ,UAAA,CAAW,CAACK,MAAM;EAEpE,MAAMC,UAAA,GAAaJ,iBAAA,EAAmBK,KAAA,EAAOD,UAAA;EAE7C,MAAME,gCAAA,GAAmChB,qBAAA,CAAsBU,iBAAA,CAAkBO,MAAM,EAAE;IACvFC,kBAAA,EAAoB;EACtB;EAEA,MAAMC,eAAA,GAAkBH,gCAAA,CAAiCI,IAAI,CAC1DC,CAAA,IAAMxB,gBAAA,CAAiBwB,CAAA,KAAM,CAACvB,yBAAA,CAA0BuB,CAAA,KAAMA,CAAA,CAAEC,IAAI,KAAKR,UAAA;EAE5E,IAAIS,qBAAA,GAAwB;EAE5B,IAAIJ,eAAA,IAAmBtB,gBAAA,CAAiBsB,eAAA,GAAkB;IACxDI,qBAAA,GAAwBxB,sBAAA,CAAuB;MAAEG,KAAA,EAAOiB,eAAA;MAAiBf;IAAkB;EAC7F;EAEA,IAAI,OAAOG,UAAA,GAAaO,UAAA,CAAW,KAAK,aAAa;IACnDL,aAAA,GAAgBF,UAAU,CAACO,UAAA,CAAW;EACxC,OAAO,IAAI,OAAOP,UAAA,KAAe,YAAY,OAAOA,UAAA,KAAe,UAAU;IAC3E;IACA,IAAI;MACF,MAAMiB,UAAA,GAAa,MAAMnB,GAAA,CAAIM,OAAO,CAACc,QAAQ,CAAC;QAC5CC,EAAA,EAAInB,UAAA;QACJoB,UAAA,EAAYnB,UAAA;QACZoB,KAAA,EAAO;QACPzB,MAAA,EAAQoB,qBAAA,GAAwBpB,MAAA,GAAS0B,SAAA;QACzCxB,GAAA;QACAyB,MAAA,EAAQ;UACN,CAAChB,UAAA,GAAa;QAChB;MACF;MAEA,IAAIU,UAAA,GAAaV,UAAA,CAAW,EAAE;QAC5BL,aAAA,GAAgBe,UAAU,CAACV,UAAA,CAAW;MACxC,OAAO;QACLL,aAAA,GAAgB,GAAGJ,GAAA,CAAI0B,IAAI,CAACC,CAAC,CAAC,6BAA6BzB,UAAA,EAAY;MACzE;IACF,EAAE,OAAO0B,KAAA,EAAO;MACd;MACAxB,aAAA,GAAgB,GAAGJ,GAAA,CAAI0B,IAAI,CAACC,CAAC,CAAC,6BAA6BzB,UAAA,EAAY;IACzE;EACF,OAAO;IACLE,aAAA,GAAgByB,MAAA,CAAO,OAAO3B,UAAA,KAAe,WAAWA,UAAA,CAAWmB,EAAE,GAAGnB,UAAA;EAC1E;EAEA,IACE,OAAOE,aAAA,KAAkB,YACzBA,aAAA,IACAc,qBAAA,IACAd,aAAA,GAAgBN,MAAA,CAAO,EACvB;IACAM,aAAA,GAAgBA,aAAa,CAACN,MAAA,CAAO;EACvC;EAEA,IACEM,aAAC,IAAiB,OAAOA,aAAA,KAAkB,YAAYA,aAAA,KAAkB,QACzE,OAAOA,aAAA,KAAkB,UACzB;IACAA,aAAA,GAAgB0B,IAAA,CAAKC,SAAS,CAAC3B,aAAA;EACjC;EAEA,OAAOA,aAAA;AACT","ignoreList":[]}