@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
2 lines • 1.93 kB
JavaScript
import e from"../../../libs/collection/helpers/prefix-generated-column-name.mjs";import{getDocumentFieldsTableSchema as t}from"../../../libs/collection/schema/runtime/runtime-schema-selectors.mjs";const n=[`text`,`textarea`,`select`,`number`,`datetime`,`color`],r=e=>e?typeof e==`string`?e:e.type===`lucid.literal`?e.value:e.defaultMessage??null:null,i=(e,t)=>{let n=e.getData;return`${r(n.details.singularName)??r(n.details.name)??e.key} #${t}`},a=(e,t)=>{if(!t)return!1;let r=e.fields.get(t);return!r||r.treeParent!==null||r.structuralParent!==null?!1:n.some(e=>e===r.type)},o=e=>{for(let t of e.labelFields)if(a(e,t))return e.fields.get(t)?.config;for(let t of e.listing)if(a(e,t))return e.fields.get(t)?.config;for(let t of e.fields.values())if(a(e,t.key))return t.config},s=e=>{if(typeof e==`string`){let t=e.trim();return t.length>0?t:null}return typeof e==`number`&&Number.isFinite(e)?String(e):e instanceof Date&&!Number.isNaN(e.getTime())?e.toISOString():null},c=(e,t)=>{let n=(Array.isArray(t)?t:[t]).map(t=>{let n=e.options.find(e=>String(e.value)===String(t));return n?r(n.label)??s(n.value):s(t)}).filter(e=>e!==null);return n.length>0?n.join(`, `):null},l=(e,t)=>e.type===`select`?c(e,t):s(t),u=async n=>{let r=o(n.collection);if(!r)return{error:void 0,data:i(n.collection,n.operation.document_id)};let a=await t(n.context,n.collection.key);if(a.error)return a;if(!a.data)return{error:void 0,data:i(n.collection,n.operation.document_id)};let s=await n.bricks.selectMultipleByVersionId({versionId:n.operation.source_version_id,documentId:n.operation.document_id,bricksSchema:[{name:n.tables.documentFields,columns:a.data.columns}]},{tableName:n.tables.version});if(s.error)return s;let c=e(r.key);return{error:void 0,data:(s.data?.[n.tables.documentFields]??[]).map(e=>e[c]).map(e=>l(r,e)).find(e=>e!==null)??i(n.collection,n.operation.document_id)}};export{u as default};
//# sourceMappingURL=get-document-label.mjs.map