{"version":3,"file":"igniteui-angular-splitter.mjs","sources":["../../../projects/igniteui-angular/splitter/src/splitter/splitter-pane/splitter-pane.component.ts","../../../projects/igniteui-angular/splitter/src/splitter/splitter-pane/splitter-pane.component.html","../../../projects/igniteui-angular/splitter/src/splitter/splitter.component.ts","../../../projects/igniteui-angular/splitter/src/splitter/splitter.component.html","../../../projects/igniteui-angular/splitter/src/splitter/splitter-bar.component.html","../../../projects/igniteui-angular/splitter/src/splitter/public_api.ts","../../../projects/igniteui-angular/splitter/src/splitter/splitter.module.ts","../../../projects/igniteui-angular/splitter/src/igniteui-angular-splitter.ts"],"sourcesContent":["import { Component, HostBinding, Input, ElementRef, Output, EventEmitter, booleanAttribute, signal, inject } from '@angular/core';\n\n/**\n * Represents individual resizable/collapsible panes.\n *\n * @igxModule IgxSplitterModule\n *\n * @igxParent IgxSplitterComponent\n *\n * @igxKeywords pane\n *\n * @igxGroup presentation\n *\n * @remarks\n *  Users can control the resize behavior via the min and max size properties.\n */\n@Component({\n    selector: 'igx-splitter-pane',\n    templateUrl: './splitter-pane.component.html',\n    standalone: true\n})\nexport class IgxSplitterPaneComponent {\n    private el = inject(ElementRef);\n\n    private _minSize: string;\n    private _maxSize: string;\n    private _order = signal<number | null>(null);\n\n    /**\n     * @hidden @internal\n     * Gets/Sets the 'display' property of the current pane.\n     */\n    @HostBinding('style.display')\n    public display = 'flex';\n\n    /**\n     * Gets/Sets the minimum allowed size of the current pane.\n     *\n     * @example\n     * ```html\n     * <igx-splitter>\n     *  <igx-splitter-pane [minSize]='minSize'>...</igx-splitter-pane>\n     * </igx-splitter>\n     * ```\n     */\n    @Input()\n    public get minSize(): string {\n        return this._minSize;\n    }\n    public set minSize(value: string) {\n        this._minSize = value;\n        if (this.owner) {\n            this.owner.panes.notifyOnChanges();\n        }\n    }\n\n    /**\n     * Gets/Set the maximum allowed size of the current pane.\n     *\n     * @example\n     * ```html\n     * <igx-splitter>\n     *  <igx-splitter-pane [maxSize]='maxSize'>...</igx-splitter-pane>\n     * </igx-splitter>\n     * ```\n     */\n    @Input()\n    public get maxSize(): string {\n        return this._maxSize;\n    }\n    public set maxSize(value: string) {\n        this._maxSize = value;\n        if (this.owner) {\n            this.owner.panes.notifyOnChanges();\n        }\n    }\n\n    /**\n     * Gets/Sets whether pane is resizable.\n     *\n     * @example\n     * ```html\n     * <igx-splitter>\n     *  <igx-splitter-pane [resizable]='false'>...</igx-splitter-pane>\n     * </igx-splitter>\n     * ```\n     * @remarks\n     * If pane is not resizable its related splitter bar cannot be dragged.\n     */\n    @Input({ transform: booleanAttribute })\n    public resizable = true;\n\n    /**\n     * Event fired when collapsed state of pane is changed.\n     *\n     * @example\n     * ```html\n     * <igx-splitter>\n     *  <igx-splitter-pane (collapsedChange)='paneCollapsedChange($event)'>...</igx-splitter-pane>\n     * </igx-splitter>\n     * ```\n     */\n    @Output()\n    public collapsedChange = new EventEmitter<boolean>();\n\n    /** @hidden @internal */\n    @HostBinding('style.order')\n    public get order() {\n        return this._order();\n    }\n    public set order(val) {\n        this._order.set(val)\n    }\n\n    /**\n     * @hidden @internal\n     * Gets/Sets the `overflow`.\n     */\n    @HostBinding('style.overflow')\n    public overflow = 'auto';\n\n    /**\n     * @hidden @internal\n     * Get/Sets the `minWidth` properties of the current pane.\n     */\n    @HostBinding('style.min-width')\n    public minWidth = '0';\n\n    /**\n     * @hidden @internal\n     * Get/Sets the `maxWidth` properties of the current pane.\n     */\n    @HostBinding('style.max-width')\n    public maxWidth = '100%';\n\n    /**\n     * @hidden @internal\n     * Gets/Sets the `minHeight` properties of the current pane.\n     */\n    @HostBinding('style.min-height')\n    public minHeight = '0';\n\n    /**\n     * @hidden @internal\n     * Gets/Sets the `maxHeight` properties of the current `IgxSplitterPaneComponent`.\n     */\n    @HostBinding('style.max-height')\n    public maxHeight = '100%';\n\n    /** @hidden @internal */\n    public owner;\n\n    /**\n     * Gets/Sets the size of the current pane.\n     *  * @example\n     * ```html\n     * <igx-splitter>\n     *  <igx-splitter-pane [size]='size'>...</igx-splitter-pane>\n     * </igx-splitter>\n     * ```\n     */\n    @Input()\n    public get size() {\n        return this._size;\n    }\n\n    public set size(value) {\n        this._size = value;\n        this.el.nativeElement.style.flex = this.flex;\n    }\n\n    /** @hidden @internal */\n    public get isPercentageSize() {\n        return this.size === 'auto' || this.size.indexOf('%') !== -1;\n    }\n\n    /** @hidden @internal */\n    public get dragSize() {\n        return this._dragSize;\n    }\n    public set dragSize(val) {\n        this._dragSize = val;\n        this.el.nativeElement.style.flex = this.flex;\n    }\n\n    /**\n     *\n     * @hidden @internal\n     * Gets the host native element.\n     */\n    public get element(): any {\n        return this.el.nativeElement;\n    }\n\n    /**\n     * @hidden @internal\n     * Gets the `flex` property of the current `IgxSplitterPaneComponent`.\n     */\n    @HostBinding('style.flex')\n    public get flex() {\n        const size = this.dragSize || this.size;\n        const grow = this.isPercentageSize && !this.dragSize ? 1 : 0;\n        return `${grow} ${grow} ${size}`;\n    }\n\n    /**\n     * Gets/Sets whether current pane is collapsed.\n     *\n     * @example\n     * ```typescript\n     * const isCollapsed = pane.collapsed;\n     * ```\n     */\n    @Input({ transform: booleanAttribute })\n    public set collapsed(value) {\n        if (this.owner) {\n            // reset sibling sizes when pane collapse state changes.\n            this._getSiblings().forEach(sibling => {\n                sibling.size = 'auto'\n                sibling.dragSize = null;\n            });\n        }\n        this._collapsed = value;\n        this.display = this._collapsed ? 'none' : 'flex';\n        this.collapsedChange.emit(this._collapsed);\n    }\n\n    public get collapsed() {\n        return this._collapsed;\n    }\n\n    private _size = 'auto';\n    private _dragSize;\n    private _collapsed = false;\n\n    /**\n     * Toggles the collapsed state of the pane.\n     *\n     * @example\n     * ```typescript\n     * pane.toggle();\n     * ```\n     */\n    public toggle() {\n        this.collapsed = !this.collapsed;\n    }\n\n    /** @hidden @internal */\n    private _getSiblings() {\n        const panes = this.owner.panes.toArray();\n        const index = panes.indexOf(this);\n        const siblings = [];\n        if (index !== 0) {\n            siblings.push(panes[index - 1]);\n        }\n        if (index !== panes.length - 1) {\n            siblings.push(panes[index + 1]);\n        }\n        return siblings;\n    }\n}\n","<ng-content></ng-content>","import { AfterContentInit, Component, ContentChildren, ElementRef, EventEmitter, HostBinding, HostListener, Input, NgZone, Output, QueryList, booleanAttribute, forwardRef, DOCUMENT, inject } from '@angular/core';\nimport { DragDirection, IDragMoveEventArgs, IDragStartEventArgs, IgxDragDirective, IgxDragIgnoreDirective } from 'igniteui-angular/directives';\nimport { IgxSplitterPaneComponent } from './splitter-pane/splitter-pane.component';\nimport { take } from 'rxjs';\n\n/**\n * An enumeration that defines the `SplitterComponent` panes orientation.\n */\nexport enum SplitterType {\n    Horizontal,\n    Vertical\n}\n\nexport declare interface ISplitterBarResizeEventArgs {\n    pane: IgxSplitterPaneComponent;\n    sibling: IgxSplitterPaneComponent;\n}\n\n/**\n * Provides a framework for a simple layout, splitting the view horizontally or vertically\n * into multiple smaller resizable and collapsible areas.\n *\n * @igxModule IgxSplitterModule\n *\n * @igxParent Layouts\n *\n * @igxTheme igx-splitter-theme\n *\n * @igxKeywords splitter panes layout\n *\n * @igxGroup presentation\n *\n * @example\n * ```html\n * <igx-splitter>\n *  <igx-splitter-pane>\n *      ...\n *  </igx-splitter-pane>\n *  <igx-splitter-pane>\n *      ...\n *  </igx-splitter-pane>\n * </igx-splitter>\n * ```\n */\n@Component({\n    selector: 'igx-splitter',\n    templateUrl: './splitter.component.html',\n    imports: [forwardRef(() => IgxSplitBarComponent)]\n})\nexport class IgxSplitterComponent implements AfterContentInit {\n    public document = inject(DOCUMENT);\n    private elementRef = inject(ElementRef);\n    private zone = inject(NgZone);\n\n    /**\n     * Gets the list of splitter panes.\n     *\n     * @example\n     * ```typescript\n     * const panes = this.splitter.panes;\n     * ```\n     */\n    @ContentChildren(IgxSplitterPaneComponent, { read: IgxSplitterPaneComponent })\n    public panes!: QueryList<IgxSplitterPaneComponent>;\n\n    /**\n    * @hidden\n    * @internal\n    */\n    @HostBinding('class.igx-splitter')\n    public cssClass = 'igx-splitter';\n\n    /**\n     * @hidden @internal\n     * Gets/Sets the `overflow` property of the current splitter.\n     */\n    @HostBinding('style.overflow')\n    public overflow = 'hidden';\n\n    /**\n     * @hidden @internal\n     * Sets/Gets the `display` property of the current splitter.\n     */\n    @HostBinding('style.display')\n    public display = 'flex';\n\n    /**\n     * @hidden\n     * @internal\n     */\n    @HostBinding('attr.aria-orientation')\n    public get orientation() {\n        return this.type === SplitterType.Horizontal ? 'horizontal' : 'vertical';\n    }\n\n    /**\n     * Event fired when resizing of panes starts.\n     *\n     * @example\n     * ```html\n     * <igx-splitter (resizeStart)='resizeStart($event)'>\n     *  <igx-splitter-pane>...</igx-splitter-pane>\n     * </igx-splitter>\n     * ```\n     */\n    @Output()\n    public resizeStart = new EventEmitter<ISplitterBarResizeEventArgs>();\n\n    /**\n     * Event fired when resizing of panes is in progress.\n     *\n     * @example\n     * ```html\n     * <igx-splitter (resizing)='resizing($event)'>\n     *  <igx-splitter-pane>...</igx-splitter-pane>\n     * </igx-splitter>\n     * ```\n     */\n    @Output()\n    public resizing = new EventEmitter<ISplitterBarResizeEventArgs>();\n\n\n    /**\n     * Event fired when resizing of panes ends.\n     *\n     * @example\n     * ```html\n     * <igx-splitter (resizeEnd)='resizeEnd($event)'>\n     *  <igx-splitter-pane>...</igx-splitter-pane>\n     * </igx-splitter>\n     * ```\n     */\n    @Output()\n    public resizeEnd = new EventEmitter<ISplitterBarResizeEventArgs>();\n\n    private _type: SplitterType = SplitterType.Horizontal;\n\n    /**\n     * @hidden @internal\n     * A field that holds the initial size of the main `IgxSplitterPaneComponent` in each pair of panes divided by a splitter bar.\n     */\n    private initialPaneSize!: number;\n\n    /**\n     * @hidden @internal\n     * A field that holds the initial size of the sibling pane in each pair of panes divided by a gripper.\n     * @memberof SplitterComponent\n     */\n    private initialSiblingSize!: number;\n\n    /**\n     * @hidden @internal\n     * The main pane in each pair of panes divided by a gripper.\n     */\n    private pane!: IgxSplitterPaneComponent;\n\n    /**\n     * The sibling pane in each pair of panes divided by a splitter bar.\n     */\n    private sibling!: IgxSplitterPaneComponent;\n    /**\n     * Gets/Sets the splitter orientation.\n     *\n     * @example\n     * ```html\n     * <igx-splitter [type]=\"type\">...</igx-splitter>\n     * ```\n     */\n    @Input()\n    public get type() {\n        return this._type;\n    }\n    public set type(value) {\n        this._type = value;\n        this.resetPaneSizes();\n        this.panes?.notifyOnChanges();\n    }\n\n    /**\n     * Sets the visibility of the handle and expanders in the splitter bar.\n     * False by default\n     *\n     * @example\n     * ```html\n     * <igx-splitter [nonCollapsible]='true'>\n     * </igx-splitter>\n     * ```\n     */\n    @Input({ transform: booleanAttribute })\n    public nonCollapsible = false; // Input to toggle showing/hiding expanders\n\n    /**\n     * @hidden @internal\n     * Gets the `flex-direction` property of the current `SplitterComponent`.\n     */\n    @HostBinding('style.flex-direction')\n    public get direction(): string {\n        return this.type === SplitterType.Horizontal ? 'row' : 'column';\n    }\n\n    /** @hidden @internal */\n    public ngAfterContentInit(): void {\n        this.zone.onStable.pipe(take(1)).subscribe(() => {\n            this.initPanes();\n        });\n        this.panes.changes.subscribe(() => {\n            this.initPanes();\n        });\n    }\n\n    /**\n     * @hidden @internal\n     * This method performs  initialization logic when the user starts dragging the splitter bar between each pair of panes.\n     * @param pane - the main pane associated with the currently dragged bar.\n     */\n    public onMoveStart(pane: IgxSplitterPaneComponent) {\n        const panes = this.panes.toArray();\n        this.pane = pane;\n        this.sibling = panes[panes.indexOf(this.pane) + 1];\n\n        const paneRect = this.pane.element.getBoundingClientRect();\n        this.initialPaneSize = this.type === SplitterType.Horizontal ? paneRect.width : paneRect.height;\n\n        const siblingRect = this.sibling.element.getBoundingClientRect();\n        this.initialSiblingSize = this.type === SplitterType.Horizontal ? siblingRect.width : siblingRect.height;\n        const args: ISplitterBarResizeEventArgs = { pane: this.pane, sibling: this.sibling };\n        this.resizeStart.emit(args);\n    }\n\n    /**\n     * @hidden @internal\n     * This method performs calculations concerning the sizes of each pair of panes when the bar between them is dragged.\n     * @param delta - The difference along the X (or Y) axis between the initial and the current point when dragging the bar.\n     */\n    public onMoving(delta: number) {\n        const [ paneSize, siblingSize ] = this.calcNewSizes(delta);\n\n        this.pane.dragSize = paneSize + 'px';\n        this.sibling.dragSize = siblingSize + 'px';\n\n        const args: ISplitterBarResizeEventArgs = { pane: this.pane, sibling: this.sibling };\n        this.resizing.emit(args);\n    }\n\n    public onMoveEnd(delta: number) {\n        let [ paneSize, siblingSize ] = this.calcNewSizes(delta);\n\n        if (paneSize + siblingSize > this.getTotalSize() && delta < 0) {\n            siblingSize = this.getTotalSize() - paneSize;\n        } else if (paneSize + siblingSize > this.getTotalSize() && delta > 0) {\n            paneSize = this.getTotalSize() - siblingSize;\n        }\n\n        if (this.pane.isPercentageSize) {\n            // handle % resizes\n            const totalSize = this.getTotalSize();\n            const percentPaneSize = (paneSize / totalSize) * 100;\n            this.pane.size = percentPaneSize + '%';\n        } else {\n            // px resize\n            this.pane.size = paneSize + 'px';\n        }\n\n        if (this.sibling.isPercentageSize) {\n            // handle % resizes\n            const totalSize = this.getTotalSize();\n            const percentSiblingPaneSize = (siblingSize / totalSize) * 100;\n            this.sibling.size = percentSiblingPaneSize + '%';\n        } else {\n            // px resize\n            this.sibling.size = siblingSize + 'px';\n        }\n        this.pane.dragSize = null;\n        this.sibling.dragSize = null;\n\n        const args: ISplitterBarResizeEventArgs = { pane: this.pane, sibling: this.sibling };\n        this.resizeEnd.emit(args);\n    }\n\n    /** @hidden @internal */\n    public getPaneSiblingsByOrder(order: number, barIndex: number): Array<IgxSplitterPaneComponent> {\n        const panes = this.panes.toArray();\n        const prevPane = panes[order - barIndex - 1];\n        const nextPane = panes[order - barIndex];\n        const siblings = [prevPane, nextPane];\n        return siblings;\n    }\n\n    private getTotalSize() {\n        const computed = this.document.defaultView.getComputedStyle(this.elementRef.nativeElement);\n        const totalSize = this.type === SplitterType.Horizontal ? computed.getPropertyValue('width') : computed.getPropertyValue('height');\n        return parseFloat(totalSize);\n    }\n\n\n    /**\n     * @hidden @internal\n     * This method inits panes with properties.\n     */\n    private initPanes() {\n        this.panes.forEach(pane => {\n            pane.owner = this;\n            if (this.type === SplitterType.Horizontal) {\n                pane.minWidth = pane.minSize ?? '0';\n                pane.maxWidth = pane.maxSize ?? '100%';\n            } else {\n                pane.minHeight = pane.minSize ?? '0';\n                pane.maxHeight = pane.maxSize ?? '100%';\n            }\n        });\n        this.assignFlexOrder();\n        if (this.panes.filter(x => x.collapsed).length > 0) {\n            // if any panes are collapsed, reset sizes.\n            this.resetPaneSizes();\n        }\n    }\n\n    /**\n     * @hidden @internal\n     * This method reset pane sizes.\n     */\n    private resetPaneSizes() {\n        if (this.panes) {\n            // if type is changed runtime, should reset sizes.\n            this.panes.forEach(x => {\n                x.size = 'auto'\n                x.minWidth = '0';\n                x.maxWidth = '100%';\n                x.minHeight = '0';\n                x.maxHeight = '100%';\n            });\n        }\n    }\n\n    /**\n     * @hidden @internal\n     * This method assigns the order of each pane.\n     */\n    private assignFlexOrder() {\n        let k = 0;\n        this.panes.forEach((pane: IgxSplitterPaneComponent) => {\n            pane.order = k;\n            k += 2;\n        });\n    }\n\n    /**\n     * @hidden @internal\n     * Calculates new sizes for the panes based on move delta and initial sizes\n     */\n    private calcNewSizes(delta: number): [number, number] {\n        const min = parseInt(this.pane.minSize, 10) || 0;\n        const minSibling = parseInt(this.sibling.minSize, 10) || 0;\n        const max = parseInt(this.pane.maxSize, 10) || this.initialPaneSize + this.initialSiblingSize - minSibling;\n        const maxSibling = parseInt(this.sibling.maxSize, 10) || this.initialPaneSize + this.initialSiblingSize - min;\n\n        if (delta < 0) {\n            const maxPossibleDelta = Math.min(\n                max - this.initialPaneSize,\n                this.initialSiblingSize - minSibling,\n            )\n            delta = Math.min(maxPossibleDelta, Math.abs(delta)) * -1;\n        } else {\n            const maxPossibleDelta = Math.min(\n                this.initialPaneSize - min,\n                maxSibling - this.initialSiblingSize\n            )\n            delta = Math.min(maxPossibleDelta, Math.abs(delta));\n        }\n        return [this.initialPaneSize - delta, this.initialSiblingSize + delta];\n    }\n}\n\n/**\n * @hidden @internal\n * Represents the draggable bar that visually separates panes and allows for changing their sizes.\n */\n@Component({\n    selector: 'igx-splitter-bar',\n    templateUrl: './splitter-bar.component.html',\n    imports: [IgxDragDirective, IgxDragIgnoreDirective]\n})\nexport class IgxSplitBarComponent {\n    /**\n     * Set css class to the host element.\n     */\n    @HostBinding('class.igx-splitter-bar-host')\n    public cssClass = 'igx-splitter-bar-host';\n\n     /**\n     * Sets the visibility of the handle and expanders in the splitter bar.\n     */\n    @Input({ transform: booleanAttribute })\n    public nonCollapsible;\n\n    /**\n     * Gets/Sets the orientation.\n     */\n    @Input()\n    public type: SplitterType = SplitterType.Horizontal;\n\n    /**\n     * Sets/gets the element order.\n     */\n    @HostBinding('style.order')\n    @Input()\n    public order!: number;\n\n    /**\n     * @hidden\n     * @internal\n     */\n    @HostBinding('attr.tabindex')\n    public get tabindex() {\n        return this.resizeDisallowed ? null : 0;\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    @HostBinding('attr.aria-orientation')\n    public get orientation() {\n        return this.type === SplitterType.Horizontal ? 'horizontal' : 'vertical';\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public get cursor() {\n        if (this.resizeDisallowed) {\n            return '';\n        }\n        return this.type === SplitterType.Horizontal ? 'col-resize' : 'row-resize';\n    }\n\n    /**\n     * Sets/gets the `SplitPaneComponent` associated with the current `SplitBarComponent`.\n     *\n     * @memberof SplitBarComponent\n     */\n    @Input()\n    public pane!: IgxSplitterPaneComponent;\n\n    /**\n     * Sets/Gets the `SplitPaneComponent` sibling components associated with the current `SplitBarComponent`.\n     */\n    @Input()\n    public siblings!: Array<IgxSplitterPaneComponent>;\n\n    /**\n     * An event that is emitted whenever we start dragging the current `SplitBarComponent`.\n     */\n    @Output()\n    public moveStart = new EventEmitter<IgxSplitterPaneComponent>();\n\n    /**\n     * An event that is emitted while we are dragging the current `SplitBarComponent`.\n     */\n    @Output()\n    public moving = new EventEmitter<number>();\n\n    @Output()\n    public movingEnd = new EventEmitter<number>();\n\n    /**\n     * A temporary holder for the pointer coordinates.\n     */\n    private startPoint!: number;\n\n    private interactionKeys = new Set('right down left up arrowright arrowdown arrowleft arrowup'.split(' '));\n\n    /**\n     * @hidden @internal\n     */\n    public get prevButtonHidden() {\n        return this.siblings[0]?.collapsed && !this.siblings[1]?.collapsed;\n    }\n\n    /**\n     * @hidden @internal\n     */\n    @HostListener('keydown', ['$event'])\n    public keyEvent(event: KeyboardEvent) {\n        const key = event.key.toLowerCase();\n        const ctrl = event.ctrlKey;\n        event.stopPropagation();\n        if (this.interactionKeys.has(key)) {\n            event.preventDefault();\n        }\n        switch (key) {\n            case 'arrowup':\n            case 'up':\n                if (this.type === SplitterType.Vertical) {\n                    if (ctrl) {\n                        this.onCollapsing(false);\n                        break;\n                    }\n                    if (!this.resizeDisallowed) {\n                        event.preventDefault();\n                        this.moveStart.emit(this.pane);\n                        this.moving.emit(10);\n                    }\n                }\n                break;\n            case 'arrowdown':\n            case 'down':\n                if (this.type === SplitterType.Vertical) {\n                    if (ctrl) {\n                        this.onCollapsing(true);\n                        break;\n                    }\n                    if (!this.resizeDisallowed) {\n                        event.preventDefault();\n                        this.moveStart.emit(this.pane);\n                        this.moving.emit(-10);\n                    }\n                }\n                break;\n            case 'arrowleft':\n            case 'left':\n                if (this.type === SplitterType.Horizontal) {\n                    if (ctrl) {\n                        this.onCollapsing(false);\n                        break;\n                    }\n                    if (!this.resizeDisallowed) {\n                        event.preventDefault();\n                        this.moveStart.emit(this.pane);\n                        this.moving.emit(10);\n                    }\n                }\n                break;\n            case 'arrowright':\n            case 'right':\n                if (this.type === SplitterType.Horizontal) {\n                    if (ctrl) {\n                        this.onCollapsing(true);\n                        break;\n                    }\n                    if (!this.resizeDisallowed) {\n                        event.preventDefault();\n                        this.moveStart.emit(this.pane);\n                        this.moving.emit(-10);\n                    }\n                }\n                break;\n            default:\n                break;\n        }\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public get dragDir() {\n        return this.type === SplitterType.Horizontal ? DragDirection.VERTICAL : DragDirection.HORIZONTAL;\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public get nextButtonHidden() {\n        return this.siblings[1]?.collapsed && !this.siblings[0]?.collapsed;\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public onDragStart(event: IDragStartEventArgs) {\n        if (this.resizeDisallowed) {\n            event.cancel = true;\n            return;\n        }\n        this.startPoint = this.type === SplitterType.Horizontal ? event.startX : event.startY;\n        this.moveStart.emit(this.pane);\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public onDragMove(event: IDragMoveEventArgs) {\n        const isHorizontal = this.type === SplitterType.Horizontal;\n        const curr = isHorizontal ? event.pageX : event.pageY;\n        const delta = this.startPoint - curr;\n        if (delta !== 0) {\n            this.moving.emit(delta);\n            event.cancel = true;\n            event.owner.element.nativeElement.style.transform = '';\n        }\n    }\n\n    public onDragEnd(event: any) {\n        const isHorizontal = this.type === SplitterType.Horizontal;\n        const curr = isHorizontal ? event.pageX : event.pageY;\n        const delta = this.startPoint - curr;\n        if (delta !== 0) {\n            this.movingEnd.emit(delta);\n        }\n    }\n\n    protected get resizeDisallowed() {\n        const relatedTabs = this.siblings;\n        return !!relatedTabs.find(x => x?.resizable === false || x?.collapsed === true);\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public onCollapsing(next: boolean) {\n        const prevSibling = this.siblings[0];\n        const nextSibling = this.siblings[1];\n        let target;\n        if (next) {\n            // if next is clicked when prev pane is hidden, show prev pane, else hide next pane.\n            target = prevSibling.collapsed ? prevSibling : nextSibling;\n        } else {\n            // if prev is clicked when next pane is hidden, show next pane, else hide prev pane.\n            target = nextSibling.collapsed ? nextSibling : prevSibling;\n        }\n        target.toggle();\n    }\n}\n","<ng-content select=\"igx-splitter-pane\"></ng-content>\n@for (pane of panes; track pane; let last = $last; let index = $index) {\n    @if (!last) {\n        <igx-splitter-bar [order]=\"pane.order + 1\" role=\"separator\"\n            [type]=\"type\"\n            [pane]=\"pane\"\n            [siblings]=\"getPaneSiblingsByOrder(pane.order + 1, index)\"\n            (moveStart)=\"onMoveStart($event)\"\n            (moving)=\"onMoving($event)\"\n            (movingEnd)=\"onMoveEnd($event)\"\n            [nonCollapsible]=\"nonCollapsible\">\n        </igx-splitter-bar>\n    }\n}\n","<div class=\"igx-splitter-bar\"\n    [class.igx-splitter-bar--vertical]=\"type === 0\"\n    [style.cursor]=\"cursor\"\n    igxDrag\n    [ghost]=\"false\"\n    [dragDirection]=\"dragDir\"\n    (dragStart)=\"onDragStart($event)\"\n    (dragMove)=\"onDragMove($event)\"\n    (dragEnd)=\"onDragEnd($event)\"\n    [class.igx-splitter-bar--collapsible]=\"!nonCollapsible\"\n>\n    <div class=\"igx-splitter-bar__expander--start\" igxDragIgnore (click)=\"onCollapsing(false)\" [hidden]=\"prevButtonHidden\"></div>\n    <div class=\"igx-splitter-bar__handle\"></div>\n    <div class=\"igx-splitter-bar__expander--end\" igxDragIgnore (click)=\"onCollapsing(true)\" [hidden]=\"nextButtonHidden\"></div>\n</div>\n","import { IgxSplitterPaneComponent } from './splitter-pane/splitter-pane.component';\nimport { IgxSplitBarComponent, IgxSplitterComponent } from './splitter.component';\n\nexport * from './splitter.component';\nexport * from './splitter-pane/splitter-pane.component';\n\n/* NOTE: Splitter directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_SPLITTER_DIRECTIVES = [\n    IgxSplitterComponent,\n    IgxSplitterPaneComponent,\n    IgxSplitBarComponent\n] as const;\n","import { NgModule } from '@angular/core';\nimport { IGX_SPLITTER_DIRECTIVES } from './public_api';\n\n/**\n * @hidden\n * @deprecated\n * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components\n */\n@NgModule({\n    imports: [\n        ...IGX_SPLITTER_DIRECTIVES\n    ],\n    exports: [\n        ...IGX_SPLITTER_DIRECTIVES\n    ]\n})\nexport class IgxSplitterModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.IgxSplitterComponent","i2.IgxSplitterPaneComponent","i1.IgxSplitBarComponent"],"mappings":"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"}