{"version":3,"file":"document-reference.repository-DvNcYEUQ.js","sources":["../../../src/packages/documents/documents/reference/repository/document-reference.server.data.ts","../../../src/packages/documents/documents/reference/repository/document-reference.repository.ts"],"sourcesContent":["import { UMB_DOCUMENT_ENTITY_TYPE } from '../../entity.js';\r\nimport { DocumentService } from '@umbraco-cms/backoffice/external/backend-api';\r\nimport { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources';\r\nimport { UmbControllerBase } from '@umbraco-cms/backoffice/class-api';\r\nimport type { UmbEntityModel } from '@umbraco-cms/backoffice/entity';\r\nimport type { UmbEntityReferenceDataSource, UmbReferenceItemModel } from '@umbraco-cms/backoffice/relations';\r\nimport type { UmbPagedModel, UmbDataSourceResponse } from '@umbraco-cms/backoffice/repository';\r\nimport { UmbManagementApiDataMapper } from '@umbraco-cms/backoffice/repository';\r\n\r\n/**\r\n * @class UmbDocumentReferenceServerDataSource\r\n * @implements {UmbEntityReferenceDataSource}\r\n */\r\nexport class UmbDocumentReferenceServerDataSource extends UmbControllerBase implements UmbEntityReferenceDataSource {\r\n\t#dataMapper = new UmbManagementApiDataMapper(this);\r\n\r\n\t/**\r\n\t * Fetches the item for the given unique from the server\r\n\t * @param {string} unique - The unique identifier of the item to fetch\r\n\t * @param {number} skip - The number of items to skip\r\n\t * @param {number} take - The number of items to take\r\n\t * @returns {Promise>>} - Items that are referenced by the given unique\r\n\t * @memberof UmbDocumentReferenceServerDataSource\r\n\t */\r\n\tasync getReferencedBy(\r\n\t\tunique: string,\r\n\t\tskip = 0,\r\n\t\ttake = 20,\r\n\t): Promise>> {\r\n\t\tconst { data, error } = await tryExecuteAndNotify(\r\n\t\t\tthis,\r\n\t\t\tDocumentService.getDocumentByIdReferencedBy({ id: unique, skip, take }),\r\n\t\t);\r\n\r\n\t\tif (data) {\r\n\t\t\tconst promises = data.items.map(async (item) => {\r\n\t\t\t\treturn this.#dataMapper.map({\r\n\t\t\t\t\tforDataModel: item.$type,\r\n\t\t\t\t\tdata: item,\r\n\t\t\t\t\tfallback: async () => {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t...item,\r\n\t\t\t\t\t\t\tunique: item.id,\r\n\t\t\t\t\t\t\tentityType: 'unknown',\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tconst items = await Promise.all(promises);\r\n\r\n\t\t\treturn { data: { items, total: data.total } };\r\n\t\t}\r\n\r\n\t\treturn { data, error };\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the items are referenced by other items\r\n\t * @param {Array} uniques - The unique identifiers of the items to fetch\r\n\t * @param {number} skip - The number of items to skip\r\n\t * @param {number} take - The number of items to take\r\n\t * @returns {Promise>>} - Items that are referenced by other items\r\n\t * @memberof UmbDocumentReferenceServerDataSource\r\n\t */\r\n\tasync getAreReferenced(\r\n\t\tuniques: Array,\r\n\t\tskip: number = 0,\r\n\t\ttake: number = 20,\r\n\t): Promise>> {\r\n\t\tconst { data, error } = await tryExecuteAndNotify(\r\n\t\t\tthis,\r\n\t\t\tDocumentService.getDocumentAreReferenced({ id: uniques, skip, take }),\r\n\t\t);\r\n\r\n\t\tif (data) {\r\n\t\t\tconst items: Array = data.items.map((item) => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tunique: item.id,\r\n\t\t\t\t\tentityType: UMB_DOCUMENT_ENTITY_TYPE,\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\treturn { data: { items, total: data.total } };\r\n\t\t}\r\n\r\n\t\treturn { data, error };\r\n\t}\r\n\r\n\t/**\r\n\t * Returns any descendants of the given unique that is referenced by other items\r\n\t * @param {string} unique - The unique identifier of the item to fetch descendants for\r\n\t * @param {number} skip - The number of items to skip\r\n\t * @param {number} take - The number of items to take\r\n\t * @returns {Promise>>} - Any descendants of the given unique that is referenced by other items\r\n\t * @memberof UmbDocumentReferenceServerDataSource\r\n\t */\r\n\tasync getReferencedDescendants(\r\n\t\tunique: string,\r\n\t\tskip: number = 0,\r\n\t\ttake: number = 20,\r\n\t): Promise>> {\r\n\t\tconst { data, error } = await tryExecuteAndNotify(\r\n\t\t\tthis,\r\n\t\t\tDocumentService.getDocumentByIdReferencedDescendants({ id: unique, skip, take }),\r\n\t\t);\r\n\r\n\t\tif (data) {\r\n\t\t\tconst items: Array = data.items.map((item) => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tunique: item.id,\r\n\t\t\t\t\tentityType: UMB_DOCUMENT_ENTITY_TYPE,\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\treturn { data: { items, total: data.total } };\r\n\t\t}\r\n\r\n\t\treturn { data, error };\r\n\t}\r\n}\r\n","import { UmbDocumentReferenceServerDataSource } from './document-reference.server.data.js';\r\nimport type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';\r\nimport { UmbControllerBase } from '@umbraco-cms/backoffice/class-api';\r\nimport type { UmbEntityReferenceRepository } from '@umbraco-cms/backoffice/relations';\r\n\r\nexport class UmbDocumentReferenceRepository extends UmbControllerBase implements UmbEntityReferenceRepository {\r\n\t#referenceSource: UmbDocumentReferenceServerDataSource;\r\n\r\n\tconstructor(host: UmbControllerHost) {\r\n\t\tsuper(host);\r\n\t\tthis.#referenceSource = new UmbDocumentReferenceServerDataSource(this);\r\n\t}\r\n\r\n\tasync requestReferencedBy(unique: string, skip = 0, take = 20) {\r\n\t\tif (!unique) throw new Error(`unique is required`);\r\n\t\treturn this.#referenceSource.getReferencedBy(unique, skip, take);\r\n\t}\r\n\r\n\tasync requestAreReferenced(uniques: Array, skip = 0, take = 20) {\r\n\t\tif (!uniques || uniques.length === 0) throw new Error(`uniques is required`);\r\n\t\treturn this.#referenceSource.getAreReferenced(uniques, skip, take);\r\n\t}\r\n\r\n\tasync requestDescendantsWithReferences(unique: string, skip = 0, take = 20) {\r\n\t\tif (!unique) throw new Error(`unique is required`);\r\n\t\treturn this.#referenceSource.getReferencedDescendants(unique, skip, take);\r\n\t}\r\n}\r\n\r\nexport default UmbDocumentReferenceRepository;\r\n"],"names":["UmbDocumentReferenceServerDataSource","UmbControllerBase","#dataMapper","UmbManagementApiDataMapper","unique","skip","take","data","error","tryExecuteAndNotify","DocumentService","promises","item","uniques","UMB_DOCUMENT_ENTITY_TYPE","UmbDocumentReferenceRepository","#referenceSource","host"],"mappings":";;;;;AAaO,MAAMA,UAA6CC,EAA0D;AAAA,EACnHC,KAAc,IAAIC,EAA2B,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUjD,MAAM,gBACLC,GACAC,IAAO,GACPC,IAAO,IACgE;AACvE,UAAM,EAAE,MAAAC,GAAM,OAAAC,EAAM,IAAI,MAAMC;AAAA,MAC7B;AAAA,MACAC,EAAgB,4BAA4B,EAAE,IAAIN,GAAQ,MAAAC,GAAM,MAAAC,EAAM,CAAA;AAAA,IACvE;AAEA,QAAIC,GAAM;AACT,YAAMI,IAAWJ,EAAK,MAAM,IAAI,OAAOK,MAC/B,KAAKV,GAAY,IAAI;AAAA,QAC3B,cAAcU,EAAK;AAAA,QACnB,MAAMA;AAAA,QACN,UAAU,aACF;AAAA,UACN,GAAGA;AAAA,UACH,QAAQA,EAAK;AAAA,UACb,YAAY;AAAA,QACb;AAAA,MACD,CACA,CACD;AAID,aAAO,EAAE,MAAM,EAAE,OAFH,MAAM,QAAQ,IAAID,CAAQ,GAEhB,OAAOJ,EAAK,QAAQ;AAAA,IAAA;AAGtC,WAAA,EAAE,MAAAA,GAAM,OAAAC,EAAM;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWtB,MAAM,iBACLK,GACAR,IAAe,GACfC,IAAe,IACiD;AAChE,UAAM,EAAE,MAAAC,GAAM,OAAAC,EAAM,IAAI,MAAMC;AAAA,MAC7B;AAAA,MACAC,EAAgB,yBAAyB,EAAE,IAAIG,GAAS,MAAAR,GAAM,MAAAC,EAAM,CAAA;AAAA,IACrE;AAEA,WAAIC,IAQI,EAAE,MAAM,EAAE,OAPoBA,EAAK,MAAM,IAAI,CAACK,OAC7C;AAAA,MACN,QAAQA,EAAK;AAAA,MACb,YAAYE;AAAA,IACb,EACA,GAEuB,OAAOP,EAAK,QAAQ,IAGtC,EAAE,MAAAA,GAAM,OAAAC,EAAM;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWtB,MAAM,yBACLJ,GACAC,IAAe,GACfC,IAAe,IACiD;AAChE,UAAM,EAAE,MAAAC,GAAM,OAAAC,EAAM,IAAI,MAAMC;AAAA,MAC7B;AAAA,MACAC,EAAgB,qCAAqC,EAAE,IAAIN,GAAQ,MAAAC,GAAM,MAAAC,EAAM,CAAA;AAAA,IAChF;AAEA,WAAIC,IAQI,EAAE,MAAM,EAAE,OAPoBA,EAAK,MAAM,IAAI,CAACK,OAC7C;AAAA,MACN,QAAQA,EAAK;AAAA,MACb,YAAYE;AAAA,IACb,EACA,GAEuB,OAAOP,EAAK,QAAQ,IAGtC,EAAE,MAAAA,GAAM,OAAAC,EAAM;AAAA,EAAA;AAEvB;ACnHO,MAAMO,UAAuCd,EAA0D;AAAA,EAC7Ge;AAAA,EAEA,YAAYC,GAAyB;AACpC,UAAMA,CAAI,GACL,KAAAD,KAAmB,IAAIhB,EAAqC,IAAI;AAAA,EAAA;AAAA,EAGtE,MAAM,oBAAoBI,GAAgBC,IAAO,GAAGC,IAAO,IAAI;AAC9D,QAAI,CAACF,EAAc,OAAA,IAAI,MAAM,oBAAoB;AACjD,WAAO,KAAKY,GAAiB,gBAAgBZ,GAAQC,GAAMC,CAAI;AAAA,EAAA;AAAA,EAGhE,MAAM,qBAAqBO,GAAwBR,IAAO,GAAGC,IAAO,IAAI;AACnE,QAAA,CAACO,KAAWA,EAAQ,WAAW,EAAS,OAAA,IAAI,MAAM,qBAAqB;AAC3E,WAAO,KAAKG,GAAiB,iBAAiBH,GAASR,GAAMC,CAAI;AAAA,EAAA;AAAA,EAGlE,MAAM,iCAAiCF,GAAgBC,IAAO,GAAGC,IAAO,IAAI;AAC3E,QAAI,CAACF,EAAc,OAAA,IAAI,MAAM,oBAAoB;AACjD,WAAO,KAAKY,GAAiB,yBAAyBZ,GAAQC,GAAMC,CAAI;AAAA,EAAA;AAE1E;"}