@yuuvis/client-framework 2.14.0 → 2.15.0
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.
- package/common/lib/common.module.d.ts +4 -2
- package/common/lib/components/index.d.ts +1 -0
- package/common/lib/components/scroll-buttons/scroll-buttons.component.d.ts +25 -0
- package/common/lib/directives/index.d.ts +1 -0
- package/common/lib/directives/scroll-buttons.directive.d.ts +20 -0
- package/fesm2022/yuuvis-client-framework-autocomplete.mjs +13 -4
- package/fesm2022/yuuvis-client-framework-autocomplete.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-common.mjs +249 -7
- package/fesm2022/yuuvis-client-framework-common.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-forms.mjs +4 -4
- package/fesm2022/yuuvis-client-framework-forms.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-preview.mjs +1 -1
- package/fesm2022/yuuvis-client-framework-object-preview.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-relationship.mjs +1 -1
- package/fesm2022/yuuvis-client-framework-object-relationship.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-popout.mjs +9 -3
- package/fesm2022/yuuvis-client-framework-popout.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-split-view.mjs +107 -8
- package/fesm2022/yuuvis-client-framework-split-view.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-widget-grid.mjs +3 -0
- package/fesm2022/yuuvis-client-framework-widget-grid.mjs.map +1 -1
- package/lib/assets/i18n/de.json +2 -0
- package/lib/assets/i18n/en.json +2 -0
- package/package.json +5 -5
- package/popout/index.d.ts +1 -0
- package/popout/lib/fullscreen.directive.d.ts +4 -0
- package/popout/lib/popout.module.d.ts +2 -1
- package/split-view/lib/split-view.component.d.ts +91 -9
- package/widget-grid/lib/widget-grid-workspaces/widget-grid-workspaces.interface.d.ts +1 -1
- package/widget-grid/lib/widget-grid.component.d.ts +1 -1
- package/widget-grid/lib/widget-grid.interface.d.ts +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yuuvis-client-framework-popout.mjs","sources":["../../../../../libs/yuuvis/client-framework/popout/src/lib/popout.interface.ts","../../../../../libs/yuuvis/client-framework/popout/src/lib/popout.component.ts","../../../../../libs/yuuvis/client-framework/popout/src/lib/popout.component.html","../../../../../libs/yuuvis/client-framework/popout/src/lib/popout-trigger/popout-trigger.component.ts","../../../../../libs/yuuvis/client-framework/popout/src/lib/popout-trigger/popout-trigger.component.html","../../../../../libs/yuuvis/client-framework/popout/src/lib/popout.module.ts","../../../../../libs/yuuvis/client-framework/popout/src/yuuvis-client-framework-popout.ts"],"sourcesContent":["export enum PopoutTriggerPosition {\n TOP_LEFT = 'tl',\n TOP_RIGHT = 'tr',\n BOTTOM_LEFT = 'bl',\n BOTTOM_RIGHT = 'br',\n NONE = 'none'\n}\n\n\nexport interface PopoutTriggerConfig {\n popoutIcon?: string;\n popinIcon?: string;\n popoutTooltip?: string;\n popinTooltip?: string;\n}\n\nexport interface PopoutWindowConfig {\n // title of the window opened by popout\n title?: string;\n position?: {\n // 'top' position in px\n blockStart?: number;\n // 'left' position in px\n inlineStart?: number;\n };\n // set the size of the poped out window\n // If no size is set the window will resize to\n // the size of the rendered content (if measurable)\n size?: {\n // width in px\n width?: number;\n // height in px\n height?: number;\n };\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n signal,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostListener,\n inject,\n input,\n OnDestroy,\n output,\n Renderer2,\n viewChild,\n computed\n} from '@angular/core';\nimport { PopoutTriggerPosition, PopoutWindowConfig } from './popout.interface';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { YmtIconButtonDirective } from '@yuuvis/material';\n\n// based upon: https://github.com/GIimmer/angular-opinionated-popout-window\n\n/**\n * Component that enables the wrapped content to be 'popped out' as new window.\n * It will place a button (icon) to trigger popout on top of the wrapped content. You\n * can place this trigger element setting the 'triggerPosition' input.\n *\n * Providing a 'popoutWindowConfig' will also enable you to influence the appearance of\n * the spawned window.\n *\n */\n@Component({\n selector: 'yuv-popout',\n exportAs: 'yuvPopout',\n imports: [CommonModule, MatButtonModule, MatIconModule, YmtIconButtonDirective, MatTooltipModule],\n templateUrl: './popout.component.html',\n styleUrl: './popout.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n // \"[attr.data-pos]\": \"triggerPosition()\"\n }\n})\nexport class PopoutComponent implements OnDestroy {\n #renderer2 = inject(Renderer2);\n #cd = inject(ChangeDetectorRef);\n\n @HostListener('window:beforeunload') beforeunloadHandler(): void {\n this._close();\n }\n\n innerWrapper = viewChild.required<ElementRef>('innerWrapper');\n popoutWrapper = viewChild.required<ElementRef>('popoutWrapper');\n\n /**\n * Where the popout trigger should be located on the component\n */\n triggerPosition = input<PopoutTriggerPosition>(PopoutTriggerPosition.TOP_RIGHT);\n /**\n * Icon to be redered inside the trigger\n */\n triggerIcon = input<string>('open_in_new');\n /**\n * Tooltip text for the trigger button\n */\n triggerTooltip = input<string>();\n\n /**\n * configuration of the popped out window\n */\n popoutWindowConfig = input<PopoutWindowConfig>();\n /**\n * Whether or not to disable the undock feature\n */\n disabled = input<boolean>();\n\n /**\n * Emitted when the child component is popped out\n */\n popOut = output<boolean>();\n /**\n * Emitted when the child component is popped in again\n */\n popIn = output<boolean>();\n\n #popoutWindow = signal<Window | null>(null);\n #observer?: MutationObserver;\n\n poppedOut = computed(() => !!this.#popoutWindow());\n\n get isPoppedOut() {\n return this.poppedOut();\n }\n\n pop(e: MouseEvent) {\n if (this.isPoppedOut) this._popIn();\n else this._popOut(e);\n }\n\n private _popIn(): void {\n this.#renderer2.appendChild(this.popoutWrapper().nativeElement, this.innerWrapper().nativeElement);\n this._close();\n this.#cd.detectChanges();\n }\n\n private _popOut(event?: MouseEvent): void {\n if (!this.#popoutWindow()) {\n this.#popoutWindow.set(this._createPopoutWindow(event));\n\n const pw = this.#popoutWindow();\n if (!pw) {\n // The window wasn't allowed to open\n // This is likely caused by built-in popup blockers.\n alert('Could not open new window. This is likely caused by built-in popup blockers.');\n return;\n }\n this._cloneStylesToPopoutWindow();\n this._observeFutureStyleChanges();\n\n this.#renderer2.appendChild(pw.document.body, this.innerWrapper().nativeElement);\n pw.addEventListener('unload', () => this._popIn());\n this.#cd.detectChanges();\n this.popOut.emit(true);\n } else {\n this.#popoutWindow()!.focus();\n }\n }\n\n private _createPopoutWindow(mouseEvent?: MouseEvent): Window | null {\n const elmRect = this.innerWrapper().nativeElement.getBoundingClientRect();\n const [winLeft, winTop] = this._getWindowPositioning(elmRect, mouseEvent);\n const pwc = this.popoutWindowConfig();\n const winWidth = pwc?.size?.width ? pwc.size.width : elmRect.width;\n const winHeight = pwc?.size?.height ? pwc.size.height : elmRect.height + 1;\n\n const win = window.open(\n '',\n `popoutWindow${Date.now()}`,\n ` popup,\n width=${winWidth},\n height=${winHeight},\n left=${winLeft},\n top=${winTop}`\n );\n if (win) {\n win.document.title = this.popoutWindowConfig()?.title || window.document.title;\n win.document.body.style.margin = '0';\n }\n return win;\n }\n\n private _getWindowPositioning(elmRect: DOMRect, mouseEvent?: MouseEvent) {\n let winTop, winLeft;\n\n const pwc = this.popoutWindowConfig()?.position;\n if (pwc) {\n winTop = pwc.blockStart || winTop;\n winLeft = pwc.inlineStart || winLeft;\n } else {\n const navHeight = window.outerHeight - window.innerHeight;\n const navWidth = (window.outerWidth - window.innerWidth) / 2;\n\n winTop = window.screenY + navHeight + elmRect.top - 60;\n winLeft = window.screenX + navWidth + elmRect.left;\n\n // Position window titleBar under mouse\n if (mouseEvent) {\n winTop = mouseEvent.clientY + navHeight - 7;\n winLeft += 120;\n }\n }\n return [winLeft, winTop];\n }\n\n private _close(): void {\n if (this.#popoutWindow()) {\n this.#popoutWindow()!.close();\n this.#popoutWindow.set(null);\n this.popIn.emit(true);\n }\n }\n\n private _cloneStylesToPopoutWindow() {\n if (window.navigator.userAgent.indexOf('Firefox') === -1) {\n document.fonts.forEach((node) => {\n (this.#popoutWindow()!.document as any).fonts.add(node);\n });\n }\n document.head.querySelectorAll('link[rel=\"stylesheet\"]').forEach((node) => {\n this.#popoutWindow()!.document.head.insertAdjacentHTML(\n 'beforeend',\n `<link rel=\"stylesheet\" type=\"${(node as HTMLLinkElement).type}\" href=\"${(node as HTMLLinkElement).href}\">`\n );\n });\n document.head.querySelectorAll('style').forEach((node) => {\n this.#popoutWindow()!.document.head.appendChild(node.cloneNode(true));\n });\n }\n\n private _observeFutureStyleChanges() {\n const headEle = document.querySelector('head');\n const win = this.#popoutWindow();\n this.#observer?.disconnect();\n this.#observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n mutation.addedNodes.forEach((node) => {\n if (win && node.nodeName === 'STYLE') {\n win.document.head.appendChild(node.cloneNode(true));\n }\n });\n });\n });\n this.#observer.observe(headEle!, { childList: true });\n }\n\n ngOnDestroy(): void {\n this.#observer?.disconnect();\n this._close();\n }\n}\n","<div #popoutWrapper class=\"popoutWrapper\" [ngClass]=\"{ disabled: disabled() }\" [attr.data-pos]=\"triggerPosition()\">\n @if (triggerPosition() !== 'none') {\n <button ymtIconButton icon-button-size=\"small\" type=\"button\" class=\"trigger\" (click)=\"pop($event)\" [matTooltip]=\"triggerTooltip()\" [ngClass]=\"{ poppedOut: isPoppedOut }\">\n <mat-icon>{{ triggerIcon() }}</mat-icon>\n </button>\n }\n <div #innerWrapper class=\"innerWrapper\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { Component, computed, inject, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PopoutComponent } from '../popout.component';\nimport { PopoutTriggerConfig } from '../popout.interface';\nimport { YmtIconButtonDirective } from '@yuuvis/material';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslateService } from '@ngx-translate/core';\n\n\n\n@Component({\n selector: 'yuv-popout-trigger',\n imports: [CommonModule, YmtIconButtonDirective, MatIconModule, MatTooltipModule],\n templateUrl: './popout-trigger.component.html',\n styleUrl: './popout-trigger.component.scss'\n})\nexport class PopoutTriggerComponent {\n private translate = inject(TranslateService);\n\n config = input<PopoutTriggerConfig>();\n popout = input<PopoutComponent>()\n\n icon = computed(() => {\n const poppedOut = this.popout()?.poppedOut();\n return poppedOut ? (this.config()?.popinIcon || 'open_in_new_down') : (\n this.config()?.popoutIcon || 'open_in_new');\n });\n tooltip = computed(() => {\n const poppedOut = this.popout()?.poppedOut();\n return poppedOut ? (this.config()?.popinTooltip || this.translate.instant('yuv.popout.popin.tooltip')) : (\n this.config()?.popoutTooltip || this.translate.instant('yuv.popout.popout.tooltip'));\n });\n\n trigger(e: MouseEvent) {\n this.popout()?.pop(e);\n }\n}\n","<button ymtIconButton [matTooltip]=\"tooltip()\" (click)=\"trigger($event)\">\n <mat-icon>{{ icon() }}</mat-icon>\n</button>","import { NgModule } from '@angular/core';\nimport { PopoutComponent } from './popout.component';\nimport { PopoutTriggerComponent } from './popout-trigger/popout-trigger.component';\n\n@NgModule({\n imports: [PopoutComponent, PopoutTriggerComponent],\n exports: [PopoutComponent, PopoutTriggerComponent]\n})\nexport class YuvPopoutModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"yuuvis-client-framework-popout.mjs","sources":["../../../../../libs/yuuvis/client-framework/popout/src/lib/popout.interface.ts","../../../../../libs/yuuvis/client-framework/popout/src/lib/popout.component.ts","../../../../../libs/yuuvis/client-framework/popout/src/lib/popout.component.html","../../../../../libs/yuuvis/client-framework/popout/src/lib/popout-trigger/popout-trigger.component.ts","../../../../../libs/yuuvis/client-framework/popout/src/lib/popout-trigger/popout-trigger.component.html","../../../../../libs/yuuvis/client-framework/popout/src/lib/fullscreen.directive.ts","../../../../../libs/yuuvis/client-framework/popout/src/lib/popout.module.ts","../../../../../libs/yuuvis/client-framework/popout/src/yuuvis-client-framework-popout.ts"],"sourcesContent":["export enum PopoutTriggerPosition {\n TOP_LEFT = 'tl',\n TOP_RIGHT = 'tr',\n BOTTOM_LEFT = 'bl',\n BOTTOM_RIGHT = 'br',\n NONE = 'none'\n}\n\n\nexport interface PopoutTriggerConfig {\n popoutIcon?: string;\n popinIcon?: string;\n popoutTooltip?: string;\n popinTooltip?: string;\n}\n\nexport interface PopoutWindowConfig {\n // title of the window opened by popout\n title?: string;\n position?: {\n // 'top' position in px\n blockStart?: number;\n // 'left' position in px\n inlineStart?: number;\n };\n // set the size of the poped out window\n // If no size is set the window will resize to\n // the size of the rendered content (if measurable)\n size?: {\n // width in px\n width?: number;\n // height in px\n height?: number;\n };\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n signal,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostListener,\n inject,\n input,\n OnDestroy,\n output,\n Renderer2,\n viewChild,\n computed\n} from '@angular/core';\nimport { PopoutTriggerPosition, PopoutWindowConfig } from './popout.interface';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { YmtIconButtonDirective } from '@yuuvis/material';\n\n// based upon: https://github.com/GIimmer/angular-opinionated-popout-window\n\n/**\n * Component that enables the wrapped content to be 'popped out' as new window.\n * It will place a button (icon) to trigger popout on top of the wrapped content. You\n * can place this trigger element setting the 'triggerPosition' input.\n *\n * Providing a 'popoutWindowConfig' will also enable you to influence the appearance of\n * the spawned window.\n *\n */\n@Component({\n selector: 'yuv-popout',\n exportAs: 'yuvPopout',\n imports: [CommonModule, MatButtonModule, MatIconModule, YmtIconButtonDirective, MatTooltipModule],\n templateUrl: './popout.component.html',\n styleUrl: './popout.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n // \"[attr.data-pos]\": \"triggerPosition()\"\n }\n})\nexport class PopoutComponent implements OnDestroy {\n #renderer2 = inject(Renderer2);\n #cd = inject(ChangeDetectorRef);\n\n @HostListener('window:beforeunload') beforeunloadHandler(): void {\n this._close();\n }\n\n innerWrapper = viewChild.required<ElementRef>('innerWrapper');\n popoutWrapper = viewChild.required<ElementRef>('popoutWrapper');\n\n /**\n * Where the popout trigger should be located on the component\n */\n triggerPosition = input<PopoutTriggerPosition>(PopoutTriggerPosition.TOP_RIGHT);\n /**\n * Icon to be redered inside the trigger\n */\n triggerIcon = input<string>('open_in_new');\n /**\n * Tooltip text for the trigger button\n */\n triggerTooltip = input<string>();\n\n /**\n * configuration of the popped out window\n */\n popoutWindowConfig = input<PopoutWindowConfig>();\n /**\n * Whether or not to disable the undock feature\n */\n disabled = input<boolean>();\n\n /**\n * Emitted when the child component is popped out\n */\n popOut = output<boolean>();\n /**\n * Emitted when the child component is popped in again\n */\n popIn = output<boolean>();\n\n #popoutWindow = signal<Window | null>(null);\n #observer?: MutationObserver;\n\n poppedOut = computed(() => !!this.#popoutWindow());\n\n get isPoppedOut() {\n return this.poppedOut();\n }\n\n pop(e: MouseEvent) {\n if (this.isPoppedOut) this._popIn();\n else this._popOut(e);\n }\n\n private _popIn(): void {\n this.#renderer2.appendChild(this.popoutWrapper().nativeElement, this.innerWrapper().nativeElement);\n this._close();\n this.#cd.detectChanges();\n }\n\n private _popOut(event?: MouseEvent): void {\n if (!this.#popoutWindow()) {\n this.#popoutWindow.set(this._createPopoutWindow(event));\n\n const pw = this.#popoutWindow();\n if (!pw) {\n // The window wasn't allowed to open\n // This is likely caused by built-in popup blockers.\n alert('Could not open new window. This is likely caused by built-in popup blockers.');\n return;\n }\n this._cloneStylesToPopoutWindow();\n this._observeFutureStyleChanges();\n\n this.#renderer2.appendChild(pw.document.body, this.innerWrapper().nativeElement);\n pw.addEventListener('unload', () => this._popIn());\n this.#cd.detectChanges();\n this.popOut.emit(true);\n } else {\n this.#popoutWindow()!.focus();\n }\n }\n\n private _createPopoutWindow(mouseEvent?: MouseEvent): Window | null {\n const elmRect = this.innerWrapper().nativeElement.getBoundingClientRect();\n const [winLeft, winTop] = this._getWindowPositioning(elmRect, mouseEvent);\n const pwc = this.popoutWindowConfig();\n const winWidth = pwc?.size?.width ? pwc.size.width : elmRect.width;\n const winHeight = pwc?.size?.height ? pwc.size.height : elmRect.height + 1;\n\n const win = window.open(\n '',\n `popoutWindow${Date.now()}`,\n ` popup,\n width=${winWidth},\n height=${winHeight},\n left=${winLeft},\n top=${winTop}`\n );\n if (win) {\n win.document.title = this.popoutWindowConfig()?.title || window.document.title;\n win.document.body.style.margin = '0';\n }\n return win;\n }\n\n private _getWindowPositioning(elmRect: DOMRect, mouseEvent?: MouseEvent) {\n let winTop, winLeft;\n\n const pwc = this.popoutWindowConfig()?.position;\n if (pwc) {\n winTop = pwc.blockStart || winTop;\n winLeft = pwc.inlineStart || winLeft;\n } else {\n const navHeight = window.outerHeight - window.innerHeight;\n const navWidth = (window.outerWidth - window.innerWidth) / 2;\n\n winTop = window.screenY + navHeight + elmRect.top - 60;\n winLeft = window.screenX + navWidth + elmRect.left;\n\n // Position window titleBar under mouse\n if (mouseEvent) {\n winTop = mouseEvent.clientY + navHeight - 7;\n winLeft += 120;\n }\n }\n return [winLeft, winTop];\n }\n\n private _close(): void {\n if (this.#popoutWindow()) {\n this.#popoutWindow()!.close();\n this.#popoutWindow.set(null);\n this.popIn.emit(true);\n }\n }\n\n private _cloneStylesToPopoutWindow() {\n if (window.navigator.userAgent.indexOf('Firefox') === -1) {\n document.fonts.forEach((node) => {\n (this.#popoutWindow()!.document as any).fonts.add(node);\n });\n }\n document.head.querySelectorAll('link[rel=\"stylesheet\"]').forEach((node) => {\n this.#popoutWindow()!.document.head.insertAdjacentHTML(\n 'beforeend',\n `<link rel=\"stylesheet\" type=\"${(node as HTMLLinkElement).type}\" href=\"${(node as HTMLLinkElement).href}\">`\n );\n });\n document.head.querySelectorAll('style').forEach((node) => {\n this.#popoutWindow()!.document.head.appendChild(node.cloneNode(true));\n });\n }\n\n private _observeFutureStyleChanges() {\n const headEle = document.querySelector('head');\n const win = this.#popoutWindow();\n this.#observer?.disconnect();\n this.#observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n mutation.addedNodes.forEach((node) => {\n if (win && node.nodeName === 'STYLE') {\n win.document.head.appendChild(node.cloneNode(true));\n }\n });\n });\n });\n this.#observer.observe(headEle!, { childList: true });\n }\n\n ngOnDestroy(): void {\n this.#observer?.disconnect();\n this._close();\n }\n}\n","<div #popoutWrapper class=\"popoutWrapper\" [ngClass]=\"{ disabled: disabled() }\" [attr.data-pos]=\"triggerPosition()\">\n @if (triggerPosition() !== 'none') {\n <button ymtIconButton icon-button-size=\"small\" type=\"button\" class=\"trigger\" (click)=\"pop($event)\" [matTooltip]=\"triggerTooltip()\" [ngClass]=\"{ poppedOut: isPoppedOut }\">\n <mat-icon>{{ triggerIcon() }}</mat-icon>\n </button>\n }\n <div #innerWrapper class=\"innerWrapper\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { Component, computed, inject, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PopoutComponent } from '../popout.component';\nimport { PopoutTriggerConfig } from '../popout.interface';\nimport { YmtIconButtonDirective } from '@yuuvis/material';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslateService } from '@ngx-translate/core';\n\n\n\n@Component({\n selector: 'yuv-popout-trigger',\n imports: [CommonModule, YmtIconButtonDirective, MatIconModule, MatTooltipModule],\n templateUrl: './popout-trigger.component.html',\n styleUrl: './popout-trigger.component.scss'\n})\nexport class PopoutTriggerComponent {\n private translate = inject(TranslateService);\n\n config = input<PopoutTriggerConfig>();\n popout = input<PopoutComponent>()\n\n icon = computed(() => {\n const poppedOut = this.popout()?.poppedOut();\n return poppedOut ? (this.config()?.popinIcon || 'open_in_new_down') : (\n this.config()?.popoutIcon || 'open_in_new');\n });\n tooltip = computed(() => {\n const poppedOut = this.popout()?.poppedOut();\n return poppedOut ? (this.config()?.popinTooltip || this.translate.instant('yuv.popout.popin.tooltip')) : (\n this.config()?.popoutTooltip || this.translate.instant('yuv.popout.popout.tooltip'));\n });\n\n trigger(e: MouseEvent) {\n this.popout()?.pop(e);\n }\n}\n","<button ymtIconButton [matTooltip]=\"tooltip()\" (click)=\"trigger($event)\">\n <mat-icon>{{ icon() }}</mat-icon>\n</button>","/**\n * @deprecated Import `FullscreenDirective` from `@yuuvis/material/panes` instead.\n */\nexport { FullscreenDirective } from '@yuuvis/material/panes';\n","import { NgModule } from '@angular/core';\nimport { PopoutComponent } from './popout.component';\nimport { PopoutTriggerComponent } from './popout-trigger/popout-trigger.component';\nimport { FullscreenDirective } from './fullscreen.directive';\n\n@NgModule({\n imports: [PopoutComponent, PopoutTriggerComponent, FullscreenDirective],\n exports: [PopoutComponent, PopoutTriggerComponent, FullscreenDirective]\n})\nexport class YuvPopoutModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":";;;;;;;;;;;;;;IAAY;AAAZ,CAAA,UAAY,qBAAqB,EAAA;AAC/B,IAAA,qBAAA,CAAA,UAAA,CAAA,GAAA,IAAe;AACf,IAAA,qBAAA,CAAA,WAAA,CAAA,GAAA,IAAgB;AAChB,IAAA,qBAAA,CAAA,aAAA,CAAA,GAAA,IAAkB;AAClB,IAAA,qBAAA,CAAA,cAAA,CAAA,GAAA,IAAmB;AACnB,IAAA,qBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACf,CAAC,EANW,qBAAqB,KAArB,qBAAqB,GAAA,EAAA,CAAA,CAAA;;ACsBjC;AAEA;;;;;;;;AAQG;MAYU,eAAe,CAAA;AAX5B,IAAA,WAAA,GAAA;AAYE,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;AAC9B,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAM/B,QAAA,IAAA,CAAA,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAa,cAAc,CAAC;AAC7D,QAAA,IAAA,CAAA,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAa,eAAe,CAAC;AAE/D;;AAEG;AACH,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAwB,qBAAqB,CAAC,SAAS,CAAC;AAC/E;;AAEG;AACH,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,aAAa,CAAC;AAC1C;;AAEG;QACH,IAAA,CAAA,cAAc,GAAG,KAAK,EAAU;AAEhC;;AAEG;QACH,IAAA,CAAA,kBAAkB,GAAG,KAAK,EAAsB;AAChD;;AAEG;QACH,IAAA,CAAA,QAAQ,GAAG,KAAK,EAAW;AAE3B;;AAEG;QACH,IAAA,CAAA,MAAM,GAAG,MAAM,EAAW;AAC1B;;AAEG;QACH,IAAA,CAAA,KAAK,GAAG,MAAM,EAAW;AAEzB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAgB,IAAI,CAAC;AAG3C,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;AAmInD,IAAA;AA/KC,IAAA,UAAU;AACV,IAAA,GAAG;IAEkC,mBAAmB,GAAA;QACtD,IAAI,CAAC,MAAM,EAAE;IACf;AAoCA,IAAA,aAAa;AACb,IAAA,SAAS;AAIT,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE;IACzB;AAEA,IAAA,GAAG,CAAC,CAAa,EAAA;QACf,IAAI,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,MAAM,EAAE;;AAC9B,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACtB;IAEQ,MAAM,GAAA;AACZ,QAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,aAAa,CAAC;QAClG,IAAI,CAAC,MAAM,EAAE;AACb,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC1B;AAEQ,IAAA,OAAO,CAAC,KAAkB,EAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;AACzB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAEvD,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE;YAC/B,IAAI,CAAC,EAAE,EAAE;;;gBAGP,KAAK,CAAC,8EAA8E,CAAC;gBACrF;YACF;YACA,IAAI,CAAC,0BAA0B,EAAE;YACjC,IAAI,CAAC,0BAA0B,EAAE;AAEjC,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,aAAa,CAAC;AAChF,YAAA,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;AAClD,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AACxB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACxB;aAAO;AACL,YAAA,IAAI,CAAC,aAAa,EAAG,CAAC,KAAK,EAAE;QAC/B;IACF;AAEQ,IAAA,mBAAmB,CAAC,UAAuB,EAAA;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE;AACzE,QAAA,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,UAAU,CAAC;AACzE,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE;QACrC,MAAM,QAAQ,GAAG,GAAG,EAAE,IAAI,EAAE,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;QAClE,MAAM,SAAS,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC;AAE1E,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CACrB,EAAE,EACF,CAAA,YAAA,EAAe,IAAI,CAAC,GAAG,EAAE,EAAE,EAC3B,CAAA;gBACU,QAAQ,CAAA;iBACP,SAAS,CAAA;eACX,OAAO,CAAA;cACR,MAAM,CAAA,CAAE,CACjB;QACD,IAAI,GAAG,EAAE;AACP,YAAA,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAE,EAAE,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK;YAC9E,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG;QACtC;AACA,QAAA,OAAO,GAAG;IACZ;IAEQ,qBAAqB,CAAC,OAAgB,EAAE,UAAuB,EAAA;QACrE,IAAI,MAAM,EAAE,OAAO;QAEnB,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,EAAE,QAAQ;QAC/C,IAAI,GAAG,EAAE;AACP,YAAA,MAAM,GAAG,GAAG,CAAC,UAAU,IAAI,MAAM;AACjC,YAAA,OAAO,GAAG,GAAG,CAAC,WAAW,IAAI,OAAO;QACtC;aAAO;YACL,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW;AACzD,YAAA,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,CAAC;AAE5D,YAAA,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC,GAAG,GAAG,EAAE;YACtD,OAAO,GAAG,MAAM,CAAC,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI;;YAGlD,IAAI,UAAU,EAAE;gBACd,MAAM,GAAG,UAAU,CAAC,OAAO,GAAG,SAAS,GAAG,CAAC;gBAC3C,OAAO,IAAI,GAAG;YAChB;QACF;AACA,QAAA,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B;IAEQ,MAAM,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,YAAA,IAAI,CAAC,aAAa,EAAG,CAAC,KAAK,EAAE;AAC7B,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QACvB;IACF;IAEQ,0BAA0B,GAAA;AAChC,QAAA,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;YACxD,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC7B,gBAAA,IAAI,CAAC,aAAa,EAAG,CAAC,QAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACzD,YAAA,CAAC,CAAC;QACJ;AACA,QAAA,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YACxE,IAAI,CAAC,aAAa,EAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CACpD,WAAW,EACX,CAAA,6BAAA,EAAiC,IAAwB,CAAC,IAAI,CAAA,QAAA,EAAY,IAAwB,CAAC,IAAI,CAAA,EAAA,CAAI,CAC5G;AACH,QAAA,CAAC,CAAC;AACF,QAAA,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACvD,YAAA,IAAI,CAAC,aAAa,EAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACvE,QAAA,CAAC,CAAC;IACJ;IAEQ,0BAA0B,GAAA;QAChC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AAC9C,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE;AAChC,QAAA,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE;QAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,gBAAgB,CAAC,CAAC,SAAS,KAAI;AAClD,YAAA,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;gBAC7B,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;oBACnC,IAAI,GAAG,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;AACpC,wBAAA,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBACrD;AACF,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACvD;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE;QAC5B,IAAI,CAAC,MAAM,EAAE;IACf;+GA/KW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5C5B,ogBAUA,EAAA,MAAA,EAAA,CAAA,q8CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED0BY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,sBAAsB,EAAA,QAAA,EAAA,mFAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAQrF,eAAe,EAAA,UAAA,EAAA,CAAA;kBAX3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,YACZ,WAAW,EAAA,OAAA,EACZ,CAAC,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,sBAAsB,EAAE,gBAAgB,CAAC,mBAGhF,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;;AAEL,qBAAA,EAAA,QAAA,EAAA,ogBAAA,EAAA,MAAA,EAAA,CAAA,q8CAAA,CAAA,EAAA;8BAMoC,mBAAmB,EAAA,CAAA;sBAAvD,YAAY;uBAAC,qBAAqB;;;ME/BxB,sBAAsB,CAAA;AANnC,IAAA,WAAA,GAAA;AAOU,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAE5C,IAAA,CAAA,MAAM,GAAG,KAAK,EAAuB;QACrC,IAAA,CAAA,MAAM,GAAG,KAAK,EAAmB;AAEjC,QAAA,IAAA,CAAA,IAAI,GAAG,QAAQ,CAAC,MAAK;YACnB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE;YAC5C,OAAO,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,IAAI,kBAAkB,KAClE,IAAI,CAAC,MAAM,EAAE,EAAE,UAAU,IAAI,aAAa,CAAC;AAC7C,QAAA,CAAC,CAAC;AACF,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;YACtB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE;AAC5C,YAAA,OAAO,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,0BAA0B,CAAC,KACrG,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;AACtF,QAAA,CAAC,CAAC;AAKH,IAAA;AAHC,IAAA,OAAO,CAAC,CAAa,EAAA;QACnB,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;IACvB;+GAnBW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjBnC,iIAES,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDWG,YAAY,+BAAE,sBAAsB,EAAA,QAAA,EAAA,mFAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAIpE,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;+BACE,oBAAoB,EAAA,OAAA,EACrB,CAAC,YAAY,EAAE,sBAAsB,EAAE,aAAa,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAAA,iIAAA,EAAA;;;AEblF;;AAEG;;MCOU,eAAe,CAAA;+GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAf,eAAe,EAAA,OAAA,EAAA,CAHhB,eAAe,EAAE,sBAAsB,EAAE,mBAAmB,CAAA,EAAA,OAAA,EAAA,CAC5D,eAAe,EAAE,sBAAsB,EAAE,mBAAmB,CAAA,EAAA,CAAA,CAAA;gHAE3D,eAAe,EAAA,OAAA,EAAA,CAHhB,eAAe,EAAE,sBAAsB,CAAA,EAAA,CAAA,CAAA;;4FAGtC,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,eAAe,EAAE,sBAAsB,EAAE,mBAAmB,CAAC;AACvE,oBAAA,OAAO,EAAE,CAAC,eAAe,EAAE,sBAAsB,EAAE,mBAAmB;AACvE,iBAAA;;;ACRD;;AAEG;;;;"}
|
|
@@ -90,23 +90,50 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
90
90
|
/**
|
|
91
91
|
* Component for creating a split view with resizable areas.
|
|
92
92
|
*
|
|
93
|
+
* Each area is defined using the `yuvSplitArea` directive on an `ng-template`.
|
|
94
|
+
* Areas can be resized by dragging the gutter between them.
|
|
95
|
+
*
|
|
96
|
+
* ### Basic usage
|
|
97
|
+
* ```html
|
|
98
|
+
* <yuv-split-view>
|
|
99
|
+
* <ng-template yuvSplitArea [size]="20">Aside</ng-template>
|
|
100
|
+
* <ng-template yuvSplitArea [size]="80">Main</ng-template>
|
|
101
|
+
* </yuv-split-view>
|
|
102
|
+
* ```
|
|
103
|
+
*
|
|
104
|
+
* ### Collapsible areas
|
|
105
|
+
* Areas can be shown, hidden, or toggled programmatically. Use a template
|
|
106
|
+
* reference variable to call the visibility methods from the template:
|
|
107
|
+
*
|
|
93
108
|
* ```html
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
* <
|
|
97
|
-
*
|
|
109
|
+
* <yuv-split-view #sv>
|
|
110
|
+
* <ng-template yuvSplitArea [size]="25">
|
|
111
|
+
* <button (click)="sv.hideArea(0)">Collapse</button>
|
|
112
|
+
* Left pane
|
|
113
|
+
* </ng-template>
|
|
114
|
+
* <ng-template yuvSplitArea [size]="75">
|
|
115
|
+
* <button (click)="sv.showArea(0)">Expand left</button>
|
|
116
|
+
* Main pane
|
|
117
|
+
* </ng-template>
|
|
118
|
+
* </yuv-split-view>
|
|
98
119
|
* ```
|
|
99
|
-
* If you set a `layoutSettingsID` it will be used to store the state of
|
|
100
|
-
* the split view (area sizes and visibility) in localStorage everytime it
|
|
101
|
-
* changes. The component will then also load and apply that state once the
|
|
102
|
-
* component is loaded.
|
|
103
120
|
*
|
|
121
|
+
* ### Persisting layout state
|
|
122
|
+
* Set `layoutSettingsID` to persist area sizes and visibility to
|
|
123
|
+
* localStorage. The saved state is automatically restored on init.
|
|
124
|
+
*
|
|
125
|
+
* ```html
|
|
126
|
+
* <yuv-split-view [layoutSettingsID]="'my-layout'">
|
|
127
|
+
* ...
|
|
128
|
+
* </yuv-split-view>
|
|
129
|
+
* ```
|
|
104
130
|
*/
|
|
105
131
|
class SplitViewComponent {
|
|
106
132
|
constructor() {
|
|
107
133
|
this.#layoutSettings = inject(LayoutSettingsService);
|
|
108
134
|
this.splitAreas = contentChildren(SplitAreaDirective);
|
|
109
135
|
this.asSplitComponent = viewChild.required(SplitComponent);
|
|
136
|
+
this.splitAreaSizes = [];
|
|
110
137
|
/**
|
|
111
138
|
* The split views direction. Could be 'horizontal' or 'vertical'. Defaults to 'horizontal'.
|
|
112
139
|
*/
|
|
@@ -117,6 +144,9 @@ class SplitViewComponent {
|
|
|
117
144
|
* Size of the gutter in Pixel (defaults to 16).
|
|
118
145
|
*/
|
|
119
146
|
this.gutterSize = input(16);
|
|
147
|
+
/**
|
|
148
|
+
* If true, the gutter can only be moved in steps of 1%.
|
|
149
|
+
*/
|
|
120
150
|
this.restrictMove = input(false);
|
|
121
151
|
/**
|
|
122
152
|
* Disable the dragging feature (remove cursor/image on gutters).
|
|
@@ -161,10 +191,72 @@ class SplitViewComponent {
|
|
|
161
191
|
}
|
|
162
192
|
onDragEnd(e) {
|
|
163
193
|
this.dragging.set(false);
|
|
194
|
+
this.splitAreas().forEach((splitArea, index) => {
|
|
195
|
+
splitArea.areaProperties.update((s) => ({ ...s, size: e.sizes[index] }));
|
|
196
|
+
});
|
|
164
197
|
this.#updateLayoutSettings(e.sizes);
|
|
165
198
|
this.dragEnd.emit(e);
|
|
166
199
|
}
|
|
200
|
+
/**
|
|
201
|
+
* Show a previously hidden split area, restoring it to its last known size.
|
|
202
|
+
*
|
|
203
|
+
* ```html
|
|
204
|
+
* <button (click)="sv.showArea(0)">Show left pane</button>
|
|
205
|
+
* ```
|
|
206
|
+
* @param index Zero-based index of the split area to show
|
|
207
|
+
*/
|
|
208
|
+
showArea(index) {
|
|
209
|
+
this.splitAreas()[index].areaProperties.update((s) => ({ ...s, visible: true }));
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Hide a split area by collapsing it to zero width/height. The adjacent
|
|
213
|
+
* areas will expand to fill the freed space.
|
|
214
|
+
*
|
|
215
|
+
* ```html
|
|
216
|
+
* <button (click)="sv.hideArea(0)">Hide left pane</button>
|
|
217
|
+
* ```
|
|
218
|
+
* @param index Zero-based index of the split area to hide
|
|
219
|
+
*/
|
|
220
|
+
hideArea(index) {
|
|
221
|
+
this.splitAreas()[index].areaProperties.update((s) => ({ ...s, visible: false }));
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Toggle the visibility of a split area. If the area is currently visible
|
|
225
|
+
* it will be collapsed; if it is hidden it will be restored.
|
|
226
|
+
*
|
|
227
|
+
* ```html
|
|
228
|
+
* <button (click)="sv.toggleArea(0)">Toggle left pane</button>
|
|
229
|
+
* ```
|
|
230
|
+
* @param index Zero-based index of the split area to toggle
|
|
231
|
+
*/
|
|
232
|
+
toggleArea(index) {
|
|
233
|
+
this.splitAreas()[index].areaProperties.update((s) => ({ ...s, visible: !s.visible }));
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Returns whether a split area is currently visible. Useful for
|
|
237
|
+
* conditionally rendering expand/collapse buttons in the template.
|
|
238
|
+
*
|
|
239
|
+
* ```html
|
|
240
|
+
* @if (!sv.isAreaVisible(0)) {
|
|
241
|
+
* <button (click)="sv.showArea(0)">Expand left</button>
|
|
242
|
+
* }
|
|
243
|
+
* ```
|
|
244
|
+
* @param index Zero-based index of the split area to check
|
|
245
|
+
* @returns `true` if the area is visible, `false` if hidden
|
|
246
|
+
*/
|
|
247
|
+
isAreaVisible(index) {
|
|
248
|
+
return this.splitAreas()[index].areaProperties().visible;
|
|
249
|
+
}
|
|
250
|
+
/** @deprecated Use `showArea()` / `hideArea()` instead */
|
|
251
|
+
splitAreaSetVisibility(index, visible) {
|
|
252
|
+
this.splitAreas()[index].areaProperties.update((s) => ({ ...s, visible }));
|
|
253
|
+
}
|
|
254
|
+
/** @deprecated Use `toggleArea()` instead */
|
|
255
|
+
splitAreaToggleVisibility(index) {
|
|
256
|
+
this.splitAreas()[index].areaProperties.update((s) => ({ ...s, visible: !s.visible }));
|
|
257
|
+
}
|
|
167
258
|
#updateLayoutSettings(sizes) {
|
|
259
|
+
this.splitAreaSizes = sizes;
|
|
168
260
|
const layoutSettings = {
|
|
169
261
|
disabled: this.disabled(),
|
|
170
262
|
areas: this.splitAreas().map((a, idx) => ({
|
|
@@ -179,10 +271,17 @@ class SplitViewComponent {
|
|
|
179
271
|
this.#layoutSettings.saveSettings(lsid, layoutSettings);
|
|
180
272
|
}
|
|
181
273
|
}
|
|
274
|
+
/**
|
|
275
|
+
* Programmatically apply layout settings (area sizes, visibility, disabled state).
|
|
276
|
+
* This is called automatically on init when `layoutSettingsID` is set, but can
|
|
277
|
+
* also be used to restore a specific layout configuration at any time.
|
|
278
|
+
* @param settings The layout settings to apply
|
|
279
|
+
*/
|
|
182
280
|
applyLayoutSettings(settings) {
|
|
183
281
|
if (!this.#isLayoutSettingsObject(settings))
|
|
184
282
|
return;
|
|
185
283
|
this.disabled.set(!!settings.disabled);
|
|
284
|
+
this.splitAreaSizes = settings.areas.map((a) => a.size);
|
|
186
285
|
settings.areas.forEach((a, index) => {
|
|
187
286
|
this.splitAreas()[index].updateSettings(a);
|
|
188
287
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yuuvis-client-framework-split-view.mjs","sources":["../../../../../libs/yuuvis/client-framework/split-view/src/lib/split-area.directive.ts","../../../../../libs/yuuvis/client-framework/split-view/src/lib/split-area-cover.directive.ts","../../../../../libs/yuuvis/client-framework/split-view/src/lib/split-view.component.ts","../../../../../libs/yuuvis/client-framework/split-view/src/lib/split-view.component.html","../../../../../libs/yuuvis/client-framework/split-view/src/lib/split-view.module.ts","../../../../../libs/yuuvis/client-framework/split-view/src/yuuvis-client-framework-split-view.ts"],"sourcesContent":["import { Directive, effect, inject, input, linkedSignal, signal, TemplateRef, untracked } from '@angular/core';\nimport { SplitAreaLayoutSettings } from './split-view.interface';\nimport { SplitAreaSize } from 'angular-split';\n\n@Directive({\n selector: '[yuvSplitArea]'\n})\nexport class SplitAreaDirective {\n template = inject(TemplateRef<any>);\n\n size = input<SplitAreaSize>();\n minSize = input<number>();\n maxSize = input<number>();\n panelClass = input<string>();\n visible = input<boolean>(true);\n lockSize = input<boolean>(false);\n\n areaProperties = linkedSignal({\n source: () => ({ size: this.size(), visible: this.visible(), lockSize: this.lockSize() }),\n computation: ({ size, visible, lockSize }) => ({ size, visible, lockSize })\n });\n\n updateSettings(s: SplitAreaLayoutSettings) {\n this.areaProperties.set({\n size: s.size || this.size(),\n visible: s.visible !== undefined ? !!s.visible : this.visible(),\n lockSize: s.lockSize || this.lockSize()\n });\n }\n}\n","import { Directive, effect, ElementRef, inject, input } from '@angular/core';\n\n/**\n * Directive to add a cover overlay to a split area during dragging.\n * This is useful when the split area contains elements like iframes\n * that can capture drag events and interfere with the split view's\n * dragging functionality.\n * The overlay will be transparent and therefore not recognized by\n * the user, but will capture the drag events.\n */\n@Directive({\n selector: '[yuvSplitAreaCover]'\n})\nexport class SplitAreaCoverDirective {\n #elRef = inject(ElementRef);\n\n yuvSplitAreaCover = input<boolean>(false);\n #draggingEffect = effect(() => {\n this.#toggleCover(this.yuvSplitAreaCover());\n });\n\n #coverElement?: HTMLElement;\n\n #toggleCover(active: boolean) {\n const el: HTMLElement = this.#elRef.nativeElement as HTMLElement;\n\n if (this.#coverElement) {\n el.style.position = 'initial';\n this.#coverElement.remove();\n this.#coverElement = undefined;\n }\n if (active) {\n el.style.position = 'relative';\n this.#coverElement = this.#createCoverElement();\n el.append(this.#coverElement);\n }\n }\n\n #createCoverElement(): HTMLElement {\n const coverElement = document.createElement('div');\n coverElement.classList.add('yuv-split-area-cover');\n coverElement.style.position = 'absolute';\n coverElement.style.zIndex = '500';\n coverElement.style.inset = '0';\n return coverElement;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n effect,\n inject,\n input,\n linkedSignal,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport { LayoutSettingsService } from '@yuuvis/client-framework/common';\nimport { AngularSplitModule, SplitAreaSize, SplitComponent, SplitDirection } from 'angular-split';\nimport { SplitAreaDirective } from './split-area.directive';\nimport { SplitAreaLayoutSettings, SplitViewLayoutSettings, SplitViewOutputData } from './split-view.interface';\nimport { SplitAreaCoverDirective } from './split-area-cover.directive';\n\n/**\n * Component for creating a split view with resizable areas.\n *\n * ```html\n * <yuv-split-view>\n * <ng-template yuvSplitArea [size]=\"20\">Aside area</ng-template>\n * <ng-template yuvSplitArea [size]=\"80\">Main area</ng-template>\n * </yuv-split-view>\n * ```\n * If you set a `layoutSettingsID` it will be used to store the state of\n * the split view (area sizes and visibility) in localStorage everytime it\n * changes. The component will then also load and apply that state once the\n * component is loaded.\n *\n */\n@Component({\n selector: 'yuv-split-view',\n imports: [CommonModule, AngularSplitModule, SplitAreaCoverDirective],\n templateUrl: './split-view.component.html',\n styleUrl: './split-view.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'attr.data-gutter-size': 'gutterSize()',\n 'class.dragging': 'dragging()'\n }\n})\nexport class SplitViewComponent implements AfterViewInit {\n #layoutSettings = inject(LayoutSettingsService);\n\n splitAreas = contentChildren<SplitAreaDirective>(SplitAreaDirective);\n asSplitComponent = viewChild.required<SplitComponent>(SplitComponent);\n\n /**\n * The split views direction. Could be 'horizontal' or 'vertical'. Defaults to 'horizontal'.\n */\n direction = input<SplitDirection>('horizontal');\n isVertical = computed(() => this.direction() === 'vertical');\n isHorizontal = computed(() => this.direction() === 'horizontal');\n\n /**\n * Size of the gutter in Pixel (defaults to 16).\n */\n gutterSize = input<number>(16);\n restrictMove = input<boolean>(false);\n /**\n * Disable the dragging feature (remove cursor/image on gutters).\n */\n disabledInput = input<boolean>(false, { alias: 'disabled' });\n disabled = linkedSignal(() => this.disabledInput());\n /**\n * Layout settings are the state of the split view that could be persisted.\n * Setting a `layoutSettingsID` will save the current state (split area sizes etc.)\n * to the local storage. If the component is created, it will load those settings and\n * re-apply them.\n */\n layoutSettingsID = input<string>();\n /**\n * Emitted when the state (split area sizes etc.) of the split view changed.\n */\n layoutSettingsChange = output<SplitViewLayoutSettings>();\n /**\n * Emitted when dragging the split gutter starts\n */\n dragStart = output<SplitViewOutputData>();\n /**\n * Emitted when dragging the split gutter ends\n */\n dragEnd = output<SplitViewOutputData>();\n\n /**\n * Emitted when the split gutter is clicked.\n */\n gutterClick = output<SplitViewOutputData>();\n /**\n * Emitted when the split gutter is double clicked (you may also want to\n * set a different click duration indicating a double click). This could be\n * set using the `gutterDblClickDuration` to a value in milliseconds (default is 400ms)\n */\n gutterDblClick = output<SplitViewOutputData>();\n\n dragging = signal<boolean>(false);\n\n onDragStart(e: SplitViewOutputData) {\n this.dragging.set(true);\n this.dragStart.emit(e);\n }\n\n onDragEnd(e: SplitViewOutputData) {\n this.dragging.set(false);\n this.#updateLayoutSettings(e.sizes);\n this.dragEnd.emit(e);\n }\n\n #updateLayoutSettings(sizes: SplitAreaSize[]) {\n const layoutSettings: SplitViewLayoutSettings = {\n disabled: this.disabled(),\n areas: this.splitAreas().map((a: SplitAreaDirective, idx: number) => ({\n visible: a.visible(),\n size: sizes[idx]\n }))\n };\n this.layoutSettingsChange.emit(layoutSettings);\n // save layout settings if persistence is enabled\n const lsid = this.layoutSettingsID();\n if (lsid) {\n this.#layoutSettings.saveSettings(lsid, layoutSettings);\n }\n }\n\n applyLayoutSettings(settings: SplitViewLayoutSettings) {\n if (!this.#isLayoutSettingsObject(settings)) return;\n this.disabled.set(!!settings.disabled);\n settings.areas.forEach((a: SplitAreaLayoutSettings, index: number) => {\n this.splitAreas()[index].updateSettings(a);\n });\n }\n\n #isLayoutSettingsObject(v: any): boolean {\n return v && 'disabled' in v && 'areas' in v;\n }\n\n ngAfterViewInit(): void {\n // try to load layout settings if persistence is enabled\n const lsid = this.layoutSettingsID();\n if (lsid) {\n this.applyLayoutSettings(this.#layoutSettings.getSettings(lsid) as SplitViewLayoutSettings);\n }\n }\n}\n","<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 [yuvSplitAreaCover]=\"dragging()\"\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","import { NgModule } from '@angular/core';\nimport { SplitAreaDirective } from './split-area.directive';\nimport { SplitViewComponent } from './split-view.component';\n\n@NgModule({\n imports: [SplitAreaDirective, SplitViewComponent],\n exports: [SplitAreaDirective, SplitViewComponent]\n})\nexport class YuvSplitViewModule {}\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-split-view.mjs","sources":["../../../../../libs/yuuvis/client-framework/split-view/src/lib/split-area.directive.ts","../../../../../libs/yuuvis/client-framework/split-view/src/lib/split-area-cover.directive.ts","../../../../../libs/yuuvis/client-framework/split-view/src/lib/split-view.component.ts","../../../../../libs/yuuvis/client-framework/split-view/src/lib/split-view.component.html","../../../../../libs/yuuvis/client-framework/split-view/src/lib/split-view.module.ts","../../../../../libs/yuuvis/client-framework/split-view/src/yuuvis-client-framework-split-view.ts"],"sourcesContent":["import { Directive, effect, inject, input, linkedSignal, signal, TemplateRef, untracked } from '@angular/core';\nimport { SplitAreaLayoutSettings } from './split-view.interface';\nimport { SplitAreaSize } from 'angular-split';\n\n@Directive({\n selector: '[yuvSplitArea]'\n})\nexport class SplitAreaDirective {\n template = inject(TemplateRef<any>);\n\n size = input<SplitAreaSize>();\n minSize = input<number>();\n maxSize = input<number>();\n panelClass = input<string>();\n visible = input<boolean>(true);\n lockSize = input<boolean>(false);\n\n areaProperties = linkedSignal({\n source: () => ({ size: this.size(), visible: this.visible(), lockSize: this.lockSize() }),\n computation: ({ size, visible, lockSize }) => ({ size, visible, lockSize })\n });\n\n updateSettings(s: SplitAreaLayoutSettings) {\n this.areaProperties.set({\n size: s.size || this.size(),\n visible: s.visible !== undefined ? !!s.visible : this.visible(),\n lockSize: s.lockSize || this.lockSize()\n });\n }\n}\n","import { Directive, effect, ElementRef, inject, input } from '@angular/core';\n\n/**\n * Directive to add a cover overlay to a split area during dragging.\n * This is useful when the split area contains elements like iframes\n * that can capture drag events and interfere with the split view's\n * dragging functionality.\n * The overlay will be transparent and therefore not recognized by\n * the user, but will capture the drag events.\n */\n@Directive({\n selector: '[yuvSplitAreaCover]'\n})\nexport class SplitAreaCoverDirective {\n #elRef = inject(ElementRef);\n\n yuvSplitAreaCover = input<boolean>(false);\n #draggingEffect = effect(() => {\n this.#toggleCover(this.yuvSplitAreaCover());\n });\n\n #coverElement?: HTMLElement;\n\n #toggleCover(active: boolean) {\n const el: HTMLElement = this.#elRef.nativeElement as HTMLElement;\n\n if (this.#coverElement) {\n el.style.position = 'initial';\n this.#coverElement.remove();\n this.#coverElement = undefined;\n }\n if (active) {\n el.style.position = 'relative';\n this.#coverElement = this.#createCoverElement();\n el.append(this.#coverElement);\n }\n }\n\n #createCoverElement(): HTMLElement {\n const coverElement = document.createElement('div');\n coverElement.classList.add('yuv-split-area-cover');\n coverElement.style.position = 'absolute';\n coverElement.style.zIndex = '500';\n coverElement.style.inset = '0';\n return coverElement;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n inject,\n input,\n linkedSignal,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport { LayoutSettingsService } from '@yuuvis/client-framework/common';\nimport { AngularSplitModule, SplitAreaSize, SplitComponent, SplitDirection } from 'angular-split';\nimport { SplitAreaCoverDirective } from './split-area-cover.directive';\nimport { SplitAreaDirective } from './split-area.directive';\nimport { SplitAreaLayoutSettings, SplitViewLayoutSettings, SplitViewOutputData } from './split-view.interface';\n\n/**\n * Component for creating a split view with resizable areas.\n *\n * Each area is defined using the `yuvSplitArea` directive on an `ng-template`.\n * Areas can be resized by dragging the gutter between them.\n *\n * ### Basic usage\n * ```html\n * <yuv-split-view>\n * <ng-template yuvSplitArea [size]=\"20\">Aside</ng-template>\n * <ng-template yuvSplitArea [size]=\"80\">Main</ng-template>\n * </yuv-split-view>\n * ```\n *\n * ### Collapsible areas\n * Areas can be shown, hidden, or toggled programmatically. Use a template\n * reference variable to call the visibility methods from the template:\n *\n * ```html\n * <yuv-split-view #sv>\n * <ng-template yuvSplitArea [size]=\"25\">\n * <button (click)=\"sv.hideArea(0)\">Collapse</button>\n * Left pane\n * </ng-template>\n * <ng-template yuvSplitArea [size]=\"75\">\n * <button (click)=\"sv.showArea(0)\">Expand left</button>\n * Main pane\n * </ng-template>\n * </yuv-split-view>\n * ```\n *\n * ### Persisting layout state\n * Set `layoutSettingsID` to persist area sizes and visibility to\n * localStorage. The saved state is automatically restored on init.\n *\n * ```html\n * <yuv-split-view [layoutSettingsID]=\"'my-layout'\">\n * ...\n * </yuv-split-view>\n * ```\n */\n@Component({\n selector: 'yuv-split-view',\n imports: [CommonModule, AngularSplitModule, SplitAreaCoverDirective],\n templateUrl: './split-view.component.html',\n styleUrl: './split-view.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'attr.data-gutter-size': 'gutterSize()',\n 'class.dragging': 'dragging()'\n }\n})\nexport class SplitViewComponent implements AfterViewInit {\n #layoutSettings = inject(LayoutSettingsService);\n\n splitAreas = contentChildren<SplitAreaDirective>(SplitAreaDirective);\n asSplitComponent = viewChild.required<SplitComponent>(SplitComponent);\n\n splitAreaSizes: SplitAreaSize[] = [];\n\n /**\n * The split views direction. Could be 'horizontal' or 'vertical'. Defaults to 'horizontal'.\n */\n direction = input<SplitDirection>('horizontal');\n isVertical = computed(() => this.direction() === 'vertical');\n isHorizontal = computed(() => this.direction() === 'horizontal');\n\n /**\n * Size of the gutter in Pixel (defaults to 16).\n */\n gutterSize = input<number>(16);\n /**\n * If true, the gutter can only be moved in steps of 1%.\n */\n restrictMove = input<boolean>(false);\n /**\n * Disable the dragging feature (remove cursor/image on gutters).\n */\n disabledInput = input<boolean>(false, { alias: 'disabled' });\n disabled = linkedSignal(() => this.disabledInput());\n /**\n * Layout settings are the state of the split view that could be persisted.\n * Setting a `layoutSettingsID` will save the current state (split area sizes etc.)\n * to the local storage. If the component is created, it will load those settings and\n * re-apply them.\n */\n layoutSettingsID = input<string>();\n /**\n * Emitted when the state (split area sizes etc.) of the split view changed.\n */\n layoutSettingsChange = output<SplitViewLayoutSettings>();\n /**\n * Emitted when dragging the split gutter starts\n */\n dragStart = output<SplitViewOutputData>();\n /**\n * Emitted when dragging the split gutter ends\n */\n dragEnd = output<SplitViewOutputData>();\n\n /**\n * Emitted when the split gutter is clicked.\n */\n gutterClick = output<SplitViewOutputData>();\n /**\n * Emitted when the split gutter is double clicked (you may also want to\n * set a different click duration indicating a double click). This could be\n * set using the `gutterDblClickDuration` to a value in milliseconds (default is 400ms)\n */\n gutterDblClick = output<SplitViewOutputData>();\n\n dragging = signal<boolean>(false);\n\n onDragStart(e: SplitViewOutputData) {\n this.dragging.set(true);\n this.dragStart.emit(e);\n }\n\n onDragEnd(e: SplitViewOutputData) {\n this.dragging.set(false);\n this.splitAreas().forEach((splitArea, index) => {\n splitArea.areaProperties.update((s) => ({ ...s, size: e.sizes[index] }));\n });\n this.#updateLayoutSettings(e.sizes);\n this.dragEnd.emit(e);\n }\n\n /**\n * Show a previously hidden split area, restoring it to its last known size.\n *\n * ```html\n * <button (click)=\"sv.showArea(0)\">Show left pane</button>\n * ```\n * @param index Zero-based index of the split area to show\n */\n showArea(index: number) {\n this.splitAreas()[index].areaProperties.update((s) => ({ ...s, visible: true }));\n }\n\n /**\n * Hide a split area by collapsing it to zero width/height. The adjacent\n * areas will expand to fill the freed space.\n *\n * ```html\n * <button (click)=\"sv.hideArea(0)\">Hide left pane</button>\n * ```\n * @param index Zero-based index of the split area to hide\n */\n hideArea(index: number) {\n this.splitAreas()[index].areaProperties.update((s) => ({ ...s, visible: false }));\n }\n\n /**\n * Toggle the visibility of a split area. If the area is currently visible\n * it will be collapsed; if it is hidden it will be restored.\n *\n * ```html\n * <button (click)=\"sv.toggleArea(0)\">Toggle left pane</button>\n * ```\n * @param index Zero-based index of the split area to toggle\n */\n toggleArea(index: number) {\n this.splitAreas()[index].areaProperties.update((s) => ({ ...s, visible: !s.visible }));\n }\n\n /**\n * Returns whether a split area is currently visible. Useful for\n * conditionally rendering expand/collapse buttons in the template.\n *\n * ```html\n * @if (!sv.isAreaVisible(0)) {\n * <button (click)=\"sv.showArea(0)\">Expand left</button>\n * }\n * ```\n * @param index Zero-based index of the split area to check\n * @returns `true` if the area is visible, `false` if hidden\n */\n isAreaVisible(index: number): boolean {\n return this.splitAreas()[index].areaProperties().visible;\n }\n\n /** @deprecated Use `showArea()` / `hideArea()` instead */\n splitAreaSetVisibility(index: number, visible: boolean) {\n this.splitAreas()[index].areaProperties.update((s) => ({ ...s, visible }));\n }\n\n /** @deprecated Use `toggleArea()` instead */\n splitAreaToggleVisibility(index: number) {\n this.splitAreas()[index].areaProperties.update((s) => ({ ...s, visible: !s.visible }));\n }\n\n #updateLayoutSettings(sizes: SplitAreaSize[]) {\n this.splitAreaSizes = sizes;\n const layoutSettings: SplitViewLayoutSettings = {\n disabled: this.disabled(),\n areas: this.splitAreas().map((a: SplitAreaDirective, idx: number) => ({\n visible: a.visible(),\n size: sizes[idx]\n }))\n };\n this.layoutSettingsChange.emit(layoutSettings);\n // save layout settings if persistence is enabled\n const lsid = this.layoutSettingsID();\n if (lsid) {\n this.#layoutSettings.saveSettings(lsid, layoutSettings);\n }\n }\n\n /**\n * Programmatically apply layout settings (area sizes, visibility, disabled state).\n * This is called automatically on init when `layoutSettingsID` is set, but can\n * also be used to restore a specific layout configuration at any time.\n * @param settings The layout settings to apply\n */\n applyLayoutSettings(settings: SplitViewLayoutSettings) {\n if (!this.#isLayoutSettingsObject(settings)) return;\n this.disabled.set(!!settings.disabled);\n this.splitAreaSizes = settings.areas.map((a) => a.size!);\n settings.areas.forEach((a: SplitAreaLayoutSettings, index: number) => {\n this.splitAreas()[index].updateSettings(a);\n });\n }\n\n #isLayoutSettingsObject(v: any): boolean {\n return v && 'disabled' in v && 'areas' in v;\n }\n\n ngAfterViewInit(): void {\n // try to load layout settings if persistence is enabled\n const lsid = this.layoutSettingsID();\n if (lsid) {\n this.applyLayoutSettings(this.#layoutSettings.getSettings(lsid) as SplitViewLayoutSettings);\n }\n }\n}\n","<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 [yuvSplitAreaCover]=\"dragging()\"\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","import { NgModule } from '@angular/core';\nimport { SplitAreaDirective } from './split-area.directive';\nimport { SplitViewComponent } from './split-view.component';\n\n@NgModule({\n imports: [SplitAreaDirective, SplitViewComponent],\n exports: [SplitAreaDirective, SplitViewComponent]\n})\nexport class YuvSplitViewModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;MAOa,kBAAkB,CAAA;AAH/B,IAAA,WAAA,GAAA;AAIE,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAC,WAAgB,EAAC;QAEnC,IAAA,CAAA,IAAI,GAAG,KAAK,EAAiB;QAC7B,IAAA,CAAA,OAAO,GAAG,KAAK,EAAU;QACzB,IAAA,CAAA,OAAO,GAAG,KAAK,EAAU;QACzB,IAAA,CAAA,UAAU,GAAG,KAAK,EAAU;AAC5B,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAU,IAAI,CAAC;AAC9B,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,CAAC;QAEhC,IAAA,CAAA,cAAc,GAAG,YAAY,CAAC;YAC5B,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACzF,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE;AAC3E,SAAA,CAAC;AASH,IAAA;AAPC,IAAA,cAAc,CAAC,CAA0B,EAAA;AACvC,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;YACtB,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;YAC3B,OAAO,EAAE,CAAC,CAAC,OAAO,KAAK,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;YAC/D,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;AACtC,SAAA,CAAC;IACJ;+GArBW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;;;ACJD;;;;;;;AAOG;MAIU,uBAAuB,CAAA;AAHpC,IAAA,WAAA,GAAA;AAIE,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;AAE3B,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAU,KAAK,CAAC;AACzC,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,MAAK;YAC5B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC7C,QAAA,CAAC,CAAC;AA2BH,IAAA;AAhCC,IAAA,MAAM;AAGN,IAAA,eAAe;AAIf,IAAA,aAAa;AAEb,IAAA,YAAY,CAAC,MAAe,EAAA;AAC1B,QAAA,MAAM,EAAE,GAAgB,IAAI,CAAC,MAAM,CAAC,aAA4B;AAEhE,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS;AAC7B,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AAC3B,YAAA,IAAI,CAAC,aAAa,GAAG,SAAS;QAChC;QACA,IAAI,MAAM,EAAE;AACV,YAAA,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU;AAC9B,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,mBAAmB,EAAE;AAC/C,YAAA,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC/B;IACF;IAEA,mBAAmB,GAAA;QACjB,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAClD,QAAA,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,sBAAsB,CAAC;AAClD,QAAA,YAAY,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU;AACxC,QAAA,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK;AACjC,QAAA,YAAY,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG;AAC9B,QAAA,OAAO,YAAY;IACrB;+GAhCW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;;;ACQD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCG;MAYU,kBAAkB,CAAA;AAX/B,IAAA,WAAA,GAAA;AAYE,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAE/C,QAAA,IAAA,CAAA,UAAU,GAAG,eAAe,CAAqB,kBAAkB,CAAC;AACpE,QAAA,IAAA,CAAA,gBAAgB,GAAG,SAAS,CAAC,QAAQ,CAAiB,cAAc,CAAC;QAErE,IAAA,CAAA,cAAc,GAAoB,EAAE;AAEpC;;AAEG;AACH,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAiB,YAAY,CAAC;AAC/C,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,KAAK,UAAU,CAAC;AAC5D,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,KAAK,YAAY,CAAC;AAEhE;;AAEG;AACH,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAS,EAAE,CAAC;AAC9B;;AAEG;AACH,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAU,KAAK,CAAC;AACpC;;AAEG;QACH,IAAA,CAAA,aAAa,GAAG,KAAK,CAAU,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;QAC5D,IAAA,CAAA,QAAQ,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;AACnD;;;;;AAKG;QACH,IAAA,CAAA,gBAAgB,GAAG,KAAK,EAAU;AAClC;;AAEG;QACH,IAAA,CAAA,oBAAoB,GAAG,MAAM,EAA2B;AACxD;;AAEG;QACH,IAAA,CAAA,SAAS,GAAG,MAAM,EAAuB;AACzC;;AAEG;QACH,IAAA,CAAA,OAAO,GAAG,MAAM,EAAuB;AAEvC;;AAEG;QACH,IAAA,CAAA,WAAW,GAAG,MAAM,EAAuB;AAC3C;;;;AAIG;QACH,IAAA,CAAA,cAAc,GAAG,MAAM,EAAuB;AAE9C,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAU,KAAK,CAAC;AA2HlC,IAAA;AArLC,IAAA,eAAe;AA4Df,IAAA,WAAW,CAAC,CAAsB,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACxB;AAEA,IAAA,SAAS,CAAC,CAAsB,EAAA;AAC9B,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,KAAK,KAAI;YAC7C,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC1E,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,KAAK,CAAC;AACnC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACtB;AAEA;;;;;;;AAOG;AACH,IAAA,QAAQ,CAAC,KAAa,EAAA;QACpB,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAClF;AAEA;;;;;;;;AAQG;AACH,IAAA,QAAQ,CAAC,KAAa,EAAA;QACpB,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IACnF;AAEA;;;;;;;;AAQG;AACH,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACxF;AAEA;;;;;;;;;;;AAWG;AACH,IAAA,aAAa,CAAC,KAAa,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,CAAC,OAAO;IAC1D;;IAGA,sBAAsB,CAAC,KAAa,EAAE,OAAgB,EAAA;QACpD,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAC5E;;AAGA,IAAA,yBAAyB,CAAC,KAAa,EAAA;AACrC,QAAA,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACxF;AAEA,IAAA,qBAAqB,CAAC,KAAsB,EAAA;AAC1C,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC3B,QAAA,MAAM,cAAc,GAA4B;AAC9C,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,CAAqB,EAAE,GAAW,MAAM;AACpE,gBAAA,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;AACpB,gBAAA,IAAI,EAAE,KAAK,CAAC,GAAG;AAChB,aAAA,CAAC;SACH;AACD,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC;;AAE9C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACpC,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,EAAE,cAAc,CAAC;QACzD;IACF;AAEA;;;;;AAKG;AACH,IAAA,mBAAmB,CAAC,QAAiC,EAAA;AACnD,QAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC;YAAE;QAC7C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACtC,QAAA,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAK,CAAC;QACxD,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAA0B,EAAE,KAAa,KAAI;YACnE,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;AAC5C,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,uBAAuB,CAAC,CAAM,EAAA;QAC5B,OAAO,CAAC,IAAI,UAAU,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC;IAC7C;IAEA,eAAe,GAAA;;AAEb,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACpC,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAA4B,CAAC;QAC7F;IACF;+GArLW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAGoB,kBAAkB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACb,cAAc,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5EtE,61CAoCA,EAAA,MAAA,EAAA,CAAA,+nEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED2BY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,KAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,wBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,8BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,uBAAuB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FASxD,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAX9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,OAAA,EACjB,CAAC,YAAY,EAAE,kBAAkB,EAAE,uBAAuB,CAAC,EAAA,eAAA,EAGnD,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,uBAAuB,EAAE,cAAc;AACvC,wBAAA,gBAAgB,EAAE;AACnB,qBAAA,EAAA,QAAA,EAAA,61CAAA,EAAA,MAAA,EAAA,CAAA,+nEAAA,CAAA,EAAA;;;ME9DU,kBAAkB,CAAA;+GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAHnB,kBAAkB,EAAE,kBAAkB,CAAA,EAAA,OAAA,EAAA,CACtC,kBAAkB,EAAE,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAErC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAHC,kBAAkB,CAAA,EAAA,CAAA,CAAA;;4FAGrC,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;AACjD,oBAAA,OAAO,EAAE,CAAC,kBAAkB,EAAE,kBAAkB;AACjD,iBAAA;;;ACPD;;AAEG;;;;"}
|
|
@@ -542,6 +542,9 @@ class YuvWidgetGridComponent {
|
|
|
542
542
|
rows: cfg?.newItemHeight || -1 // default value -1 means the grid will autoposition the new item
|
|
543
543
|
};
|
|
544
544
|
}
|
|
545
|
+
if (cfg?.gridType) {
|
|
546
|
+
this.options.gridType = cfg.gridType;
|
|
547
|
+
}
|
|
545
548
|
});
|
|
546
549
|
this._editMode = signal(false);
|
|
547
550
|
/**
|