{"version":3,"file":"media-reference.repository-CcP6oL9P.js","sources":["../../../src/packages/media/media/reference/repository/media-reference.server.data.ts","../../../src/packages/media/media/reference/repository/media-reference.repository.ts"],"sourcesContent":["import { UMB_MEDIA_ENTITY_TYPE } from '../../entity.js';\r\nimport { MediaService } from '@umbraco-cms/backoffice/external/backend-api';\r\nimport { UmbManagementApiDataMapper } from '@umbraco-cms/backoffice/repository';\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\n\r\n/**\r\n * @class UmbMediaReferenceServerDataSource\r\n * @implements {UmbEntityReferenceDataSource}\r\n */\r\nexport class UmbMediaReferenceServerDataSource 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 UmbMediaReferenceServerDataSource\r\n\t */\r\n\tasync getReferencedBy(\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\tMediaService.getMediaByIdReferencedBy({ 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 UmbMediaReferenceServerDataSource\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\tMediaService.getMediaAreReferenced({ 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_MEDIA_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 UmbMediaReferenceServerDataSource\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\tMediaService.getMediaByIdReferencedDescendants({ 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_MEDIA_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 { UmbMediaReferenceServerDataSource } from './media-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\nimport type { UmbEntityModel } from '@umbraco-cms/backoffice/entity';\r\nimport type { UmbRepositoryResponse, UmbPagedModel } from '@umbraco-cms/backoffice/repository';\r\n\r\nexport class UmbMediaReferenceRepository extends UmbControllerBase implements UmbEntityReferenceRepository {\r\n\t#referenceSource: UmbMediaReferenceServerDataSource;\r\n\r\n\tconstructor(host: UmbControllerHost) {\r\n\t\tsuper(host);\r\n\t\tthis.#referenceSource = new UmbMediaReferenceServerDataSource(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 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\tasync requestAreReferenced(\r\n\t\tuniques: Array,\r\n\t\tskip?: number,\r\n\t\ttake?: number,\r\n\t): Promise>> {\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\r\nexport default UmbMediaReferenceRepository;\r\n"],"names":["UmbMediaReferenceServerDataSource","UmbControllerBase","#dataMapper","UmbManagementApiDataMapper","unique","skip","take","data","error","tryExecuteAndNotify","MediaService","promises","item","uniques","UMB_MEDIA_ENTITY_TYPE","UmbMediaReferenceRepository","#referenceSource","host"],"mappings":";;;;;AAaO,MAAMA,UAA0CC,EAA0D;AAAA,EAChHC,KAAc,IAAIC,EAA2B,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUjD,MAAM,gBACLC,GACAC,IAAe,GACfC,IAAe,IACwD;AACvE,UAAM,EAAE,MAAAC,GAAM,OAAAC,EAAM,IAAI,MAAMC;AAAA,MAC7B;AAAA,MACAC,EAAa,yBAAyB,EAAE,IAAIN,GAAQ,MAAAC,GAAM,MAAAC,EAAM,CAAA;AAAA,IACjE;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,EAAa,sBAAsB,EAAE,IAAIG,GAAS,MAAAR,GAAM,MAAAC,EAAM,CAAA;AAAA,IAC/D;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,EAAa,kCAAkC,EAAE,IAAIN,GAAQ,MAAAC,GAAM,MAAAC,EAAM,CAAA;AAAA,IAC1E;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;ACjHO,MAAMO,UAAoCd,EAA0D;AAAA,EAC1Ge;AAAA,EAEA,YAAYC,GAAyB;AACpC,UAAMA,CAAI,GACL,KAAAD,KAAmB,IAAIhB,EAAkC,IAAI;AAAA,EAAA;AAAA,EAGnE,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,iCAAiCF,GAAgBC,IAAO,GAAGC,IAAO,IAAI;AAC3E,QAAI,CAACF,EAAc,OAAA,IAAI,MAAM,oBAAoB;AACjD,WAAO,KAAKY,GAAiB,yBAAyBZ,GAAQC,GAAMC,CAAI;AAAA,EAAA;AAAA,EAGzE,MAAM,qBACLO,GACAR,GACAC,GACgE;AAC5D,QAAA,CAACO,KAAWA,EAAQ,WAAW,EAAS,OAAA,IAAI,MAAM,qBAAqB;AAC3E,WAAO,KAAKG,GAAiB,iBAAiBH,GAASR,GAAMC,CAAI;AAAA,EAAA;AAEnE;"}