@yuuvis/client-framework 2.3.13 → 2.3.15

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.
Files changed (34) hide show
  1. package/fesm2022/yuuvis-client-framework-common.mjs.map +1 -1
  2. package/fesm2022/yuuvis-client-framework-master-details.mjs +175 -7
  3. package/fesm2022/yuuvis-client-framework-master-details.mjs.map +1 -1
  4. package/fesm2022/yuuvis-client-framework-object-flavor.mjs +1 -1
  5. package/fesm2022/yuuvis-client-framework-object-flavor.mjs.map +1 -1
  6. package/fesm2022/yuuvis-client-framework-object-preview.mjs +5 -2
  7. package/fesm2022/yuuvis-client-framework-object-preview.mjs.map +1 -1
  8. package/fesm2022/yuuvis-client-framework-object-versions.mjs +1 -1
  9. package/fesm2022/yuuvis-client-framework-object-versions.mjs.map +1 -1
  10. package/fesm2022/yuuvis-client-framework-simple-search.mjs +2 -2
  11. package/fesm2022/yuuvis-client-framework-simple-search.mjs.map +1 -1
  12. package/fesm2022/yuuvis-client-framework-sort.mjs +12 -2
  13. package/fesm2022/yuuvis-client-framework-sort.mjs.map +1 -1
  14. package/fesm2022/yuuvis-client-framework-split-view.mjs +20 -24
  15. package/fesm2022/yuuvis-client-framework-split-view.mjs.map +1 -1
  16. package/fesm2022/yuuvis-client-framework-tile-list.mjs +1 -1
  17. package/fesm2022/yuuvis-client-framework-tile-list.mjs.map +1 -1
  18. package/lib/assets/i18n/de.json +1 -0
  19. package/lib/assets/i18n/en.json +3 -2
  20. package/master-details/index.d.ts +4 -1
  21. package/master-details/lib/master-details-pane/master-details-pane.component.d.ts +34 -0
  22. package/master-details/lib/master-details-pane/master-details-pane.interface.d.ts +17 -0
  23. package/master-details/lib/master-details-pane/pane.directive.d.ts +15 -0
  24. package/master-details/lib/master-details.module.d.ts +3 -1
  25. package/object-preview/lib/services/object-preview.service.d.ts +1 -0
  26. package/package.json +8 -12
  27. package/split-view/lib/split-area.directive.d.ts +10 -4
  28. package/split-view/lib/split-view.component.d.ts +5 -4
  29. package/split-view/lib/split-view.interface.d.ts +2 -1
  30. package/fesm2022/yuuvis-client-framework-panel.mjs +0 -28
  31. package/fesm2022/yuuvis-client-framework-panel.mjs.map +0 -1
  32. package/panel/README.md +0 -3
  33. package/panel/index.d.ts +0 -1
  34. package/panel/lib/panel.component.d.ts +0 -12
@@ -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, UserService } from '@yuuvis/client-core';\nimport { defaultViewers, EmailMetadata, MediaViewerService } from '@yuuvis/media-viewer';\nimport { tap } from 'rxjs/operators';\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\n #dmsObject = signal<DmsObject | undefined>(undefined);\n\n dmsObject = this.#dmsObject.asReadonly();\n\n setDmsObject(object: DmsObject) {\n this.#dmsObject.set(object);\n }\n\n getDmsObject(id: string) {\n return this.#dms.getDmsObject(id).pipe(tap((dmsObject) => this.#dmsObject.set(dmsObject)));\n }\n\n getMediaViewerSrc(id: string, mimeType: string | undefined, version?: number) {\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 ? `/api/dms/objects/${id}/versions/${version}/contents/file` : `/api/dms/objects/${id}/contents/file`;\n }\n return '';\n }\n\n #isEmailViewer(object: DmsObject) {\n return defaultViewers.filter((viewer) => viewer.type === 'EMAIL')[0].mimeType.includes(object.data[ContentStreamField.MIME_TYPE] as string);\n }\n\n getViewerDetails(object: DmsObject, version: number | undefined) {\n if (object) {\n const type = object?.content && this.#mediaViewerService.getComponentType(object.content.mimeType);\n\n // console.log('type', type);\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: true,\n user: this.#userService.getCurrentUser(),\n theme: 'light',\n sendEvent:\n (object.content?.mimeType &&\n defaultViewers.filter((v) => v.type === 'OFFICE').map((v) => v.mimeType.includes(object.content?.mimeType || '')).length) ||\n false\n // ...(object.content?.mimeType === 'application/pdf'\n }\n };\n }\n return undefined;\n }\n\n getEmailViewerDetails(object: DmsObject, MAIL_APP_ID = 'appSystemmail:') {\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","import { CommonModule } from '@angular/common';\nimport { Component, computed, effect, inject, input, signal, untracked } from '@angular/core';\nimport { DmsObject, EventService, TranslateModule, YuvEventType } from '@yuuvis/client-core';\nimport { DASHLET_MESSAGE_EVENTS, Metadata, YuvMediaViewerComponent } from '@yuuvis/media-viewer';\nimport { ObjectPreviewService } from '../../services/object-preview.service';\nimport { delay, tap } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'yuv-object-preview',\n standalone: true,\n imports: [CommonModule, YuvMediaViewerComponent, TranslateModule],\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\"\n [metadata]=\"viewerDetailsObj.metadata\"\n ></yuv-media-viewer>\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 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 ::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 #objectPreviewService = inject(ObjectPreviewService);\n #event = inject(EventService);\n\n #formerContentstreamId?: string;\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 #dmsObjectEffect = effect(() => {\n const version = this.version();\n let object = this.dmsObject();\n object = Array.isArray(object) ? object[0] : object;\n if (object && this.#formerContentstreamId !== object.content?.contentStreamId) {\n untracked(() => {\n const details = object && this.#objectPreviewService.getViewerDetails(object, version);\n if (details) {\n this.viewerDetails.set({ ...details, metadata: { ...details.metadata, ...this.metadata() } });\n }\n });\n\n this.#formerContentstreamId = object.content?.contentStreamId;\n }\n });\n\n metadata = input<Partial<Metadata>>({});\n\n viewerDetails = signal<any | undefined>(undefined);\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 dmsObject && this.#objectPreviewService.setDmsObject(dmsObject);\n objectId && !dmsObject && this.#objectPreviewService.getDmsObject(objectId).subscribe();\n });\n });\n\n constructor() {\n this.#event\n .on(DASHLET_MESSAGE_EVENTS.OFFICE_DOCUMENT_UPDATE)\n .pipe(\n takeUntilDestroyed(),\n delay(2000),\n tap(() => this.#event.trigger(YuvEventType.DMS_OBJECT_UPDATED, { objectId: this.objectId() }))\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":["import { inject, Injectable, signal } from '@angular/core';\nimport { ContentStreamField, DmsObject, DmsService, UserService } from '@yuuvis/client-core';\nimport { defaultViewers, EmailMetadata, MediaViewerService } from '@yuuvis/media-viewer';\nimport { tap } from 'rxjs/operators';\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\n #dmsObject = signal<DmsObject | undefined>(undefined);\n\n dmsObject = this.#dmsObject.asReadonly();\n\n setDmsObject(object: DmsObject) {\n this.#dmsObject.set(object);\n }\n\n getDmsObject(id: string) {\n return this.#dms.getDmsObject(id).pipe(tap((dmsObject) => this.#dmsObject.set(dmsObject)));\n }\n\n getMediaViewerSrc(id: string, mimeType: string | undefined, version?: number) {\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 ? `/api/dms/objects/${id}/versions/${version}/contents/file` : `/api/dms/objects/${id}/contents/file`;\n }\n return '';\n }\n\n #isEmailViewer(object: DmsObject) {\n return defaultViewers.filter((viewer) => viewer.type === 'EMAIL')[0].mimeType.includes(object.data[ContentStreamField.MIME_TYPE] as string);\n }\n\n getViewerDetails(object: DmsObject, version: number | undefined) {\n if (object) {\n const type = object?.content && this.#mediaViewerService.getComponentType(object.content.mimeType);\n\n // console.log('type', type);\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: true,\n user: this.#userService.getCurrentUser(),\n theme: 'light',\n version,\n sendEvent:\n (object.content?.mimeType &&\n defaultViewers.filter((v) => v.type === 'OFFICE').map((v) => v.mimeType.includes(object.content?.mimeType || '')).length) ||\n false\n // ...(object.content?.mimeType === 'application/pdf'\n }\n };\n }\n return undefined;\n }\n\n getEmailViewerDetails(object: DmsObject, MAIL_APP_ID = 'appSystemmail:') {\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","import { CommonModule } from '@angular/common';\nimport { Component, computed, effect, inject, input, signal, untracked } from '@angular/core';\nimport { DmsObject, EventService, TranslateModule, YuvEventType } from '@yuuvis/client-core';\nimport { DASHLET_MESSAGE_EVENTS, Metadata, YuvMediaViewerComponent } from '@yuuvis/media-viewer';\nimport { ObjectPreviewService } from '../../services/object-preview.service';\nimport { delay, tap } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'yuv-object-preview',\n standalone: true,\n imports: [CommonModule, YuvMediaViewerComponent, TranslateModule],\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\"\n [metadata]=\"viewerDetailsObj.metadata\"\n ></yuv-media-viewer>\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 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 ::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 #objectPreviewService = inject(ObjectPreviewService);\n #event = inject(EventService);\n\n #formerContentstreamId?: string;\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 #dmsObjectEffect = effect(() => {\n const version = this.version();\n let object = this.dmsObject();\n object = Array.isArray(object) ? object[0] : object;\n if (object && this.#formerContentstreamId !== object.content?.contentStreamId) {\n untracked(() => {\n const details = object && this.#objectPreviewService.getViewerDetails(object, version);\n if (details) {\n this.viewerDetails.set({ ...details, metadata: { ...details.metadata, ...this.metadata() } });\n }\n });\n\n this.#formerContentstreamId = object.content?.contentStreamId;\n }\n });\n\n metadata = input<Partial<Metadata>>({});\n\n viewerDetails = signal<any | undefined>(undefined);\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 dmsObject && this.#objectPreviewService.setDmsObject(dmsObject);\n objectId && !dmsObject && this.#objectPreviewService.getDmsObject(objectId).subscribe();\n });\n });\n\n constructor() {\n this.#event\n .on(DASHLET_MESSAGE_EVENTS.OFFICE_DOCUMENT_UPDATE)\n .pipe(\n takeUntilDestroyed(),\n // delay(2000),\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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"}
@@ -137,7 +137,7 @@ class ObjectVersionsComponent {
137
137
  }
138
138
  }
