{"version":3,"file":"document-item-data-resolver-CCvZ1xDq.js","sources":["../../../src/packages/documents/documents/item/document-item-data-resolver.ts"],"sourcesContent":["import { UmbDocumentVariantState } from '../types.js';\r\nimport type { UmbDocumentItemModel } from './types.js';\r\nimport { UmbControllerBase } from '@umbraco-cms/backoffice/class-api';\r\nimport type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';\r\nimport type { DocumentVariantStateModel } from '@umbraco-cms/backoffice/external/backend-api';\r\nimport type { UmbAppLanguageContext } from '@umbraco-cms/backoffice/language';\r\nimport { UMB_APP_LANGUAGE_CONTEXT } from '@umbraco-cms/backoffice/language';\r\nimport { UmbBooleanState, UmbStringState } from '@umbraco-cms/backoffice/observable-api';\r\nimport { UMB_PROPERTY_DATASET_CONTEXT } from '@umbraco-cms/backoffice/property';\r\nimport type { UmbVariantId } from '@umbraco-cms/backoffice/variant';\r\n\r\ntype UmbDocumentItemDataResolverModel = Omit;\r\n\r\n/**\r\n * A controller for resolving data for a document item\r\n * @exports\r\n * @class UmbDocumentItemDataResolver\r\n * @augments {UmbControllerBase}\r\n */\r\nexport class UmbDocumentItemDataResolver extends UmbControllerBase {\r\n\t#defaultCulture?: string;\r\n\t#appCulture?: string;\r\n\t#propertyDataSetCulture?: UmbVariantId;\r\n\t#data?: DataType | undefined;\r\n\r\n\t#init: Promise<[UmbAppLanguageContext]>;\r\n\r\n\t#unique = new UmbStringState(undefined);\r\n\tpublic readonly unique = this.#unique.asObservable();\r\n\r\n\t#name = new UmbStringState(undefined);\r\n\tpublic readonly name = this.#name.asObservable();\r\n\r\n\t#icon = new UmbStringState(undefined);\r\n\tpublic readonly icon = this.#icon.asObservable();\r\n\r\n\t#state = new UmbStringState(undefined);\r\n\tpublic readonly state = this.#state.asObservable();\r\n\r\n\t#isTrashed = new UmbBooleanState(undefined);\r\n\tpublic readonly isTrashed = this.#isTrashed.asObservable();\r\n\r\n\t#isDraft = new UmbBooleanState(undefined);\r\n\tpublic readonly isDraft = this.#isDraft.asObservable();\r\n\r\n\tconstructor(host: UmbControllerHost) {\r\n\t\tsuper(host);\r\n\r\n\t\t// We do not depend on this context because we know is it only available in some cases\r\n\t\tthis.consumeContext(UMB_PROPERTY_DATASET_CONTEXT, (context) => {\r\n\t\t\tthis.#propertyDataSetCulture = context.getVariantId();\r\n\t\t\tthis.#setVariantAwareValues();\r\n\t\t});\r\n\r\n\t\tthis.#init = Promise.all([\r\n\t\t\tthis.consumeContext(UMB_APP_LANGUAGE_CONTEXT, (context) => {\r\n\t\t\t\tthis.observe(context.appLanguageCulture, (culture) => {\r\n\t\t\t\t\tthis.#appCulture = culture;\r\n\t\t\t\t\tthis.#setVariantAwareValues();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.observe(context.appDefaultLanguage, (value) => {\r\n\t\t\t\t\tthis.#defaultCulture = value?.unique;\r\n\t\t\t\t\tthis.#setVariantAwareValues();\r\n\t\t\t\t});\r\n\t\t\t}).asPromise(),\r\n\t\t]);\r\n\t}\r\n\r\n\t/**\r\n\t * Get the current item\r\n\t * @returns {DataType | undefined} The current item\r\n\t * @memberof UmbDocumentItemDataResolver\r\n\t */\r\n\tgetData(): DataType | undefined {\r\n\t\treturn this.#data;\r\n\t}\r\n\r\n\t/**\r\n\t * Set the current item\r\n\t * @param {DataType | undefined} data The current item\r\n\t * @memberof UmbDocumentItemDataResolver\r\n\t */\r\n\tsetData(data: DataType | undefined) {\r\n\t\tthis.#data = data;\r\n\r\n\t\tif (!this.#data) {\r\n\t\t\tthis.#unique.setValue(undefined);\r\n\t\t\tthis.#name.setValue(undefined);\r\n\t\t\tthis.#icon.setValue(undefined);\r\n\t\t\tthis.#isTrashed.setValue(undefined);\r\n\t\t\tthis.#isDraft.setValue(undefined);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.#unique.setValue(this.#data.unique);\r\n\t\tthis.#icon.setValue(this.#data.documentType.icon);\r\n\t\tthis.#isTrashed.setValue(this.#data.isTrashed);\r\n\t\tthis.#setVariantAwareValues();\r\n\t}\r\n\r\n\t/**\r\n\t * Get the unique of the item\r\n\t * @returns {Promise} The unique of the item\r\n\t * @memberof UmbDocumentItemDataResolver\r\n\t */\r\n\tasync getUnique(): Promise {\r\n\t\tawait this.#init;\r\n\t\treturn this.#unique.getValue();\r\n\t}\r\n\r\n\t/**\r\n\t * Get the name of the item\r\n\t * @returns {Promise} The name of the item\r\n\t * @memberof UmbDocumentItemDataResolver\r\n\t */\r\n\tasync getName(): Promise {\r\n\t\tawait this.#init;\r\n\t\treturn this.#name.getValue() || '';\r\n\t}\r\n\r\n\t/**\r\n\t * Get the icon of the item\r\n\t * @returns {Promise} The icon of the item\r\n\t * @memberof UmbDocumentItemDataResolver\r\n\t */\r\n\tasync getIcon(): Promise {\r\n\t\tawait this.#init;\r\n\t\treturn this.#data?.documentType.icon;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the state of the item\r\n\t * @returns {Promise} The state of the item\r\n\t * @memberof UmbDocumentItemDataResolver\r\n\t */\r\n\tasync getState(): Promise {\r\n\t\tawait this.#init;\r\n\t\treturn this.#getCurrentVariant()?.state;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the isDraft of the item\r\n\t * @returns {Promise} The isDraft of the item\r\n\t * @memberof UmbDocumentItemDataResolver\r\n\t */\r\n\tasync getIsDraft(): Promise {\r\n\t\tawait this.#init;\r\n\t\treturn this.#isDraft.getValue() ?? false;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the isTrashed of the item\r\n\t * @returns {Promise} The isTrashed of the item\r\n\t * @memberof UmbDocumentItemDataResolver\r\n\t */\r\n\tasync getIsTrashed(): Promise {\r\n\t\tawait this.#init;\r\n\t\treturn this.#data?.isTrashed ?? false;\r\n\t}\r\n\r\n\t#setVariantAwareValues() {\r\n\t\tthis.#setName();\r\n\t\tthis.#setIsDraft();\r\n\t\tthis.#setState();\r\n\t}\r\n\r\n\t#setName() {\r\n\t\tconst variant = this.#getCurrentVariant();\r\n\t\tconst fallbackName = this.#findVariant(this.#defaultCulture)?.name;\r\n\t\tconst name = variant?.name ?? `(${fallbackName})`;\r\n\t\tthis.#name.setValue(name);\r\n\t}\r\n\r\n\t#setIsDraft() {\r\n\t\tconst variant = this.#getCurrentVariant();\r\n\t\tconst isDraft = variant?.state === UmbDocumentVariantState.DRAFT || false;\r\n\t\tthis.#isDraft.setValue(isDraft);\r\n\t}\r\n\r\n\t#setState() {\r\n\t\tconst variant = this.#getCurrentVariant();\r\n\t\tconst state = variant?.state || UmbDocumentVariantState.NOT_CREATED;\r\n\t\tthis.#state.setValue(state);\r\n\t}\r\n\r\n\t#findVariant(culture: string | undefined) {\r\n\t\treturn this.#data?.variants.find((x) => x.culture === culture);\r\n\t}\r\n\r\n\t#getCurrentVariant() {\r\n\t\tif (this.#isInvariant()) {\r\n\t\t\treturn this.#data?.variants?.[0];\r\n\t\t}\r\n\r\n\t\tconst culture = this.#propertyDataSetCulture?.culture || this.#appCulture;\r\n\t\treturn this.#findVariant(culture);\r\n\t}\r\n\r\n\t#isInvariant() {\r\n\t\treturn this.#data?.variants?.[0]?.culture === null;\r\n\t}\r\n}\r\n"],"names":["UmbDocumentItemDataResolver","UmbControllerBase","host","#unique","UmbStringState","#name","#icon","#state","#isTrashed","UmbBooleanState","#isDraft","UMB_PROPERTY_DATASET_CONTEXT","context","#propertyDataSetCulture","#setVariantAwareValues","#init","UMB_APP_LANGUAGE_CONTEXT","culture","#appCulture","value","#defaultCulture","#data","data","#getCurrentVariant","#setName","#setIsDraft","#setState","variant","fallbackName","#findVariant","name","isDraft","UmbDocumentVariantState","state","x","#isInvariant"],"mappings":"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"}