{"version":3,"file":"koobiq-components-splitter.mjs","sources":["../../../packages/components/splitter/splitter.component.ts","../../../packages/components/splitter/splitter.component.html","../../../packages/components/splitter/splitter.module.ts","../../../packages/components/splitter/koobiq-components-splitter.ts"],"sourcesContent":["import { coerceBooleanProperty, coerceCssPixelValue, coerceNumberProperty } from '@angular/cdk/coercion';\nimport {\n    AfterContentInit,\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChildren,\n    Directive,\n    ElementRef,\n    EventEmitter,\n    Inject,\n    Input,\n    NgZone,\n    OnDestroy,\n    OnInit,\n    Output,\n    QueryList,\n    Renderer2,\n    ViewChild,\n    ViewChildren,\n    ViewEncapsulation,\n    forwardRef,\n    inject\n} from '@angular/core';\nimport { KBQ_WINDOW } from '@koobiq/components/core';\nimport { Subscription } from 'rxjs';\n\ninterface IArea {\n    area: KbqSplitterAreaDirective;\n    index: number;\n    order: number;\n    initialSize: number;\n}\n\ninterface IPoint {\n    x: number;\n    y: number;\n}\n\nconst enum StyleProperty {\n    Flex = 'flex',\n    FlexBasis = 'flex-basis',\n    FlexDirection = 'flex-direction',\n    Height = 'height',\n    MaxWidth = 'max-width',\n    MinHeight = 'min-height',\n    MinWidth = 'minWidth',\n    OffsetHeight = 'offsetHeight',\n    OffsetWidth = 'offsetWidth',\n    Order = 'order',\n    Width = 'width',\n    Top = 'top',\n    Left = 'left',\n    Cursor = 'cursor'\n}\n\nexport enum Direction {\n    Horizontal = 'horizontal',\n    Vertical = 'vertical'\n}\n\n@Directive({\n    selector: 'kbq-gutter',\n    host: {\n        class: 'kbq-gutter',\n        '[class.kbq-gutter_vertical]': 'isVertical',\n        '[class.kbq-gutter_dragged]': 'dragged',\n        '(mousedown)': 'dragged = true'\n    }\n})\nexport class KbqGutterDirective implements OnInit {\n    @Input()\n    get direction(): Direction {\n        return this._direction;\n    }\n\n    set direction(direction: Direction) {\n        this._direction = direction;\n    }\n\n    private _direction: Direction = Direction.Vertical;\n\n    @Input()\n    get order(): number {\n        return this._order;\n    }\n\n    set order(order: number) {\n        this._order = coerceNumberProperty(order);\n    }\n\n    private _order: number = 0;\n\n    @Input()\n    get size(): number {\n        return this._size;\n    }\n\n    set size(size: number) {\n        this._size = coerceNumberProperty(size);\n    }\n\n    private _size: number = 6;\n\n    get isVertical(): boolean {\n        return this._direction === Direction.Vertical;\n    }\n\n    dragged: boolean = false;\n\n    constructor(\n        private elementRef: ElementRef<HTMLElement>,\n        private renderer: Renderer2\n    ) {}\n\n    ngOnInit(): void {\n        this.setStyle(StyleProperty.FlexBasis, coerceCssPixelValue(this.size));\n        this.setStyle(this.isVertical ? StyleProperty.Height : StyleProperty.Width, coerceCssPixelValue(this.size));\n        this.setStyle(StyleProperty.Order, this.order);\n\n        if (!this.isVertical) {\n            this.setStyle(StyleProperty.Height, '100%');\n        }\n\n        // fix IE issue with gutter icon. flex-direction is required for flex alignment options\n        this.setStyle(StyleProperty.FlexDirection, this.isVertical ? 'row' : 'column');\n    }\n\n    getPosition(): IPoint {\n        return {\n            x: this.elementRef.nativeElement.offsetLeft,\n            y: this.elementRef.nativeElement.offsetTop\n        };\n    }\n\n    private setStyle(property: StyleProperty, value: string | number): void {\n        this.renderer.setStyle(this.elementRef.nativeElement, property, value);\n    }\n}\n\n@Directive({\n    selector: 'kbq-gutter-ghost',\n    host: {\n        class: 'kbq-gutter-ghost',\n        '[class.kbq-gutter-ghost_vertical]': 'isVertical',\n        '[class.kbq-gutter-ghost_visible]': 'visible'\n    }\n})\nexport class KbqGutterGhostDirective {\n    @Input() visible: boolean;\n\n    @Input()\n    get x(): number {\n        return this._x;\n    }\n\n    set x(x: number) {\n        this._x = x;\n        this.setStyle(StyleProperty.Left, coerceCssPixelValue(x));\n    }\n\n    private _x: number = 0;\n\n    @Input()\n    get y(): number {\n        return this._y;\n    }\n\n    set y(y: number) {\n        this._y = y;\n        this.setStyle(StyleProperty.Top, coerceCssPixelValue(y));\n    }\n\n    private _y: number = 0;\n\n    @Input()\n    get direction(): Direction {\n        return this._direction;\n    }\n\n    set direction(direction: Direction) {\n        this._direction = direction;\n        this.updateDimensions();\n    }\n\n    private _direction: Direction = Direction.Vertical;\n\n    @Input()\n    get size(): number {\n        return this._size;\n    }\n\n    set size(size: number) {\n        this._size = coerceNumberProperty(size);\n        this.updateDimensions();\n    }\n\n    private _size: number = 6;\n\n    get isVertical(): boolean {\n        return this.direction === Direction.Vertical;\n    }\n\n    constructor(\n        private elementRef: ElementRef<HTMLElement>,\n        private renderer: Renderer2\n    ) {}\n\n    private updateDimensions(): void {\n        this.setStyle(this.isVertical ? StyleProperty.Width : StyleProperty.Height, '100%');\n        this.setStyle(this.isVertical ? StyleProperty.Height : StyleProperty.Width, coerceCssPixelValue(this.size));\n    }\n\n    private setStyle(property: StyleProperty, value: string | number): void {\n        this.renderer.setStyle(this.elementRef.nativeElement, property, value);\n    }\n}\n\n@Component({\n    selector: 'kbq-splitter',\n    imports: [KbqGutterDirective, KbqGutterGhostDirective],\n    templateUrl: './splitter.component.html',\n    styleUrls: ['splitter.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    exportAs: 'kbqSplitter',\n    host: {\n        class: 'kbq-splitter'\n    },\n    preserveWhitespaces: false\n})\nexport class KbqSplitterComponent implements OnInit, AfterContentInit, OnDestroy {\n    @Output() readonly gutterPositionChange: EventEmitter<void> = new EventEmitter<void>();\n\n    areas: IArea[] = [];\n\n    @ViewChildren(KbqGutterDirective) gutters: QueryList<KbqGutterDirective>;\n    @ViewChild(KbqGutterGhostDirective) ghost: KbqGutterGhostDirective;\n\n    @ContentChildren(forwardRef(() => KbqSplitterAreaDirective)) areaRefs: QueryList<KbqSplitterAreaDirective>;\n\n    get isDragging(): boolean {\n        return this._isDragging;\n    }\n    private _isDragging: boolean = false;\n\n    private readonly areaPositionDivider: number = 2;\n    private readonly listeners: (() => void)[] = [];\n\n    private areasChangeSubscription: Subscription = Subscription.EMPTY;\n\n    @Input()\n    get hideGutters(): boolean {\n        return this._hideGutters;\n    }\n\n    set hideGutters(value: boolean) {\n        this._hideGutters = coerceBooleanProperty(value);\n    }\n\n    private _hideGutters: boolean = false;\n\n    @Input()\n    get direction(): Direction {\n        return this._direction;\n    }\n\n    set direction(direction: Direction) {\n        this._direction = direction;\n    }\n\n    private _direction: Direction;\n\n    @Input()\n    get disabled(): boolean {\n        return this._disabled;\n    }\n\n    set disabled(disabled: boolean) {\n        this._disabled = coerceBooleanProperty(disabled);\n    }\n\n    private _disabled: boolean = false;\n\n    @Input()\n    get useGhost(): boolean {\n        return this._useGhost;\n    }\n\n    set useGhost(useGhost: boolean) {\n        this._useGhost = coerceBooleanProperty(useGhost);\n    }\n\n    private _useGhost: boolean = false;\n\n    @Input()\n    get gutterSize(): number {\n        return this._gutterSize;\n    }\n\n    set gutterSize(gutterSize: number) {\n        const size = coerceNumberProperty(gutterSize);\n\n        this._gutterSize = size > 0 ? size : this.gutterSize;\n    }\n\n    private _gutterSize: number = 6;\n\n    get resizing(): boolean {\n        return this._resizing;\n    }\n\n    private _resizing: boolean = false;\n\n    constructor(\n        public elementRef: ElementRef<HTMLElement>,\n        public changeDetectorRef: ChangeDetectorRef,\n        private ngZone: NgZone,\n        private renderer: Renderer2\n    ) {}\n\n    addArea(area: KbqSplitterAreaDirective): void {\n        this.areas.push(this.mapAndOrderArea(area, this.areas.length));\n        this.changeDetectorRef.detectChanges();\n    }\n\n    ngOnInit(): void {\n        if (!this.direction) {\n            this.direction = Direction.Horizontal;\n        }\n\n        this.setStyle(StyleProperty.FlexDirection, this.isVertical() ? 'column' : 'row');\n    }\n\n    ngAfterContentInit() {\n        this.areasChangeSubscription = this.areaRefs.changes.subscribe((data: QueryList<KbqSplitterAreaDirective>) => {\n            this.areas = data.map(this.mapAndOrderArea);\n            this.changeDetectorRef.markForCheck();\n        });\n    }\n\n    ngOnDestroy() {\n        this.areasChangeSubscription.unsubscribe();\n    }\n\n    onMouseDown(event: MouseEvent, leftAreaIndex: number, rightAreaIndex: number) {\n        if (this.disabled) {\n            return;\n        }\n\n        event.preventDefault();\n\n        const startPoint: IPoint = {\n            x: event.screenX,\n            y: event.screenY\n        };\n\n        const leftArea = this.areas[leftAreaIndex];\n        const rightArea = this.areas[rightAreaIndex];\n\n        leftArea.initialSize = leftArea.area.getSize();\n        rightArea.initialSize = rightArea.area.getSize();\n\n        let currentGutter: KbqGutterDirective | undefined;\n\n        if (this.useGhost) {\n            const gutterOrder = leftAreaIndex * 2 + 1;\n\n            currentGutter = this.gutters.find((gutter: KbqGutterDirective) => gutter.order === gutterOrder);\n\n            if (currentGutter) {\n                const gutterPosition = currentGutter.getPosition();\n\n                this.ghost.direction = currentGutter.direction;\n                this.ghost.size = currentGutter.size;\n                this.ghost.x = gutterPosition.x;\n                this.ghost.y = gutterPosition.y;\n\n                this.ghost.visible = true;\n                this.setStyle(\n                    StyleProperty.Cursor,\n                    currentGutter.direction === Direction.Vertical ? 'row-resize' : 'col-resize'\n                );\n            }\n        } else {\n            this.areas.forEach((item) => {\n                const size = item.area.getSize();\n\n                item.area.disableFlex();\n                item.area.setSize(size);\n            });\n        }\n\n        this.listeners.push(\n            this.renderer.listen('document', 'mouseup', () => this.onMouseUp(leftArea, rightArea, currentGutter))\n        );\n\n        this.ngZone.runOutsideAngular(() => {\n            this.listeners.push(\n                this.renderer.listen('document', 'mousemove', (e: MouseEvent) =>\n                    this.onMouseMove(e, startPoint, leftArea, rightArea, currentGutter)\n                )\n            );\n        });\n\n        this._isDragging = true;\n    }\n\n    removeArea(area: KbqSplitterAreaDirective): void {\n        let indexToRemove: number = -1;\n\n        this.areas.some((item, index) => {\n            if (item.area === area) {\n                indexToRemove = index;\n\n                return true;\n            }\n\n            return false;\n        });\n\n        if (indexToRemove === -1) {\n            return;\n        }\n\n        this.areas.splice(indexToRemove, 1);\n    }\n\n    isVertical(): boolean {\n        return this.direction === Direction.Vertical;\n    }\n\n    private mapAndOrderArea = (area: KbqSplitterAreaDirective, index: number): IArea => {\n        const order = index * this.areaPositionDivider;\n\n        area.setOrder(order);\n\n        return {\n            area,\n            index,\n            order,\n            initialSize: area.getSize()\n        };\n    };\n\n    private updateGutter(): void {\n        this.gutters.forEach((gutter) => {\n            if (gutter.dragged) {\n                gutter.dragged = false;\n\n                this.changeDetectorRef.detectChanges();\n            }\n        });\n    }\n\n    private onMouseMove(\n        event: MouseEvent,\n        startPoint: IPoint,\n        leftArea: IArea,\n        rightArea: IArea,\n        currentGutter: KbqGutterDirective | undefined\n    ) {\n        if (!this.isDragging || this.disabled) {\n            return;\n        }\n\n        const endPoint: IPoint = {\n            x: event.screenX,\n            y: event.screenY\n        };\n\n        const offset = this.isVertical() ? startPoint.y - endPoint.y : startPoint.x - endPoint.x;\n\n        if (this.useGhost && currentGutter) {\n            const gutterPosition = currentGutter.getPosition();\n            const leftPos = leftArea.area.getPosition();\n            const rightPos = rightArea.area.getPosition();\n            const rightMin = rightArea.area.getMinSize() || 0;\n            const leftMin = leftArea.area.getMinSize() || 0;\n\n            const key = this.isVertical() ? 'y' : 'x';\n\n            const minPos = leftPos[key] - leftMin;\n            const maxPos = rightPos[key] + (rightArea.area.getSize() || 0) - rightMin - currentGutter.size;\n            const newPos = gutterPosition[key] - offset;\n\n            this.ghost[key] = newPos < minPos ? minPos : Math.min(newPos, maxPos);\n        } else {\n            this.resizeAreas(leftArea, rightArea, offset);\n        }\n    }\n\n    private resizeAreas(leftArea: IArea, rightArea: IArea, sizeOffset: number): void {\n        const newLeftAreaSize = leftArea.initialSize - sizeOffset;\n        const newRightAreaSize = rightArea.initialSize + sizeOffset;\n\n        const minLeftAreaSize = leftArea.area.getMinSize();\n        const minRightAreaSize = rightArea.area.getMinSize();\n\n        if (newLeftAreaSize < minLeftAreaSize || newRightAreaSize < minRightAreaSize) {\n            return;\n        } else if (newLeftAreaSize <= 0) {\n            leftArea.area.setSize(0);\n            rightArea.area.setSize(rightArea.initialSize + leftArea.initialSize);\n        } else if (newRightAreaSize <= 0) {\n            leftArea.area.setSize(rightArea.initialSize + leftArea.initialSize);\n            rightArea.area.setSize(0);\n        } else {\n            leftArea.area.setSize(newLeftAreaSize);\n            rightArea.area.setSize(newRightAreaSize);\n        }\n    }\n\n    private onMouseUp(leftArea: IArea, rightArea: IArea, currentGutter: KbqGutterDirective | undefined) {\n        while (this.listeners.length > 0) {\n            const unsubscribe = this.listeners.pop();\n\n            if (unsubscribe) {\n                unsubscribe();\n            }\n        }\n\n        if (this.useGhost && currentGutter) {\n            const gutterPosition = currentGutter.getPosition();\n            const offset =\n                this.ghost.direction === Direction.Vertical\n                    ? gutterPosition.y - this.ghost.y\n                    : gutterPosition.x - this.ghost.x;\n\n            this.resizeAreas(leftArea, rightArea, offset);\n            this.ghost.visible = false;\n            this.setStyle(StyleProperty.Cursor, 'unset');\n        }\n\n        this._isDragging = false;\n\n        this.updateGutter();\n\n        this.gutterPositionChange.emit();\n\n        this.changeDetectorRef.markForCheck();\n    }\n\n    private setStyle(property: StyleProperty, value: string | number) {\n        this.renderer.setStyle(this.elementRef.nativeElement, property, value);\n    }\n}\n\n@Directive({\n    selector: '[kbq-splitter-area]',\n    host: {\n        class: 'kbq-splitter-area',\n        '[class.kbq-splitter-area_resizing]': 'isResizing()'\n    }\n})\nexport class KbqSplitterAreaDirective implements AfterViewInit, OnDestroy {\n    @Output() readonly sizeChange: EventEmitter<number> = new EventEmitter<number>();\n\n    private readonly window = inject(KBQ_WINDOW);\n\n    constructor(\n        private elementRef: ElementRef<HTMLElement>,\n        private renderer: Renderer2,\n        @Inject(forwardRef(() => KbqSplitterComponent)) private splitter: KbqSplitterComponent\n    ) {}\n\n    isResizing(): boolean {\n        return this.splitter.isDragging;\n    }\n\n    disableFlex(): void {\n        this.renderer.removeStyle(this.elementRef.nativeElement, 'flex');\n    }\n\n    ngAfterViewInit() {\n        this.splitter.addArea(this);\n\n        this.removeStyle(StyleProperty.MaxWidth);\n\n        if (this.splitter.direction === Direction.Vertical) {\n            this.setStyle(StyleProperty.Width, '100%');\n            this.removeStyle(StyleProperty.Height);\n        } else {\n            this.setStyle(StyleProperty.Height, '100%');\n            this.removeStyle(StyleProperty.Width);\n        }\n\n        this.splitter.gutterPositionChange.subscribe(this.emitSizeChange);\n    }\n\n    ngOnDestroy(): void {\n        this.splitter.removeArea(this);\n    }\n\n    setOrder(order: number): void {\n        this.setStyle(StyleProperty.Order, order);\n    }\n\n    setSize(size: number): void {\n        if (isNaN(size)) {\n            return;\n        }\n\n        this.setStyle(this.getSizeProperty(), coerceCssPixelValue(coerceNumberProperty(size)));\n    }\n\n    getSize(): number {\n        return this.elementRef.nativeElement[this.getOffsetSizeProperty()];\n    }\n\n    getPosition(): IPoint {\n        return {\n            x: this.elementRef.nativeElement.offsetLeft,\n            y: this.elementRef.nativeElement.offsetTop\n        };\n    }\n\n    getMinSize(): number {\n        const styles = this.window.getComputedStyle(this.elementRef.nativeElement);\n\n        return parseFloat(styles[this.getMinSizeProperty()]);\n    }\n\n    private isVertical(): boolean {\n        return this.splitter.direction === Direction.Vertical;\n    }\n\n    private getMinSizeProperty(): StyleProperty {\n        return this.isVertical() ? StyleProperty.MinHeight : StyleProperty.MinWidth;\n    }\n\n    private getOffsetSizeProperty(): StyleProperty {\n        return this.isVertical() ? StyleProperty.OffsetHeight : StyleProperty.OffsetWidth;\n    }\n\n    private getSizeProperty(): StyleProperty {\n        return this.isVertical() ? StyleProperty.Height : StyleProperty.Width;\n    }\n\n    private setStyle(style: StyleProperty, value: string | number) {\n        this.renderer.setStyle(this.elementRef.nativeElement, style, value);\n    }\n\n    private removeStyle(style: StyleProperty) {\n        this.renderer.removeStyle(this.elementRef.nativeElement, style);\n    }\n\n    private emitSizeChange = () => {\n        this.sizeChange.emit(this.getSize());\n    };\n}\n","<ng-content />\n\n@for (area of areas; track area) {\n    @if (!$last) {\n        <kbq-gutter\n            [attr.disabled]=\"disabled || null\"\n            [direction]=\"direction\"\n            [order]=\"$index * 2 + 1\"\n            [size]=\"gutterSize\"\n            [style.display]=\"hideGutters ? 'none' : 'flex'\"\n            (mousedown)=\"onMouseDown($event, $index, $index + 1)\"\n        />\n    }\n}\n\n@if (useGhost) {\n    <kbq-gutter-ghost />\n}\n","import { NgModule } from '@angular/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport {\n    KbqGutterDirective,\n    KbqGutterGhostDirective,\n    KbqSplitterAreaDirective,\n    KbqSplitterComponent\n} from './splitter.component';\n\n@NgModule({\n    imports: [\n        KbqIconModule,\n        KbqGutterDirective,\n        KbqGutterGhostDirective,\n        KbqSplitterAreaDirective,\n        KbqSplitterComponent\n    ],\n    exports: [\n        KbqGutterDirective,\n        KbqSplitterAreaDirective,\n        KbqSplitterComponent\n    ]\n})\nexport class KbqSplitterModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}