@yuuvis/client-framework 3.8.1 → 3.8.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"yuuvis-client-framework-object-details.mjs","sources":["../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-audit/object-audit.component.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-audit/object-audit.component.html","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details-header/object-details-header.component.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details-header/object-details-header.component.html","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details-shell/object-details-shell.service.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details-shell/object-details-shell.component.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details-shell/object-details-shell.component.html","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-metadata/object-metadata-section/object-metadata-section.component.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-metadata/object-metadata-section/object-metadata-section.component.html","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-metadata/object-metadata.component.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-metadata/object-metadata.component.html","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details.component.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details.component.html","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details.module.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-metadata/form-section-group.pipe.ts","../../../../../libs/yuuvis/client-framework/object-details/src/yuuvis-client-framework-object-details.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, computed, effect, inject, input, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n AuditEntry,\n AuditQueryResult,\n AuditService,\n DmsObject,\n EventService,\n LocaleDatePipe,\n TranslatePipe,\n YuvEvent,\n YuvEventType\n} from '@yuuvis/client-core';\nimport { BusyOverlayDirective } from '@yuuvis/client-framework/common';\nimport { YUV_ICONS } from '@yuuvis/client-framework/icons';\nimport { AuditRendererDirective } from '@yuuvis/client-framework/renderer';\nimport { YmtIconButtonDirective } from '@yuuvis/material';\nimport { finalize } from 'rxjs';\n\n@Component({\n selector: 'yuv-object-audit',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n LocaleDatePipe,\n BusyOverlayDirective,\n TranslatePipe,\n MatIconModule,\n YmtIconButtonDirective,\n AuditRendererDirective\n ],\n templateUrl: './object-audit.component.html',\n styleUrl: './object-audit.component.scss'\n})\nexport class ObjectAuditComponent {\n readonly #auditService = inject(AuditService);\n readonly #eventService = inject(EventService);\n\n #objectID?: string;\n #objectTypeID?: string;\n\n icons = {\n filter: YUV_ICONS.filter,\n arrowNext: YUV_ICONS.arrowNext\n };\n\n auditsRes = signal<AuditQueryResult | undefined>(undefined);\n // TODO: please recheck that.\n // TODO: Remove this filter once the system:ren:text audit lifecycle planning is complete and the tag's\n // purpose is fully defined.\n // eslint-disable-next-line max-len\n // https://help.optimal-systems.com/yuuvis/Momentum/latest/index.html#_content_renditions_asynchronous_full_text_indexing.html\n items = computed<AuditEntry[]>(() =>\n (this.auditsRes()?.items ?? []).filter((i) => !i.detail.includes('[system:ren:text, 1]'))\n );\n error = signal(false);\n busy = signal(false);\n\n dmsObject = input<DmsObject | undefined>(undefined);\n\n #dmsObjectEffect = effect(() => {\n const dmsObject = this.dmsObject();\n if (!dmsObject) {\n this.#objectID = undefined;\n this.#objectTypeID = undefined;\n this.auditsRes.set(undefined);\n } else if (!this.#objectID || this.#objectID !== dmsObject.id) {\n this.#objectID = dmsObject.id;\n this.#objectTypeID = dmsObject.objectTypeId;\n this.query();\n } else {\n this.query();\n }\n });\n\n /**\n * A list of audits that should not be shown. Use the audit codes (like 100, 301, etc.).\n * This will also disable the corresponding filters.\n */\n skipActions = input<number[]>([]);\n\n /**\n * Whether or not to ignore admin and user separation of audit entries\n */\n allActions = input(false);\n\n get objectID(): string | undefined {\n return this.#objectID;\n }\n\n constructor() {\n this.#eventService\n .on(YuvEventType.DMS_OBJECT_UPDATED)\n .pipe(takeUntilDestroyed())\n .subscribe((event: YuvEvent) => {\n const dmsObject = event.data as DmsObject;\n // reload audit entries when update belongs to the current dms object\n if (dmsObject.id === this.objectID) {\n this.query();\n }\n });\n }\n\n /**\n * Execute a query from the search panel.\n */\n query(): void {\n this.#fetchAuditEntries();\n }\n\n goToPage(page: number): void {\n const currentAuditsRes = this.auditsRes();\n if (currentAuditsRes) {\n this.busy.set(true);\n this.#auditService\n .getPage(currentAuditsRes, page)\n .pipe(finalize(() => this.busy.set(false)))\n .subscribe({\n next: (res: AuditQueryResult) => {\n this.auditsRes.set(res);\n },\n error: () => {\n this.#onError();\n }\n });\n }\n }\n\n #onError(): void {\n this.auditsRes.set(undefined);\n this.error.set(true);\n }\n\n #fetchAuditEntries(): void {\n if (!this.#objectID || !this.#objectTypeID) return;\n this.error.set(false);\n this.busy.set(true);\n\n this.#auditService.getAuditEntries(this.#objectID, { skipActions: this.skipActions() }).subscribe({\n next: (res: AuditQueryResult) => {\n this.busy.set(false);\n this.auditsRes.set(res);\n },\n error: () => {\n this.busy.set(false);\n this.#onError();\n }\n });\n }\n}\n","@let auditsResult = auditsRes();\n\n<div\n class=\"yuv-audit\"\n [ngClass]=\"{ singleEntry: auditsResult?.items?.length === 1, onPage: auditsResult && auditsResult.page > 1 }\"\n [yuvBusyOverlay]=\"busy()\"\n [attr.aria-busy]=\"busy()\"\n>\n @if (error()) {\n <div class=\"error\" role=\"alert\">\n <div>{{ 'yuv.audit.fetch.error' | translate }}</div>\n </div>\n }\n\n @if (auditsResult) {\n <!-- list of audits -->\n @let resItems = items();\n @if (resItems.length) {\n <ul class=\"timeline\" [attr.aria-label]=\"'yuv.audit.timeline' | translate\">\n @for (item of resItems; track item.creationDate + '-' + item.action) {\n <li\n class=\"audit\"\n [attr.aria-labelledby]=\"'date-' + $index + ' content-' + $index + ' version-' + $index + ' creator-' + $index\"\n >\n <time [attr.datetime]=\"item.creationDate\" [id]=\"'date-' + $index\" class=\"date\">{{ item.creationDate | localeDate }}</time>\n <div class=\"node\">\n <div class=\"label\">\n <div class=\"content\" [id]=\"'content-' + $index\"><ng-container [yuvAuditRenderer]=\"item\" /></div>\n <span class=\"version\" [id]=\"'version-' + $index\">{{ 'yuv.audit.label.version' | translate: { version: item.version } }}</span>\n </div>\n <div class=\"creator meta\" [id]=\"'creator-' + $index\">{{ item.createdBy.title }}</div>\n </div>\n </li>\n }\n </ul>\n } @else {\n <div class=\"empty\" role=\"status\" translate>yuv.audit.result.empty</div>\n }\n\n <!-- controls -->\n @if (auditsResult.hasMoreItems || auditsResult.page > 1) {\n <div class=\"footer\" yuvOfflineDisabled>\n <nav class=\"paging\" [attr.aria-label]=\"'yuv.audit.label.paging' | translate\">\n <button\n ymtIconButton\n [attr.aria-label]=\"'yuv.audit.label.paging.prev' | translate\"\n [disabled]=\"auditsResult.page === 1\"\n (click)=\"goToPage(auditsResult.page - 1)\"\n >\n <mat-icon aria-hidden=\"true\">chevron_left</mat-icon>\n </button>\n <div\n class=\"page\"\n aria-live=\"polite\"\n [attr.aria-label]=\"'yuv.audit.label.paging.current' | translate: { page: auditsResult.page }\"\n >\n <span aria-hidden=\"true\">{{ auditsResult.page }}</span>\n </div>\n <button\n ymtIconButton\n [attr.aria-label]=\"'yuv.audit.label.paging.next' | translate\"\n [disabled]=\"!auditsResult.hasMoreItems\"\n (click)=\"goToPage(auditsResult.page + 1)\"\n >\n <mat-icon aria-hidden=\"true\">chevron_right</mat-icon>\n </button>\n </nav>\n </div>\n }\n }\n</div>\n","\nimport { ChangeDetectionStrategy, Component, computed, inject, input, TemplateRef } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatIconModule } from '@angular/material/icon';\nimport { DmsObject, EventService, ObjectConfigService, VirtualObjectType, YuvEventType } from '@yuuvis/client-core';\nimport { RendererDirective, RendererDirectiveInput } from '@yuuvis/client-framework/renderer';\nimport { YmtPanesModule } from '@yuuvis/material/panes';\n\ninterface HeaderData {\n title: RendererDirectiveInput;\n description?: RendererDirectiveInput;\n icon: string;\n}\n\n/**\n * Component showing header data for a dms object. These will be\n * generated from the object config for the given object.\n *\n * You could inject a set of actions into the headers actions slot\n * by adding them to the components body:\n *\n * ```html\n * <yuv-object-details-header [dmsObject]=\"obj\">\n * <ng-template #yuvHeaderActions>...</ng-template>\n * </yuv-object-details-header>\n * ```\n */\n@Component({\n selector: 'yuv-object-details-header',\n imports: [MatIconModule, YmtPanesModule, RendererDirective],\n templateUrl: './object-details-header.component.html',\n styleUrl: './object-details-header.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ObjectDetailsHeaderComponent {\n #objectConfig = inject(ObjectConfigService);\n readonly #eventService = inject(EventService);\n\n dmsObject = input<DmsObject | undefined>(undefined);\n\n /**\n * Virtual object type to use for retrieving header data\n */\n type = input.required<VirtualObjectType>();\n /**\n * Bucket of the object config to retrieve header data from\n */\n bucket = input<string | undefined>(undefined);\n /** Template rendered in the actions area, aligned to the right of the title row. */\n actions = input<TemplateRef<unknown> | undefined>(undefined);\n /** Template rendered in the badges area, aligned to the right of the subtitle row. */\n badges = input<TemplateRef<unknown>>();\n\n headerData = computed<HeaderData | undefined>(() => {\n const object = this.dmsObject();\n const type = this.type();\n\n return object && type ? this.#setHeaderData() : undefined;\n });\n\n constructor() {\n this.#eventService\n .on(YuvEventType.DMS_OBJECT_UPDATED)\n .pipe(takeUntilDestroyed())\n .subscribe(() => this.#setHeaderData());\n }\n\n #setHeaderData(): HeaderData | undefined {\n const object = this.dmsObject();\n if (!object) {\n return undefined;\n } else {\n const roc = this.#objectConfig.getResolvedObjectConfig(object.data, this.type(), this.bucket());\n return {\n title: roc.title,\n description: roc.description,\n icon: roc.icon?.value\n };\n }\n }\n}\n","@let dmsObj = dmsObject();\n@let headerD = headerData();\n@if (dmsObj && headerD) {\n <ymt-pane-header [icon]=\"headerD.icon\" [actions]=\"actions()\" [badges]=\"badges()\">\n <ng-template #yuvPaneHeaderTitle>\n <ng-container *yuvRenderer=\"headerD.title\" />\n </ng-template>\n <ng-template #yuvPaneHeaderSubtitle>\n <ng-container *yuvRenderer=\"headerD.description\" />\n </ng-template>\n </ymt-pane-header>\n}\n","import { inject, Injectable, signal } from '@angular/core';\nimport { DmsObject, DmsService, TranslateService, Utils } from '@yuuvis/client-core';\nimport { finalize } from 'rxjs';\n\n@Injectable()\nexport class ObjectDetailsShellService {\n id = Utils.uuid();\n #dmsService = inject(DmsService);\n readonly translate = inject(TranslateService);\n\n #dmsObject = signal<DmsObject | undefined>(undefined);\n dmsObject = this.#dmsObject.asReadonly();\n\n contextError = signal<string | undefined>(undefined);\n busy = signal<boolean>(false);\n\n setDmsObject(dmsObject: DmsObject | undefined) {\n this.#dmsObject.set(dmsObject);\n this.contextError.set(undefined);\n }\n\n fetchDmsObject(id: string): void {\n this.busy.set(true);\n this.#dmsService\n .getDmsObject(id)\n .pipe(finalize(() => this.busy.set(false)))\n .subscribe({\n next: (dmsObject) => this.#dmsObject.set(dmsObject),\n error: () => {\n this.#dmsObject.set(undefined);\n this.contextError.set(this.translate.instant('yuv.object-metadata.context.load.error'));\n }\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, inject, input, signal, TemplateRef } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport {\n DmsObject,\n EventService,\n RetentionState,\n VirtualObjectType,\n YuvEvent,\n YuvEventType\n} from '@yuuvis/client-core';\nimport { BusyOverlayDirective } from '@yuuvis/client-framework/common';\nimport { ObjectDetailsHeaderComponent } from '../object-details-header/object-details-header.component';\nimport { ObjectDetailsShellService } from './object-details-shell.service';\n\n/**\n * Wrapper component for details of a dms object. This component\n * provides a header based on the object configuration for the given object.\n * It will also take care of loading the object if you only provide the objects ID.\n */\n@Component({\n selector: 'yuv-object-details-shell',\n standalone: true,\n imports: [ObjectDetailsHeaderComponent, MatTooltipModule, BusyOverlayDirective],\n templateUrl: './object-details-shell.component.html',\n styleUrls: ['./object-details-shell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ObjectDetailsShellComponent {\n #eventService = inject(EventService);\n #odShellService = inject(ObjectDetailsShellService);\n\n retentionState = signal<RetentionState | undefined>(undefined);\n contextError = this.#odShellService.contextError;\n dmsObject = this.#odShellService.dmsObject;\n busy = this.#odShellService.busy;\n\n /** Template rendered in the actions area, aligned to the right of the title row. */\n actions = input<TemplateRef<unknown> | undefined>(undefined);\n /** Template rendered in the badges area, aligned to the right of the subtitle row. */\n badges = input<TemplateRef<unknown>>();\n /**\n * Virtual object type to use for retrieving header data\n */\n type = input.required<VirtualObjectType>();\n /**\n * Bucket of the object config to retrieve header data from\n */\n bucket = input<string | undefined>(undefined);\n /**\n * Whether to hide the header\n */\n hideHeader = input<boolean>(false);\n\n constructor() {\n this.#eventService\n .on(YuvEventType.DMS_OBJECT_UPDATED, YuvEventType.DMS_OBJECT_DELETED)\n .pipe(takeUntilDestroyed())\n .subscribe((evt: YuvEvent) => {\n switch (evt.type) {\n case YuvEventType.DMS_OBJECT_UPDATED: {\n const obj = evt.data as DmsObject;\n const dmsObj = this.dmsObject();\n if (dmsObj?.id === obj.id) this.#odShellService.setDmsObject(obj);\n break;\n }\n case YuvEventType.DMS_OBJECT_DELETED: {\n if (evt.data?.id === this.dmsObject()?.id) {\n this.#odShellService.setDmsObject(undefined);\n }\n }\n }\n });\n }\n}\n","@let dmsObj = dmsObject();\n@if (dmsObj) {\n @if (!hideHeader()) {\n <yuv-object-details-header\n [dmsObject]=\"dmsObj\"\n [type]=\"type()\"\n [bucket]=\"bucket()\"\n [badges]=\"badges()\"\n [actions]=\"actions()\"\n />\n }\n <div class=\"content\" [yuvBusyOverlay]=\"busy()\">\n <ng-content />\n </div>\n} @else {\n <div class=\"empty\">\n @if (contextError()) {\n <div class=\"error\">{{ contextError() }}</div>\n } @else {\n <!-- EMPTY -->\n }\n </div>\n}\n","\nimport { Component, effect, inject, input, linkedSignal, output, signal, untracked, viewChild } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { Situation, SystemService } from '@yuuvis/client-core';\nimport {\n FormStatusChangedEvent,\n IObjectFormElementExtension,\n ObjectFormComponent,\n ObjectFormOptions\n} from '@yuuvis/client-framework/object-form';\nimport { ObjectMetadataSectionInput } from './object-metadata-section.interface';\n\n@Component({\n selector: 'yuv-object-metadata-section',\n imports: [MatIconModule, MatProgressSpinnerModule, ObjectFormComponent],\n templateUrl: './object-metadata-section.component.html',\n styleUrl: './object-metadata-section.component.scss',\n host: {\n '[class.invalid]': 'objectForm()?.form?.invalid',\n '[class.dirty]': 'objectForm()?.form?.dirty'\n }\n})\nexport class ObjectMetadataSectionComponent {\n #system = inject(SystemService);\n\n objectForm = viewChild<ObjectFormComponent>(ObjectFormComponent);\n section = input.required<ObjectMetadataSectionInput>();\n expandedInput = input<boolean>(false, { alias: 'expanded' });\n elementExtensions = input<IObjectFormElementExtension[]>([]);\n readonly = input<boolean>();\n expanded = linkedSignal(this.expandedInput);\n\n busy = signal(false);\n\n // linkedSignal instead of plain signal so that formOptions resets to undefined whenever\n // the section input changes (e.g. a different object is loaded). This ensures the form\n // is reloaded with fresh data for the new section while still allowing .set() mutations\n // (user edits) to persist across collapse/expand cycles within the same section.\n formOptions = linkedSignal<ObjectMetadataSectionInput, ObjectFormOptions | undefined>({\n source: this.section,\n computation: () => undefined\n });\n #formOptionsEffect = effect(() => {\n // Load the object form when the section is first expanded.\n // Don't use rxResource here because it messes with the state of the formOptions.\n const section = this.section();\n const expanded = this.expanded();\n\n // untracked() reads formOptions without adding it as a reactive dependency of this\n // effect (which would cause an infinite loop). The guard ensures we only fetch once\n // per section: subsequent expand cycles reuse the existing formOptions so that any\n // user-edited values are not overwritten with the original section.data.\n if (expanded && !untracked(() => this.formOptions())) {\n this.busy.set(true);\n this.#system.getObjectTypeForm(section.id, section.situation || Situation.EDIT).subscribe({\n next: (formModel) => {\n this.formOptions.set({ formModel, data: section.data || {} });\n this.busy.set(false);\n },\n error: (err) => {\n console.error('Error loading form options', err);\n this.formOptions.set(undefined);\n this.busy.set(false);\n }\n });\n }\n });\n\n statusChanged = output<FormStatusChangedEvent>();\n\n resetForm() {\n this.objectForm()?.resetForm();\n }\n\n setFormPristine() {\n this.objectForm()?.setFormPristine();\n }\n}\n","@let _section = section();\n@let fo = formOptions();\n\n<h3>\n <button\n type=\"button\"\n [attr.aria-expanded]=\"expanded()\"\n class=\"accordion-trigger\"\n [attr.aria-controls]=\"'sect_' + _section.id\"\n [id]=\"'accordion_' + _section.id\"\n (click)=\"expanded.set(!expanded())\"\n [attr.aria-busy]=\"busy()\"\n >\n @if (_section.icon) {\n @if (_section.svgIcon) {\n <mat-icon [svgIcon]=\"_section.icon\" />\n } @else {\n <mat-icon>{{ _section.icon }}</mat-icon>\n }\n }\n <span>{{ _section.label }}</span>\n @if (busy()) {\n <mat-spinner diameter=\"24\" />\n }\n <mat-icon class=\"arr\">keyboard_arrow_down</mat-icon>\n </button>\n</h3>\n<div\n [id]=\"'sect_' + _section.id\"\n role=\"region\"\n [attr.aria-labelledby]=\"'accordion_' + _section.id\"\n class=\"accordion-panel\"\n>\n @if (fo) {\n <yuv-object-form\n #objectForm\n [hidden]=\"!expanded()\"\n [readonly]=\"readonly()\"\n [formOptions]=\"fo\"\n [elementExtensions]=\"elementExtensions()\"\n (statusChanged)=\"statusChanged.emit($event)\"\n />\n }\n</div>\n","import {\n Component,\n computed,\n effect,\n inject,\n input,\n linkedSignal,\n OnDestroy,\n output,\n signal,\n viewChildren\n} from '@angular/core';\nimport { rxResource, toSignal } from '@angular/core/rxjs-interop';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n DmsObject,\n DmsService,\n FlavoredDmsObject,\n NotificationService,\n ObjectLockingService,\n ObjectTypeFlavor,\n PendingChangesService,\n Situation,\n SystemService,\n TranslatePipe,\n TranslateService,\n UserService\n} from '@yuuvis/client-core';\nimport { BusyOverlayDirective } from '@yuuvis/client-framework/common';\nimport {\n FormStatusChangedEvent,\n IObjectFormElementExtension,\n ObjectFormComponent,\n ObjectFormOptions\n} from '@yuuvis/client-framework/object-form';\nimport { ObjectSummaryDataComponent } from '@yuuvis/client-framework/object-summary';\nimport { RendererDirectiveInput } from '@yuuvis/client-framework/renderer';\nimport { YmtButtonDirective } from '@yuuvis/material';\nimport { map, of, Subscription } from 'rxjs';\nimport { ObjectMetadataSectionComponent } from './object-metadata-section/object-metadata-section.component';\n\n@Component({\n selector: 'yuv-object-metadata',\n standalone: true,\n imports: [\n ObjectFormComponent,\n ObjectSummaryDataComponent,\n BusyOverlayDirective,\n TranslatePipe,\n MatButtonModule,\n MatIconModule,\n ReactiveFormsModule,\n ObjectMetadataSectionComponent,\n YmtButtonDirective\n ],\n templateUrl: './object-metadata.component.html',\n styleUrl: './object-metadata.component.scss',\n host: {\n '[class.empty]': 'empty()',\n '[class.loading]': 'busyLoading()'\n }\n})\nexport class ObjectMetadataComponent implements OnDestroy {\n #pendingChanges = inject(PendingChangesService);\n #notificationService = inject(NotificationService);\n translate = inject(TranslateService);\n #system = inject(SystemService);\n #dmsService = inject(DmsService);\n #userService = inject(UserService);\n #objectLocking = inject(ObjectLockingService);\n\n user = toSignal(this.#userService.user$);\n hasWritePermission = computed(() => {\n const flavoredDmsObject = this.flavoredDmsObject();\n const dmsObject = this.dmsObject();\n const obj = flavoredDmsObject ? flavoredDmsObject.object : dmsObject;\n const lockState = obj ? this.#objectLocking.getLockState(obj) : undefined;\n const lockedByOther = !!lockState?.locked && !lockState.lockedByCurrentUser;\n\n return lockedByOther ? false : obj?.permissions?.writeIndexData || false;\n });\n\n objectForms = viewChildren<ObjectFormComponent>(ObjectFormComponent);\n objectMetadataSectionForms = viewChildren<ObjectMetadataSectionComponent>(ObjectMetadataSectionComponent);\n\n #pendingTaskId?: string;\n\n #formSubscriptions: Subscription[] = [];\n\n busySaving = signal<boolean>(false);\n busyLoading = signal<boolean>(false);\n disableControls = input<boolean>(false);\n /**\n * Set to 'true' to disable the basic metadata form. This will hide\n * the basic metadata section that shows common object proeperties like\n * creation date, creator, version, etc.\n */\n disableBasicMetadata = input<boolean>(false);\n elementExtensions = input<IObjectFormElementExtension[]>([]);\n controlsVisible = signal<boolean>(false);\n empty = computed(\n () => !this.mainFormOptions() && this.flavorFormOptions().length === 0 && this.disableBasicMetadata()\n );\n\n // state of all individual forms\n #formStates: Map<string, FormStatusChangedEvent> = new Map<string, FormStatusChangedEvent>();\n\n baseData: {\n label: string;\n value: RendererDirectiveInput;\n }[] = [];\n\n /**\n * Form situation, if not set default will be 'EDIT'\n */\n situation = input<Situation>(Situation.EDIT);\n /**\n * Set to 'true' to prevent all metadata from being edited\n */\n formDisabled = signal<boolean>(false);\n\n dmsObjectInput = input<DmsObject | undefined>(undefined, { alias: 'dmsObject' });\n dmsObject = linkedSignal(this.dmsObjectInput);\n\n /**\n * @deprecated This input will be removed in the future.\n * Please migrate to using `dmsObject` and `flavors` inputs instead.\n */\n flavoredDmsObject = input<FlavoredDmsObject | undefined>();\n #flavoredDmsObjectEffect = effect(() => {\n const flavoredDmsObject = this.flavoredDmsObject();\n flavoredDmsObject && this.#init(flavoredDmsObject?.object, flavoredDmsObject?.flavors);\n });\n combinedFormState?: FormStatusChangedEvent;\n\n /**\n * Emits the updated `DmsObject` when metadata have been saved.\n */\n indexDataSaved = output<DmsObject>();\n /**\n * Emits the current state of the metadata form.\n */\n statusChanged = output<FormStatusChangedEvent>();\n\n /**\n * @deprecated once input flavoredDmsObject will be removed in the future.\n * this is not used anymore\n *\n */\n #legacyFlavors = signal<ObjectTypeFlavor[] | undefined>(undefined);\n /**\n * @deprecated once input flavoredDmsObject will be removed in the future.\n * this is not used anymore\n *\n */\n #init(object?: DmsObject, flavors?: ObjectTypeFlavor[]) {\n const o = this.dmsObject();\n if (object && (!o || o !== object)) {\n this.#legacyFlavors.set(flavors);\n this.#objectToForm(object);\n }\n if (object) this.dmsObject.set(object);\n }\n\n #mainFormOptionsResource = rxResource<ObjectFormOptions | undefined, DmsObject | undefined>({\n params: this.dmsObject,\n stream: ({ params }) => {\n if (!params) return of(undefined);\n return this.#system.getObjectTypeForms([params.objectTypeId], this.situation()).pipe(\n map((res) =>\n res[params.objectTypeId]\n ? {\n formModel: res[params.objectTypeId],\n data: params.data,\n disabled: this.formDisabled() || !params.permissions?.writeIndexData\n }\n : undefined\n )\n );\n }\n });\n // form of the dms object itself\n mainFormOptions = this.#mainFormOptionsResource.value;\n mainFormOptionsIsLoading = this.#mainFormOptionsResource.isLoading;\n\n flavors = input<ObjectTypeFlavor[] | undefined>(undefined);\n // forms of applied flavors\n flavorFormOptions = computed(() => {\n const object = this.dmsObject();\n const flavors = this.flavors() ?? this.#legacyFlavors();\n const mappedFlavors: Record<string, ObjectTypeFlavor> = (flavors || []).reduce(\n (acc, curr) => ({ ...acc, [curr.sot]: curr }),\n {}\n );\n if (!object) return [];\n return (flavors || [])\n .map((f) => f.sot)\n .map((id) => ({\n id,\n label: this.#system.getLocalizedLabel(id),\n icon: mappedFlavors[id]?.icon,\n svgIcon: mappedFlavors[id]?.svgIcon,\n data: object.data\n }));\n });\n\n /**\n * @deprecated once input flavoredDmsObject will be removed in the future.\n * this is not used anymore\n *\n */\n #objectToForm(object?: DmsObject) {\n if (object) {\n this.busyLoading.set(true);\n\n this.#system.getObjectTypeForms([object.objectTypeId], this.situation()).subscribe({\n next: (res) => {\n this.mainFormOptions.set(\n res[object.objectTypeId]\n ? {\n formModel: res[object.objectTypeId],\n data: object.data,\n disabled: this.formDisabled() || !object.permissions?.writeIndexData\n }\n : undefined\n );\n this.busyLoading.set(false);\n },\n error: () => {\n this.busyLoading.set(false);\n }\n });\n }\n }\n\n onFormStatusChanged(formId: string, evt: FormStatusChangedEvent) {\n this.#formStates.set(formId, evt);\n this.#getCombinedFormState();\n if (this.combinedFormState?.dirty) this.#startPending();\n else this.#finishPending();\n this.controlsVisible.set(!!this.combinedFormState?.dirty);\n if (this.combinedFormState) this.statusChanged.emit(this.combinedFormState);\n }\n\n #getCombinedFormState(): FormStatusChangedEvent {\n const combinedFormState = {\n dirty: false,\n indexdataChanged: false,\n invalid: false,\n data: {}\n };\n this.#formStates.forEach((s) => {\n if (s.dirty) {\n combinedFormState.dirty = s.dirty;\n }\n if (s.indexdataChanged) {\n combinedFormState.indexdataChanged = s.indexdataChanged;\n }\n if (s.invalid) {\n combinedFormState.invalid = s.invalid;\n }\n combinedFormState.data = { ...combinedFormState.data, ...s.data };\n });\n this.combinedFormState = combinedFormState;\n return this.combinedFormState;\n }\n\n save() {\n // TODO: this.dmsObject should be this.dmsObject() once this.#init() is removed\n const object = this.dmsObject();\n if (object && this.combinedFormState) {\n this.busySaving.set(true);\n this.#dmsService.updateDmsObject(object.id, this.combinedFormState.data).subscribe({\n next: (updatedObject: DmsObject) => {\n this.dmsObject.set(updatedObject);\n this.setFormPristine();\n this.indexDataSaved.emit(updatedObject);\n this.#finishPending();\n this.controlsVisible.set(false);\n this.busySaving.set(false);\n },\n error: (err) => {\n this.#notificationService.error(\n '',\n // this.dmsObject?.title || '',\n err.status === 404\n ? this.translate.instant('yuv.object-metadata.context.load.error')\n : this.translate.instant('yuv.object-metadata.save.error')\n );\n this.controlsVisible.set(false);\n this.busySaving.set(false);\n }\n });\n }\n }\n /**\n * Reset te form to its initial state\n */\n resetForm() {\n if (this.objectForms()?.length) {\n this.objectForms().forEach((f) => f.resetForm());\n }\n\n if (this.objectMetadataSectionForms()?.length) {\n this.objectMetadataSectionForms().forEach((s) => s.resetForm());\n }\n (this.objectForms()?.length || this.objectMetadataSectionForms()?.length) && this.#formStates.clear();\n }\n\n updateFormValue(data: Record<string, unknown>) {\n if (this.objectForms()?.length) {\n this.objectForms().forEach((f) => f.setFormData(data));\n }\n }\n\n setFormPristine() {\n if (this.objectForms()?.length) {\n this.objectForms().forEach((f) => f.setFormPristine());\n }\n if (this.objectMetadataSectionForms()?.length) {\n this.objectMetadataSectionForms().forEach((s) => s.setFormPristine());\n }\n (this.objectForms()?.length || this.objectMetadataSectionForms()?.length) && this.#formStates.clear();\n }\n\n #startPending() {\n // because this method will be called every time the form status changes,\n // pending task will only be started once until it was finished\n if (!this.#pendingChanges.hasPendingTask(this.#pendingTaskId || ' ')) {\n this.#pendingTaskId = this.#pendingChanges.startTask(\n this.translate.instant('yuv.object-metadata.pending-changes.alert')\n );\n }\n }\n\n #finishPending() {\n if (this.#pendingTaskId) this.#pendingChanges.finishTask(this.#pendingTaskId);\n }\n\n ngOnDestroy(): void {\n this.#formSubscriptions.forEach((s) => s.unsubscribe());\n }\n}\n","<main [yuvBusyOverlay]=\"busySaving() || busyLoading() || mainFormOptionsIsLoading()\">\n @if (empty()) {\n <p>{{ 'yuv.object-metadata.empty.message' | translate }}</p>\n }\n @if (!mainFormOptions()) {\n <yuv-object-form\n [readonly]=\"!hasWritePermission()\"\n [formOptions]=\"mainFormOptions()\"\n [elementExtensions]=\"elementExtensions()\"\n (statusChanged)=\"onFormStatusChanged('main', $event)\"\n />\n }\n @for (fo of flavorFormOptions(); track $index) {\n <yuv-object-metadata-section\n [readonly]=\"!hasWritePermission()\"\n [section]=\"fo\"\n [elementExtensions]=\"elementExtensions()\"\n [expanded]=\"$index === 0\"\n (statusChanged)=\"onFormStatusChanged(fo.id, $event)\"\n />\n }\n\n <!-- base data -->\n @let object = dmsObject() ?? dmsObject();\n @if (object && !disableBasicMetadata()) {\n <yuv-object-summary-data [dmsObject]=\"object\" />\n }\n</main>\n\n<footer [attr.inert]=\"disableControls() || !controlsVisible() || null\">\n <div class=\"container\">\n <button\n ymtButton=\"secondary\"\n button-size=\"small\"\n [disabled]=\"busySaving() || busyLoading()\"\n (click)=\"resetForm()\"\n [hidden]=\"!combinedFormState?.dirty\"\n [disabled]=\"!combinedFormState?.dirty\"\n >\n {{ 'yuv.object-metadata.button.reset' | translate }}\n </button>\n <button\n ymtButton=\"primary\"\n button-size=\"small\"\n (click)=\"save()\"\n [disabled]=\"!combinedFormState?.dirty || combinedFormState?.invalid || busySaving() || busyLoading()\"\n >\n {{ 'yuv.object-metadata.button.save' | translate }}\n </button>\n </div>\n</footer>\n","import { Component, effect, inject, input, signal, TemplateRef, untracked } from '@angular/core';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport {\n DmsObject,\n ObjectTypeFlavor,\n TabGuardDirective,\n TranslatePipe,\n UserService,\n VirtualObjectType\n} from '@yuuvis/client-core';\nimport { ObjectPreviewComponent } from '@yuuvis/client-framework/object-preview';\nimport { ObjectAuditComponent } from './object-audit/object-audit.component';\nimport { ObjectDetailsShellComponent } from './object-details-shell/object-details-shell.component';\nimport { ObjectDetailsShellService } from './object-details-shell/object-details-shell.service';\nimport { ObjectMetadataComponent } from './object-metadata/object-metadata.component';\n\n@Component({\n selector: 'yuv-object-details',\n standalone: true,\n imports: [\n TranslatePipe,\n MatTabsModule,\n TabGuardDirective,\n ObjectDetailsShellComponent,\n ObjectPreviewComponent,\n ObjectMetadataComponent,\n ObjectAuditComponent\n ],\n providers: [ObjectDetailsShellService],\n templateUrl: './object-details.component.html',\n styleUrls: ['./object-details.component.scss']\n})\nexport class ObjectDetailsComponent {\n readonly #userService = inject(UserService);\n #odShellService = inject(ObjectDetailsShellService);\n\n isAdvancedUser = this.#userService.isAdvancedUser;\n\n currentUser = signal(this.#userService.getCurrentUser());\n\n /**\n * ID to store the components layout state (splitted tabs, gutter position)\n */\n layoutSettingsID = signal<string | undefined>(undefined);\n\n /**\n * DmsObject to show the details for.\n */\n dmsObjectInput = input<DmsObject | undefined>(undefined, { alias: 'dmsObject' });\n dmsObjectInputEffect = effect(() => {\n const o = this.dmsObjectInput();\n if (o) untracked(() => this.#odShellService.setDmsObject(o));\n });\n\n dmsObject = this.#odShellService.dmsObject;\n\n /**\n * Flavors to take into account. These flavors define for example the metadata\n * of an object.\n */\n flavors = input<ObjectTypeFlavor[]>([]);\n\n /**\n * Virtual object type to use for retrieving header data\n */\n type = input.required<VirtualObjectType>();\n\n /**\n * If the object config for the given type has been stored in a certain bucket, this\n * bucket can be provided here. If no bucket is set, the config will be retrieved\n * from the main object config\n */\n objectConfigBucket = input<string | undefined>(undefined);\n /**\n * ID of a DmsObject. The object will be fetched from the backend upfront.\n */\n objectId = input<string | undefined>(undefined);\n #objectIdEffect = effect(() => {\n const oid = this.objectId();\n if (oid) this.#odShellService.fetchDmsObject(oid);\n });\n /**\n * Whether to hide the header\n */\n hideHeader = input<boolean>(false);\n\n actions = input<TemplateRef<any> | undefined>(undefined);\n /** Template rendered in the badges area, aligned to the right of the subtitle row. */\n badges = input<TemplateRef<unknown>>();\n\n onIndexdataSaved(updatedObject: DmsObject) {\n this.#odShellService.setDmsObject(updatedObject);\n }\n\n // versionSelected(version: number) {\n // const nav = ['../..', 'version'];\n // this.#router.navigate([...nav, this.dmsObject?.version], { queryParams: { version }, relativeTo: this.#route });\n // }\n}\n","<yuv-object-details-shell\n [type]=\"type()\"\n [hideHeader]=\"hideHeader()\"\n [bucket]=\"objectConfigBucket()\"\n [actions]=\"actions()\"\n [badges]=\"badges()\"\n>\n @let dmsObj = dmsObject();\n <mat-tab-group yuvTabGuardDisable>\n <!-- content -->\n @if (dmsObj && dmsObj.content) {\n <mat-tab [label]=\"'yuv.object-details.tabs.content.title' | translate\">\n <ng-template matTabContent>\n <yuv-object-preview [dmsObject]=\"dmsObj\" />\n </ng-template>\n </mat-tab>\n }\n\n <!-- indexdata -->\n <mat-tab [label]=\"'yuv.object-metadata.tabs.indexdata.title' | translate\">\n <ng-template matTabContent>\n <yuv-object-metadata\n [dmsObject]=\"dmsObject()\"\n [flavors]=\"flavors()\"\n (indexDataSaved)=\"onIndexdataSaved($event)\"\n />\n </ng-template>\n </mat-tab>\n <!-- history -->\n <mat-tab [label]=\"'yuv.object-metadata.tabs.history.title' | translate\">\n <ng-template matTabContent> <yuv-object-audit [dmsObject]=\"dmsObj\" /> </ng-template\n ></mat-tab>\n </mat-tab-group>\n</yuv-object-details-shell>\n","import { NgModule } from '@angular/core';\nimport { RetentionBadgeComponent } from '@yuuvis/client-framework/common';\nimport { ObjectAuditComponent } from './object-audit/object-audit.component';\nimport { ObjectDetailsHeaderComponent } from './object-details-header/object-details-header.component';\nimport { ObjectDetailsShellComponent } from './object-details-shell/object-details-shell.component';\nimport { ObjectDetailsComponent } from './object-details.component';\nimport { ObjectMetadataSectionComponent } from './object-metadata/object-metadata-section/object-metadata-section.component';\nimport { ObjectMetadataComponent } from './object-metadata/object-metadata.component';\n\nconst cmp = [\n ObjectDetailsComponent,\n ObjectDetailsHeaderComponent,\n ObjectDetailsShellComponent,\n ObjectMetadataComponent,\n ObjectMetadataSectionComponent,\n ObjectAuditComponent,\n RetentionBadgeComponent\n];\n\n@NgModule({\n imports: cmp,\n exports: cmp\n})\nexport class YuvObjectDetailsModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\n@Pipe({\n name: 'formSectionGroup',\n standalone: true \n})\nexport class FormSectionGroupPipe implements PipeTransform {\n transform(form: FormGroup, id: string): FormGroup {\n return form.get(id) as FormGroup;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
1
+ {"version":3,"file":"yuuvis-client-framework-object-details.mjs","sources":["../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-audit/object-audit.component.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-audit/object-audit.component.html","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details-header/object-details-header.component.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details-header/object-details-header.component.html","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details-shell/object-details-shell.service.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details-shell/object-details-shell.component.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details-shell/object-details-shell.component.html","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-metadata/object-metadata-section/object-metadata-section.component.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-metadata/object-metadata-section/object-metadata-section.component.html","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-metadata/object-metadata.component.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-metadata/object-metadata.component.html","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details.component.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details.component.html","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details.module.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-metadata/form-section-group.pipe.ts","../../../../../libs/yuuvis/client-framework/object-details/src/yuuvis-client-framework-object-details.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, computed, effect, inject, input, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n AuditEntry,\n AuditQueryResult,\n AuditService,\n DmsObject,\n EventService,\n LocaleDatePipe,\n TranslatePipe,\n YuvEvent,\n YuvEventType\n} from '@yuuvis/client-core';\nimport { BusyOverlayDirective } from '@yuuvis/client-framework/common';\nimport { YUV_ICONS } from '@yuuvis/client-framework/icons';\nimport { AuditRendererDirective } from '@yuuvis/client-framework/renderer';\nimport { YmtIconButtonDirective } from '@yuuvis/material';\nimport { finalize } from 'rxjs';\n\n@Component({\n selector: 'yuv-object-audit',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n LocaleDatePipe,\n BusyOverlayDirective,\n TranslatePipe,\n MatIconModule,\n YmtIconButtonDirective,\n AuditRendererDirective\n ],\n templateUrl: './object-audit.component.html',\n styleUrl: './object-audit.component.scss'\n})\nexport class ObjectAuditComponent {\n readonly #auditService = inject(AuditService);\n readonly #eventService = inject(EventService);\n\n #objectID?: string;\n #objectTypeID?: string;\n\n icons = {\n filter: YUV_ICONS.filter,\n arrowNext: YUV_ICONS.arrowNext\n };\n\n auditsRes = signal<AuditQueryResult | undefined>(undefined);\n // TODO: please recheck that.\n // TODO: Remove this filter once the system:ren:text audit lifecycle planning is complete and the tag's\n // purpose is fully defined.\n // eslint-disable-next-line max-len\n // https://help.optimal-systems.com/yuuvis/Momentum/latest/index.html#_content_renditions_asynchronous_full_text_indexing.html\n items = computed<AuditEntry[]>(() =>\n (this.auditsRes()?.items ?? []).filter((i) => !i.detail.includes('[system:ren:text, 1]'))\n );\n error = signal(false);\n busy = signal(false);\n\n dmsObject = input<DmsObject | undefined>(undefined);\n\n #dmsObjectEffect = effect(() => {\n const dmsObject = this.dmsObject();\n if (!dmsObject) {\n this.#objectID = undefined;\n this.#objectTypeID = undefined;\n this.auditsRes.set(undefined);\n } else if (!this.#objectID || this.#objectID !== dmsObject.id) {\n this.#objectID = dmsObject.id;\n this.#objectTypeID = dmsObject.objectTypeId;\n this.query();\n } else {\n this.query();\n }\n });\n\n /**\n * A list of audits that should not be shown. Use the audit codes (like 100, 301, etc.).\n * This will also disable the corresponding filters.\n */\n skipActions = input<number[]>([]);\n\n /**\n * Whether or not to ignore admin and user separation of audit entries\n */\n allActions = input(false);\n\n get objectID(): string | undefined {\n return this.#objectID;\n }\n\n constructor() {\n this.#eventService\n .on(YuvEventType.DMS_OBJECT_UPDATED)\n .pipe(takeUntilDestroyed())\n .subscribe((event: YuvEvent) => {\n const dmsObject = event.data as DmsObject;\n // reload audit entries when update belongs to the current dms object\n if (dmsObject.id === this.objectID) {\n this.query();\n }\n });\n }\n\n /**\n * Execute a query from the search panel.\n */\n query(): void {\n this.#fetchAuditEntries();\n }\n\n goToPage(page: number): void {\n const currentAuditsRes = this.auditsRes();\n if (currentAuditsRes) {\n this.busy.set(true);\n this.#auditService\n .getPage(currentAuditsRes, page)\n .pipe(finalize(() => this.busy.set(false)))\n .subscribe({\n next: (res: AuditQueryResult) => {\n this.auditsRes.set(res);\n },\n error: () => {\n this.#onError();\n }\n });\n }\n }\n\n #onError(): void {\n this.auditsRes.set(undefined);\n this.error.set(true);\n }\n\n #fetchAuditEntries(): void {\n if (!this.#objectID || !this.#objectTypeID) return;\n this.error.set(false);\n this.busy.set(true);\n\n this.#auditService.getAuditEntries(this.#objectID, { skipActions: this.skipActions() }).subscribe({\n next: (res: AuditQueryResult) => {\n this.busy.set(false);\n this.auditsRes.set(res);\n },\n error: () => {\n this.busy.set(false);\n this.#onError();\n }\n });\n }\n}\n","@let auditsResult = auditsRes();\n\n<div\n class=\"yuv-audit\"\n [ngClass]=\"{ singleEntry: auditsResult?.items?.length === 1, onPage: auditsResult && auditsResult.page > 1 }\"\n [yuvBusyOverlay]=\"busy()\"\n [attr.aria-busy]=\"busy()\"\n>\n @if (error()) {\n <div class=\"error\" role=\"alert\">\n <div>{{ 'yuv.audit.fetch.error' | translate }}</div>\n </div>\n }\n\n @if (auditsResult) {\n <!-- list of audits -->\n @let resItems = items();\n @if (resItems.length) {\n <ul class=\"timeline\" [attr.aria-label]=\"'yuv.audit.timeline' | translate\">\n @for (item of resItems; track item.creationDate + '-' + item.action) {\n <li\n class=\"audit\"\n [attr.aria-labelledby]=\"'date-' + $index + ' content-' + $index + ' version-' + $index + ' creator-' + $index\"\n >\n <time [attr.datetime]=\"item.creationDate\" [id]=\"'date-' + $index\" class=\"date\">{{ item.creationDate | localeDate }}</time>\n <div class=\"node\">\n <div class=\"label\">\n <div class=\"content\" [id]=\"'content-' + $index\"><ng-container [yuvAuditRenderer]=\"item\" /></div>\n <span class=\"version\" [id]=\"'version-' + $index\">{{ 'yuv.audit.label.version' | translate: { version: item.version } }}</span>\n </div>\n <div class=\"creator meta\" [id]=\"'creator-' + $index\">{{ item.createdBy.title }}</div>\n </div>\n </li>\n }\n </ul>\n } @else {\n <div class=\"empty\" role=\"status\" translate>yuv.audit.result.empty</div>\n }\n\n <!-- controls -->\n @if (auditsResult.hasMoreItems || auditsResult.page > 1) {\n <div class=\"footer\" yuvOfflineDisabled>\n <nav class=\"paging\" [attr.aria-label]=\"'yuv.audit.label.paging' | translate\">\n <button\n ymtIconButton\n [attr.aria-label]=\"'yuv.audit.label.paging.prev' | translate\"\n [disabled]=\"auditsResult.page === 1\"\n (click)=\"goToPage(auditsResult.page - 1)\"\n >\n <mat-icon aria-hidden=\"true\">chevron_left</mat-icon>\n </button>\n <div\n class=\"page\"\n aria-live=\"polite\"\n [attr.aria-label]=\"'yuv.audit.label.paging.current' | translate: { page: auditsResult.page }\"\n >\n <span aria-hidden=\"true\">{{ auditsResult.page }}</span>\n </div>\n <button\n ymtIconButton\n [attr.aria-label]=\"'yuv.audit.label.paging.next' | translate\"\n [disabled]=\"!auditsResult.hasMoreItems\"\n (click)=\"goToPage(auditsResult.page + 1)\"\n >\n <mat-icon aria-hidden=\"true\">chevron_right</mat-icon>\n </button>\n </nav>\n </div>\n }\n }\n</div>\n","\nimport { ChangeDetectionStrategy, Component, computed, inject, input, TemplateRef } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatIconModule } from '@angular/material/icon';\nimport { DmsObject, EventService, ObjectConfigService, VirtualObjectType, YuvEventType } from '@yuuvis/client-core';\nimport { RendererDirective, RendererDirectiveInput } from '@yuuvis/client-framework/renderer';\nimport { YmtPanesModule } from '@yuuvis/material/panes';\n\ninterface HeaderData {\n title: RendererDirectiveInput;\n description?: RendererDirectiveInput;\n icon: string;\n}\n\n/**\n * Component showing header data for a dms object. These will be\n * generated from the object config for the given object.\n *\n * You could inject a set of actions into the headers actions slot\n * by adding them to the components body:\n *\n * ```html\n * <yuv-object-details-header [dmsObject]=\"obj\">\n * <ng-template #yuvHeaderActions>...</ng-template>\n * </yuv-object-details-header>\n * ```\n */\n@Component({\n selector: 'yuv-object-details-header',\n imports: [MatIconModule, YmtPanesModule, RendererDirective],\n templateUrl: './object-details-header.component.html',\n styleUrl: './object-details-header.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ObjectDetailsHeaderComponent {\n #objectConfig = inject(ObjectConfigService);\n readonly #eventService = inject(EventService);\n\n dmsObject = input<DmsObject | undefined>(undefined);\n\n /**\n * Virtual object type to use for retrieving header data\n */\n type = input.required<VirtualObjectType>();\n /**\n * Bucket of the object config to retrieve header data from\n */\n bucket = input<string | undefined>(undefined);\n /** Template rendered in the actions area, aligned to the right of the title row. */\n actions = input<TemplateRef<unknown> | undefined>(undefined);\n /** Template rendered in the badges area, aligned to the right of the subtitle row. */\n badges = input<TemplateRef<unknown>>();\n\n headerData = computed<HeaderData | undefined>(() => {\n const object = this.dmsObject();\n const type = this.type();\n\n return object && type ? this.#setHeaderData() : undefined;\n });\n\n constructor() {\n this.#eventService\n .on(YuvEventType.DMS_OBJECT_UPDATED)\n .pipe(takeUntilDestroyed())\n .subscribe(() => this.#setHeaderData());\n }\n\n #setHeaderData(): HeaderData | undefined {\n const object = this.dmsObject();\n if (!object) {\n return undefined;\n } else {\n const roc = this.#objectConfig.getResolvedObjectConfig(object.data, this.type(), this.bucket());\n return {\n title: roc.title,\n description: roc.description,\n icon: roc.icon?.value\n };\n }\n }\n}\n","@let dmsObj = dmsObject();\n@let headerD = headerData();\n@if (dmsObj && headerD) {\n <ymt-pane-header [icon]=\"headerD.icon\" [actions]=\"actions()\" [badges]=\"badges()\">\n <ng-template #yuvPaneHeaderTitle>\n <ng-container *yuvRenderer=\"headerD.title\" />\n </ng-template>\n <ng-template #yuvPaneHeaderSubtitle>\n <ng-container *yuvRenderer=\"headerD.description\" />\n </ng-template>\n </ymt-pane-header>\n}\n","import { inject, Injectable, signal } from '@angular/core';\nimport { DmsObject, DmsService, TranslateService, Utils } from '@yuuvis/client-core';\nimport { finalize } from 'rxjs';\n\n@Injectable()\nexport class ObjectDetailsShellService {\n id = Utils.uuid();\n #dmsService = inject(DmsService);\n readonly translate = inject(TranslateService);\n\n #dmsObject = signal<DmsObject | undefined>(undefined);\n dmsObject = this.#dmsObject.asReadonly();\n\n contextError = signal<string | undefined>(undefined);\n busy = signal<boolean>(false);\n\n setDmsObject(dmsObject: DmsObject | undefined) {\n this.#dmsObject.set(dmsObject);\n this.contextError.set(undefined);\n }\n\n fetchDmsObject(id: string): void {\n this.busy.set(true);\n this.#dmsService\n .getDmsObject(id)\n .pipe(finalize(() => this.busy.set(false)))\n .subscribe({\n next: (dmsObject) => this.#dmsObject.set(dmsObject),\n error: () => {\n this.#dmsObject.set(undefined);\n this.contextError.set(this.translate.instant('yuv.object-metadata.context.load.error'));\n }\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, inject, input, signal, TemplateRef } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport {\n DmsObject,\n EventService,\n RetentionState,\n VirtualObjectType,\n YuvEvent,\n YuvEventType\n} from '@yuuvis/client-core';\nimport { BusyOverlayDirective } from '@yuuvis/client-framework/common';\nimport { ObjectDetailsHeaderComponent } from '../object-details-header/object-details-header.component';\nimport { ObjectDetailsShellService } from './object-details-shell.service';\n\n/**\n * Wrapper component for details of a dms object. This component\n * provides a header based on the object configuration for the given object.\n * It will also take care of loading the object if you only provide the objects ID.\n */\n@Component({\n selector: 'yuv-object-details-shell',\n standalone: true,\n imports: [ObjectDetailsHeaderComponent, MatTooltipModule, BusyOverlayDirective],\n templateUrl: './object-details-shell.component.html',\n styleUrls: ['./object-details-shell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ObjectDetailsShellComponent {\n #eventService = inject(EventService);\n #odShellService = inject(ObjectDetailsShellService);\n\n retentionState = signal<RetentionState | undefined>(undefined);\n contextError = this.#odShellService.contextError;\n dmsObject = this.#odShellService.dmsObject;\n busy = this.#odShellService.busy;\n\n /** Template rendered in the actions area, aligned to the right of the title row. */\n actions = input<TemplateRef<unknown> | undefined>(undefined);\n /** Template rendered in the badges area, aligned to the right of the subtitle row. */\n badges = input<TemplateRef<unknown>>();\n /**\n * Virtual object type to use for retrieving header data\n */\n type = input.required<VirtualObjectType>();\n /**\n * Bucket of the object config to retrieve header data from\n */\n bucket = input<string | undefined>(undefined);\n /**\n * Whether to hide the header\n */\n hideHeader = input<boolean>(false);\n\n constructor() {\n this.#eventService\n .on(YuvEventType.DMS_OBJECT_UPDATED, YuvEventType.DMS_OBJECT_DELETED)\n .pipe(takeUntilDestroyed())\n .subscribe((evt: YuvEvent) => {\n switch (evt.type) {\n case YuvEventType.DMS_OBJECT_UPDATED: {\n const obj = evt.data as DmsObject;\n const dmsObj = this.dmsObject();\n if (dmsObj?.id === obj.id) this.#odShellService.setDmsObject(obj);\n break;\n }\n case YuvEventType.DMS_OBJECT_DELETED: {\n if (evt.data?.id === this.dmsObject()?.id) {\n this.#odShellService.setDmsObject(undefined);\n }\n }\n }\n });\n }\n}\n","@let dmsObj = dmsObject();\n@if (dmsObj) {\n @if (!hideHeader()) {\n <yuv-object-details-header\n [dmsObject]=\"dmsObj\"\n [type]=\"type()\"\n [bucket]=\"bucket()\"\n [badges]=\"badges()\"\n [actions]=\"actions()\"\n />\n }\n <div class=\"content\" [yuvBusyOverlay]=\"busy()\">\n <ng-content />\n </div>\n} @else {\n <div class=\"empty\">\n @if (contextError()) {\n <div class=\"error\">{{ contextError() }}</div>\n } @else {\n <!-- EMPTY -->\n }\n </div>\n}\n","\nimport { Component, effect, inject, input, linkedSignal, output, signal, untracked, viewChild } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { Situation, SystemService } from '@yuuvis/client-core';\nimport {\n FormStatusChangedEvent,\n IObjectFormElementExtension,\n ObjectFormComponent,\n ObjectFormOptions\n} from '@yuuvis/client-framework/object-form';\nimport { ObjectMetadataSectionInput } from './object-metadata-section.interface';\n\n@Component({\n selector: 'yuv-object-metadata-section',\n imports: [MatIconModule, MatProgressSpinnerModule, ObjectFormComponent],\n templateUrl: './object-metadata-section.component.html',\n styleUrl: './object-metadata-section.component.scss',\n host: {\n '[class.invalid]': 'objectForm()?.form?.invalid',\n '[class.dirty]': 'objectForm()?.form?.dirty'\n }\n})\nexport class ObjectMetadataSectionComponent {\n #system = inject(SystemService);\n\n objectForm = viewChild<ObjectFormComponent>(ObjectFormComponent);\n section = input.required<ObjectMetadataSectionInput>();\n expandedInput = input<boolean>(false, { alias: 'expanded' });\n elementExtensions = input<IObjectFormElementExtension[]>([]);\n readonly = input<boolean>();\n expanded = linkedSignal(this.expandedInput);\n\n busy = signal(false);\n\n // linkedSignal instead of plain signal so that formOptions resets to undefined whenever\n // the section input changes (e.g. a different object is loaded). This ensures the form\n // is reloaded with fresh data for the new section while still allowing .set() mutations\n // (user edits) to persist across collapse/expand cycles within the same section.\n formOptions = linkedSignal<ObjectMetadataSectionInput, ObjectFormOptions | undefined>({\n source: this.section,\n computation: () => undefined\n });\n #formOptionsEffect = effect(() => {\n // Load the object form when the section is first expanded.\n // Don't use rxResource here because it messes with the state of the formOptions.\n const section = this.section();\n const expanded = this.expanded();\n\n // untracked() reads formOptions without adding it as a reactive dependency of this\n // effect (which would cause an infinite loop). The guard ensures we only fetch once\n // per section: subsequent expand cycles reuse the existing formOptions so that any\n // user-edited values are not overwritten with the original section.data.\n if (expanded && !untracked(() => this.formOptions())) {\n this.busy.set(true);\n this.#system.getObjectTypeForm(section.id, section.situation || Situation.EDIT).subscribe({\n next: (formModel) => {\n this.formOptions.set({ formModel, data: section.data || {} });\n this.busy.set(false);\n },\n error: (err) => {\n console.error('Error loading form options', err);\n this.formOptions.set(undefined);\n this.busy.set(false);\n }\n });\n }\n });\n\n statusChanged = output<FormStatusChangedEvent>();\n\n resetForm() {\n this.objectForm()?.resetForm();\n }\n\n setFormPristine() {\n this.objectForm()?.setFormPristine();\n }\n}\n","@let _section = section();\n@let fo = formOptions();\n\n<h3>\n <button\n type=\"button\"\n [attr.aria-expanded]=\"expanded()\"\n class=\"accordion-trigger\"\n [attr.aria-controls]=\"'sect_' + _section.id\"\n [id]=\"'accordion_' + _section.id\"\n (click)=\"expanded.set(!expanded())\"\n [attr.aria-busy]=\"busy()\"\n >\n @if (_section.icon) {\n @if (_section.svgIcon) {\n <mat-icon [svgIcon]=\"_section.icon\" />\n } @else {\n <mat-icon>{{ _section.icon }}</mat-icon>\n }\n }\n <span>{{ _section.label }}</span>\n @if (busy()) {\n <mat-spinner diameter=\"24\" />\n }\n <mat-icon class=\"arr\">keyboard_arrow_down</mat-icon>\n </button>\n</h3>\n<div\n [id]=\"'sect_' + _section.id\"\n role=\"region\"\n [attr.aria-labelledby]=\"'accordion_' + _section.id\"\n class=\"accordion-panel\"\n>\n @if (fo) {\n <yuv-object-form\n #objectForm\n [hidden]=\"!expanded()\"\n [readonly]=\"readonly()\"\n [formOptions]=\"fo\"\n [elementExtensions]=\"elementExtensions()\"\n (statusChanged)=\"statusChanged.emit($event)\"\n />\n }\n</div>\n","import {\n Component,\n computed,\n effect,\n inject,\n input,\n linkedSignal,\n OnDestroy,\n output,\n signal,\n untracked,\n viewChildren\n} from '@angular/core';\nimport { rxResource, toSignal } from '@angular/core/rxjs-interop';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n DmsObject,\n DmsService,\n FlavoredDmsObject,\n NotificationService,\n ObjectLockingService,\n ObjectTypeFlavor,\n PendingChangesService,\n Situation,\n SystemService,\n TranslatePipe,\n TranslateService,\n UserService\n} from '@yuuvis/client-core';\nimport { BusyOverlayDirective } from '@yuuvis/client-framework/common';\nimport {\n FormStatusChangedEvent,\n IObjectFormElementExtension,\n ObjectFormComponent,\n ObjectFormOptions\n} from '@yuuvis/client-framework/object-form';\nimport { ObjectSummaryDataComponent } from '@yuuvis/client-framework/object-summary';\nimport { RendererDirectiveInput } from '@yuuvis/client-framework/renderer';\nimport { YmtButtonDirective } from '@yuuvis/material';\nimport { map, of, Subscription } from 'rxjs';\nimport { ObjectMetadataSectionComponent } from './object-metadata-section/object-metadata-section.component';\n\n@Component({\n selector: 'yuv-object-metadata',\n standalone: true,\n imports: [\n ObjectFormComponent,\n ObjectSummaryDataComponent,\n BusyOverlayDirective,\n TranslatePipe,\n MatButtonModule,\n MatIconModule,\n ReactiveFormsModule,\n ObjectMetadataSectionComponent,\n YmtButtonDirective\n ],\n templateUrl: './object-metadata.component.html',\n styleUrl: './object-metadata.component.scss',\n host: {\n '[class.empty]': 'empty()',\n '[class.loading]': 'busyLoading()'\n }\n})\nexport class ObjectMetadataComponent implements OnDestroy {\n #pendingChanges = inject(PendingChangesService);\n #notificationService = inject(NotificationService);\n translate = inject(TranslateService);\n #system = inject(SystemService);\n #dmsService = inject(DmsService);\n #userService = inject(UserService);\n #objectLocking = inject(ObjectLockingService);\n\n user = toSignal(this.#userService.user$);\n hasWritePermission = computed(() => {\n const flavoredDmsObject = this.flavoredDmsObject();\n const dmsObject = this.dmsObject();\n const obj = flavoredDmsObject ? flavoredDmsObject.object : dmsObject;\n const lockState = obj ? this.#objectLocking.getLockState(obj) : undefined;\n const lockedByOther = !!lockState?.locked && !lockState.lockedByCurrentUser;\n\n return lockedByOther ? false : obj?.permissions?.writeIndexData || false;\n });\n\n objectForms = viewChildren<ObjectFormComponent>(ObjectFormComponent);\n objectMetadataSectionForms = viewChildren<ObjectMetadataSectionComponent>(ObjectMetadataSectionComponent);\n\n #pendingTaskId?: string;\n\n #formSubscriptions: Subscription[] = [];\n\n busySaving = signal<boolean>(false);\n busyLoading = signal<boolean>(false);\n disableControls = input<boolean>(false);\n /**\n * Set to 'true' to disable the basic metadata form. This will hide\n * the basic metadata section that shows common object proeperties like\n * creation date, creator, version, etc.\n */\n disableBasicMetadata = input<boolean>(false);\n elementExtensions = input<IObjectFormElementExtension[]>([]);\n controlsVisible = signal<boolean>(false);\n empty = computed(\n () => !this.mainFormOptions() && this.flavorFormOptions().length === 0 && this.disableBasicMetadata()\n );\n\n // state of all individual forms\n #formStates: Map<string, FormStatusChangedEvent> = new Map<string, FormStatusChangedEvent>();\n\n baseData: {\n label: string;\n value: RendererDirectiveInput;\n }[] = [];\n\n /**\n * Form situation, if not set default will be 'EDIT'\n */\n situation = input<Situation>(Situation.EDIT);\n /**\n * Set to 'true' to prevent all metadata from being edited\n */\n formDisabled = signal<boolean>(false);\n\n dmsObjectInput = input<DmsObject | undefined>(undefined, { alias: 'dmsObject' });\n dmsObject = linkedSignal(this.dmsObjectInput);\n\n /**\n * @deprecated This input will be removed in the future.\n * Please migrate to using `dmsObject` and `flavors` inputs instead.\n */\n flavoredDmsObject = input<FlavoredDmsObject | undefined>();\n #flavoredDmsObjectEffect = effect(() => {\n const flavoredDmsObject = this.flavoredDmsObject();\n flavoredDmsObject && this.#init(flavoredDmsObject?.object, flavoredDmsObject?.flavors);\n });\n combinedFormState?: FormStatusChangedEvent;\n\n /**\n * Emits the updated `DmsObject` when metadata have been saved.\n */\n indexDataSaved = output<DmsObject>();\n /**\n * Emits the current state of the metadata form.\n */\n statusChanged = output<FormStatusChangedEvent>();\n\n /**\n * @deprecated once input flavoredDmsObject will be removed in the future.\n * this is not used anymore\n *\n */\n #legacyFlavors = signal<ObjectTypeFlavor[] | undefined>(undefined);\n /**\n * @deprecated once input flavoredDmsObject will be removed in the future.\n * this is not used anymore\n *\n */\n #init(object?: DmsObject, flavors?: ObjectTypeFlavor[]) {\n const o = this.dmsObject();\n if (object && (!o || o !== object)) {\n this.#legacyFlavors.set(flavors);\n this.#objectToForm(object);\n }\n if (object) this.dmsObject.set(object);\n }\n\n #mainFormOptionsResource = rxResource<ObjectFormOptions | undefined, DmsObject | undefined>({\n params: this.dmsObject,\n stream: ({ params }) => {\n if (!params) return of(undefined);\n return this.#system.getObjectTypeForms([params.objectTypeId], this.situation()).pipe(\n map((res) =>\n res[params.objectTypeId]\n ? {\n formModel: res[params.objectTypeId],\n data: params.data,\n disabled: this.formDisabled() || !params.permissions?.writeIndexData\n }\n : undefined\n )\n );\n }\n });\n // form of the dms object itself\n mainFormOptions = this.#mainFormOptionsResource.value;\n mainFormOptionsIsLoading = this.#mainFormOptionsResource.isLoading;\n\n flavors = input<ObjectTypeFlavor[] | undefined>(undefined);\n // forms of applied flavors\n flavorFormOptions = computed(() => {\n const object = this.dmsObject();\n const flavors = this.flavors() ?? this.#legacyFlavors();\n const mappedFlavors: Record<string, ObjectTypeFlavor> = (flavors || []).reduce(\n (acc, curr) => ({ ...acc, [curr.sot]: curr }),\n {}\n );\n if (!object) return [];\n return (flavors || [])\n .map((f) => f.sot)\n .map((id) => ({\n id,\n label: this.#system.getLocalizedLabel(id),\n icon: mappedFlavors[id]?.icon,\n svgIcon: mappedFlavors[id]?.svgIcon,\n data: object.data\n }));\n });\n\n /**\n * @deprecated once input flavoredDmsObject will be removed in the future.\n * this is not used anymore\n *\n */\n #objectToForm(object?: DmsObject) {\n if (object) {\n this.busyLoading.set(true);\n\n this.#system.getObjectTypeForms([object.objectTypeId], this.situation()).subscribe({\n next: (res) => {\n this.mainFormOptions.set(\n res[object.objectTypeId]\n ? {\n formModel: res[object.objectTypeId],\n data: object.data,\n disabled: this.formDisabled() || !object.permissions?.writeIndexData\n }\n : undefined\n );\n this.busyLoading.set(false);\n },\n error: () => {\n this.busyLoading.set(false);\n }\n });\n }\n }\n\n /**\n * Removed flavors leave their form section behind, but the matching entry in\n * `#formStates` lingers (a destroyed form emits no final status). Without pruning,\n * `#getCombinedFormState()` keeps merging that stale section's data into the save\n * payload, so the backend receives properties of a secondary object type that is\n * no longer assigned and rejects the update. Re-evaluate the combined state and\n * drop orphaned form states whenever the set of rendered forms changes.\n */\n #pruneFormStatesEffect = effect(() => {\n // track the rendered flavor forms so this re-runs whenever a flavor is added/removed\n this.flavorFormOptions();\n untracked(() => {\n const sizeBefore = this.#formStates.size;\n this.#getCombinedFormState();\n if (this.#formStates.size === sizeBefore) return;\n // a stale state was pruned: realign pending changes, controls and emitted status\n if (this.combinedFormState?.dirty) this.#startPending();\n else this.#finishPending();\n this.controlsVisible.set(!!this.combinedFormState?.dirty);\n if (this.combinedFormState) this.statusChanged.emit(this.combinedFormState);\n });\n });\n\n onFormStatusChanged(formId: string, evt: FormStatusChangedEvent) {\n this.#formStates.set(formId, evt);\n this.#getCombinedFormState();\n if (this.combinedFormState?.dirty) this.#startPending();\n else this.#finishPending();\n this.controlsVisible.set(!!this.combinedFormState?.dirty);\n if (this.combinedFormState) this.statusChanged.emit(this.combinedFormState);\n }\n\n /** IDs of the forms currently rendered: the main object form plus every applied flavor form. */\n #currentFormIds(): Set<string> {\n return new Set<string>(['main', ...this.flavorFormOptions().map((fo) => fo.id)]);\n }\n\n #getCombinedFormState(): FormStatusChangedEvent {\n const validIds = this.#currentFormIds();\n const combinedFormState = {\n dirty: false,\n indexdataChanged: false,\n invalid: false,\n data: {}\n };\n this.#formStates.forEach((s, id) => {\n // drop states of forms that are no longer rendered (e.g. a removed flavor) so\n // their data never reaches the save payload\n if (!validIds.has(id)) {\n this.#formStates.delete(id);\n return;\n }\n if (s.dirty) {\n combinedFormState.dirty = s.dirty;\n }\n if (s.indexdataChanged) {\n combinedFormState.indexdataChanged = s.indexdataChanged;\n }\n if (s.invalid) {\n combinedFormState.invalid = s.invalid;\n }\n combinedFormState.data = { ...combinedFormState.data, ...s.data };\n });\n this.combinedFormState = combinedFormState;\n return this.combinedFormState;\n }\n\n save() {\n // TODO: this.dmsObject should be this.dmsObject() once this.#init() is removed\n const object = this.dmsObject();\n if (object && this.combinedFormState) {\n this.busySaving.set(true);\n this.#dmsService.updateDmsObject(object.id, this.combinedFormState.data).subscribe({\n next: (updatedObject: DmsObject) => {\n this.dmsObject.set(updatedObject);\n this.setFormPristine();\n this.indexDataSaved.emit(updatedObject);\n this.#finishPending();\n this.controlsVisible.set(false);\n this.busySaving.set(false);\n },\n error: (err) => {\n this.#notificationService.error(\n '',\n // this.dmsObject?.title || '',\n err.status === 404\n ? this.translate.instant('yuv.object-metadata.context.load.error')\n : this.translate.instant('yuv.object-metadata.save.error')\n );\n this.controlsVisible.set(false);\n this.busySaving.set(false);\n }\n });\n }\n }\n /**\n * Reset te form to its initial state\n */\n resetForm() {\n if (this.objectForms()?.length) {\n this.objectForms().forEach((f) => f.resetForm());\n }\n\n if (this.objectMetadataSectionForms()?.length) {\n this.objectMetadataSectionForms().forEach((s) => s.resetForm());\n }\n (this.objectForms()?.length || this.objectMetadataSectionForms()?.length) && this.#formStates.clear();\n }\n\n updateFormValue(data: Record<string, unknown>) {\n if (this.objectForms()?.length) {\n this.objectForms().forEach((f) => f.setFormData(data));\n }\n }\n\n setFormPristine() {\n if (this.objectForms()?.length) {\n this.objectForms().forEach((f) => f.setFormPristine());\n }\n if (this.objectMetadataSectionForms()?.length) {\n this.objectMetadataSectionForms().forEach((s) => s.setFormPristine());\n }\n (this.objectForms()?.length || this.objectMetadataSectionForms()?.length) && this.#formStates.clear();\n }\n\n #startPending() {\n // because this method will be called every time the form status changes,\n // pending task will only be started once until it was finished\n if (!this.#pendingChanges.hasPendingTask(this.#pendingTaskId || ' ')) {\n this.#pendingTaskId = this.#pendingChanges.startTask(\n this.translate.instant('yuv.object-metadata.pending-changes.alert')\n );\n }\n }\n\n #finishPending() {\n if (this.#pendingTaskId) this.#pendingChanges.finishTask(this.#pendingTaskId);\n }\n\n ngOnDestroy(): void {\n this.#formSubscriptions.forEach((s) => s.unsubscribe());\n }\n}\n","<main [yuvBusyOverlay]=\"busySaving() || busyLoading() || mainFormOptionsIsLoading()\">\n @if (empty()) {\n <p>{{ 'yuv.object-metadata.empty.message' | translate }}</p>\n }\n @if (!mainFormOptions()) {\n <yuv-object-form\n [readonly]=\"!hasWritePermission()\"\n [formOptions]=\"mainFormOptions()\"\n [elementExtensions]=\"elementExtensions()\"\n (statusChanged)=\"onFormStatusChanged('main', $event)\"\n />\n }\n @for (fo of flavorFormOptions(); track $index) {\n <yuv-object-metadata-section\n [readonly]=\"!hasWritePermission()\"\n [section]=\"fo\"\n [elementExtensions]=\"elementExtensions()\"\n [expanded]=\"$index === 0\"\n (statusChanged)=\"onFormStatusChanged(fo.id, $event)\"\n />\n }\n\n <!-- base data -->\n @let object = dmsObject() ?? dmsObject();\n @if (object && !disableBasicMetadata()) {\n <yuv-object-summary-data [dmsObject]=\"object\" />\n }\n</main>\n\n<footer [attr.inert]=\"disableControls() || !controlsVisible() || null\">\n <div class=\"container\">\n <button\n ymtButton=\"secondary\"\n button-size=\"small\"\n [disabled]=\"busySaving() || busyLoading()\"\n (click)=\"resetForm()\"\n [hidden]=\"!combinedFormState?.dirty\"\n [disabled]=\"!combinedFormState?.dirty\"\n >\n {{ 'yuv.object-metadata.button.reset' | translate }}\n </button>\n <button\n ymtButton=\"primary\"\n button-size=\"small\"\n (click)=\"save()\"\n [disabled]=\"!combinedFormState?.dirty || combinedFormState?.invalid || busySaving() || busyLoading()\"\n >\n {{ 'yuv.object-metadata.button.save' | translate }}\n </button>\n </div>\n</footer>\n","import { Component, effect, inject, input, signal, TemplateRef, untracked } from '@angular/core';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport {\n DmsObject,\n ObjectTypeFlavor,\n TabGuardDirective,\n TranslatePipe,\n UserService,\n VirtualObjectType\n} from '@yuuvis/client-core';\nimport { ObjectPreviewComponent } from '@yuuvis/client-framework/object-preview';\nimport { ObjectAuditComponent } from './object-audit/object-audit.component';\nimport { ObjectDetailsShellComponent } from './object-details-shell/object-details-shell.component';\nimport { ObjectDetailsShellService } from './object-details-shell/object-details-shell.service';\nimport { ObjectMetadataComponent } from './object-metadata/object-metadata.component';\n\n@Component({\n selector: 'yuv-object-details',\n standalone: true,\n imports: [\n TranslatePipe,\n MatTabsModule,\n TabGuardDirective,\n ObjectDetailsShellComponent,\n ObjectPreviewComponent,\n ObjectMetadataComponent,\n ObjectAuditComponent\n ],\n providers: [ObjectDetailsShellService],\n templateUrl: './object-details.component.html',\n styleUrls: ['./object-details.component.scss']\n})\nexport class ObjectDetailsComponent {\n readonly #userService = inject(UserService);\n #odShellService = inject(ObjectDetailsShellService);\n\n isAdvancedUser = this.#userService.isAdvancedUser;\n\n currentUser = signal(this.#userService.getCurrentUser());\n\n /**\n * ID to store the components layout state (splitted tabs, gutter position)\n */\n layoutSettingsID = signal<string | undefined>(undefined);\n\n /**\n * DmsObject to show the details for.\n */\n dmsObjectInput = input<DmsObject | undefined>(undefined, { alias: 'dmsObject' });\n dmsObjectInputEffect = effect(() => {\n const o = this.dmsObjectInput();\n if (o) untracked(() => this.#odShellService.setDmsObject(o));\n });\n\n dmsObject = this.#odShellService.dmsObject;\n\n /**\n * Flavors to take into account. These flavors define for example the metadata\n * of an object.\n */\n flavors = input<ObjectTypeFlavor[]>([]);\n\n /**\n * Virtual object type to use for retrieving header data\n */\n type = input.required<VirtualObjectType>();\n\n /**\n * If the object config for the given type has been stored in a certain bucket, this\n * bucket can be provided here. If no bucket is set, the config will be retrieved\n * from the main object config\n */\n objectConfigBucket = input<string | undefined>(undefined);\n /**\n * ID of a DmsObject. The object will be fetched from the backend upfront.\n */\n objectId = input<string | undefined>(undefined);\n #objectIdEffect = effect(() => {\n const oid = this.objectId();\n if (oid) this.#odShellService.fetchDmsObject(oid);\n });\n /**\n * Whether to hide the header\n */\n hideHeader = input<boolean>(false);\n\n actions = input<TemplateRef<any> | undefined>(undefined);\n /** Template rendered in the badges area, aligned to the right of the subtitle row. */\n badges = input<TemplateRef<unknown>>();\n\n onIndexdataSaved(updatedObject: DmsObject) {\n this.#odShellService.setDmsObject(updatedObject);\n }\n\n // versionSelected(version: number) {\n // const nav = ['../..', 'version'];\n // this.#router.navigate([...nav, this.dmsObject?.version], { queryParams: { version }, relativeTo: this.#route });\n // }\n}\n","<yuv-object-details-shell\n [type]=\"type()\"\n [hideHeader]=\"hideHeader()\"\n [bucket]=\"objectConfigBucket()\"\n [actions]=\"actions()\"\n [badges]=\"badges()\"\n>\n @let dmsObj = dmsObject();\n <mat-tab-group yuvTabGuardDisable>\n <!-- content -->\n @if (dmsObj && dmsObj.content) {\n <mat-tab [label]=\"'yuv.object-details.tabs.content.title' | translate\">\n <ng-template matTabContent>\n <yuv-object-preview [dmsObject]=\"dmsObj\" />\n </ng-template>\n </mat-tab>\n }\n\n <!-- indexdata -->\n <mat-tab [label]=\"'yuv.object-metadata.tabs.indexdata.title' | translate\">\n <ng-template matTabContent>\n <yuv-object-metadata\n [dmsObject]=\"dmsObject()\"\n [flavors]=\"flavors()\"\n (indexDataSaved)=\"onIndexdataSaved($event)\"\n />\n </ng-template>\n </mat-tab>\n <!-- history -->\n <mat-tab [label]=\"'yuv.object-metadata.tabs.history.title' | translate\">\n <ng-template matTabContent> <yuv-object-audit [dmsObject]=\"dmsObj\" /> </ng-template\n ></mat-tab>\n </mat-tab-group>\n</yuv-object-details-shell>\n","import { NgModule } from '@angular/core';\nimport { RetentionBadgeComponent } from '@yuuvis/client-framework/common';\nimport { ObjectAuditComponent } from './object-audit/object-audit.component';\nimport { ObjectDetailsHeaderComponent } from './object-details-header/object-details-header.component';\nimport { ObjectDetailsShellComponent } from './object-details-shell/object-details-shell.component';\nimport { ObjectDetailsComponent } from './object-details.component';\nimport { ObjectMetadataSectionComponent } from './object-metadata/object-metadata-section/object-metadata-section.component';\nimport { ObjectMetadataComponent } from './object-metadata/object-metadata.component';\n\nconst cmp = [\n ObjectDetailsComponent,\n ObjectDetailsHeaderComponent,\n ObjectDetailsShellComponent,\n ObjectMetadataComponent,\n ObjectMetadataSectionComponent,\n ObjectAuditComponent,\n RetentionBadgeComponent\n];\n\n@NgModule({\n imports: cmp,\n exports: cmp\n})\nexport class YuvObjectDetailsModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\n@Pipe({\n name: 'formSectionGroup',\n standalone: true \n})\nexport class FormSectionGroupPipe implements PipeTransform {\n transform(form: FormGroup, id: string): FormGroup {\n return form.get(id) as FormGroup;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
@@ -6,6 +6,7 @@ import { MediaViewerService, defaultViewers, DASHLET_MESSAGE_EVENTS, YuvMediaVie
6
6
  import { tap as tap$1 } from 'rxjs';
7
7
  import { tap } from 'rxjs/operators';
8
8
 
9
+ /* eslint-disable id-length */
9
10
  class ObjectPreviewService {
10
11
  constructor() {
11
12
  this.#dms = inject(DmsService);
@@ -39,9 +40,9 @@ class ObjectPreviewService {
39
40
  }
40
41
  return '';
41
42
  }
42
- getEmailViewerDetails(object, MAIL_APP_ID = 'appSystemmail:') {
43
+ getEmailViewerDetails(object, version, MAIL_APP_ID = 'appSystemmail:') {
43
44
  return {
44
- mediaViewerSrc: this.getMediaViewerSrc(object.id, object.content?.mimeType),
45
+ mediaViewerSrc: this.getMediaViewerSrc(object.id, object.content?.mimeType, version),
45
46
  id: object.id,
46
47
  mimeType: object.content?.mimeType,
47
48
  metadata: this.getEmailMetadata(object, MAIL_APP_ID)
@@ -65,10 +66,8 @@ class ObjectPreviewService {
65
66
  getViewerDetails(object, version) {
66
67
  if (object) {
67
68
  const type = object?.content && this.#mediaViewerService.getComponentType(object.content.mimeType);
68
- // console.log('type', type);
69
- console.log('isEditable: ', this.#isEditable(object));
70
69
  return this.#isEmailViewer(object)
71
- ? this.getEmailViewerDetails(object)
70
+ ? this.getEmailViewerDetails(object, version)
72
71
  : {
73
72
  mediaViewerSrc: this.getMediaViewerSrc(object.id, object.content?.mimeType, version),
74
73
  id: object.id,
@@ -93,7 +92,7 @@ class ObjectPreviewService {
93
92
  }
94
93
  #isEditable(object) {
95
94
  const state = this.#objectLockingService.getLockState(object);
96
- return state ? state.lockedByCurrentUser ?? !state.locked : true;
95
+ return state ? (state.lockedByCurrentUser ?? !state.locked) : true;
97
96
  }
98
97
  #isEmailViewer(object) {
99
98
  return defaultViewers
@@ -113,35 +112,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImpo
113
112
  class ObjectPreviewComponent {
114
113
  #objectPreviewService;
115
114
  #event;
116
- #formerContentStreamId;
117
115
  #objectIdEffect;
118
116
  constructor() {
119
117
  this.#objectPreviewService = inject(ObjectPreviewService);
120
118
  this.#event = inject(EventService);
121
- this.#formerContentStreamId = undefined;
122
119
  this.objectId = input(undefined, ...(ngDevMode ? [{ debugName: "objectId" }] : /* istanbul ignore next */ []));
123
120
  this.dmsObjectInput = input(undefined, { ...(ngDevMode ? { debugName: "dmsObjectInput" } : /* istanbul ignore next */ {}), alias: 'dmsObject' });
124
121
  this.version = input(undefined, ...(ngDevMode ? [{ debugName: "version" }] : /* istanbul ignore next */ []));
125
122
  this.dmsObject = this.#objectPreviewService.dmsObject;
126
123
  this.metadata = input({}, ...(ngDevMode ? [{ debugName: "metadata" }] : /* istanbul ignore next */ []));
127
124
  this.viewerDetails = linkedSignal({ ...(ngDevMode ? { debugName: "viewerDetails" } : /* istanbul ignore next */ {}), source: () => ({ object: this.dmsObject(), version: this.version(), metadata: this.metadata() }),
128
- computation: ({ object, version, metadata }, previous) => {
129
- object = Array.isArray(object) ? object[0] : object;
130
- if (object && this.#formerContentStreamId !== object.content?.contentStreamId) {
131
- const details = object && this.#objectPreviewService.getViewerDetails(object, version);
132
- this.#formerContentStreamId = object.content?.contentStreamId;
133
- if (details) {
134
- return { ...details, metadata: { ...details.metadata, ...metadata } };
135
- }
125
+ computation: (source, previous) => {
126
+ const object = Array.isArray(source.object) ? source.object[0] : source.object;
127
+ if (!object) {
136
128
  return null;
137
129
  }
138
- if (previous?.value) {
139
- return {
140
- ...previous.value,
141
- metadata: { ...previous.value?.metadata, ...metadata }
142
- };
130
+ const prevSource = previous?.source;
131
+ const prevObject = Array.isArray(prevSource?.object) ? prevSource?.object[0] : prevSource?.object;
132
+ const contentChanged = !previous ||
133
+ object.id !== prevObject?.id ||
134
+ object.content?.contentStreamId !== prevObject?.content?.contentStreamId ||
135
+ source.version !== prevSource?.version;
136
+ if (contentChanged) {
137
+ const details = this.#objectPreviewService.getViewerDetails(object, source.version);
138
+ return details
139
+ ? { ...details, metadata: { ...details.metadata, ...source.metadata } }
140
+ : null;
143
141
  }
144
- return null;
142
+ return previous?.value
143
+ ? { ...previous.value, metadata: { ...previous.value.metadata, ...source.metadata } }
144
+ : null;
145
145
  } });
146
146
  this.isTiff = computed(() => this.dmsObject()?.content?.mimeType === 'image/tiff', ...(ngDevMode ? [{ debugName: "isTiff" }] : /* istanbul ignore next */ []));
147
147
  this.#objectIdEffect = effect(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"yuuvis-client-framework-object-preview.mjs","sources":["../../../../../libs/yuuvis/client-framework/object-preview/src/lib/services/object-preview.service.ts","../../../../../libs/yuuvis/client-framework/object-preview/src/lib/components/object-preview/object-preview.component.ts","../../../../../libs/yuuvis/client-framework/object-preview/src/lib/components/object-email-preview/object-email-preview.component.ts","../../../../../libs/yuuvis/client-framework/object-preview/src/yuuvis-client-framework-object-preview.ts"],"sourcesContent":["import { inject, Injectable, signal } from '@angular/core';\nimport { ContentStreamField, DmsObject, DmsService, ObjectLockingService, UserService } from '@yuuvis/client-core';\nimport { defaultViewers, EmailMetadata, MediaViewerService } from '@yuuvis/media-viewer';\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { ViewerDataDefault, ViewerDataEmail } from '../models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ObjectPreviewService {\n readonly #dms = inject(DmsService);\n readonly #userService = inject(UserService);\n readonly #mediaViewerService = inject(MediaViewerService);\n readonly #objectLockingService = inject(ObjectLockingService);\n\n #dmsObject = signal<DmsObject | undefined>(undefined);\n\n dmsObject = this.#dmsObject.asReadonly();\n\n setDmsObject(object: DmsObject): void {\n this.#dmsObject.set(object);\n }\n\n getDmsObject(id: string): Observable<DmsObject> {\n return this.#dms.getDmsObject(id).pipe(tap((dmsObject) => this.#dmsObject.set(dmsObject)));\n }\n\n getMediaViewerSrc(id: string, mimeType: string | undefined, version?: number): string {\n if (mimeType) {\n if (mimeType === 'image/tiff') {\n return version\n ? `/api/dms/objects/${id}/versions/${version}/contents/renditions/slide?timeout=50000`\n : `/api/dms/objects/${id}/contents/renditions/slide`;\n }\n return version\n ? `/api/dms/objects/${id}/versions/${version}/contents/file`\n : `/api/dms/objects/${id}/contents/file`;\n }\n return '';\n }\n\n getEmailViewerDetails(object: DmsObject, MAIL_APP_ID = 'appSystemmail:'): ViewerDataEmail {\n return {\n mediaViewerSrc: this.getMediaViewerSrc(object.id, object.content?.mimeType),\n id: object.id,\n mimeType: object.content?.mimeType,\n metadata: this.getEmailMetadata(object, MAIL_APP_ID)\n };\n }\n\n getEmailMetadata(object: DmsObject, MAIL_APP_ID = 'appSystemmail:'): EmailMetadata {\n return {\n type: 'EMAIL',\n header: {\n subject: object.data[`${MAIL_APP_ID}subject`] as string,\n sent: new Date(object.data[`${MAIL_APP_ID}sent`] as string),\n from: object.data[`${MAIL_APP_ID}from`] as string,\n to: object.data[`${MAIL_APP_ID}to`] as string[],\n cc: object.data[`${MAIL_APP_ID}cc`] as string[],\n bcc: object.data[`${MAIL_APP_ID}bcc`] as string[]\n },\n theme: 'light',\n attachments: object.data[`${MAIL_APP_ID}attachments`] as string[]\n };\n }\n\n getViewerDetails(object: DmsObject, version: number | undefined): ViewerDataEmail | ViewerDataDefault | undefined {\n if (object) {\n const type = object?.content && this.#mediaViewerService.getComponentType(object.content.mimeType);\n\n // console.log('type', type);\n console.log('isEditable: ', this.#isEditable(object));\n\n return this.#isEmailViewer(object)\n ? this.getEmailViewerDetails(object)\n : {\n mediaViewerSrc: this.getMediaViewerSrc(object.id, object.content?.mimeType, version),\n id: object.id,\n mimeType: object.content?.mimeType,\n metadata: {\n type,\n name: object.data[ContentStreamField.FILENAME] as string,\n dmsObject: object?.data,\n id: object?.id,\n editable: this.#isEditable(object),\n user: this.#userService.getCurrentUser(),\n theme: 'light',\n version,\n sendEvent:\n !!(\n object.content?.mimeType &&\n defaultViewers\n .filter((viewer) => viewer.type === 'OFFICE')\n .map((viewer) => viewer.mimeType.includes(object.content?.mimeType || '')).length\n ) || false\n }\n };\n }\n return undefined;\n }\n\n #isEditable(object: DmsObject): boolean {\n const state = this.#objectLockingService.getLockState(object);\n\n return state ? state.lockedByCurrentUser ?? !state.locked : true;\n\n }\n\n #isEmailViewer(object: DmsObject): boolean {\n return defaultViewers\n .filter((viewer) => viewer.type === 'EMAIL')[0]\n .mimeType.includes(object.data[ContentStreamField.MIME_TYPE] as string);\n }\n}\n","import { Component, computed, effect, inject, input, linkedSignal, untracked, WritableSignal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DmsObject, EventService, TranslatePipe, YuvEventType } from '@yuuvis/client-core';\nimport { DASHLET_MESSAGE_EVENTS, Metadata, YuvMediaViewerComponent } from '@yuuvis/media-viewer';\nimport { tap } from 'rxjs';\nimport { ObjectPreviewService } from '../../services/object-preview.service';\n\ninterface ViewerDetails {\n id: string;\n mimeType: string | undefined;\n mediaViewerSrc: string | undefined;\n metadata: Partial<Metadata>;\n}\n\n@Component({\n selector: 'yuv-object-preview',\n standalone: true,\n imports: [YuvMediaViewerComponent, TranslatePipe],\n template: `\n @let viewerDetailsObj = viewerDetails();\n @if (viewerDetailsObj) {\n <yuv-media-viewer\n class=\"viewer\"\n [id]=\"viewerDetailsObj.id\"\n [type]=\"viewerDetailsObj.mimeType\"\n [src]=\"viewerDetailsObj.mediaViewerSrc ?? null\"\n [metadata]=\"viewerDetailsObj.metadata\"\n />\n }\n @if (isTiff()) {\n <div class=\"tiff-warning\">\n <div class=\"tiff-warning-text\">{{ 'yuv.object-preview.tiff-warning' | translate }}</div>\n </div>\n }\n `,\n styles: [\n `\n :host {\n --media-viewer-background-color: transparent;\n height: 100%;\n overflow: hidden;\n display: grid;\n grid-auto-columns: 1fr;\n grid-auto-rows: 1fr;\n grid-template-columns: 1fr;\n grid-template-rows: 1fr max-content;\n gap: 0px 0px;\n grid-template-areas:\n 'viewer'\n 'message';\n }\n .viewer {\n grid-area: viewer;\n background-color: var(--media-viewer-background-color);\n ::ng-deep {\n pdf-paging-area {\n display: flex;\n align-items: center;\n\n .paging-right,\n .paging-left {\n display: flex;\n align-items: center;\n }\n }\n pdf-zoom-toolbar {\n div {\n display: flex;\n align-items: center;\n }\n }\n }\n }\n .tiff-warning {\n grid-area: message;\n text-align: center;\n padding: var(--ymt-spacing-xs) 0;\n\n &-text {\n margin: var(--ymt-spacing-m);\n }\n }\n `\n ]\n})\nexport class ObjectPreviewComponent {\n readonly #objectPreviewService = inject(ObjectPreviewService);\n readonly #event = inject(EventService);\n #formerContentStreamId: string | undefined = undefined;\n\n objectId = input<string | undefined>(undefined);\n dmsObjectInput = input<DmsObject | undefined>(undefined, { alias: 'dmsObject' });\n version = input<number | undefined>(undefined);\n dmsObject = this.#objectPreviewService.dmsObject;\n\n metadata = input<Partial<Metadata>>({});\n\n viewerDetails: WritableSignal<ViewerDetails | null> = linkedSignal({\n source: () => ({ object: this.dmsObject(), version: this.version(), metadata: this.metadata() }),\n computation: ({ object, version, metadata }, previous): ViewerDetails | null => {\n object = Array.isArray(object) ? object[0] : object;\n\n if (object && this.#formerContentStreamId !== object.content?.contentStreamId) {\n const details = object && this.#objectPreviewService.getViewerDetails(object, version);\n this.#formerContentStreamId = object.content?.contentStreamId;\n if (details) {\n return { ...details, metadata: { ...details.metadata, ...metadata } as Partial<Metadata> };\n }\n return null;\n }\n if (previous?.value) {\n return {\n ...previous.value,\n metadata: { ...previous.value?.metadata, ...metadata }\n } as ViewerDetails;\n }\n\n return null;\n }\n });\n\n isTiff = computed(() => this.dmsObject()?.content?.mimeType === 'image/tiff');\n\n #objectIdEffect = effect(() => {\n const objectId = this.objectId();\n const dmsObject = this.dmsObjectInput();\n untracked(() => {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n dmsObject && this.#objectPreviewService.setDmsObject(dmsObject);\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n objectId && !dmsObject && this.#objectPreviewService.getDmsObject(objectId).subscribe();\n });\n });\n\n constructor() {\n this.#event\n .on(DASHLET_MESSAGE_EVENTS.OFFICE_DOCUMENT_UPDATE) //, DASHLET_MESSAGE_EVENTS.OFFICE_DOCUMENT_CONVERTED)\n .pipe(\n takeUntilDestroyed(),\n // delay(2000),\n // tap((e) => console.log({ e })),\n tap(() => this.#event.trigger(YuvEventType.DMS_OBJECT_CONTENT_UPDATED, { externalUpdate: true }))\n )\n .subscribe();\n }\n}\n","import { Component, computed, effect, inject, input, untracked } from '@angular/core';\nimport { DmsObject } from '@yuuvis/client-core';\nimport { MailComponent } from '@yuuvis/media-viewer';\nimport { ObjectPreviewService } from '../../services/object-preview.service';\n\n@Component({\n selector: 'yuv-object-email-preview',\n standalone: true,\n imports: [MailComponent],\n template: `\n @let viewerDetailsObj = viewerDetails();\n @if (viewerDetailsObj) {\n <yuv-mail [id]=\"viewerDetailsObj.id\" [src]=\"viewerDetailsObj.mediaViewerSrc\" [metadata]=\"viewerDetailsObj.metadata\"></yuv-mail>\n }\n `,\n styles: `\n :host {\n height: 100%;\n }\n `\n})\nexport class ObjectEmailPreviewComponent {\n #objectPreviwService = inject(ObjectPreviewService);\n\n objectId = input<string | undefined>(undefined);\n dmsObjectInput = input<DmsObject | undefined>(undefined, { alias: 'dmsObject' });\n dmsObject = this.#objectPreviwService.dmsObject;\n\n #objectIdEffect = effect(() => {\n const objectId = this.objectId();\n const dmsObject = this.dmsObjectInput();\n\n untracked(() => {\n dmsObject && this.#objectPreviwService.setDmsObject(dmsObject);\n if (objectId && !dmsObject) {\n this.#objectPreviwService.getDmsObject(objectId).subscribe();\n }\n });\n });\n\n viewerDetails = computed(() => {\n const object = this.dmsObject();\n return object ? this.#objectPreviwService.getEmailViewerDetails(object) : undefined;\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["tap"],"mappings":"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"}
1
+ {"version":3,"file":"yuuvis-client-framework-object-preview.mjs","sources":["../../../../../libs/yuuvis/client-framework/object-preview/src/lib/services/object-preview.service.ts","../../../../../libs/yuuvis/client-framework/object-preview/src/lib/components/object-preview/object-preview.component.ts","../../../../../libs/yuuvis/client-framework/object-preview/src/lib/components/object-email-preview/object-email-preview.component.ts","../../../../../libs/yuuvis/client-framework/object-preview/src/yuuvis-client-framework-object-preview.ts"],"sourcesContent":["/* eslint-disable id-length */\nimport { inject, Injectable, signal } from '@angular/core';\nimport { ContentStreamField, DmsObject, DmsService, ObjectLockingService, UserService } from '@yuuvis/client-core';\nimport { defaultViewers, EmailMetadata, MediaViewerService } from '@yuuvis/media-viewer';\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { ViewerDataDefault, ViewerDataEmail } from '../models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ObjectPreviewService {\n readonly #dms = inject(DmsService);\n readonly #userService = inject(UserService);\n readonly #mediaViewerService = inject(MediaViewerService);\n readonly #objectLockingService = inject(ObjectLockingService);\n\n #dmsObject = signal<DmsObject | undefined>(undefined);\n\n dmsObject = this.#dmsObject.asReadonly();\n\n setDmsObject(object: DmsObject): void {\n this.#dmsObject.set(object);\n }\n\n getDmsObject(id: string): Observable<DmsObject> {\n return this.#dms.getDmsObject(id).pipe(tap((dmsObject) => this.#dmsObject.set(dmsObject)));\n }\n\n getMediaViewerSrc(id: string, mimeType: string | undefined, version?: number): string {\n if (mimeType) {\n if (mimeType === 'image/tiff') {\n return version\n ? `/api/dms/objects/${id}/versions/${version}/contents/renditions/slide?timeout=50000`\n : `/api/dms/objects/${id}/contents/renditions/slide`;\n }\n return version\n ? `/api/dms/objects/${id}/versions/${version}/contents/file`\n : `/api/dms/objects/${id}/contents/file`;\n }\n return '';\n }\n\n getEmailViewerDetails(object: DmsObject, version?: number, MAIL_APP_ID = 'appSystemmail:'): ViewerDataEmail {\n return {\n mediaViewerSrc: this.getMediaViewerSrc(object.id, object.content?.mimeType, version),\n id: object.id,\n mimeType: object.content?.mimeType,\n metadata: this.getEmailMetadata(object, MAIL_APP_ID)\n };\n }\n\n getEmailMetadata(object: DmsObject, MAIL_APP_ID = 'appSystemmail:'): EmailMetadata {\n return {\n type: 'EMAIL',\n header: {\n subject: object.data[`${MAIL_APP_ID}subject`] as string,\n sent: new Date(object.data[`${MAIL_APP_ID}sent`] as string),\n from: object.data[`${MAIL_APP_ID}from`] as string,\n to: object.data[`${MAIL_APP_ID}to`] as string[],\n cc: object.data[`${MAIL_APP_ID}cc`] as string[],\n bcc: object.data[`${MAIL_APP_ID}bcc`] as string[]\n },\n theme: 'light',\n attachments: object.data[`${MAIL_APP_ID}attachments`] as string[]\n };\n }\n\n getViewerDetails(object: DmsObject, version: number | undefined): ViewerDataEmail | ViewerDataDefault | undefined {\n if (object) {\n const type = object?.content && this.#mediaViewerService.getComponentType(object.content.mimeType);\n\n return this.#isEmailViewer(object)\n ? this.getEmailViewerDetails(object, version)\n : {\n mediaViewerSrc: this.getMediaViewerSrc(object.id, object.content?.mimeType, version),\n id: object.id,\n mimeType: object.content?.mimeType,\n metadata: {\n type,\n name: object.data[ContentStreamField.FILENAME] as string,\n dmsObject: object?.data,\n id: object?.id,\n editable: this.#isEditable(object),\n user: this.#userService.getCurrentUser(),\n theme: 'light',\n version,\n sendEvent:\n !!(\n object.content?.mimeType &&\n defaultViewers\n .filter((viewer) => viewer.type === 'OFFICE')\n .map((viewer) => viewer.mimeType.includes(object.content?.mimeType || '')).length\n ) || false\n }\n };\n }\n return undefined;\n }\n\n #isEditable(object: DmsObject): boolean {\n const state = this.#objectLockingService.getLockState(object);\n\n return state ? (state.lockedByCurrentUser ?? !state.locked) : true;\n }\n\n #isEmailViewer(object: DmsObject): boolean {\n return defaultViewers\n .filter((viewer) => viewer.type === 'EMAIL')[0]\n .mimeType.includes(object.data[ContentStreamField.MIME_TYPE] as string);\n }\n}\n","import { Component, computed, effect, inject, input, linkedSignal, untracked, WritableSignal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DmsObject, EventService, TranslatePipe, YuvEventType } from '@yuuvis/client-core';\nimport { DASHLET_MESSAGE_EVENTS, Metadata, YuvMediaViewerComponent } from '@yuuvis/media-viewer';\nimport { tap } from 'rxjs';\nimport { ObjectPreviewService } from '../../services/object-preview.service';\n\ninterface ViewerDetails {\n id: string;\n mimeType: string | undefined;\n mediaViewerSrc: string | undefined;\n metadata: Partial<Metadata>;\n}\n\n@Component({\n selector: 'yuv-object-preview',\n standalone: true,\n imports: [YuvMediaViewerComponent, TranslatePipe],\n template: `\n @let viewerDetailsObj = viewerDetails();\n @if (viewerDetailsObj) {\n <yuv-media-viewer\n class=\"viewer\"\n [id]=\"viewerDetailsObj.id\"\n [type]=\"viewerDetailsObj.mimeType\"\n [src]=\"viewerDetailsObj.mediaViewerSrc ?? null\"\n [metadata]=\"viewerDetailsObj.metadata\"\n />\n }\n @if (isTiff()) {\n <div class=\"tiff-warning\">\n <div class=\"tiff-warning-text\">{{ 'yuv.object-preview.tiff-warning' | translate }}</div>\n </div>\n }\n `,\n styles: [\n `\n :host {\n --media-viewer-background-color: transparent;\n height: 100%;\n overflow: hidden;\n display: grid;\n grid-auto-columns: 1fr;\n grid-auto-rows: 1fr;\n grid-template-columns: 1fr;\n grid-template-rows: 1fr max-content;\n gap: 0px 0px;\n grid-template-areas:\n 'viewer'\n 'message';\n }\n .viewer {\n grid-area: viewer;\n background-color: var(--media-viewer-background-color);\n ::ng-deep {\n pdf-paging-area {\n display: flex;\n align-items: center;\n\n .paging-right,\n .paging-left {\n display: flex;\n align-items: center;\n }\n }\n pdf-zoom-toolbar {\n div {\n display: flex;\n align-items: center;\n }\n }\n }\n }\n .tiff-warning {\n grid-area: message;\n text-align: center;\n padding: var(--ymt-spacing-xs) 0;\n\n &-text {\n margin: var(--ymt-spacing-m);\n }\n }\n `\n ]\n})\nexport class ObjectPreviewComponent {\n readonly #objectPreviewService = inject(ObjectPreviewService);\n readonly #event = inject(EventService);\n\n objectId = input<string | undefined>(undefined);\n dmsObjectInput = input<DmsObject | undefined>(undefined, { alias: 'dmsObject' });\n version = input<number | undefined>(undefined);\n dmsObject = this.#objectPreviewService.dmsObject;\n\n metadata = input<Partial<Metadata>>({});\n\n viewerDetails: WritableSignal<ViewerDetails | null> = linkedSignal({\n source: () => ({ object: this.dmsObject(), version: this.version(), metadata: this.metadata() }),\n computation: (source, previous): ViewerDetails | null => {\n const object = Array.isArray(source.object) ? source.object[0] : source.object;\n if (!object) {\n return null;\n }\n\n const prevSource = previous?.source;\n const prevObject = Array.isArray(prevSource?.object) ? prevSource?.object[0] : prevSource?.object;\n\n const contentChanged =\n !previous ||\n object.id !== prevObject?.id ||\n object.content?.contentStreamId !== prevObject?.content?.contentStreamId ||\n source.version !== prevSource?.version;\n\n if (contentChanged) {\n const details = this.#objectPreviewService.getViewerDetails(object, source.version);\n return details\n ? { ...details, metadata: { ...details.metadata, ...source.metadata } as Partial<Metadata> }\n : null;\n }\n\n return previous?.value\n ? ({ ...previous.value, metadata: { ...previous.value.metadata, ...source.metadata } } as ViewerDetails)\n : null;\n }\n });\n\n isTiff = computed(() => this.dmsObject()?.content?.mimeType === 'image/tiff');\n\n #objectIdEffect = effect(() => {\n const objectId = this.objectId();\n const dmsObject = this.dmsObjectInput();\n untracked(() => {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n dmsObject && this.#objectPreviewService.setDmsObject(dmsObject);\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n objectId && !dmsObject && this.#objectPreviewService.getDmsObject(objectId).subscribe();\n });\n });\n\n constructor() {\n this.#event\n .on(DASHLET_MESSAGE_EVENTS.OFFICE_DOCUMENT_UPDATE) //, DASHLET_MESSAGE_EVENTS.OFFICE_DOCUMENT_CONVERTED)\n .pipe(\n takeUntilDestroyed(),\n // delay(2000),\n // tap((e) => console.log({ e })),\n tap(() => this.#event.trigger(YuvEventType.DMS_OBJECT_CONTENT_UPDATED, { externalUpdate: true }))\n )\n .subscribe();\n }\n}\n","import { Component, computed, effect, inject, input, untracked } from '@angular/core';\nimport { DmsObject } from '@yuuvis/client-core';\nimport { MailComponent } from '@yuuvis/media-viewer';\nimport { ObjectPreviewService } from '../../services/object-preview.service';\n\n@Component({\n selector: 'yuv-object-email-preview',\n standalone: true,\n imports: [MailComponent],\n template: `\n @let viewerDetailsObj = viewerDetails();\n @if (viewerDetailsObj) {\n <yuv-mail [id]=\"viewerDetailsObj.id\" [src]=\"viewerDetailsObj.mediaViewerSrc\" [metadata]=\"viewerDetailsObj.metadata\"></yuv-mail>\n }\n `,\n styles: `\n :host {\n height: 100%;\n }\n `\n})\nexport class ObjectEmailPreviewComponent {\n #objectPreviwService = inject(ObjectPreviewService);\n\n objectId = input<string | undefined>(undefined);\n dmsObjectInput = input<DmsObject | undefined>(undefined, { alias: 'dmsObject' });\n dmsObject = this.#objectPreviwService.dmsObject;\n\n #objectIdEffect = effect(() => {\n const objectId = this.objectId();\n const dmsObject = this.dmsObjectInput();\n\n untracked(() => {\n dmsObject && this.#objectPreviwService.setDmsObject(dmsObject);\n if (objectId && !dmsObject) {\n this.#objectPreviwService.getDmsObject(objectId).subscribe();\n }\n });\n });\n\n viewerDetails = computed(() => {\n const object = this.dmsObject();\n return object ? this.#objectPreviwService.getEmailViewerDetails(object) : undefined;\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["tap"],"mappings":"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"}
@@ -91,6 +91,8 @@ class ObjectVersionsComponent {
91
91
  const idx = selectedIndex[0];
92
92
  this.selectedIndex.set(idx);
93
93
  this.selectedVersion.set(this.versions()[idx]);
94
+ console.log({ idx, selectedIndex });
95
+ console.log(this.selectedVersion());
94
96
  }
95
97
  downloadCurrentVersion() {
96
98
  const o = this.selectedVersion();