{"version":3,"file":"koobiq-components-content-panel.mjs","sources":["../../../packages/components/content-panel/content-panel.ts","../../../packages/components/content-panel/module.ts","../../../packages/components/content-panel/koobiq-components-content-panel.ts"],"sourcesContent":["import { animate, state, style, transition, trigger } from '@angular/animations';\nimport {\n    afterNextRender,\n    booleanAttribute,\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    contentChild,\n    DestroyRef,\n    Directive,\n    ElementRef,\n    inject,\n    input,\n    numberAttribute,\n    output,\n    Renderer2,\n    signal,\n    viewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { KbqButtonModule, KbqButtonStyles } from '@koobiq/components/button';\nimport { KbqAnimationCurves, KbqAnimationDurations, KbqComponentColors } from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqResizable, KbqResizer, KbqResizerSizeChangeEvent } from '@koobiq/components/resizer';\nimport { KbqScrollbar, KbqScrollbarModule } from '@koobiq/components/scrollbar';\nimport { SizeL } from '@koobiq/design-tokens';\n\nconst KBQ_CONTENT_PANEL_CONTAINER_CONTENT_ANIMATION = trigger('contentAnimation', [\n    state('false', style({ 'margin-right': 0 })),\n    state('true', style({ 'margin-right': '{{ marginRight }}px' }), { params: { marginRight: 0 } }),\n    transition('true => false', [animate(`${KbqAnimationDurations.Entering} ${KbqAnimationCurves.AccelerationCurve}`)]),\n    transition('false => true', [animate(`${KbqAnimationDurations.Exiting} ${KbqAnimationCurves.DecelerationCurve}`)])\n]);\n\nconst KBQ_CONTENT_PANEL_CONTAINER_PANEL_ANIMATION = trigger('panelAnimation', [\n    transition(':enter', [\n        style({ transform: 'translateX(100%)' }),\n        animate(\n            `${KbqAnimationDurations.Entering} ${KbqAnimationCurves.DecelerationCurve}`,\n            style({ transform: 'translateX(0%)' })\n        )\n    ]),\n    transition(':leave', [\n        animate(\n            `${KbqAnimationDurations.Exiting} ${KbqAnimationCurves.AccelerationCurve}`,\n            style({ transform: 'translateX(100%)' })\n        )\n    ])\n]);\n\n@Component({\n    selector: 'kbq-content-panel-aside',\n    template: `\n        <ng-content />\n    `,\n    styleUrl: './content-panel-aside.scss',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    exportAs: 'kbqContentPanelAside',\n    host: {\n        class: 'kbq-content-panel-aside'\n    }\n})\nexport class KbqContentPanelAside {}\n\n@Directive({\n    selector: '[kbqContentPanelHeaderTitle]',\n    exportAs: 'kbqContentPanelHeaderTitle',\n    host: {\n        class: 'kbq-content-panel-header-title'\n    }\n})\nexport class KbqContentPanelHeaderTitle {}\n\n@Directive({\n    selector: '[kbqContentPanelHeaderActions]',\n    exportAs: 'kbqContentPanelHeaderActions',\n    host: {\n        class: 'kbq-content-panel-header-actions'\n    }\n})\nexport class KbqContentPanelHeaderActions {}\n\n@Component({\n    selector: 'kbq-content-panel-header',\n    imports: [KbqButtonModule, KbqIconModule],\n    template: `\n        <div class=\"kbq-content-panel-header__wrapper\">\n            <ng-content select=\"[kbqContentPanelHeaderTitle]\" />\n            <div class=\"kbq-content-panel-header__actions\">\n                <ng-content select=\"[kbqContentPanelHeaderActions]\" />\n                @if (!contentPanelContainer.disableClose()) {\n                    <button\n                        class=\"kbq-content-panel-header__close-button\"\n                        kbq-button\n                        type=\"button\"\n                        [color]=\"componentColors.Contrast\"\n                        [kbqStyle]=\"buttonStyles.Transparent\"\n                        (click)=\"contentPanelContainer.close()\"\n                    >\n                        <i kbq-icon=\"kbq-xmark_16\"></i>\n                    </button>\n                }\n            </div>\n        </div>\n        <ng-content />\n    `,\n    styleUrl: './content-panel-header.scss',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: 'kbq-content-panel-header'\n    }\n})\nexport class KbqContentPanelHeader {\n    /**\n     * @docs-private\n     */\n    protected readonly contentPanelContainer = inject(KbqContentPanelContainer);\n    /**\n     * @docs-private\n     */\n    protected readonly buttonStyles = KbqButtonStyles;\n    /**\n     * @docs-private\n     */\n    protected readonly componentColors = KbqComponentColors;\n}\n\n@Component({\n    selector: 'kbq-content-panel-body',\n    imports: [KbqScrollbarModule],\n    template: `\n        <kbq-scrollbar class=\"kbq-content-panel-body__content\">\n            <ng-content />\n        </kbq-scrollbar>\n    `,\n    styleUrl: './content-panel-body.scss',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    exportAs: 'kbqContentPanelBody',\n    host: {\n        class: 'kbq-content-panel-body'\n    }\n})\nexport class KbqContentPanelBody {\n    /**\n     * @docs-private\n     */\n    readonly scrollbar = viewChild.required(KbqScrollbar);\n}\n\n@Component({\n    selector: 'kbq-content-panel-footer',\n    template: `\n        <ng-content />\n    `,\n    styleUrl: './content-panel-footer.scss',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: 'kbq-content-panel-footer'\n    }\n})\nexport class KbqContentPanelFooter {}\n\n@Component({\n    selector: 'kbq-content-panel',\n    host: {\n        class: 'kbq-content-panel'\n    },\n    template: `\n        <ng-content select=\"kbq-content-panel-aside\" />\n        <div class=\"kbq-content-panel__content\">\n            <ng-content select=\"kbq-content-panel-header\" />\n            <ng-content select=\"kbq-content-panel-body\" />\n            <ng-content select=\"kbq-content-panel-footer\" />\n        </div>\n    `,\n    styleUrls: [\n        './content-panel-tokens.scss',\n        './content-panel.scss'\n    ],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class KbqContentPanel {\n    private readonly destroyRef = inject(DestroyRef);\n    private readonly renderer = inject(Renderer2);\n    private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n    private readonly contentPanelBody = contentChild(KbqContentPanelBody);\n\n    constructor() {\n        afterNextRender(() => this.handleContentBodyScroll());\n    }\n\n    private handleContentBodyScroll(): void {\n        const contentPanelBody = this.contentPanelBody();\n\n        if (!contentPanelBody) return;\n\n        contentPanelBody\n            .scrollbar()\n            .onScroll.pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe(([instance]) => {\n                const { scrollTop, scrollHeight, clientHeight } = instance.elements().scrollOffsetElement;\n\n                this.setupContentHeaderShadow(scrollTop >= 1);\n                this.setupContentFooterShadow(scrollHeight - (scrollTop + clientHeight) >= 1);\n            });\n    }\n\n    private setupContentHeaderShadow(shouldShowShadow: boolean): void {\n        const className = 'kbq-content-panel_header-with-shadow';\n\n        if (shouldShowShadow) {\n            this.renderer.addClass(this.elementRef.nativeElement, className);\n        } else {\n            this.renderer.removeClass(this.elementRef.nativeElement, className);\n        }\n    }\n\n    private setupContentFooterShadow(shouldShowShadow: boolean): void {\n        const className = 'kbq-content-panel_footer-with-shadow';\n\n        if (shouldShowShadow) {\n            this.renderer.addClass(this.elementRef.nativeElement, className);\n        } else {\n            this.renderer.removeClass(this.elementRef.nativeElement, className);\n        }\n    }\n}\n\n@Component({\n    selector: 'kbq-content-panel-container',\n    imports: [KbqResizable, KbqResizer, KbqScrollbarModule],\n    template: `\n        <kbq-scrollbar class=\"kbq-content-panel-container__content\" [@contentAnimation]=\"contentAnimationState()\">\n            <ng-content />\n        </kbq-scrollbar>\n        @if (openedState()) {\n            <div\n                @panelAnimation\n                class=\"kbq-content-panel-container__panel\"\n                kbqResizable\n                [style.min-width.px]=\"minWidth()\"\n                [style.width.px]=\"widthState()\"\n                [style.max-width.px]=\"maxWidth()\"\n            >\n                @if (!disableResizer()) {\n                    <div\n                        class=\"kbq-content-panel-container__panel-resizer\"\n                        [kbqResizer]=\"[-1, 0]\"\n                        (sizeChange)=\"handleResizerSizeChange($event)\"\n                        (dblclick)=\"handleResizerDBLClick($event)\"\n                    ></div>\n                }\n                <ng-content select=\"kbq-content-panel\" />\n            </div>\n        }\n    `,\n    styleUrl: './content-panel-container.scss',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    exportAs: 'kbqContentPanelContainer',\n    host: {\n        class: 'kbq-content-panel-container',\n        '[class.kbq-content-panel-container__opened]': 'openedState()',\n        '(keydown.escape)': 'handleEscapeKeydown($event)'\n    },\n    animations: [\n        KBQ_CONTENT_PANEL_CONTAINER_CONTENT_ANIMATION,\n        KBQ_CONTENT_PANEL_CONTAINER_PANEL_ANIMATION\n    ]\n})\nexport class KbqContentPanelContainer {\n    /**\n     * Whether the content panel is opened.\n     *\n     * @default false\n     */\n    readonly opened = input(false, { transform: booleanAttribute });\n\n    /**\n     * Emits event when the content panel opened state is changed.\n     */\n    readonly openedChange = output<boolean>();\n\n    /**\n     * Whether the content panel can not be closed by clicking on the close button or pressing the ESCAPE key.\n     *\n     * @default false\n     */\n    readonly disableClose = input(false, { transform: booleanAttribute });\n\n    /**\n     * Whether the content panel can not be closed by pressing the ESCAPE key.\n     */\n    readonly disableCloseByEscape = input(this.disableClose(), { transform: booleanAttribute });\n\n    /**\n     * Whether the content panel resizer is disabled.\n     */\n    readonly disableResizer = input(false, { transform: booleanAttribute });\n\n    /**\n     * Minimum width of the `KbqContentPanel`.\n     *\n     * @default 480\n     */\n    readonly minWidth = input(480, { transform: numberAttribute });\n\n    /**\n     * Width of the `KbqContentPanel`.\n     *\n     * @default 640\n     */\n    readonly width = input(640, { transform: numberAttribute });\n\n    /**\n     * Max width of the `KbqContentPanel`.\n     *\n     * @default 800\n     */\n    readonly maxWidth = input(800, { transform: numberAttribute });\n\n    /**\n     * @docs-private\n     */\n    protected readonly openedState = signal(this.opened());\n\n    /**\n     * @docs-private\n     */\n    protected readonly widthState = signal(this.width());\n\n    /**\n     * Whether the content panel is opened.\n     */\n    readonly isOpened = computed(() => this.openedState());\n\n    /**\n     * @docs-private\n     */\n    protected readonly contentAnimationState = computed(() => {\n        return {\n            value: this.openedState(),\n            params: { marginRight: this.widthState() + (parseInt(SizeL) || 16) }\n        };\n    });\n\n    constructor() {\n        // TODO: Should use linked signal\n        toObservable(this.opened)\n            .pipe(takeUntilDestroyed())\n            .subscribe((opened) => {\n                this.openedState.set(opened);\n            });\n\n        // TODO: Should use linked signal\n        toObservable(this.width)\n            .pipe(takeUntilDestroyed())\n            .subscribe((width) => {\n                this.widthState.set(width);\n            });\n    }\n\n    /**\n     * Toggles the content panel opened state.\n     */\n    toggle(): void {\n        this.openedState.update((state) => !state);\n        this.openedChange.emit(this.openedState());\n    }\n\n    /**\n     * Opens the content panel.\n     */\n    open(): void {\n        if (this.openedState()) return;\n\n        this.openedState.set(true);\n        this.openedChange.emit(this.openedState());\n    }\n\n    /**\n     * Closes the content panel.\n     */\n    close(): void {\n        if (!this.openedState()) return;\n\n        this.openedState.set(false);\n        this.openedChange.emit(this.openedState());\n    }\n\n    /**\n     * @docs-private\n     */\n    protected handleResizerDBLClick(event: MouseEvent): void {\n        event.preventDefault();\n\n        this.widthState.set(this.width());\n    }\n\n    /**\n     * @docs-private\n     */\n    protected handleResizerSizeChange({ width }: KbqResizerSizeChangeEvent): void {\n        if (width > this.maxWidth()) return this.widthState.set(this.maxWidth());\n        if (width < this.minWidth()) return this.widthState.set(this.minWidth());\n\n        this.widthState.set(width);\n    }\n\n    /**\n     * @docs-private\n     */\n    protected handleEscapeKeydown(event: KeyboardEvent): void {\n        if (!this.openedState() || this.disableClose() || this.disableCloseByEscape()) return;\n\n        event.preventDefault();\n        event.stopPropagation();\n\n        this.close();\n    }\n}\n","import { NgModule } from '@angular/core';\nimport {\n    KbqContentPanel,\n    KbqContentPanelAside,\n    KbqContentPanelBody,\n    KbqContentPanelContainer,\n    KbqContentPanelFooter,\n    KbqContentPanelHeader,\n    KbqContentPanelHeaderActions,\n    KbqContentPanelHeaderTitle\n} from './content-panel';\n\nconst COMPONENTS = [\n    KbqContentPanelContainer,\n    KbqContentPanel,\n    KbqContentPanelAside,\n    KbqContentPanelHeader,\n    KbqContentPanelHeaderTitle,\n    KbqContentPanelHeaderActions,\n    KbqContentPanelBody,\n    KbqContentPanelFooter\n];\n\n@NgModule({\n    imports: COMPONENTS,\n    exports: COMPONENTS\n})\nexport class KbqContentPanelModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}