{"version":3,"file":"primeng-splitter.mjs","sources":["../../src/splitter/style/splitterstyle.ts","../../src/splitter/splitterpanel.ts","../../src/splitter/splitter.ts","../../src/splitter/primeng-splitter.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { style } from '@primeuix/styles/splitter';\nimport { BaseStyle } from 'primeng/base';\n\nconst classes = {\n    root: ({ instance }) => ['p-splitter p-component', 'p-splitter-' + instance.layout()],\n    panel: 'p-splitter-panel',\n    gutter: 'p-splitter-gutter',\n    gutterHandle: 'p-splitter-gutter-handle'\n};\n\n@Injectable()\nexport class SplitterStyle extends BaseStyle {\n    name = 'splitter';\n\n    style = style;\n\n    classes = classes;\n}\n\n/**\n *\n * Splitter is utilized to separate and resize panels.\n *\n * [Live Demo](https://www.primeng.org/splitter/)\n *\n * @module splitterstyle\n *\n */\nexport enum SplitterClasses {\n    /**\n     * Class name of the root element\n     */\n    root = 'p-splitter',\n    /**\n     * Class name of the panel element\n     */\n    panel = 'p-splitter-panel',\n    /**\n     * Class name of the gutter element\n     */\n    gutter = 'p-splitter-gutter',\n    /**\n     * Class name of the handle element\n     */\n    gutterHandle = 'p-splitter-gutter-handle'\n}\n\nexport interface SplitterStyle extends BaseStyle {}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, inject, input, numberAttribute, TemplateRef, viewChild, ViewEncapsulation } from '@angular/core';\nimport { BaseComponent, PARENT_INSTANCE } from 'primeng/basecomponent';\nimport { Bind } from 'primeng/bind';\nimport type { SplitterPanelPassThrough } from 'primeng/types/splitter';\nimport { SplitterStyle } from './style/splitterstyle';\n\n/**\n * SplitterPanel is a helper component for Splitter, used to define a single resizable panel\n * together with its size constraints (min/max size, collapsible behavior).\n * @group Components\n */\n@Component({\n    selector: 'p-splitterpanel, p-splitter-panel',\n    standalone: true,\n    template: `\n        <ng-template #content>\n            <ng-content></ng-content>\n        </ng-template>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    hostDirectives: [Bind],\n    providers: [SplitterStyle, { provide: PARENT_INSTANCE, useExisting: SplitterPanel }]\n})\nexport class SplitterPanel extends BaseComponent<SplitterPanelPassThrough> {\n    componentName = 'SplitterPanel';\n\n    bindDirectiveInstance = inject(Bind, { self: true });\n\n    /**\n     * Initial size of the panel relative to 100%.\n     * @group Props\n     */\n    size = input<number | undefined>(undefined, { transform: (value: unknown) => (value == null ? undefined : numberAttribute(value)) });\n\n    /**\n     * Minimum size of the panel relative to 100%.\n     * @defaultValue 0\n     * @group Props\n     */\n    minSize = input(0, { transform: numberAttribute });\n\n    /**\n     * Maximum size of the panel relative to 100%.\n     * @defaultValue 100\n     * @group Props\n     */\n    maxSize = input(100, { transform: numberAttribute });\n\n    /**\n     * When enabled, the panel can collapse below its `minSize` down to `collapsedSize`.\n     * @defaultValue false\n     * @group Props\n     */\n    collapsible = input(false, { transform: booleanAttribute });\n\n    /**\n     * Size of the panel when collapsed, relative to 100%.\n     * @defaultValue 0\n     * @group Props\n     */\n    collapsedSize = input(0, { transform: numberAttribute });\n\n    /**\n     * @ignore\n     * Content of the panel, stamped by the parent Splitter into the panel wrapper.\n     */\n    contentTemplate = viewChild<TemplateRef<any>>('content');\n\n    /**\n     * @ignore\n     * `class`/`style` set directly on the `<p-splitterpanel>` element are forwarded by the parent\n     * Splitter onto the panel it renders, so authors can style the panel inline as expected.\n     */\n    get hostClass(): string {\n        return this.el.nativeElement.className;\n    }\n\n    get hostStyle(): string | null {\n        return this.el.nativeElement.getAttribute('style');\n    }\n\n    _componentStyle = inject(SplitterStyle);\n\n    onAfterViewChecked(): void {\n        this.bindDirectiveInstance.setAttrs(this.ptm('root'));\n    }\n}\n","import { isPlatformBrowser, NgTemplateOutlet } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, computed, contentChildren, effect, ElementRef, inject, input, NgModule, numberAttribute, output, signal, TemplateRef, untracked, ViewEncapsulation } from '@angular/core';\nimport { isRTL } from '@primeuix/utils';\nimport { SharedModule } from 'primeng/api';\nimport { BaseComponent, PARENT_INSTANCE } from 'primeng/basecomponent';\nimport { Bind, BindModule } from 'primeng/bind';\nimport { Nullable, VoidListener } from 'primeng/ts-helpers';\nimport type { CSSProperties } from 'primeng/types/shared';\nimport type { SplitterCollapseEvent, SplitterLayout, SplitterPassThrough, SplitterResizeEndEvent, SplitterResizeEvent, SplitterResizeStartEvent, SplitterStateStorage } from 'primeng/types/splitter';\nimport { SplitterPanel } from './splitterpanel';\nimport { SplitterStyle } from './style/splitterstyle';\n\n/**\n * Runtime configuration of a panel, resolved either from a SplitterPanel component or from the\n * array-based inputs (minSizes/panelSizes) for backward compatibility.\n */\ninterface SplitterPanelMeta {\n    minSize: number;\n    maxSize: number;\n    collapsible: boolean;\n    collapsedSize: number;\n    size: number | undefined;\n}\n\ninterface SplitterPanelInfo extends SplitterPanelMeta {\n    index: number;\n    collapsed: boolean;\n}\n\n/**\n * Splitter is utilized to separate and resize panels.\n * @group Components\n */\n@Component({\n    selector: 'p-splitter',\n    standalone: true,\n    imports: [NgTemplateOutlet, SharedModule, BindModule],\n    template: `\n        @for (panel of panels(); track $index; let i = $index) {\n            <div\n                [pBind]=\"ptm('panel')\"\n                [class]=\"panelClass()[i]\"\n                [style]=\"panelInlineStyle()[i]\"\n                [style.flex]=\"panelFlex()[i]\"\n                [style.overflow]=\"'hidden'\"\n                [style.min-width]=\"layout() === 'horizontal' ? '0' : null\"\n                [style.min-height]=\"layout() === 'vertical' ? '0' : null\"\n                tabindex=\"-1\"\n                [attr.data-index]=\"i\"\n                [attr.data-collapsed]=\"collapsed()[i] ? '' : null\"\n                [attr.data-resizing]=\"isResizing() && resizingIndex() === i ? '' : null\"\n            >\n                <ng-container *ngTemplateOutlet=\"panel\"></ng-container>\n            </div>\n            @if (i !== panels().length - 1) {\n                <div\n                    [pBind]=\"ptm('gutter')\"\n                    [class]=\"cx('gutter')\"\n                    role=\"separator\"\n                    [attr.tabindex]=\"disabled() ? -1 : 0\"\n                    [attr.aria-orientation]=\"layout()\"\n                    [attr.aria-valuenow]=\"prevSize\"\n                    [attr.aria-valuemin]=\"round(panelMetas()[i]?.minSize)\"\n                    [attr.aria-valuemax]=\"round(100 - (panelMetas()[i + 1]?.minSize ?? 0))\"\n                    [attr.aria-disabled]=\"disabled() || null\"\n                    [attr.data-orientation]=\"layout()\"\n                    [attr.data-resizing]=\"isResizing() && resizingIndex() === i ? '' : null\"\n                    [attr.data-disabled]=\"disabled() ? '' : null\"\n                    [style]=\"gutterInlineStyle()\"\n                    (pointerdown)=\"onGutterPointerDown($event, i)\"\n                    (keyup)=\"onGutterKeyUp($event)\"\n                    (keydown)=\"onGutterKeyDown($event, i)\"\n                >\n                    <div [pBind]=\"ptm('gutterHandle')\" [class]=\"cx('gutterHandle')\" [attr.data-orientation]=\"layout()\" [attr.data-resizing]=\"isResizing() && resizingIndex() === i ? '' : null\"></div>\n                </div>\n            }\n        }\n    `,\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        '[class]': 'rootClass()',\n        '[attr.data-orientation]': 'layout()',\n        '[attr.data-resizing]': 'dataResizing()',\n        '[attr.data-disabled]': \"disabled() ? '' : null\",\n        '[attr.data-p]': 'dataP()'\n    },\n    providers: [SplitterStyle, { provide: PARENT_INSTANCE, useExisting: Splitter }],\n    hostDirectives: [Bind]\n})\nexport class Splitter extends BaseComponent<SplitterPassThrough> {\n    componentName = 'Splitter';\n\n    bindDirectiveInstance = inject(Bind, { self: true });\n\n    /**\n     * Style class of the component.\n     * @group Props\n     */\n    styleClass = input<string>();\n\n    /**\n     * Style class of the panel.\n     * @group Props\n     */\n    panelStyleClass = input<string>();\n\n    /**\n     * Inline style of the panel.\n     * @group Props\n     */\n    panelStyle = input<CSSProperties>();\n\n    /**\n     * Defines where a stateful splitter keeps its state, valid values are 'session' for sessionStorage and 'local' for localStorage.\n     * @group Props\n     */\n    stateStorage = input<SplitterStateStorage>('session');\n\n    /**\n     * Storage identifier of a stateful Splitter.\n     * @group Props\n     */\n    stateKey = input<string | null>(null);\n\n    /**\n     * Orientation of the panels. Valid values are 'horizontal' and 'vertical'.\n     * @group Props\n     */\n    layout = input<SplitterLayout>('horizontal');\n\n    /**\n     * Size of the divider in pixels.\n     * @group Props\n     */\n    gutterSize = input(1, { transform: numberAttribute });\n\n    /**\n     * Step factor to increment/decrement the size of the panels while pressing the arrow keys.\n     * @group Props\n     */\n    step = input(5, { transform: numberAttribute });\n\n    /**\n     * Minimum size of the elements relative to 100%. Used when panels are defined via `#panel` templates;\n     * when SplitterPanel components are used, the per-panel `minSize` input takes precedence.\n     * @group Props\n     */\n    minSizes = input<number[]>([]);\n\n    /**\n     * Size of the elements relative to 100%. Used when panels are defined via `#panel` templates;\n     * when SplitterPanel components are used, the per-panel `size` input takes precedence.\n     * @group Props\n     */\n    panelSizes = input<number[]>([]);\n\n    /**\n     * When present, it disables the component and prevents resizing.\n     * @defaultValue false\n     * @group Props\n     */\n    disabled = input(false, { transform: booleanAttribute });\n\n    /**\n     * Callback to invoke when resize ends.\n     * @param {SplitterResizeEndEvent} event - Custom panel resize end event\n     * @group Emits\n     */\n    onResizeEnd = output<SplitterResizeEndEvent>();\n\n    /**\n     * Callback to invoke when resize starts.\n     * @param {SplitterResizeStartEvent} event - Custom panel resize start event\n     * @group Emits\n     */\n    onResizeStart = output<SplitterResizeStartEvent>();\n\n    /**\n     * Callback to invoke continuously while a gutter is being dragged.\n     * @param {SplitterResizeEvent} event - Custom panel resize event\n     * @group Emits\n     */\n    onResize = output<SplitterResizeEvent>();\n\n    /**\n     * Callback to invoke when a collapsible panel collapses or expands.\n     * @param {SplitterCollapseEvent} event - Custom collapse event\n     * @group Emits\n     */\n    onCollapse = output<SplitterCollapseEvent>();\n\n    /**\n     * Panels declared via SplitterPanel components.\n     * @ignore\n     */\n    panelComponents = contentChildren(SplitterPanel);\n\n    /**\n     * Panels declared via `<ng-template #panel>` (backward compatible API).\n     * @ignore\n     */\n    panelChildren = contentChildren<TemplateRef<void>>('panel');\n\n    /**\n     * Resolved panel content templates, sourced from SplitterPanel components when present,\n     * otherwise from `#panel` templates.\n     */\n    panels = computed<TemplateRef<any>[]>(() => {\n        const components = this.panelComponents();\n\n        if (components && components.length) {\n            const templates = components.map((panel) => panel.contentTemplate());\n            return templates.every((template): template is TemplateRef<any> => !!template) ? (templates as TemplateRef<any>[]) : [];\n        }\n\n        return [...this.panelChildren()];\n    });\n\n    /**\n     * Resolved per-panel configuration (min/max/collapsible/collapsedSize/size).\n     */\n    panelMetas = computed<SplitterPanelMeta[]>(() => {\n        const components = this.panelComponents();\n\n        if (components && components.length) {\n            return components.map((panel) => ({\n                minSize: panel.minSize() ?? 0,\n                maxSize: panel.maxSize() ?? 100,\n                collapsible: panel.collapsible() ?? false,\n                collapsedSize: panel.collapsedSize() ?? 0,\n                size: panel.size()\n            }));\n        }\n\n        const count = this.panelChildren().length;\n        const minSizes = this.minSizes();\n        const panelSizes = this.panelSizes();\n\n        return Array.from({ length: count }, (_, i) => ({\n            minSize: minSizes[i] ?? 0,\n            maxSize: 100,\n            collapsible: false,\n            collapsedSize: 0,\n            size: panelSizes[i]\n        }));\n    });\n\n    /**\n     * Value-based signature of the panel configuration. Lets the (re)initialization effect ignore\n     * array-literal input bindings that change identity but not value on every parent change detection.\n     */\n    panelSignature = computed(() => {\n        const metaSig = this.panelMetas()\n            .map((meta) => `${meta.size ?? ''}:${meta.minSize}:${meta.maxSize}:${meta.collapsible}:${meta.collapsedSize}`)\n            .join(',');\n\n        return `${metaSig}#${this.panelSizes().join(',')}`;\n    });\n\n    /**\n     * Class for each panel wrapper: the base panel class plus the splitter-level `panelStyleClass`\n     * and the `class` set directly on the matching SplitterPanel.\n     */\n    panelClass = computed(() => {\n        const components = this.panelComponents();\n        const base = this.cn(this.cx('panel'), this.panelStyleClass());\n\n        return this.panels().map((_, i) => this.cn(base, components[i]?.hostClass));\n    });\n\n    /**\n     * Inline style for each panel wrapper: the `style` set directly on the matching SplitterPanel,\n     * falling back to the splitter-level `panelStyle`.\n     */\n    panelInlineStyle = computed(() => {\n        const components = this.panelComponents();\n        const fallback = this.panelStyle();\n\n        return this.panels().map((_, i) => components[i]?.hostStyle ?? fallback);\n    });\n\n    dragging: boolean = false;\n\n    isResizing = signal(false);\n\n    resizingIndex = signal<number | null>(null);\n\n    collapsed = signal<boolean[]>([]);\n\n    /**\n     * Flex values applied to each panel wrapper, e.g. `35 1 0px`. Bound declaratively so panel sizing\n     * never depends on imperative DOM timing.\n     */\n    panelFlex = signal<string[]>([]);\n\n    dataResizing = computed(() => (this.isResizing() ? '' : null));\n\n    pointerMoveListener: VoidListener;\n\n    pointerUpListener: VoidListener;\n\n    size: Nullable<number>;\n\n    gutterElement: Nullable<ElementRef | HTMLElement>;\n\n    startPos: Nullable<number>;\n\n    _panelSizes: number[] = [];\n\n    panelRegistry: SplitterPanelInfo[] = [];\n\n    initialSizes: number[] = [];\n\n    initialCollapsed: boolean[] = [];\n\n    reportedCollapsed: boolean[] = [];\n\n    initialTotal: number = 100;\n\n    prevPanelIndex: Nullable<number>;\n\n    timer: ReturnType<typeof setTimeout> | undefined;\n\n    prevSize: string | undefined;\n\n    _componentStyle = inject(SplitterStyle);\n\n    rootClass = computed(() => this.cn(this.cx('root'), this.styleClass()));\n\n    constructor() {\n        super();\n        effect(() => {\n            // Re-initialize whenever the set of panels or their (value-based) size configuration changes.\n            const panels = this.panels();\n            this.panelSignature();\n\n            if (!isPlatformBrowser(this.platformId) || panels.length === 0) {\n                return;\n            }\n\n            // Never clobber sizes mid-drag; the resizing flag is read untracked so ending a drag\n            // does not by itself re-trigger initialization.\n            if (untracked(() => this.isResizing())) {\n                return;\n            }\n\n            this.initializePanels();\n        });\n    }\n\n    onAfterViewChecked(): void {\n        this.bindDirectiveInstance.setAttrs(this.ptms(['host', 'root']));\n    }\n\n    buildPanelRegistry() {\n        const metas = this.panelMetas();\n        const prev = this.panelRegistry ?? [];\n\n        this.panelRegistry = metas.map((meta, i) => ({\n            index: i,\n            minSize: meta.minSize ?? 0,\n            maxSize: meta.maxSize ?? 100,\n            collapsible: meta.collapsible ?? false,\n            collapsedSize: meta.collapsedSize ?? 0,\n            size: meta.size,\n            collapsed: prev[i]?.collapsed ?? false\n        }));\n    }\n\n    initializePanels() {\n        const panels = this.panels();\n\n        if (!panels.length) {\n            return;\n        }\n\n        this.buildPanelRegistry();\n\n        let initialized = false;\n\n        if (this.isStateful()) {\n            initialized = this.restoreState();\n        }\n\n        if (!initialized) {\n            const _panelSizes: number[] = [];\n            const inputPanelSizes = this.panelSizes();\n\n            panels.forEach((_, i) => {\n                const meta = this.panelRegistry[i];\n                // Splitter-level `panelSizes` takes precedence, then the panel's own `size`, then an equal split.\n                _panelSizes[i] = inputPanelSizes[i] ?? meta?.size ?? 100 / panels.length;\n            });\n\n            this.panelRegistry.forEach((info, i) => {\n                if (info?.collapsible) {\n                    info.collapsed = _panelSizes[i] <= (info.collapsedSize ?? 0);\n                }\n            });\n\n            this._panelSizes = _panelSizes;\n            this.prevSize = parseFloat(String(_panelSizes[0])).toFixed(4);\n        }\n\n        this.syncCollapsedState();\n        this.updateFlex();\n    }\n\n    updateFlex() {\n        this.panelFlex.set(this._panelSizes.map((panelSize) => panelSize + ' 1 0px'));\n    }\n\n    syncCollapsedState() {\n        this.collapsed.set(this.panelRegistry.map((info) => info.collapsed));\n    }\n\n    getPanelMinSize(index: number): number {\n        return this.panelRegistry?.[index]?.minSize ?? 0;\n    }\n\n    getPanelMaxSize(index: number): number {\n        return this.panelRegistry?.[index]?.maxSize ?? 100;\n    }\n\n    resizeStart(event: PointerEvent | KeyboardEvent, index: number, isKeyDown?: boolean) {\n        const currentTarget = (event.currentTarget as HTMLElement) || (event.target as HTMLElement);\n\n        if (currentTarget) {\n            this.gutterElement = currentTarget;\n        }\n\n        const panelElements = (this.el as ElementRef).nativeElement.querySelectorAll(':scope > [data-index]');\n        let totalPanelPx = 0;\n\n        for (const el of panelElements) {\n            const rect = el.getBoundingClientRect();\n            totalPanelPx += this.horizontal() ? rect.width : rect.height;\n        }\n\n        this.size = totalPanelPx;\n\n        if (!isKeyDown) {\n            const pointerEvent = event as PointerEvent;\n\n            this.dragging = true;\n            this.startPos = this.horizontal() ? pointerEvent.pageX : pointerEvent.pageY;\n            this.isResizing.set(true);\n            this.resizingIndex.set(index);\n        }\n\n        this.initialSizes = [...this._panelSizes];\n        this.initialCollapsed = this.panelRegistry.map((info) => info.collapsed);\n        this.reportedCollapsed = this.panelRegistry.map((info) => info.collapsed);\n        this.initialTotal = this.initialSizes.reduce((a, b) => a + b, 0) || 100;\n        this.prevPanelIndex = index;\n\n        if (!isKeyDown) {\n            this.onResizeStart.emit({ originalEvent: event, sizes: [...this._panelSizes] });\n        }\n    }\n\n    onResizeMove(event: PointerEvent | KeyboardEvent, step?: number, isKeyDown?: boolean) {\n        if (this.size === null || this.prevPanelIndex === null || this.initialSizes.length === 0) {\n            return;\n        }\n\n        const gutterIdx = this.prevPanelIndex!;\n        const total = this.initialTotal;\n        let delta: number;\n\n        if (isKeyDown) {\n            delta = (total * (step ?? 0)) / this.size!;\n        } else {\n            const pointerEvent = event as PointerEvent;\n            const pos = this.horizontal() ? pointerEvent.pageX : pointerEvent.pageY;\n\n            if (this.horizontal() && isRTL(this.el.nativeElement)) {\n                delta = (((this.startPos ?? 0) - pos) * total) / this.size!;\n            } else {\n                delta = ((pos - (this.startPos ?? 0)) * total) / this.size!;\n            }\n        }\n\n        const newSizes = [...this.initialSizes];\n\n        this.panelRegistry.forEach((info, i) => {\n            if (this.initialCollapsed[i] !== undefined) {\n                info.collapsed = this.initialCollapsed[i];\n            }\n        });\n\n        if (delta > 0) {\n            this.distribute(newSizes, gutterIdx, delta, isKeyDown, 'forward');\n        } else if (delta < 0) {\n            this.distribute(newSizes, gutterIdx + 1, -delta, isKeyDown, 'backward');\n        }\n\n        this.panelRegistry.forEach((info, i) => {\n            if (info.collapsed !== this.reportedCollapsed[i]) {\n                this.reportedCollapsed[i] = info.collapsed;\n                this.onCollapse.emit({ index: i, collapsed: info.collapsed, sizes: [...newSizes] });\n            }\n        });\n\n        this._panelSizes = newSizes;\n        this.prevSize = newSizes[gutterIdx].toFixed(4);\n\n        this.updateFlex();\n        this.syncCollapsedState();\n        this.onResize.emit({ originalEvent: event, sizes: [...newSizes] });\n    }\n\n    distribute(newSizes: number[], growIdx: number, requested: number, isKeyDown: boolean | undefined, direction: 'forward' | 'backward') {\n        const growInfo = this.panelRegistry[growIdx];\n        const max = this.getPanelMaxSize(growIdx);\n        let toGrow = Math.min(requested, Math.max(0, max - newSizes[growIdx]));\n\n        if (growInfo?.collapsible && growInfo.collapsed) {\n            // Re-open symmetrically: any outward drag/step pops a collapsed panel back to (at least) its minimum size.\n            const gapSize = this.getPanelMinSize(growIdx) - growInfo.collapsedSize;\n\n            toGrow = Math.max(toGrow, gapSize);\n            toGrow = Math.min(toGrow, Math.max(0, max - newSizes[growIdx]));\n        }\n\n        let shrunk = 0;\n        const range = direction === 'forward' ? this.range(growIdx + 1, newSizes.length, 1) : this.range(growIdx - 1, -1, -1);\n\n        for (const i of range) {\n            if (shrunk >= toGrow) break;\n\n            const info = this.panelRegistry[i];\n            const min = this.getPanelMinSize(i);\n\n            if (info?.collapsed) continue;\n\n            const effectiveMin = info?.collapsible ? (info.collapsedSize ?? 0) : min;\n            const available = Math.max(0, newSizes[i] - effectiveMin);\n            const amount = Math.min(toGrow - shrunk, available);\n            const rawSize = newSizes[i] - amount;\n\n            const validated = this.validatePanelSize(rawSize, info, min, isKeyDown);\n            const actualShrunk = newSizes[i] - validated.size;\n\n            newSizes[i] = validated.size;\n            shrunk += actualShrunk;\n\n            if (info) info.collapsed = validated.collapsed;\n        }\n\n        newSizes[growIdx] += shrunk;\n\n        if (growInfo?.collapsible && growInfo.collapsed && newSizes[growIdx] >= this.getPanelMinSize(growIdx)) {\n            growInfo.collapsed = false;\n        }\n    }\n\n    validatePanelSize(rawSize: number, info: SplitterPanelInfo | undefined, min: number, isKeyDown: boolean | undefined): { size: number; collapsed: boolean } {\n        if (!info?.collapsible) {\n            return { size: Math.max(rawSize, min), collapsed: false };\n        }\n\n        const collapsedSize = info.collapsedSize ?? 0;\n\n        if (rawSize >= min) {\n            return { size: rawSize, collapsed: false };\n        }\n\n        // The panel stops shrinking at its minimum size; the moment the user keeps dragging (or\n        // stepping) past that minimum, a collapsible panel snaps to its collapsed state.\n        return { size: collapsedSize, collapsed: true };\n    }\n\n    range(start: number, end: number, step: number): number[] {\n        const out: number[] = [];\n\n        for (let i = start; step > 0 ? i < end : i > end; i += step) out.push(i);\n\n        return out;\n    }\n\n    resizeEnd(event: PointerEvent | KeyboardEvent) {\n        if (this.isStateful()) {\n            this.saveState();\n        }\n\n        this.onResizeEnd.emit({ originalEvent: event, sizes: [...this._panelSizes] });\n        this.isResizing.set(false);\n        this.resizingIndex.set(null);\n        this.updateFlex();\n        this.clear();\n    }\n\n    onGutterPointerDown(event: PointerEvent, index: number) {\n        if (this.disabled()) {\n            return;\n        }\n\n        this.resizeStart(event, index);\n        this.bindPointerListeners();\n    }\n\n    repeat(event: KeyboardEvent, index: number, step: number) {\n        this.resizeStart(event, index, true);\n        this.onResizeMove(event, step, true);\n    }\n\n    setTimer(event: KeyboardEvent, index: number, step: number) {\n        if (!this.timer) {\n            this.onResizeStart.emit({ originalEvent: event, sizes: [...this._panelSizes] });\n            this.repeat(event, index, step);\n            this.timer = setInterval(() => {\n                this.repeat(event, index, step);\n            }, 40);\n        }\n    }\n\n    clearTimer() {\n        if (this.timer) {\n            clearInterval(this.timer);\n            this.timer = undefined;\n        }\n    }\n\n    onGutterKeyUp(event: KeyboardEvent) {\n        if (!this.timer) return;\n        this.clearTimer();\n        this.resizeEnd(event);\n    }\n\n    onGutterKeyDown(event: KeyboardEvent, index: number) {\n        if (this.disabled()) {\n            return;\n        }\n\n        switch (event.code) {\n            case 'ArrowLeft': {\n                if (this.layout() === 'horizontal') {\n                    this.setTimer(event, index, this.step() * -1);\n                }\n\n                event.preventDefault();\n                break;\n            }\n\n            case 'ArrowRight': {\n                if (this.layout() === 'horizontal') {\n                    this.setTimer(event, index, this.step());\n                }\n\n                event.preventDefault();\n                break;\n            }\n\n            case 'ArrowDown': {\n                if (this.layout() === 'vertical') {\n                    this.setTimer(event, index, this.step());\n                }\n\n                event.preventDefault();\n                break;\n            }\n\n            case 'ArrowUp': {\n                if (this.layout() === 'vertical') {\n                    this.setTimer(event, index, this.step() * -1);\n                }\n\n                event.preventDefault();\n                break;\n            }\n\n            default:\n                //no op\n                break;\n        }\n    }\n\n    bindPointerListeners() {\n        if (!this.pointerMoveListener) {\n            this.pointerMoveListener = this.renderer.listen(this.document, 'pointermove', (event: PointerEvent) => {\n                this.onResizeMove(event);\n            });\n        }\n\n        if (!this.pointerUpListener) {\n            this.pointerUpListener = this.renderer.listen(this.document, 'pointerup', (event: PointerEvent) => {\n                this.resizeEnd(event);\n                this.unbindPointerListeners();\n            });\n        }\n    }\n\n    unbindPointerListeners() {\n        if (this.pointerMoveListener) {\n            this.pointerMoveListener();\n            this.pointerMoveListener = null;\n        }\n\n        if (this.pointerUpListener) {\n            this.pointerUpListener();\n            this.pointerUpListener = null;\n        }\n    }\n\n    clear() {\n        this.dragging = false;\n        this.size = null;\n        this.startPos = null;\n        this.initialSizes = [];\n        this.initialCollapsed = [];\n        this.reportedCollapsed = [];\n        this.initialTotal = 100;\n        this.gutterElement = null;\n        this.prevPanelIndex = null;\n    }\n\n    isStateful() {\n        return this.stateKey() != null;\n    }\n\n    getStorage() {\n        if (isPlatformBrowser(this.platformId)) {\n            switch (this.stateStorage()) {\n                case 'local':\n                    return this.document.defaultView?.localStorage;\n\n                case 'session':\n                    return this.document.defaultView?.sessionStorage;\n\n                default:\n                    throw new Error(this.stateStorage() + ' is not a valid value for the state storage, supported values are \"local\" and \"session\".');\n            }\n        } else {\n            throw new Error('Storage is not a available by default on the server.');\n        }\n    }\n\n    saveState() {\n        this.getStorage()?.setItem(this.stateKey()!, JSON.stringify(this._panelSizes));\n    }\n\n    restoreState() {\n        const storage = this.getStorage();\n        const stateString = storage?.getItem(this.stateKey()!);\n\n        if (stateString) {\n            this._panelSizes = JSON.parse(stateString);\n\n            this.panelRegistry.forEach((info, i) => {\n                if (info?.collapsible) {\n                    info.collapsed = this._panelSizes[i] <= (info.collapsedSize ?? 0);\n                }\n            });\n\n            this.prevSize = parseFloat(String(this._panelSizes[0])).toFixed(4);\n\n            return true;\n        }\n\n        return false;\n    }\n\n    /**\n     * Resets the panel sizes using the stored state (for a stateful Splitter), the configured\n     * sizes, or the default equal distribution.\n     */\n    resetState() {\n        this.initializePanels();\n    }\n\n    gutterInlineStyle() {\n        return {\n            'touch-action': 'none',\n            'user-select': 'none',\n            ...(this.horizontal() ? { width: this.gutterSize() + 'px' } : { height: this.gutterSize() + 'px' })\n        };\n    }\n\n    horizontal() {\n        return this.layout() === 'horizontal';\n    }\n\n    round(value: number | undefined): number {\n        return Math.round(value ?? 0);\n    }\n\n    onDestroy() {\n        this.unbindPointerListeners();\n        this.clearTimer();\n    }\n\n    dataP = computed(() => {\n        return this.cn({\n            [this.layout()!]: this.layout(),\n            resizing: this.isResizing(),\n            disabled: this.disabled()\n        });\n    });\n}\n\n@NgModule({\n    imports: [Splitter, SplitterPanel, SharedModule, BindModule],\n    exports: [Splitter, SplitterPanel, SharedModule, BindModule]\n})\nexport class SplitterModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}