{"version":3,"file":"koobiq-components-sidebar.mjs","sources":["../../../packages/components/sidebar/sidebar-animations.ts","../../../packages/components/sidebar/sidebar.component.ts","../../../packages/components/sidebar/sidebar.component.html","../../../packages/components/sidebar/sidebar.module.ts","../../../packages/components/sidebar/koobiq-components-sidebar.ts"],"sourcesContent":["import { animate, AnimationTriggerMetadata, state, style, transition, trigger } from '@angular/animations';\n\nexport enum KbqSidebarAnimationState {\n    Opened = 'opened',\n    Closed = 'closed'\n}\n\nexport const kbqSidebarAnimations: { readonly sidebarState: AnimationTriggerMetadata } = {\n    sidebarState: trigger('state', [\n        state(\n            'opened',\n            style({\n                minWidth: '{{ openedStateMinWidth }}',\n                width: '{{ openedStateWidth }}',\n                maxWidth: '{{ openedStateMaxWidth }}'\n            }),\n            { params: { openedStateMinWidth: '', openedStateWidth: '', openedStateMaxWidth: '' } }\n        ),\n        state(\n            'closed',\n            style({\n                minWidth: '{{ closedStateWidth }}',\n                width: '{{ closedStateWidth }}',\n                maxWidth: '{{ closedStateWidth }}'\n            }),\n            { params: { closedStateWidth: '' } }\n        ),\n        transition('opened => closed', [animate('0.1s')]),\n        transition('closed => opened', [animate('0.2s')])\n    ])\n};\n","import { DOCUMENT } from '@angular/common';\nimport {\n    AfterContentInit,\n    afterNextRender,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChild,\n    Directive,\n    ElementRef,\n    EventEmitter,\n    inject,\n    Input,\n    NgZone,\n    OnDestroy,\n    Output,\n    Renderer2,\n    ViewEncapsulation\n} from '@angular/core';\nimport { isControl, isInput, isLeftBracket, isRightBracket } from '@koobiq/cdk/keycodes';\nimport { kbqSidebarAnimations, KbqSidebarAnimationState } from './sidebar-animations';\n\nexport enum SidebarPositions {\n    Left = 'left',\n    Right = 'right'\n}\n\ninterface KbqSidebarParams {\n    openedStateMinWidth: string;\n    openedStateWidth: string;\n    openedStateMaxWidth: string;\n\n    closedStateWidth: string;\n}\n\n@Directive({\n    selector: '[kbq-sidebar-opened]',\n    exportAs: 'kbqSidebarOpened',\n    host: {\n        class: 'kbq-sidebar-opened'\n    }\n})\nexport class KbqSidebarOpened {\n    @Input() minWidth: string;\n    @Input() width: string;\n    @Input() maxWidth: string;\n}\n\n@Directive({\n    selector: '[kbq-sidebar-closed]',\n    exportAs: 'kbqSidebarClosed',\n    host: {\n        class: 'kbq-sidebar-closed'\n    }\n})\nexport class KbqSidebarClosed {\n    @Input() width: string;\n}\n\n@Component({\n    selector: 'kbq-sidebar',\n    exportAs: 'kbqSidebar',\n    templateUrl: 'sidebar.component.html',\n    styleUrls: ['./sidebar.scss'],\n    host: {\n        class: 'kbq-sidebar',\n        '[@state]': `{\n            value: animationState,\n            params: params\n        }`,\n        '(@state.start)': 'onAnimationStart()',\n        '(@state.done)': 'onAnimationDone()'\n    },\n    animations: [kbqSidebarAnimations.sidebarState],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class KbqSidebar implements OnDestroy, AfterContentInit {\n    /**\n     * @docs-private\n     */\n    protected readonly document = inject<Document>(DOCUMENT);\n    private readonly renderer = inject(Renderer2);\n    private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n    @Input()\n    get opened(): boolean {\n        return this._opened;\n    }\n\n    set opened(value: boolean) {\n        if (this._opened) {\n            this.saveWidth();\n        }\n\n        this._opened = value;\n    }\n\n    private _opened: boolean = true;\n\n    @Input() position: SidebarPositions;\n\n    /**\n     * @docs-private\n     */\n    params: KbqSidebarParams = {\n        openedStateWidth: 'inherit',\n        openedStateMinWidth: 'inherit',\n        openedStateMaxWidth: 'inherit',\n\n        closedStateWidth: '32px'\n    };\n\n    @Output() readonly stateChanged: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n    /**\n     * @docs-private\n     */\n    @ContentChild(KbqSidebarOpened, { static: false }) openedContent: KbqSidebarOpened;\n\n    /**\n     * @docs-private\n     */\n    @ContentChild(KbqSidebarClosed, { static: false }) closedContent: KbqSidebarClosed;\n\n    /**\n     * @docs-private\n     */\n    get animationState(): KbqSidebarAnimationState {\n        return this._opened ? KbqSidebarAnimationState.Opened : KbqSidebarAnimationState.Closed;\n    }\n\n    /**\n     * @docs-private\n     */\n    internalState: boolean = true;\n\n    private unbindKeydownListener: ReturnType<Renderer2['listen']> | null = null;\n\n    constructor(\n        private ngZone: NgZone,\n        private elementRef: ElementRef\n    ) {\n        afterNextRender(() => this.registerKeydownListener());\n    }\n\n    ngAfterContentInit(): void {\n        this.params = {\n            openedStateWidth: this.openedContent.width || 'inherit',\n            openedStateMinWidth: this.openedContent.minWidth || 'inherit',\n            openedStateMaxWidth: this.openedContent.maxWidth || 'inherit',\n\n            closedStateWidth: this.closedContent.width || '32px'\n        };\n    }\n\n    ngOnDestroy(): void {\n        this.unRegisterKeydownListener();\n    }\n\n    toggle(): void {\n        this.opened = !this.opened;\n        this.changeDetectorRef.markForCheck();\n    }\n\n    /**\n     * @docs-private\n     */\n    onAnimationStart() {\n        if (this._opened) {\n            this.internalState = this._opened;\n        }\n    }\n\n    /**\n     * @docs-private\n     */\n    onAnimationDone() {\n        this.internalState = this._opened;\n\n        this.stateChanged.emit(this._opened);\n    }\n\n    private registerKeydownListener(): void {\n        this.ngZone.runOutsideAngular(() => {\n            this.unbindKeydownListener ||= this.renderer.listen(this.document, 'keypress', (event) =>\n                this.handleKeydown(event)\n            );\n        });\n    }\n\n    private unRegisterKeydownListener(): void {\n        if (this.unbindKeydownListener) {\n            this.unbindKeydownListener();\n            this.unbindKeydownListener = null;\n        }\n    }\n\n    private handleKeydown(event: KeyboardEvent): void {\n        if (isControl(event) || isInput(event)) return;\n\n        if (\n            (this.position === SidebarPositions.Left && isLeftBracket(event)) ||\n            (this.position === SidebarPositions.Right && isRightBracket(event))\n        ) {\n            this.toggle();\n        }\n    }\n\n    private saveWidth() {\n        this.params.openedStateWidth = `${this.elementRef.nativeElement.offsetWidth}px`;\n    }\n}\n","@if (internalState) {\n    <ng-content select=\"[kbq-sidebar-opened]\" />\n} @else {\n    <ng-content select=\"[kbq-sidebar-closed]\" />\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { KbqSidebar, KbqSidebarClosed, KbqSidebarOpened } from './sidebar.component';\n\n@NgModule({\n    imports: [CommonModule, KbqSidebarClosed, KbqSidebarOpened, KbqSidebar],\n    exports: [\n        KbqSidebarClosed,\n        KbqSidebarOpened,\n        KbqSidebar\n    ]\n})\nexport class KbqSidebarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}