139
139
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ObjectVersionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
140
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: ObjectVersionsComponent, isStandalone: true, selector: "yuv-object-versions", inputs: { dmsObject: { classPropertyName: "dmsObject", publicName: "dmsObject", isSignal: true, isRequired: true, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: true, transformFunction: null }, objectConfigBucket: { classPropertyName: "objectConfigBucket", publicName: "objectConfigBucket", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { objectRestored: "objectRestored" }, viewQueries: [{ propertyName: "versionList", first: true, predicate: ListComponent, descendants: true, isSignal: true }], ngImport: i0, template: "@let err = error();\n@if (!err) {\n <yuv-split-view [gutterSize]=\"splitGutterSize\" layoutSettingsID=\"yuv.object-versions.split\">\n <!-- version details -->\n <ng-template yuvSplitArea [size]=\"60\">\n <div class=\"version-details ymt-panel\" [yuvBusyOverlay]=\"busy()\">\n @let selected = selectedVersion();\n @if (selected) {\n <yuv-object-details-header [dmsObject]=\"selected\" [type]=\"type()\" [bucket]=\"objectConfigBucket()\">\n <ng-template #yuvHeaderActions>\n <button mat-icon-button (click)=\"downloadCurrentVersion()\" [matTooltip]=\"'yuv.object-versions.actions.download' | translate\">\n <mat-icon>download</mat-icon>\n </button>\n <button mat-icon-button (click)=\"restoreCurrentVersion()\" [matTooltip]=\"'yuv.object-versions.actions.restore' | translate\">\n <mat-icon>restore_page</mat-icon>\n </button>\n </ng-template>\n </yuv-object-details-header>\n\n <mat-tab-group class=\"version-tabs\">\n <mat-tab [label]=\"'yuv.object-versions.tabs.content.title' | translate\">\n <ng-template matTabContent>\n <yuv-object-preview [metadata]=\"metadata\" [dmsObject]=\"selected\" [version]=\"selected.version\"></yuv-object-preview>\n </ng-template>\n </mat-tab>\n <mat-tab [label]=\"'yuv.object-versions.tabs.indexdata.title' | translate\">\n <ng-template matTabContent>\n <div class=\"metadata\">\n\n <yuv-object-summary-data [dmsObject]=\"selected\" [showAppliedFlavors]=\"true\"></yuv-object-summary-data>\n </div>\n </ng-template> </mat-tab\n ></mat-tab-group>\n }\n </div>\n </ng-template>\n\n <!-- versions list -->\n <ng-template yuvSplitArea [size]=\"40\">\n <div class=\"version-list ymt-panel\">\n <yuv-list selectOnEnter=\"true\" (itemSelect)=\"itemSelected($event)\">\n @for (v of versions(); track v.version) {\n <div class=\"version\" yuvListItem>\n <div class=\"label\">{{ 'yuv.object-versions.list.version' | translate: { version: v.version } }}</div>\n\n <span class=\"modified-on\">{{ v.modified.on | localeDate }}</span>\n <span class=\"modified-by\">{{ v.modified.by.title }}</span>\n </div>\n }\n </yuv-list>\n </div>\n </ng-template>\n </yuv-split-view>\n} @else {\n <div class=\"error\">\n <p>{{ err }}</p>\n </div>\n}\n", styles: [":host{display:block}:host .ymt-panel{background-color:var(--ymt-surface);border:1px solid var(--ymt-outline-variant);border-radius:var(--ymt-corner-m)}:host .ymt-panel{height:100%;overflow:hidden}:host mat-tab-group{overflow:hidden;height:100%}:host mat-tab-group ::ng-deep .mat-mdc-tab-body-wrapper{height:100%}:host yuv-object-preview{background-color:var(--ymt-surface-container-low)}:host .metadata{background-color:var(--ymt-surface-container-low);height:100%;overflow-y:auto;display:flex;flex-direction:column;--object-summary-section-border-color: var(--ymt-outline-variant)}:host .metadata yuv-object-summary-data{display:block;padding:var(--ymt-spacing-m)}:host .version{display:grid;grid-template-rows:auto auto;grid-template-columns:1fr auto;grid-template-areas:\"version version\" \"by on\";border-block-end:1px solid var(--ymt-outline-variant);padding:var(--ymt-spacing-s) var(--ymt-spacing-l);gap:var(--ymt-spacing-s)}:host .version .label{grid-area:version;font:var(--ymt-font-title-small)}:host .version .modified-by{grid-area:by;font:var(--ymt-font-body);color:var(--ymt-text-color-subtle)}:host .version .modified-on{grid-area:on;font:var(--ymt-font-body);color:var(--ymt-text-color-subtle)}:host .error{height:100%;display:flex;align-items:center;justify-content:center}:host .error>p{background-color:var(--ymt-danger-container);color:var(--ymt-on-danger-container);border:var(--ymt-danger);padding:var(--ymt-spacing-xs);border-radius:var(--ymt-corner-xs)}\n"], dependencies: [{ kind: "ngmodule", type: YuvSplitViewModule }, { kind: "directive", type: i1.SplitAreaDirective, selector: "[yuvSplitArea]", inputs: ["size", "minSize", "maxSize", "panelClass", "visible"] }, { kind: "component", type: i1.SplitViewComponent, selector: "yuv-split-view", inputs: ["direction", "gutterSize", "restrictMove", "disabled", "layoutSettingsID"], outputs: ["layoutSettingsChange", "dragStart", "dragEnd", "gutterClick", "gutterDblClick"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: ObjectPreviewComponent, selector: "yuv-object-preview", inputs: ["objectId", "dmsObject", "version", "metadata"] }, { kind: "component", type: ObjectDetailsHeaderComponent, selector: "yuv-object-details-header", inputs: ["dmsObject", "type", "bucket"] }, { kind: "ngmodule", type: YuvListModule }, { kind: "component", type: i3.ListComponent, selector: "yuv-list", inputs: ["preventChangeUntil", "multiselect", "selfHandleSelection", "autoSelect", "disableSelection"], outputs: ["itemSelect", "itemFocus"] }, { kind: "directive", type: i3.ListItemDirective, selector: "[yuvListItem]", inputs: ["disabled", "active", "selected"] }, { kind: "directive", type: BusyOverlayDirective, selector: "[yuvBusyOverlay]", inputs: ["yuvBusyOverlay", "yuvBusyOverlayConfig"] }, { kind: "component", type: ObjectSummaryDataComponent, selector: "yuv-object-summary-data", inputs: ["dmsObject", "flavors", "showAppliedFlavors"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "directive", type: i4.MatTabContent, selector: "[matTabContent]" }, { kind: "component", type: i4.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i4.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: LocaleDatePipe, name: "localeDate" }] }); }
140
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: ObjectVersionsComponent, isStandalone: true, selector: "yuv-object-versions", inputs: { dmsObject: { classPropertyName: "dmsObject", publicName: "dmsObject", isSignal: true, isRequired: true, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: true, transformFunction: null }, objectConfigBucket: { classPropertyName: "objectConfigBucket", publicName: "objectConfigBucket", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { objectRestored: "objectRestored" }, viewQueries: [{ propertyName: "versionList", first: true, predicate: ListComponent, descendants: true, isSignal: true }], ngImport: i0, template: "@let err = error();\n@if (!err) {\n <yuv-split-view [gutterSize]=\"splitGutterSize\" layoutSettingsID=\"yuv.object-versions.split\">\n <!-- version details -->\n <ng-template yuvSplitArea [size]=\"60\">\n <div class=\"version-details ymt-panel\" [yuvBusyOverlay]=\"busy()\">\n @let selected = selectedVersion();\n @if (selected) {\n <yuv-object-details-header [dmsObject]=\"selected\" [type]=\"type()\" [bucket]=\"objectConfigBucket()\">\n <ng-template #yuvHeaderActions>\n <button mat-icon-button (click)=\"downloadCurrentVersion()\" [matTooltip]=\"'yuv.object-versions.actions.download' | translate\">\n <mat-icon>download</mat-icon>\n </button>\n <button mat-icon-button (click)=\"restoreCurrentVersion()\" [matTooltip]=\"'yuv.object-versions.actions.restore' | translate\">\n <mat-icon>restore_page</mat-icon>\n </button>\n </ng-template>\n </yuv-object-details-header>\n\n <mat-tab-group class=\"version-tabs\">\n <mat-tab [label]=\"'yuv.object-versions.tabs.content.title' | translate\">\n <ng-template matTabContent>\n <yuv-object-preview [metadata]=\"metadata\" [dmsObject]=\"selected\" [version]=\"selected.version\"></yuv-object-preview>\n </ng-template>\n </mat-tab>\n <mat-tab [label]=\"'yuv.object-versions.tabs.indexdata.title' | translate\">\n <ng-template matTabContent>\n <div class=\"metadata\">\n\n <yuv-object-summary-data [dmsObject]=\"selected\" [showAppliedFlavors]=\"true\"></yuv-object-summary-data>\n </div>\n </ng-template> </mat-tab\n ></mat-tab-group>\n }\n </div>\n </ng-template>\n\n <!-- versions list -->\n <ng-template yuvSplitArea [size]=\"40\">\n <div class=\"version-list ymt-panel\">\n <yuv-list selectOnEnter=\"true\" (itemSelect)=\"itemSelected($event)\">\n @for (v of versions(); track v.version) {\n <div class=\"version\" yuvListItem>\n <div class=\"label\">{{ 'yuv.object-versions.list.version' | translate: { version: v.version } }}</div>\n\n <span class=\"modified-on\">{{ v.modified.on | localeDate }}</span>\n <span class=\"modified-by\">{{ v.modified.by.title }}</span>\n </div>\n }\n </yuv-list>\n </div>\n </ng-template>\n </yuv-split-view>\n} @else {\n <div class=\"error\">\n <p>{{ err }}</p>\n </div>\n}\n", styles: [":host{display:block}:host .ymt-panel{background-color:var(--ymt-surface);border:1px solid var(--ymt-outline-variant);border-radius:var(--ymt-corner-m)}:host .ymt-panel{height:100%;overflow:hidden}:host mat-tab-group{overflow:hidden;height:100%}:host mat-tab-group ::ng-deep .mat-mdc-tab-body-wrapper{height:100%}:host yuv-object-preview{background-color:var(--ymt-surface-container-low)}:host .metadata{background-color:var(--ymt-surface-container-low);height:100%;overflow-y:auto;display:flex;flex-direction:column;--object-summary-section-border-color: var(--ymt-outline-variant)}:host .metadata yuv-object-summary-data{display:block;padding:var(--ymt-spacing-m)}:host .version{display:grid;grid-template-rows:auto auto;grid-template-columns:1fr auto;grid-template-areas:\"version version\" \"by on\";border-block-end:1px solid var(--ymt-outline-variant);padding:var(--ymt-spacing-s) var(--ymt-spacing-l);gap:var(--ymt-spacing-s)}:host .version .label{grid-area:version;font:var(--ymt-font-title-small)}:host .version .modified-by{grid-area:by;font:var(--ymt-font-body);color:var(--ymt-text-color-subtle)}:host .version .modified-on{grid-area:on;font:var(--ymt-font-body);color:var(--ymt-text-color-subtle)}:host .error{height:100%;display:flex;align-items:center;justify-content:center}:host .error>p{background-color:var(--ymt-danger-container);color:var(--ymt-on-danger-container);border:var(--ymt-danger);padding:var(--ymt-spacing-xs);border-radius:var(--ymt-corner-xs)}\n"], dependencies: [{ kind: "ngmodule", type: YuvSplitViewModule }, { kind: "directive", type: i1.SplitAreaDirective, selector: "[yuvSplitArea]", inputs: ["size", "minSize", "maxSize", "panelClass", "visible", "lockSize"] }, { kind: "component", type: i1.SplitViewComponent, selector: "yuv-split-view", inputs: ["direction", "gutterSize", "restrictMove", "disabled", "layoutSettingsID"], outputs: ["layoutSettingsChange", "dragStart", "dragEnd", "gutterClick", "gutterDblClick"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: ObjectPreviewComponent, selector: "yuv-object-preview", inputs: ["objectId", "dmsObject", "version", "metadata"] }, { kind: "component", type: ObjectDetailsHeaderComponent, selector: "yuv-object-details-header", inputs: ["dmsObject", "type", "bucket"] }, { kind: "ngmodule", type: YuvListModule }, { kind: "component", type: i3.ListComponent, selector: "yuv-list", inputs: ["preventChangeUntil", "multiselect", "selfHandleSelection", "autoSelect", "disableSelection"], outputs: ["itemSelect", "itemFocus"] }, { kind: "directive", type: i3.ListItemDirective, selector: "[yuvListItem]", inputs: ["disabled", "active", "selected"] }, { kind: "directive", type: BusyOverlayDirective, selector: "[yuvBusyOverlay]", inputs: ["yuvBusyOverlay", "yuvBusyOverlayConfig"] }, { kind: "component", type: ObjectSummaryDataComponent, selector: "yuv-object-summary-data", inputs: ["dmsObject", "flavors", "showAppliedFlavors"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "directive", type: i4.MatTabContent, selector: "[matTabContent]" }, { kind: "component", type: i4.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i4.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: LocaleDatePipe, name: "localeDate" }] }); }
141
141
  }
142
142
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ObjectVersionsComponent, decorators: [{
143
143
  type: Component,
@@ -1 +1 @@
1
- {"version":3,"file":"yuuvis-client-framework-object-versions.mjs","sources":["../../../../../libs/yuuvis/client-framework/object-versions/src/lib/object-versions.component.ts","../../../../../libs/yuuvis/client-framework/object-versions/src/lib/object-versions.component.html","../../../../../libs/yuuvis/client-framework/object-versions/src/lib/object-versions.module.ts","../../../../../libs/yuuvis/client-framework/object-versions/src/yuuvis-client-framework-object-versions.ts"],"sourcesContent":["import { Component, effect, inject, input, output, signal, untracked, viewChild } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { DmsObject, DmsService, LocaleDatePipe, TranslateModule, TranslateService, VirtualObjectType } from '@yuuvis/client-core';\nimport { BusyOverlayDirective, ConfirmService, LayoutSettingsService } from '@yuuvis/client-framework/common';\nimport { ListComponent, YuvListModule } from '@yuuvis/client-framework/list';\nimport { ObjectDetailsHeaderComponent } from '@yuuvis/client-framework/object-details';\nimport { ObjectPreviewComponent } from '@yuuvis/client-framework/object-preview';\nimport { ObjectSummaryDataComponent } from '@yuuvis/client-framework/object-summary';\nimport { YuvSplitViewModule } from '@yuuvis/client-framework/split-view';\nimport { Metadata } from '@yuuvis/media-viewer';\nimport { finalize, switchMap } from 'rxjs';\n\n@Component({\n selector: 'yuv-object-versions',\n imports: [\n YuvSplitViewModule,\n TranslateModule,\n ObjectPreviewComponent,\n ObjectDetailsHeaderComponent,\n YuvListModule,\n BusyOverlayDirective,\n ObjectSummaryDataComponent,\n MatTabsModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n LocaleDatePipe\n ],\n templateUrl: './object-versions.component.html',\n styleUrl: './object-versions.component.scss'\n})\nexport class ObjectVersionsComponent {\n #layoutSettingsService = inject(LayoutSettingsService);\n #dmsService = inject(DmsService);\n #confirm = inject(ConfirmService);\n\n private translate = inject(TranslateService);\n\n versionList = viewChild(ListComponent);\n #versionListEffect = effect(() => {\n const list = this.versionList();\n if (list) setTimeout(() => list.focus(), 100);\n this.#preSelect();\n });\n\n dmsObject = input.required<DmsObject>();\n #dmsObjectEffect = effect(() => {\n const o = this.dmsObject();\n if (o) this.#fetchVersions(o);\n });\n\n /**\n * Object type to use for retrieving header data\n */\n type = input.required<VirtualObjectType>();\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 objectRestored = output<number>();\n\n splitGutterSize = this.#layoutSettingsService.DEFAULT_SPLIT_VIEW_GUTTER_SIZE;\n busy = signal<boolean>(false);\n versions = signal<DmsObject[]>([]);\n #versionsEffect = effect(() => {\n this.versions();\n untracked(() => {\n this.#preSelect();\n });\n });\n selectedVersion = signal<DmsObject | undefined>(undefined);\n error = signal<string | undefined>(undefined);\n\n metadata: Partial<Metadata> = {\n editable: false\n };\n\n #preSelect() {\n const vl = this.versionList();\n if (vl && !this.selectedVersion()) {\n vl.select(0);\n }\n }\n\n itemSelected(selectedIndex: number[]) {\n const idx = selectedIndex[0];\n this.selectedVersion.set(this.versions()[idx]);\n }\n\n downloadCurrentVersion() {\n const o = this.selectedVersion();\n if (o) this.#dmsService.downloadContent([o], true);\n }\n\n restoreCurrentVersion() {\n const o = this.selectedVersion();\n if (o) {\n this.#confirm\n .confirm({\n title: this.translate.instant('yuv.object-versions.actions.restore'),\n message: this.translate.instant('yuv.object-versions.actions.restore.confirm.message', {\n version: o.version\n })\n })\n .subscribe((confirmed: boolean) => {\n if (confirmed) this.#executeRestoreCurrentVersion(o);\n });\n }\n }\n\n #executeRestoreCurrentVersion(version: DmsObject) {\n this.busy.set(true);\n this.#dmsService\n .restoreDmsObject(version.id, version.version)\n .pipe(\n switchMap((dmsObject: DmsObject) => this.#dmsService.getDmsObjectVersions(dmsObject.id)),\n finalize(() => this.busy.set(false))\n )\n .subscribe({\n next: (versions: DmsObject[]) => {\n this.versions.set(versions);\n this.versionList()?.select(0);\n this.objectRestored.emit(version.version);\n }\n });\n }\n\n #fetchVersions(dmsObject: DmsObject) {\n // if the dms object only has one version we do not need to ask the backend\n if (dmsObject.version === 1) {\n this.versions.set([dmsObject]);\n } else {\n this.busy.set(true);\n this.#dmsService\n .getDmsObjectVersions(dmsObject.id)\n .pipe(finalize(() => this.busy.set(false)))\n .subscribe({\n next: (versions: DmsObject[]) => {\n this.versions.set(versions);\n },\n error: (e) => {\n this.error.set(this.translate.instant('yuv.object-versions.error.fetch-versions'));\n console.error(e);\n }\n });\n }\n }\n}\n","@let err = error();\n@if (!err) {\n <yuv-split-view [gutterSize]=\"splitGutterSize\" layoutSettingsID=\"yuv.object-versions.split\">\n <!-- version details -->\n <ng-template yuvSplitArea [size]=\"60\">\n <div class=\"version-details ymt-panel\" [yuvBusyOverlay]=\"busy()\">\n @let selected = selectedVersion();\n @if (selected) {\n <yuv-object-details-header [dmsObject]=\"selected\" [type]=\"type()\" [bucket]=\"objectConfigBucket()\">\n <ng-template #yuvHeaderActions>\n <button mat-icon-button (click)=\"downloadCurrentVersion()\" [matTooltip]=\"'yuv.object-versions.actions.download' | translate\">\n <mat-icon>download</mat-icon>\n </button>\n <button mat-icon-button (click)=\"restoreCurrentVersion()\" [matTooltip]=\"'yuv.object-versions.actions.restore' | translate\">\n <mat-icon>restore_page</mat-icon>\n </button>\n </ng-template>\n </yuv-object-details-header>\n\n <mat-tab-group class=\"version-tabs\">\n <mat-tab [label]=\"'yuv.object-versions.tabs.content.title' | translate\">\n <ng-template matTabContent>\n <yuv-object-preview [metadata]=\"metadata\" [dmsObject]=\"selected\" [version]=\"selected.version\"></yuv-object-preview>\n </ng-template>\n </mat-tab>\n <mat-tab [label]=\"'yuv.object-versions.tabs.indexdata.title' | translate\">\n <ng-template matTabContent>\n <div class=\"metadata\">\n\n <yuv-object-summary-data [dmsObject]=\"selected\" [showAppliedFlavors]=\"true\"></yuv-object-summary-data>\n </div>\n </ng-template> </mat-tab\n ></mat-tab-group>\n }\n </div>\n </ng-template>\n\n <!-- versions list -->\n <ng-template yuvSplitArea [size]=\"40\">\n <div class=\"version-list ymt-panel\">\n <yuv-list selectOnEnter=\"true\" (itemSelect)=\"itemSelected($event)\">\n @for (v of versions(); track v.version) {\n <div class=\"version\" yuvListItem>\n <div class=\"label\">{{ 'yuv.object-versions.list.version' | translate: { version: v.version } }}</div>\n\n <span class=\"modified-on\">{{ v.modified.on | localeDate }}</span>\n <span class=\"modified-by\">{{ v.modified.by.title }}</span>\n </div>\n }\n </yuv-list>\n </div>\n </ng-template>\n </yuv-split-view>\n} @else {\n <div class=\"error\">\n <p>{{ err }}</p>\n </div>\n}\n","import { NgModule } from '@angular/core';\nimport { ObjectVersionsComponent } from './object-versions.component';\n\nconst cmp = [ObjectVersionsComponent];\n@NgModule({\n imports: cmp,\n exports: cmp\n})\nexport class YuvObjectVersionsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"yuuvis-client-framework-object-versions.mjs","sources":["../../../../../libs/yuuvis/client-framework/object-versions/src/lib/object-versions.component.ts","../../../../../libs/yuuvis/client-framework/object-versions/src/lib/object-versions.component.html","../../../../../libs/yuuvis/client-framework/object-versions/src/lib/object-versions.module.ts","../../../../../libs/yuuvis/client-framework/object-versions/src/yuuvis-client-framework-object-versions.ts"],"sourcesContent":["import { Component, effect, inject, input, output, signal, untracked, viewChild } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { DmsObject, DmsService, LocaleDatePipe, TranslateModule, TranslateService, VirtualObjectType } from '@yuuvis/client-core';\nimport { BusyOverlayDirective, ConfirmService, LayoutSettingsService } from '@yuuvis/client-framework/common';\nimport { ListComponent, YuvListModule } from '@yuuvis/client-framework/list';\nimport { ObjectDetailsHeaderComponent } from '@yuuvis/client-framework/object-details';\nimport { ObjectPreviewComponent } from '@yuuvis/client-framework/object-preview';\nimport { ObjectSummaryDataComponent } from '@yuuvis/client-framework/object-summary';\nimport { YuvSplitViewModule } from '@yuuvis/client-framework/split-view';\nimport { Metadata } from '@yuuvis/media-viewer';\nimport { finalize, switchMap } from 'rxjs';\n\n@Component({\n selector: 'yuv-object-versions',\n imports: [\n YuvSplitViewModule,\n TranslateModule,\n ObjectPreviewComponent,\n ObjectDetailsHeaderComponent,\n YuvListModule,\n BusyOverlayDirective,\n ObjectSummaryDataComponent,\n MatTabsModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n LocaleDatePipe\n ],\n templateUrl: './object-versions.component.html',\n styleUrl: './object-versions.component.scss'\n})\nexport class ObjectVersionsComponent {\n #layoutSettingsService = inject(LayoutSettingsService);\n #dmsService = inject(DmsService);\n #confirm = inject(ConfirmService);\n\n private translate = inject(TranslateService);\n\n versionList = viewChild(ListComponent);\n #versionListEffect = effect(() => {\n const list = this.versionList();\n if (list) setTimeout(() => list.focus(), 100);\n this.#preSelect();\n });\n\n dmsObject = input.required<DmsObject>();\n #dmsObjectEffect = effect(() => {\n const o = this.dmsObject();\n if (o) this.#fetchVersions(o);\n });\n\n /**\n * Object type to use for retrieving header data\n */\n type = input.required<VirtualObjectType>();\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 objectRestored = output<number>();\n\n splitGutterSize = this.#layoutSettingsService.DEFAULT_SPLIT_VIEW_GUTTER_SIZE;\n busy = signal<boolean>(false);\n versions = signal<DmsObject[]>([]);\n #versionsEffect = effect(() => {\n this.versions();\n untracked(() => {\n this.#preSelect();\n });\n });\n selectedVersion = signal<DmsObject | undefined>(undefined);\n error = signal<string | undefined>(undefined);\n\n metadata: Partial<Metadata> = {\n editable: false\n };\n\n #preSelect() {\n const vl = this.versionList();\n if (vl && !this.selectedVersion()) {\n vl.select(0);\n }\n }\n\n itemSelected(selectedIndex: number[]) {\n const idx = selectedIndex[0];\n this.selectedVersion.set(this.versions()[idx]);\n }\n\n downloadCurrentVersion() {\n const o = this.selectedVersion();\n if (o) this.#dmsService.downloadContent([o], true);\n }\n\n restoreCurrentVersion() {\n const o = this.selectedVersion();\n if (o) {\n this.#confirm\n .confirm({\n title: this.translate.instant('yuv.object-versions.actions.restore'),\n message: this.translate.instant('yuv.object-versions.actions.restore.confirm.message', {\n version: o.version\n })\n })\n .subscribe((confirmed: boolean) => {\n if (confirmed) this.#executeRestoreCurrentVersion(o);\n });\n }\n }\n\n #executeRestoreCurrentVersion(version: DmsObject) {\n this.busy.set(true);\n this.#dmsService\n .restoreDmsObject(version.id, version.version)\n .pipe(\n switchMap((dmsObject: DmsObject) => this.#dmsService.getDmsObjectVersions(dmsObject.id)),\n finalize(() => this.busy.set(false))\n )\n .subscribe({\n next: (versions: DmsObject[]) => {\n this.versions.set(versions);\n this.versionList()?.select(0);\n this.objectRestored.emit(version.version);\n }\n });\n }\n\n #fetchVersions(dmsObject: DmsObject) {\n // if the dms object only has one version we do not need to ask the backend\n if (dmsObject.version === 1) {\n this.versions.set([dmsObject]);\n } else {\n this.busy.set(true);\n this.#dmsService\n .getDmsObjectVersions(dmsObject.id)\n .pipe(finalize(() => this.busy.set(false)))\n .subscribe({\n next: (versions: DmsObject[]) => {\n this.versions.set(versions);\n },\n error: (e) => {\n this.error.set(this.translate.instant('yuv.object-versions.error.fetch-versions'));\n console.error(e);\n }\n });\n }\n }\n}\n","@let err = error();\n@if (!err) {\n <yuv-split-view [gutterSize]=\"splitGutterSize\" layoutSettingsID=\"yuv.object-versions.split\">\n <!-- version details -->\n <ng-template yuvSplitArea [size]=\"60\">\n <div class=\"version-details ymt-panel\" [yuvBusyOverlay]=\"busy()\">\n @let selected = selectedVersion();\n @if (selected) {\n <yuv-object-details-header [dmsObject]=\"selected\" [type]=\"type()\" [bucket]=\"objectConfigBucket()\">\n <ng-template #yuvHeaderActions>\n <button mat-icon-button (click)=\"downloadCurrentVersion()\" [matTooltip]=\"'yuv.object-versions.actions.download' | translate\">\n <mat-icon>download</mat-icon>\n </button>\n <button mat-icon-button (click)=\"restoreCurrentVersion()\" [matTooltip]=\"'yuv.object-versions.actions.restore' | translate\">\n <mat-icon>restore_page</mat-icon>\n </button>\n </ng-template>\n </yuv-object-details-header>\n\n <mat-tab-group class=\"version-tabs\">\n <mat-tab [label]=\"'yuv.object-versions.tabs.content.title' | translate\">\n <ng-template matTabContent>\n <yuv-object-preview [metadata]=\"metadata\" [dmsObject]=\"selected\" [version]=\"selected.version\"></yuv-object-preview>\n </ng-template>\n </mat-tab>\n <mat-tab [label]=\"'yuv.object-versions.tabs.indexdata.title' | translate\">\n <ng-template matTabContent>\n <div class=\"metadata\">\n\n <yuv-object-summary-data [dmsObject]=\"selected\" [showAppliedFlavors]=\"true\"></yuv-object-summary-data>\n </div>\n </ng-template> </mat-tab\n ></mat-tab-group>\n }\n </div>\n </ng-template>\n\n <!-- versions list -->\n <ng-template yuvSplitArea [size]=\"40\">\n <div class=\"version-list ymt-panel\">\n <yuv-list selectOnEnter=\"true\" (itemSelect)=\"itemSelected($event)\">\n @for (v of versions(); track v.version) {\n <div class=\"version\" yuvListItem>\n <div class=\"label\">{{ 'yuv.object-versions.list.version' | translate: { version: v.version } }}</div>\n\n <span class=\"modified-on\">{{ v.modified.on | localeDate }}</span>\n <span class=\"modified-by\">{{ v.modified.by.title }}</span>\n </div>\n }\n </yuv-list>\n </div>\n </ng-template>\n </yuv-split-view>\n} @else {\n <div class=\"error\">\n <p>{{ err }}</p>\n </div>\n}\n","import { NgModule } from '@angular/core';\nimport { ObjectVersionsComponent } from './object-versions.component';\n\nconst cmp = [ObjectVersionsComponent];\n@NgModule({\n imports: cmp,\n exports: cmp\n})\nexport class YuvObjectVersionsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -108,7 +108,7 @@ class SimpleSearchComponent {
108
108
  subscriptSizing: 'dynamic'
109
109
  }
110
110
  }
111
- ], ngImport: i0, template: "<form [formGroup]=\"form\">\n <!-- Todo: String Translations-->\n <mat-form-field appearance=\"outline\">\n <label>\n <span class=\"ymt-hide-sr\">{{'yuv.simple-search.label'|translate}}</span>\n <input matInput type=\"text\" [placeholder]=\"'yuv.simple-search.label'|translate\" formControlName=\"term\" />\n </label>\n <mat-icon matPrefix>search</mat-icon>\n <button type=\"button\"\n mat-icon-button\n matSuffix\n [disabled]=\"!!!form.value.term\"\n class=\"clear-input-action ymt-icon-button--size-s\"\n (click)=\"clear($event)\">\n @if(form.value.term){ <mat-icon>close</mat-icon>}\n </button>\n </mat-form-field>\n <button class=\"ymt-hide-sr\" mat-icon-button (click)=\"search()\" [attr.aria-label]=\"'yuv.simple-search.submit'|translate\" [disabled]=\"form.invalid\">\n <mat-icon>search</mat-icon>\n </button>\n</form>\n", styles: [":host .clear-input-action{margin-inline-end:4px}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: i5.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }] }); }
111
+ ], ngImport: i0, template: "<form [formGroup]=\"form\">\n <!-- Todo: String Translations-->\n <mat-form-field appearance=\"outline\">\n <label>\n <span class=\"ymt-hide-sr\">{{'yuv.simple-search.label'|translate}}</span>\n <input matInput type=\"text\" [placeholder]=\"'yuv.simple-search.label'|translate\" formControlName=\"term\" />\n </label>\n <mat-icon matPrefix>search</mat-icon>\n <button type=\"button\"\n mat-icon-button\n matSuffix\n [disabled]=\"!!!form.value.term\"\n class=\"clear-input-action ymt-icon-button--size-s\"\n (click)=\"clear($event)\"\n [attr.aria-label]=\"'yuv.simple-search.clear'|translate\"\n [attr.title]=\"'yuv.simple-search.clear'|translate\">\n @if(form.value.term){ <mat-icon>close</mat-icon>}\n </button>\n </mat-form-field>\n <button class=\"ymt-hide-sr\" mat-icon-button (click)=\"search()\" [attr.aria-label]=\"'yuv.simple-search.submit'|translate\" [disabled]=\"form.invalid\">\n <mat-icon>search</mat-icon>\n </button>\n</form>\n", styles: [":host .clear-input-action{margin-inline-end:4px}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: i5.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }] }); }
112
112
  }
113
113
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SimpleSearchComponent, decorators: [{
114
114
  type: Component,
@@ -119,7 +119,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
119
119
  subscriptSizing: 'dynamic'
120
120
  }
121
121
  }
122
- ], template: "<form [formGroup]=\"form\">\n <!-- Todo: String Translations-->\n <mat-form-field appearance=\"outline\">\n <label>\n <span class=\"ymt-hide-sr\">{{'yuv.simple-search.label'|translate}}</span>\n <input matInput type=\"text\" [placeholder]=\"'yuv.simple-search.label'|translate\" formControlName=\"term\" />\n </label>\n <mat-icon matPrefix>search</mat-icon>\n <button type=\"button\"\n mat-icon-button\n matSuffix\n [disabled]=\"!!!form.value.term\"\n class=\"clear-input-action ymt-icon-button--size-s\"\n (click)=\"clear($event)\">\n @if(form.value.term){ <mat-icon>close</mat-icon>}\n </button>\n </mat-form-field>\n <button class=\"ymt-hide-sr\" mat-icon-button (click)=\"search()\" [attr.aria-label]=\"'yuv.simple-search.submit'|translate\" [disabled]=\"form.invalid\">\n <mat-icon>search</mat-icon>\n </button>\n</form>\n", styles: [":host .clear-input-action{margin-inline-end:4px}\n"] }]
122
+ ], template: "<form [formGroup]=\"form\">\n <!-- Todo: String Translations-->\n <mat-form-field appearance=\"outline\">\n <label>\n <span class=\"ymt-hide-sr\">{{'yuv.simple-search.label'|translate}}</span>\n <input matInput type=\"text\" [placeholder]=\"'yuv.simple-search.label'|translate\" formControlName=\"term\" />\n </label>\n <mat-icon matPrefix>search</mat-icon>\n <button type=\"button\"\n mat-icon-button\n matSuffix\n [disabled]=\"!!!form.value.term\"\n class=\"clear-input-action ymt-icon-button--size-s\"\n (click)=\"clear($event)\"\n [attr.aria-label]=\"'yuv.simple-search.clear'|translate\"\n [attr.title]=\"'yuv.simple-search.clear'|translate\">\n @if(form.value.term){ <mat-icon>close</mat-icon>}\n </button>\n </mat-form-field>\n <button class=\"ymt-hide-sr\" mat-icon-button (click)=\"search()\" [attr.aria-label]=\"'yuv.simple-search.submit'|translate\" [disabled]=\"form.invalid\">\n <mat-icon>search</mat-icon>\n </button>\n</form>\n", styles: [":host .clear-input-action{margin-inline-end:4px}\n"] }]
123
123
  }], ctorParameters: () => [], propDecorators: { query: [{
124
124
  type: Input
125
125
  }], querySubmit: [{
@@ -1 +1 @@
1
- {"version":3,"file":"yuuvis-client-framework-simple-search.mjs","sources":["../../../../../libs/yuuvis/client-framework/simple-search/src/lib/simple-search/simple-search.component.ts","../../../../../libs/yuuvis/client-framework/simple-search/src/lib/simple-search/simple-search.component.html","../../../../../libs/yuuvis/client-framework/simple-search/src/yuuvis-client-framework-simple-search.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { AggregateResult, BaseObjectTypeField, SearchQuery, SearchService, SystemService, TranslateModule, TranslateService, Utils } from '@yuuvis/client-core';\nimport { debounceTime, tap } from 'rxjs';\nimport { MatFormField, MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\nexport interface ObjectTypeAggregation {\n /**\n * id of a found object type\n */\n objectTypeId: string;\n /**\n * label of an object\n */\n label: string;\n /**\n * number of objects found\n */\n count: number;\n}\n\n@Component({\n selector: 'yuv-simple-search',\n standalone: true,\n imports: [ReactiveFormsModule, TranslateModule, MatIconModule, MatButtonModule, MatFormField, MatInputModule],\n templateUrl: './simple-search.component.html',\n styleUrls: ['./simple-search.component.scss'],\n providers: [\n {\n provide: MAT_FORM_FIELD_DEFAULT_OPTIONS,\n useValue: {\n subscriptSizing: 'dynamic'\n }\n }\n ]\n})\nexport class SimpleSearchComponent {\n #fb = inject(FormBuilder);\n readonly translate = inject(TranslateService);\n #searchService = inject(SearchService);\n #systemService = inject(SystemService);\n\n private _query: SearchQuery = {};\n /**\n * The search query\n */\n @Input() set query(q: SearchQuery | null) {\n this._query = structuredClone(q) || {};\n if (this._query.term) {\n this.form.patchValue({ term: this._query.term });\n // this.aggregate();\n } else this.form.reset();\n }\n get query() {\n return this._query;\n }\n\n form: FormGroup = this.#fb.group({\n term: [''],\n targets: []\n });\n\n /**\n * Emitted once the user submits the search\n */\n @Output() querySubmit = new EventEmitter<SearchQuery>();\n\n /**\n * Emitted once the user hits clear input button\n */\n @Output() clearInput = new EventEmitter<void>();\n /**\n * Emitted once selected targets change\n */\n @Output() targetSelectionChanged = new EventEmitter<(string | number)[]>();\n @Output() queryChange = new EventEmitter<SearchQuery>();\n @Output() typeAggregation = new EventEmitter<ObjectTypeAggregation[]>();\n\n constructor() {\n this.form.controls['targets'].valueChanges.pipe(takeUntilDestroyed()).subscribe((v) => {\n this._query.types = v;\n this.targetSelectionChanged.emit(v);\n });\n this.form.valueChanges\n .pipe(\n debounceTime(500),\n takeUntilDestroyed(),\n tap((v: any) => {\n this._query.term = v.term;\n this.queryChange.emit(this._query);\n if (this.typeAggregation.observed) this.aggregate();\n })\n )\n .subscribe();\n }\n\n search() {\n if (this.form.valid) {\n this._query.term = this.form.value.term;\n this.querySubmit.emit(this._query);\n }\n }\n\n aggregate(all?: boolean) {\n if (all || this._query.term) {\n this.#searchService.aggregate(structuredClone(this._query), [BaseObjectTypeField.OBJECT_TYPE_ID]).subscribe((res: AggregateResult) => {\n this._processAggregateResult(res);\n });\n }\n }\n\n clear($event: Event) {\n if (this.form.value.term) {\n this.form.controls['term'].setValue(null);\n this.clearInput.emit();\n }\n $event.stopPropagation();\n }\n\n private _processAggregateResult(res: AggregateResult) {\n if (res.aggregations && res.aggregations.length) {\n this.typeAggregation.emit(\n res.aggregations[0].entries\n .map((r) => ({ objectTypeId: r.key, label: this.#systemService.getLocalizedLabel(r.key) || r.key, count: r.count }))\n .sort(Utils.sortValues('label'))\n );\n } else {\n this.typeAggregation.emit([]);\n }\n }\n}\n","<form [formGroup]=\"form\">\n <!-- Todo: String Translations-->\n <mat-form-field appearance=\"outline\">\n <label>\n <span class=\"ymt-hide-sr\">{{'yuv.simple-search.label'|translate}}</span>\n <input matInput type=\"text\" [placeholder]=\"'yuv.simple-search.label'|translate\" formControlName=\"term\" />\n </label>\n <mat-icon matPrefix>search</mat-icon>\n <button type=\"button\"\n mat-icon-button\n matSuffix\n [disabled]=\"!!!form.value.term\"\n class=\"clear-input-action ymt-icon-button--size-s\"\n (click)=\"clear($event)\">\n @if(form.value.term){ <mat-icon>close</mat-icon>}\n </button>\n </mat-form-field>\n <button class=\"ymt-hide-sr\" mat-icon-button (click)=\"search()\" [attr.aria-label]=\"'yuv.simple-search.submit'|translate\" [disabled]=\"form.invalid\">\n <mat-icon>search</mat-icon>\n </button>\n</form>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"yuuvis-client-framework-simple-search.mjs","sources":["../../../../../libs/yuuvis/client-framework/simple-search/src/lib/simple-search/simple-search.component.ts","../../../../../libs/yuuvis/client-framework/simple-search/src/lib/simple-search/simple-search.component.html","../../../../../libs/yuuvis/client-framework/simple-search/src/yuuvis-client-framework-simple-search.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { AggregateResult, BaseObjectTypeField, SearchQuery, SearchService, SystemService, TranslateModule, TranslateService, Utils } from '@yuuvis/client-core';\nimport { debounceTime, tap } from 'rxjs';\nimport { MatFormField, MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\nexport interface ObjectTypeAggregation {\n /**\n * id of a found object type\n */\n objectTypeId: string;\n /**\n * label of an object\n */\n label: string;\n /**\n * number of objects found\n */\n count: number;\n}\n\n@Component({\n selector: 'yuv-simple-search',\n standalone: true,\n imports: [ReactiveFormsModule, TranslateModule, MatIconModule, MatButtonModule, MatFormField, MatInputModule],\n templateUrl: './simple-search.component.html',\n styleUrls: ['./simple-search.component.scss'],\n providers: [\n {\n provide: MAT_FORM_FIELD_DEFAULT_OPTIONS,\n useValue: {\n subscriptSizing: 'dynamic'\n }\n }\n ]\n})\nexport class SimpleSearchComponent {\n #fb = inject(FormBuilder);\n readonly translate = inject(TranslateService);\n #searchService = inject(SearchService);\n #systemService = inject(SystemService);\n\n private _query: SearchQuery = {};\n /**\n * The search query\n */\n @Input() set query(q: SearchQuery | null) {\n this._query = structuredClone(q) || {};\n if (this._query.term) {\n this.form.patchValue({ term: this._query.term });\n // this.aggregate();\n } else this.form.reset();\n }\n get query() {\n return this._query;\n }\n\n form: FormGroup = this.#fb.group({\n term: [''],\n targets: []\n });\n\n /**\n * Emitted once the user submits the search\n */\n @Output() querySubmit = new EventEmitter<SearchQuery>();\n\n /**\n * Emitted once the user hits clear input button\n */\n @Output() clearInput = new EventEmitter<void>();\n /**\n * Emitted once selected targets change\n */\n @Output() targetSelectionChanged = new EventEmitter<(string | number)[]>();\n @Output() queryChange = new EventEmitter<SearchQuery>();\n @Output() typeAggregation = new EventEmitter<ObjectTypeAggregation[]>();\n\n constructor() {\n this.form.controls['targets'].valueChanges.pipe(takeUntilDestroyed()).subscribe((v) => {\n this._query.types = v;\n this.targetSelectionChanged.emit(v);\n });\n this.form.valueChanges\n .pipe(\n debounceTime(500),\n takeUntilDestroyed(),\n tap((v: any) => {\n this._query.term = v.term;\n this.queryChange.emit(this._query);\n if (this.typeAggregation.observed) this.aggregate();\n })\n )\n .subscribe();\n }\n\n search() {\n if (this.form.valid) {\n this._query.term = this.form.value.term;\n this.querySubmit.emit(this._query);\n }\n }\n\n aggregate(all?: boolean) {\n if (all || this._query.term) {\n this.#searchService.aggregate(structuredClone(this._query), [BaseObjectTypeField.OBJECT_TYPE_ID]).subscribe((res: AggregateResult) => {\n this._processAggregateResult(res);\n });\n }\n }\n\n clear($event: Event) {\n if (this.form.value.term) {\n this.form.controls['term'].setValue(null);\n this.clearInput.emit();\n }\n $event.stopPropagation();\n }\n\n private _processAggregateResult(res: AggregateResult) {\n if (res.aggregations && res.aggregations.length) {\n this.typeAggregation.emit(\n res.aggregations[0].entries\n .map((r) => ({ objectTypeId: r.key, label: this.#systemService.getLocalizedLabel(r.key) || r.key, count: r.count }))\n .sort(Utils.sortValues('label'))\n );\n } else {\n this.typeAggregation.emit([]);\n }\n }\n}\n","<form [formGroup]=\"form\">\n <!-- Todo: String Translations-->\n <mat-form-field appearance=\"outline\">\n <label>\n <span class=\"ymt-hide-sr\">{{'yuv.simple-search.label'|translate}}</span>\n <input matInput type=\"text\" [placeholder]=\"'yuv.simple-search.label'|translate\" formControlName=\"term\" />\n </label>\n <mat-icon matPrefix>search</mat-icon>\n <button type=\"button\"\n mat-icon-button\n matSuffix\n [disabled]=\"!!!form.value.term\"\n class=\"clear-input-action ymt-icon-button--size-s\"\n (click)=\"clear($event)\"\n [attr.aria-label]=\"'yuv.simple-search.clear'|translate\"\n [attr.title]=\"'yuv.simple-search.clear'|translate\">\n @if(form.value.term){ <mat-icon>close</mat-icon>}\n </button>\n </mat-form-field>\n <button class=\"ymt-hide-sr\" mat-icon-button (click)=\"search()\" [attr.aria-label]=\"'yuv.simple-search.submit'|translate\" [disabled]=\"form.invalid\">\n <mat-icon>search</mat-icon>\n </button>\n</form>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -87,7 +87,12 @@ class SortComponent {
87
87
  this.sortChanged.emit(fields);
88
88
  }
89
89
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SortComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
90
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: SortComponent, isStandalone: true, selector: "yuv-sort", inputs: { sortOptions: { classPropertyName: "sortOptions", publicName: "sortOptions", isSignal: true, isRequired: false, transformFunction: null }, selectedSortOption: { classPropertyName: "selectedSortOption", publicName: "selectedSortOption", isSignal: true, isRequired: false, transformFunction: null }, storageKey: { classPropertyName: "storageKey", publicName: "storageKey", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { sortChanged: "sortChanged" }, ngImport: i0, template: `<button mat-icon-button [matMenuTriggerFor]="menu" title="{{ 'yuv.sort.tooltip' | translate }}">
90
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: SortComponent, isStandalone: true, selector: "yuv-sort", inputs: { sortOptions: { classPropertyName: "sortOptions", publicName: "sortOptions", isSignal: true, isRequired: false, transformFunction: null }, selectedSortOption: { classPropertyName: "selectedSortOption", publicName: "selectedSortOption", isSignal: true, isRequired: false, transformFunction: null }, storageKey: { classPropertyName: "storageKey", publicName: "storageKey", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { sortChanged: "sortChanged" }, ngImport: i0, template: `<button
91
+ mat-icon-button
92
+ [matMenuTriggerFor]="menu"
93
+ [attr.title]="'yuv.sort.tooltip' | translate"
94
+ [attr.aria-label]="'yuv.sort.tooltip' | translate"
95
+ >
91
96
  <mat-icon>swap_vert</mat-icon>
92
97
  </button>
93
98
 
@@ -112,7 +117,12 @@ class SortComponent {
112
117
  }
113
118
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SortComponent, decorators: [{
114
119
  type: Component,
115
- args: [{ selector: 'yuv-sort', imports: [TranslateModule, ...MATERIAL_MODULES], template: `<button mat-icon-button [matMenuTriggerFor]="menu" title="{{ 'yuv.sort.tooltip' | translate }}">
120
+ args: [{ selector: 'yuv-sort', imports: [TranslateModule, ...MATERIAL_MODULES], template: `<button
121
+ mat-icon-button
122
+ [matMenuTriggerFor]="menu"
123
+ [attr.title]="'yuv.sort.tooltip' | translate"
124
+ [attr.aria-label]="'yuv.sort.tooltip' | translate"
125
+ >
116
126
  <mat-icon>swap_vert</mat-icon>
117
127
  </button>
118
128
 
@@ -1 +1 @@
1
- {"version":3,"file":"yuuvis-client-framework-sort.mjs","sources":["../../../../../libs/yuuvis/client-framework/sort/src/lib/sort/sort.component.ts","../../../../../libs/yuuvis/client-framework/sort/src/yuuvis-client-framework-sort.ts"],"sourcesContent":["import { Component, effect, inject, input, linkedSignal, output, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDivider } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { SystemService, TranslateModule, TranslateService } from '@yuuvis/client-core';\nimport { SortMenuOption, SortType } from './models';\n\nconst MATERIAL_MODULES = [MatIconModule, MatMenuModule, MatButtonModule, MatDivider];\n\n@Component({\n selector: 'yuv-sort',\n imports: [TranslateModule, ...MATERIAL_MODULES],\n template: `<button mat-icon-button [matMenuTriggerFor]=\"menu\" title=\"{{ 'yuv.sort.tooltip' | translate }}\">\n <mat-icon>swap_vert</mat-icon>\n </button>\n\n <mat-menu #menu=\"matMenu\" class=\"sort-menu\" [ariaLabel]=\"'yuv.sort.tooltip' | translate\">\n @for (option of sortFields(); track $index) {\n <button\n mat-menu-item\n class=\"sort-menu-item\"\n [class.selected]=\"option.selected\"\n (click)=\"selectSort(option)\"\n [attr.aria-label]=\"option.label\"\n [attr.title]=\"option.label\"\n >\n <mat-icon>{{ option.selected ? 'radio_button_checked' : '' }}</mat-icon>\n <span>{{ option.label }}</span>\n </button>\n @if (sortFields().length - 3 === $index) {\n <mat-divider></mat-divider>\n }\n }\n </mat-menu>`,\n styleUrl: './sort.component.scss'\n})\nexport class SortComponent {\n readonly #systemService = inject(SystemService);\n readonly translate = inject(TranslateService);\n\n sortOptions = input<string[]>([]);\n selectedSortOption = input<{ field: string; order: SortType } | undefined>(undefined);\n storageKey = input<string>();\n sortChanged = output<{ field: string; order: SortType }>();\n\n orderOptions = signal<SortMenuOption[]>([\n { label: this.translate.instant('yuv.sort.ascending'), value: 'asc', type: 'order', selected: true },\n { label: this.translate.instant('yuv.sort.descending'), value: 'desc', type: 'order', selected: false }\n ]);\n\n #rememberSort = effect(() => {\n const storageKey = this.storageKey();\n if (storageKey) {\n const storage = localStorage.getItem(storageKey);\n if (storage) {\n try {\n const data = JSON.parse(storage);\n this.sortFields.update((fields) =>\n fields.map((field) =>\n field.type === 'sort' && field.value === data.field\n ? { ...field, selected: true }\n : field.type === 'order' && field.value === data.order\n ? { ...field, selected: true }\n : { ...field, selected: false }\n )\n );\n } catch (error) {\n console.error('Error parsing sort data from localStorage:', error);\n }\n }\n }\n });\n\n #reEvaluate = signal<Date | null>(null);\n sortFields = linkedSignal({\n source: () => ({\n sortOptions: this.sortOptions(),\n orderOptions: this.orderOptions(),\n selectedSortOption: this.selectedSortOption(),\n evaluate: this.#reEvaluate()\n }),\n computation: ({ sortOptions, orderOptions, selectedSortOption }) => {\n // Ensure selectedSortOption.field is present in sortOptions\n if (selectedSortOption && selectedSortOption.field && !sortOptions.includes(selectedSortOption.order)) {\n orderOptions = orderOptions.map((order) => (order.value === selectedSortOption.order ? { ...order, selected: true } : { ...order, selected: false }));\n }\n\n return [\n ...sortOptions.map((f, index) => ({\n label: this.#systemService.getLocalizedLabel(f) || f,\n value: f,\n type: 'sort' as const,\n selected: index === 0 // first sort option is default\n })),\n ...orderOptions\n ];\n }\n });\n\n constructor() {\n this.translate.onLangChange.pipe(takeUntilDestroyed()).subscribe({ next: () => this.#reEvaluate.set(new Date()) });\n }\n\n selectSort(option: SortMenuOption) {\n this.sortFields.update((fields) => fields.map((field) => (field.type === option.type ? { ...field, selected: field.value === option.value } : field)));\n const selectedFields = this.sortFields().filter((field) => field.selected);\n const fields = selectedFields.reduce(\n (acc, field) => {\n if (field.type === 'sort') acc.field = field.value;\n if (field.type === 'order') acc.order = field.value as SortType;\n return acc;\n },\n { field: '', order: 'asc' as SortType }\n );\n\n const storageKey = this.storageKey();\n storageKey && localStorage.setItem(storageKey, JSON.stringify(fields));\n this.sortChanged.emit(fields);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"yuuvis-client-framework-sort.mjs","sources":["../../../../../libs/yuuvis/client-framework/sort/src/lib/sort/sort.component.ts","../../../../../libs/yuuvis/client-framework/sort/src/yuuvis-client-framework-sort.ts"],"sourcesContent":["import { Component, effect, inject, input, linkedSignal, output, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDivider } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { SystemService, TranslateModule, TranslateService } from '@yuuvis/client-core';\nimport { SortMenuOption, SortType } from './models';\n\nconst MATERIAL_MODULES = [MatIconModule, MatMenuModule, MatButtonModule, MatDivider];\n\n@Component({\n selector: 'yuv-sort',\n imports: [TranslateModule, ...MATERIAL_MODULES],\n template: `<button\n mat-icon-button\n [matMenuTriggerFor]=\"menu\"\n [attr.title]=\"'yuv.sort.tooltip' | translate\"\n [attr.aria-label]=\"'yuv.sort.tooltip' | translate\"\n >\n <mat-icon>swap_vert</mat-icon>\n </button>\n\n <mat-menu #menu=\"matMenu\" class=\"sort-menu\" [ariaLabel]=\"'yuv.sort.tooltip' | translate\">\n @for (option of sortFields(); track $index) {\n <button\n mat-menu-item\n class=\"sort-menu-item\"\n [class.selected]=\"option.selected\"\n (click)=\"selectSort(option)\"\n [attr.aria-label]=\"option.label\"\n [attr.title]=\"option.label\"\n >\n <mat-icon>{{ option.selected ? 'radio_button_checked' : '' }}</mat-icon>\n <span>{{ option.label }}</span>\n </button>\n @if (sortFields().length - 3 === $index) {\n <mat-divider></mat-divider>\n }\n }\n </mat-menu>`,\n styleUrl: './sort.component.scss'\n})\nexport class SortComponent {\n readonly #systemService = inject(SystemService);\n readonly translate = inject(TranslateService);\n\n sortOptions = input<string[]>([]);\n selectedSortOption = input<{ field: string; order: SortType } | undefined>(undefined);\n storageKey = input<string>();\n sortChanged = output<{ field: string; order: SortType }>();\n\n orderOptions = signal<SortMenuOption[]>([\n { label: this.translate.instant('yuv.sort.ascending'), value: 'asc', type: 'order', selected: true },\n { label: this.translate.instant('yuv.sort.descending'), value: 'desc', type: 'order', selected: false }\n ]);\n\n #rememberSort = effect(() => {\n const storageKey = this.storageKey();\n if (storageKey) {\n const storage = localStorage.getItem(storageKey);\n if (storage) {\n try {\n const data = JSON.parse(storage);\n this.sortFields.update((fields) =>\n fields.map((field) =>\n field.type === 'sort' && field.value === data.field\n ? { ...field, selected: true }\n : field.type === 'order' && field.value === data.order\n ? { ...field, selected: true }\n : { ...field, selected: false }\n )\n );\n } catch (error) {\n console.error('Error parsing sort data from localStorage:', error);\n }\n }\n }\n });\n\n #reEvaluate = signal<Date | null>(null);\n sortFields = linkedSignal({\n source: () => ({\n sortOptions: this.sortOptions(),\n orderOptions: this.orderOptions(),\n selectedSortOption: this.selectedSortOption(),\n evaluate: this.#reEvaluate()\n }),\n computation: ({ sortOptions, orderOptions, selectedSortOption }) => {\n // Ensure selectedSortOption.field is present in sortOptions\n if (selectedSortOption && selectedSortOption.field && !sortOptions.includes(selectedSortOption.order)) {\n orderOptions = orderOptions.map((order) => (order.value === selectedSortOption.order ? { ...order, selected: true } : { ...order, selected: false }));\n }\n\n return [\n ...sortOptions.map((f, index) => ({\n label: this.#systemService.getLocalizedLabel(f) || f,\n value: f,\n type: 'sort' as const,\n selected: index === 0 // first sort option is default\n })),\n ...orderOptions\n ];\n }\n });\n\n constructor() {\n this.translate.onLangChange.pipe(takeUntilDestroyed()).subscribe({ next: () => this.#reEvaluate.set(new Date()) });\n }\n\n selectSort(option: SortMenuOption) {\n this.sortFields.update((fields) => fields.map((field) => (field.type === option.type ? { ...field, selected: field.value === option.value } : field)));\n const selectedFields = this.sortFields().filter((field) => field.selected);\n const fields = selectedFields.reduce(\n (acc, field) => {\n if (field.type === 'sort') acc.field = field.value;\n if (field.type === 'order') acc.order = field.value as SortType;\n return acc;\n },\n { field: '', order: 'asc' as SortType }\n );\n\n const storageKey = this.storageKey();\n storageKey && localStorage.setItem(storageKey, JSON.stringify(fields));\n this.sortChanged.emit(fields);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, TemplateRef, input, signal, effect, untracked, Directive, contentChildren, viewChild, output, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
2
+ import { inject, TemplateRef, input, effect, linkedSignal, Directive, contentChildren, viewChild, computed, output, signal, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
3
3
  import * as i1 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import { LayoutSettingsService } from '@yuuvis/client-framework/common';
@@ -14,29 +14,26 @@ class SplitAreaDirective {
14
14
  this.maxSize = input();
15
15
  this.panelClass = input();
16
16
  this.visible = input(true);
17
- this.areaProperties = signal({});
18
- this.#propertiesEffect = effect(() => {
19
- const size = this.size();
20
- const visible = this.visible();
21
- untracked(() => {
22
- this.areaProperties.set({ size, visible });
23
- });
17
+ this.lockSize = input(false);
18
+ this.efff = effect(() => {
19
+ console.log('SIZE: ', this.size());
20
+ console.log('VISIBLE: ', this.visible());
21
+ console.log('LOCKSIZE: ', this.lockSize());
22
+ });
23
+ this.areaProperties = linkedSignal({
24
+ source: () => ({ size: this.size(), visible: this.visible(), lockSize: this.lockSize() }),
25
+ computation: ({ size, visible, lockSize }) => ({ size, visible, lockSize })
24
26
  });
25
27
  }
26
- // #visibleEffect = effect(() => {
27
- // // visibility of an area is part of the containers layout settings, so we need to tell
28
- // // the parent container that something changed
29
- // this.#parent._updateAreaVisiblility();
30
- // });
31
28
  updateSettings(s) {
32
29
  this.areaProperties.set({
33
30
  size: s.size || this.size(),
34
- visible: s.visible || this.visible()
31
+ visible: s.visible !== undefined ? !!s.visible : this.visible(),
32
+ lockSize: s.lockSize || this.lockSize()
35
33
  });
36
34
  }
37
- #propertiesEffect;
38
35
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SplitAreaDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
39
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.14", type: SplitAreaDirective, isStandalone: true, selector: "[yuvSplitArea]", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, minSize: { classPropertyName: "minSize", publicName: "minSize", isSignal: true, isRequired: false, transformFunction: null }, maxSize: { classPropertyName: "maxSize", publicName: "maxSize", isSignal: true, isRequired: false, transformFunction: null }, panelClass: { classPropertyName: "panelClass", publicName: "panelClass", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
36
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.14", type: SplitAreaDirective, isStandalone: true, selector: "[yuvSplitArea]", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, minSize: { classPropertyName: "minSize", publicName: "minSize", isSignal: true, isRequired: false, transformFunction: null }, maxSize: { classPropertyName: "maxSize", publicName: "maxSize", isSignal: true, isRequired: false, transformFunction: null }, panelClass: { classPropertyName: "panelClass", publicName: "panelClass", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, lockSize: { classPropertyName: "lockSize", publicName: "lockSize", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
40
37
  }
41
38
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SplitAreaDirective, decorators: [{
42
39
  type: Directive,
@@ -69,6 +66,8 @@ class SplitViewComponent {
69
66
  * The split views direction. Could be 'horizontal' or 'vertical'. Defaults to 'horizontal'.
70
67
  */
71
68
  this.direction = input('horizontal');
69
+ this.isVertical = computed(() => this.direction() === 'vertical');
70
+ this.isHorizontal = computed(() => this.direction() === 'horizontal');
72
71
  /**
73
72
  * Size of the gutter in Pixel (defaults to 16).
74
73
  */
@@ -77,11 +76,8 @@ class SplitViewComponent {
77
76
  /**
78
77
  * Disable the dragging feature (remove cursor/image on gutters).
79
78
  */
80
- this.disabled = input(false);
81
- this.disabledEffect = effect(() => {
82
- this._disabled = this.disabled();
83
- });
84
- this._disabled = false;
79
+ this.disabledInput = input(false, { alias: 'disabled' });
80
+ this.disabled = linkedSignal(() => this.disabledInput());
85
81
  /**
86
82
  * Layout settings are the state of the split view that could be persisted.
87
83
  * Setting a `layoutSettingsID` will save the current state (split area sizes etc.)
@@ -141,7 +137,7 @@ class SplitViewComponent {
141
137
  applyLayoutSettings(settings) {
142
138
  if (!this.#isLayoutSettingsObject(settings))
143
139
  return;
144
- this._disabled = settings.disabled;
140
+ this.disabled.set(!!settings.disabled);
145
141
  settings.areas.forEach((a, index) => {
146
142
  this.splitAreas()[index].updateSettings(a);
147
143
  });
@@ -157,14 +153,14 @@ class SplitViewComponent {
157
153
  }
158
154
  }
159
155
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SplitViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
160
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: SplitViewComponent, isStandalone: true, selector: "yuv-split-view", inputs: { direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, gutterSize: { classPropertyName: "gutterSize", publicName: "gutterSize", isSignal: true, isRequired: false, transformFunction: null }, restrictMove: { classPropertyName: "restrictMove", publicName: "restrictMove", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, layoutSettingsID: { classPropertyName: "layoutSettingsID", publicName: "layoutSettingsID", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { layoutSettingsChange: "layoutSettingsChange", dragStart: "dragStart", dragEnd: "dragEnd", gutterClick: "gutterClick", gutterDblClick: "gutterDblClick" }, host: { attributes: { "attr.data-gutter-size": "gutterSize()", "class.dragging": "dragging()" } }, queries: [{ propertyName: "splitAreas", predicate: SplitAreaDirective, isSignal: true }], viewQueries: [{ propertyName: "asSplitComponent", first: true, predicate: SplitComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<as-split\n [direction]=\"direction()\"\n [unit]=\"'percent'\"\n [gutterSize]=\"gutterSize()\"\n [gutterStep]=\"1\"\n [restrictMove]=\"restrictMove()\"\n [useTransition]=\"false\"\n [disabled]=\"disabled()\"\n (dragEnd)=\"onDragEnd($event)\"\n (dragStart)=\"onDragStart($event)\"\n (gutterDblClick)=\"gutterDblClick.emit($event)\"\n (gutterClick)=\"gutterClick.emit($event)\"\n>\n @if (gutterSize() === 1) {\n <div *asSplitGutter=\"let isDragged = isDragged\" class=\"shade-gutter\" [class.dragged]=\"isDragged\">\n <div class=\"shade-gutter-icon\" [class.vertical]=\"direction() === 'vertical'\" [class.horizontal]=\"direction() === 'horizontal'\"></div>\n </div>\n } @else {\n <div *asSplitGutter class=\"split-gutter\">\n <div asSplitGutterDragHandle class=\"split-gutter-handle\" [class.vertical]=\"direction() === 'vertical'\" [class.horizontal]=\"direction() === 'horizontal'\"></div>\n </div>\n }\n\n @for (a of splitAreas(); track a; let i = $index) {\n <as-split-area\n class=\"yuv-split-area {{ a.panelClass() }}\"\n [maxSize]=\"a.maxSize()\"\n [minSize]=\"a.minSize()\"\n [size]=\"a.areaProperties().size\"\n [visible]=\"a.areaProperties().visible\"\n ><ng-template [ngTemplateOutlet]=\"a.template\"></ng-template\n ></as-split-area>\n }\n</as-split>\n", styles: [":host{--_split-gutter-background-color: var(--split-gutter-background-color, transparent);--_split-gutter-handle-border-radius: var(--split-gutter-handle-border-radius, 2px);--_split-gutter-handle-width: var(--split-gutter-handle-width, 2px);--_split-gutter-handle-height: var(--split-gutter-handle-height, var(--ymt-spacing-3xl));--_split-gutter-shade-background: var(--split-gutter-shade-background, currentColor);--_split-gutter-shade-hover-background: var(--split-gutter-shade-hover-background, currentColor);--_split-gutter-shade-size: var(--split-gutter-shade-size, 16px);overflow:hidden}:host as-split{--as-gutter-background-color: var(--_split-gutter-background-color)}:host .split-gutter{width:100%;height:100%}:host .split-gutter .split-gutter-handle{width:100%;height:100%;display:flex;align-items:center;justify-content:center}:host .split-gutter .split-gutter-handle:after{content:\"\";transition:background-color .3s ease-in-out;background-color:rgb(from var(--ymt-text-color) r g b/.2);display:block;width:var(--_split-gutter-handle-width);height:var(--_split-gutter-handle-height);border-radius:var(--_split-gutter-handle-border-radius)}:host .split-gutter .split-gutter-handle.vertical:after{width:var(--_split-gutter-handle-height);height:var(--_split-gutter-handle-width)}:host .split-gutter:hover .split-gutter-handle:after{background-color:rgb(from var(--ymt-text-color) r g b/.9)}:host .shade-gutter{width:100%;height:100%;background-color:var(--_split-gutter-background-color);position:relative}:host .shade-gutter-icon{height:100%;width:100%;background-color:var(--_split-gutter-shade-hover-background);transition:opacity .3s;opacity:0;position:absolute}.dragged :host .shade-gutter-icon,:host .shade-gutter-icon:hover{opacity:.1}:host .shade-gutter-icon.horizontal{width:calc(var(--_split-gutter-shade-size) + 1px);inset-inline-start:calc(var(--_split-gutter-shade-size) / -2);inset-inline-end:var(--_split-gutter-shade-size)}:host .shade-gutter-icon.vertical{height:calc(var(--_split-gutter-shade-size) + 1px);inset-block-start:calc(var(--_split-gutter-shade-size) / -2);inset-block-end:var(--_split-gutter-shade-size)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: AngularSplitModule }, { kind: "component", type: i2.SplitComponent, selector: "as-split", inputs: ["gutterSize", "gutterStep", "disabled", "gutterClickDeltaPx", "direction", "dir", "unit", "gutterAriaLabel", "restrictMove", "useTransition", "gutterDblClickDuration"], outputs: ["gutterClick", "gutterDblClick", "dragStart", "dragEnd", "transitionEnd"], exportAs: ["asSplit"] }, { kind: "component", type: i2.SplitAreaComponent, selector: "as-split-area", inputs: ["size", "minSize", "maxSize", "lockSize", "visible"], exportAs: ["asSplitArea"] }, { kind: "directive", type: i2.SplitGutterDirective, selector: "[asSplitGutter]" }, { kind: "directive", type: i2.SplitGutterDragHandleDirective, selector: "[asSplitGutterDragHandle]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
156
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: SplitViewComponent, isStandalone: true, selector: "yuv-split-view", inputs: { direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, gutterSize: { classPropertyName: "gutterSize", publicName: "gutterSize", isSignal: true, isRequired: false, transformFunction: null }, restrictMove: { classPropertyName: "restrictMove", publicName: "restrictMove", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, layoutSettingsID: { classPropertyName: "layoutSettingsID", publicName: "layoutSettingsID", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { layoutSettingsChange: "layoutSettingsChange", dragStart: "dragStart", dragEnd: "dragEnd", gutterClick: "gutterClick", gutterDblClick: "gutterDblClick" }, host: { attributes: { "attr.data-gutter-size": "gutterSize()", "class.dragging": "dragging()" } }, queries: [{ propertyName: "splitAreas", predicate: SplitAreaDirective, isSignal: true }], viewQueries: [{ propertyName: "asSplitComponent", first: true, predicate: SplitComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<as-split\n [direction]=\"direction()\"\n [unit]=\"'percent'\"\n [gutterSize]=\"gutterSize()\"\n [gutterStep]=\"1\"\n [restrictMove]=\"restrictMove()\"\n [useTransition]=\"false\"\n [disabled]=\"disabled()\"\n (dragEnd)=\"onDragEnd($event)\"\n (dragStart)=\"onDragStart($event)\"\n (gutterDblClick)=\"gutterDblClick.emit($event)\"\n (gutterClick)=\"gutterClick.emit($event)\"\n>\n @if (gutterSize() === 1) {\n <div *asSplitGutter=\"let isDragged = isDragged\" class=\"shade-gutter\" [class.dragged]=\"isDragged\">\n <div class=\"shade-gutter-icon\" [class.vertical]=\"isVertical()\" [class.horizontal]=\"isHorizontal()\"></div>\n </div>\n } @else {\n <div *asSplitGutter class=\"split-gutter\">\n <div asSplitGutterDragHandle class=\"split-gutter-handle\" [class.vertical]=\"isVertical()\" [class.horizontal]=\"isHorizontal()\"></div>\n </div>\n }\n\n @for (a of splitAreas(); track a; let i = $index) {\n <as-split-area\n class=\"yuv-split-area {{ a.panelClass() }}\"\n [maxSize]=\"a.maxSize()\"\n [minSize]=\"a.minSize()\"\n [lockSize]=\"a.areaProperties().lockSize\"\n [size]=\"a.areaProperties().size\"\n [visible]=\"a.areaProperties().visible\"\n ><ng-template [ngTemplateOutlet]=\"a.template\"></ng-template\n ></as-split-area>\n }\n</as-split>\n", styles: [":host{--_split-gutter-background-color: var(--split-gutter-background-color, transparent);--_split-gutter-handle-border-radius: var(--split-gutter-handle-border-radius, 2px);--_split-gutter-handle-width: var(--split-gutter-handle-width, 2px);--_split-gutter-handle-height: var(--split-gutter-handle-height, var(--ymt-spacing-3xl));--_split-gutter-shade-background: var(--split-gutter-shade-background, currentColor);--_split-gutter-shade-hover-background: var(--split-gutter-shade-hover-background, currentColor);--_split-gutter-shade-size: var(--split-gutter-shade-size, 16px);overflow:hidden}:host as-split{--as-gutter-background-color: var(--_split-gutter-background-color)}:host .split-gutter{width:100%;height:100%}:host .split-gutter .split-gutter-handle{width:100%;height:100%;display:flex;align-items:center;justify-content:center}:host .split-gutter .split-gutter-handle:after{content:\"\";transition:background-color .3s ease-in-out;background-color:rgb(from var(--ymt-text-color) r g b/.2);display:block;width:var(--_split-gutter-handle-width);height:var(--_split-gutter-handle-height);border-radius:var(--_split-gutter-handle-border-radius)}:host .split-gutter .split-gutter-handle.vertical:after{width:var(--_split-gutter-handle-height);height:var(--_split-gutter-handle-width)}:host .split-gutter:hover .split-gutter-handle:after{background-color:rgb(from var(--ymt-text-color) r g b/.9)}:host .shade-gutter{width:100%;height:100%;background-color:var(--_split-gutter-background-color);position:relative}:host .shade-gutter-icon{height:100%;width:100%;background-color:var(--_split-gutter-shade-hover-background);transition:opacity .3s;opacity:0;position:absolute}.dragged :host .shade-gutter-icon,:host .shade-gutter-icon:hover{opacity:.1}:host .shade-gutter-icon.horizontal{width:calc(var(--_split-gutter-shade-size) + 1px);inset-inline-start:calc(var(--_split-gutter-shade-size) / -2);inset-inline-end:var(--_split-gutter-shade-size)}:host .shade-gutter-icon.vertical{height:calc(var(--_split-gutter-shade-size) + 1px);inset-block-start:calc(var(--_split-gutter-shade-size) / -2);inset-block-end:var(--_split-gutter-shade-size)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: AngularSplitModule }, { kind: "component", type: i2.SplitComponent, selector: "as-split", inputs: ["gutterSize", "gutterStep", "disabled", "gutterClickDeltaPx", "direction", "dir", "unit", "gutterAriaLabel", "restrictMove", "useTransition", "gutterDblClickDuration"], outputs: ["gutterClick", "gutterDblClick", "dragStart", "dragEnd", "transitionEnd"], exportAs: ["asSplit"] }, { kind: "component", type: i2.SplitAreaComponent, selector: "as-split-area", inputs: ["size", "minSize", "maxSize", "lockSize", "visible"], exportAs: ["asSplitArea"] }, { kind: "directive", type: i2.SplitGutterDirective, selector: "[asSplitGutter]" }, { kind: "directive", type: i2.SplitGutterDragHandleDirective, selector: "[asSplitGutterDragHandle]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
161
157
  }
162
158
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SplitViewComponent, decorators: [{
163
159
  type: Component,
164
160
  args: [{ selector: 'yuv-split-view', imports: [CommonModule, AngularSplitModule], changeDetection: ChangeDetectionStrategy.OnPush, host: {
165
161
  'attr.data-gutter-size': 'gutterSize()',
166
162
  'class.dragging': 'dragging()'
167
- }, template: "<as-split\n [direction]=\"direction()\"\n [unit]=\"'percent'\"\n [gutterSize]=\"gutterSize()\"\n [gutterStep]=\"1\"\n [restrictMove]=\"restrictMove()\"\n [useTransition]=\"false\"\n [disabled]=\"disabled()\"\n (dragEnd)=\"onDragEnd($event)\"\n (dragStart)=\"onDragStart($event)\"\n (gutterDblClick)=\"gutterDblClick.emit($event)\"\n (gutterClick)=\"gutterClick.emit($event)\"\n>\n @if (gutterSize() === 1) {\n <div *asSplitGutter=\"let isDragged = isDragged\" class=\"shade-gutter\" [class.dragged]=\"isDragged\">\n <div class=\"shade-gutter-icon\" [class.vertical]=\"direction() === 'vertical'\" [class.horizontal]=\"direction() === 'horizontal'\"></div>\n </div>\n } @else {\n <div *asSplitGutter class=\"split-gutter\">\n <div asSplitGutterDragHandle class=\"split-gutter-handle\" [class.vertical]=\"direction() === 'vertical'\" [class.horizontal]=\"direction() === 'horizontal'\"></div>\n </div>\n }\n\n @for (a of splitAreas(); track a; let i = $index) {\n <as-split-area\n class=\"yuv-split-area {{ a.panelClass() }}\"\n [maxSize]=\"a.maxSize()\"\n [minSize]=\"a.minSize()\"\n [size]=\"a.areaProperties().size\"\n [visible]=\"a.areaProperties().visible\"\n ><ng-template [ngTemplateOutlet]=\"a.template\"></ng-template\n ></as-split-area>\n }\n</as-split>\n", styles: [":host{--_split-gutter-background-color: var(--split-gutter-background-color, transparent);--_split-gutter-handle-border-radius: var(--split-gutter-handle-border-radius, 2px);--_split-gutter-handle-width: var(--split-gutter-handle-width, 2px);--_split-gutter-handle-height: var(--split-gutter-handle-height, var(--ymt-spacing-3xl));--_split-gutter-shade-background: var(--split-gutter-shade-background, currentColor);--_split-gutter-shade-hover-background: var(--split-gutter-shade-hover-background, currentColor);--_split-gutter-shade-size: var(--split-gutter-shade-size, 16px);overflow:hidden}:host as-split{--as-gutter-background-color: var(--_split-gutter-background-color)}:host .split-gutter{width:100%;height:100%}:host .split-gutter .split-gutter-handle{width:100%;height:100%;display:flex;align-items:center;justify-content:center}:host .split-gutter .split-gutter-handle:after{content:\"\";transition:background-color .3s ease-in-out;background-color:rgb(from var(--ymt-text-color) r g b/.2);display:block;width:var(--_split-gutter-handle-width);height:var(--_split-gutter-handle-height);border-radius:var(--_split-gutter-handle-border-radius)}:host .split-gutter .split-gutter-handle.vertical:after{width:var(--_split-gutter-handle-height);height:var(--_split-gutter-handle-width)}:host .split-gutter:hover .split-gutter-handle:after{background-color:rgb(from var(--ymt-text-color) r g b/.9)}:host .shade-gutter{width:100%;height:100%;background-color:var(--_split-gutter-background-color);position:relative}:host .shade-gutter-icon{height:100%;width:100%;background-color:var(--_split-gutter-shade-hover-background);transition:opacity .3s;opacity:0;position:absolute}.dragged :host .shade-gutter-icon,:host .shade-gutter-icon:hover{opacity:.1}:host .shade-gutter-icon.horizontal{width:calc(var(--_split-gutter-shade-size) + 1px);inset-inline-start:calc(var(--_split-gutter-shade-size) / -2);inset-inline-end:var(--_split-gutter-shade-size)}:host .shade-gutter-icon.vertical{height:calc(var(--_split-gutter-shade-size) + 1px);inset-block-start:calc(var(--_split-gutter-shade-size) / -2);inset-block-end:var(--_split-gutter-shade-size)}\n"] }]
163
+ }, template: "<as-split\n [direction]=\"direction()\"\n [unit]=\"'percent'\"\n [gutterSize]=\"gutterSize()\"\n [gutterStep]=\"1\"\n [restrictMove]=\"restrictMove()\"\n [useTransition]=\"false\"\n [disabled]=\"disabled()\"\n (dragEnd)=\"onDragEnd($event)\"\n (dragStart)=\"onDragStart($event)\"\n (gutterDblClick)=\"gutterDblClick.emit($event)\"\n (gutterClick)=\"gutterClick.emit($event)\"\n>\n @if (gutterSize() === 1) {\n <div *asSplitGutter=\"let isDragged = isDragged\" class=\"shade-gutter\" [class.dragged]=\"isDragged\">\n <div class=\"shade-gutter-icon\" [class.vertical]=\"isVertical()\" [class.horizontal]=\"isHorizontal()\"></div>\n </div>\n } @else {\n <div *asSplitGutter class=\"split-gutter\">\n <div asSplitGutterDragHandle class=\"split-gutter-handle\" [class.vertical]=\"isVertical()\" [class.horizontal]=\"isHorizontal()\"></div>\n </div>\n }\n\n @for (a of splitAreas(); track a; let i = $index) {\n <as-split-area\n class=\"yuv-split-area {{ a.panelClass() }}\"\n [maxSize]=\"a.maxSize()\"\n [minSize]=\"a.minSize()\"\n [lockSize]=\"a.areaProperties().lockSize\"\n [size]=\"a.areaProperties().size\"\n [visible]=\"a.areaProperties().visible\"\n ><ng-template [ngTemplateOutlet]=\"a.template\"></ng-template\n ></as-split-area>\n }\n</as-split>\n", styles: [":host{--_split-gutter-background-color: var(--split-gutter-background-color, transparent);--_split-gutter-handle-border-radius: var(--split-gutter-handle-border-radius, 2px);--_split-gutter-handle-width: var(--split-gutter-handle-width, 2px);--_split-gutter-handle-height: var(--split-gutter-handle-height, var(--ymt-spacing-3xl));--_split-gutter-shade-background: var(--split-gutter-shade-background, currentColor);--_split-gutter-shade-hover-background: var(--split-gutter-shade-hover-background, currentColor);--_split-gutter-shade-size: var(--split-gutter-shade-size, 16px);overflow:hidden}:host as-split{--as-gutter-background-color: var(--_split-gutter-background-color)}:host .split-gutter{width:100%;height:100%}:host .split-gutter .split-gutter-handle{width:100%;height:100%;display:flex;align-items:center;justify-content:center}:host .split-gutter .split-gutter-handle:after{content:\"\";transition:background-color .3s ease-in-out;background-color:rgb(from var(--ymt-text-color) r g b/.2);display:block;width:var(--_split-gutter-handle-width);height:var(--_split-gutter-handle-height);border-radius:var(--_split-gutter-handle-border-radius)}:host .split-gutter .split-gutter-handle.vertical:after{width:var(--_split-gutter-handle-height);height:var(--_split-gutter-handle-width)}:host .split-gutter:hover .split-gutter-handle:after{background-color:rgb(from var(--ymt-text-color) r g b/.9)}:host .shade-gutter{width:100%;height:100%;background-color:var(--_split-gutter-background-color);position:relative}:host .shade-gutter-icon{height:100%;width:100%;background-color:var(--_split-gutter-shade-hover-background);transition:opacity .3s;opacity:0;position:absolute}.dragged :host .shade-gutter-icon,:host .shade-gutter-icon:hover{opacity:.1}:host .shade-gutter-icon.horizontal{width:calc(var(--_split-gutter-shade-size) + 1px);inset-inline-start:calc(var(--_split-gutter-shade-size) / -2);inset-inline-end:var(--_split-gutter-shade-size)}:host .shade-gutter-icon.vertical{height:calc(var(--_split-gutter-shade-size) + 1px);inset-block-start:calc(var(--_split-gutter-shade-size) / -2);inset-block-end:var(--_split-gutter-shade-size)}\n"] }]
168
164
  }] });
169
165
 
170
166
  class YuvSplitViewModule {