{"version":3,"file":"deja-js-component-v2-splitter.mjs","sources":["../../../../projects/deja-js/component/v2/splitter/split-area.directive.ts","../../../../projects/deja-js/component/v2/splitter/splitter.component.ts","../../../../projects/deja-js/component/v2/splitter/splitter.component.html","../../../../projects/deja-js/component/v2/splitter/splitter-direction-type.ts","../../../../projects/deja-js/component/v2/splitter/index.ts","../../../../projects/deja-js/component/v2/splitter/deja-js-component-v2-splitter.ts"],"sourcesContent":["/*\n *  @license\n *  Copyright Hôpitaux Universitaires de Genève. All Rights Reserved.\n *\n *  Use of this source code is governed by an Apache-2.0 license that can be\n *  found in the LICENSE file at https://github.com/DSI-HUG/dejajs-components/blob/master/LICENSE\n */\n\n/**\n * Created by rtr on 22.12.2016.\n */\nimport { coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\nimport { Directive, ElementRef, HostBinding, Input } from '@angular/core';\n\nimport { SplitterDirection } from './splitter-direction-type';\n\n/**\n * Directive representing a panel in a Splitter Component\n */\n@Directive({\n    selector: 'split-area'\n})\nexport class SplitAreaDirective {\n\n    @HostBinding('style.order')\n    public order: number;\n\n    @HostBinding('style.flex-basis.%')\n    protected _size: number | null = null;\n\n    public direction = 'horizontal' as SplitterDirection;\n\n    /**\n     * Size in percent of the current area\n     */\n    @Input()\n    public set size(value: NumberInput) {\n        this._size = coerceNumberProperty(value);\n    }\n\n    public get size(): number {\n        const parentElement = this.elementRef.nativeElement.parentElement;\n        const parentSizeInPixels = this.direction === 'horizontal' ? parentElement.offsetWidth : parentElement.offsetHeight;\n        return 100 * this.sizeinPixels / parentSizeInPixels;\n    }\n\n    public get sizeinPixels(): number {\n        return this.direction === 'horizontal' ? this.elementRef.nativeElement.offsetWidth : this.elementRef.nativeElement.offsetHeight;\n    }\n\n    /**\n     * Min size in percent of the current area\n     */\n    @Input()\n    public set minSizePixel(value: NumberInput) {\n        this._minSizePixel = coerceNumberProperty(value);\n    }\n\n    public get minSizePixel(): number {\n        return this._minSizePixel;\n    }\n\n    @HostBinding('style.min-width.px')\n    protected get minWidth(): number {\n        return this.direction === 'vertical' ? null : this._minSizePixel;\n    }\n\n    @HostBinding('style.min-height.px')\n    protected get minHeight(): number {\n        return this.direction === 'horizontal' ? null : this._minSizePixel;\n    }\n\n    private _minSizePixel = 0;\n\n    public constructor(private elementRef: ElementRef<HTMLElement>) { }\n}\n","/*\n *  @license\n *  Copyright Hôpitaux Universitaires de Genève. All Rights Reserved.\n *\n *  Use of this source code is governed by an Apache-2.0 license that can be\n *  found in the LICENSE file at https://github.com/DSI-HUG/dejajs-components/blob/master/LICENSE\n */\n\nimport { BooleanInput, coerceBooleanProperty, coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, HostBinding, Input, Output, QueryList, ViewEncapsulation } from '@angular/core';\nimport { Destroy } from '@deja-js/component/core';\nimport { filter, fromEvent, map, mergeWith, of, shareReplay, Subject, switchMap, take, takeUntil, tap } from 'rxjs';\n\nimport { SplitAreaDirective } from './split-area.directive';\nimport { SplitterDirection } from './splitter-direction-type';\n\ninterface DraggingEvent {\n    event: MouseEvent | TouchEvent;\n    index: number;\n}\n\n/**\n * Splitter Component for Angular\n *\n * The splitter component allows to split horizontally or vertically, a container in N resizable part.\n */\n@Component({\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    selector: 'deja-splitter',\n    styleUrls: ['./splitter.component.scss'],\n    templateUrl: './splitter.component.html'\n})\nexport class DejaSplitterComponent extends Destroy {\n    /**\n     * Event triggered when the user start to drag the cursor\n     */\n    @Output() public readonly dragStart = new EventEmitter(false);\n    /**\n     * Event triggered during the cursor's drag\n     */\n    @Output() public readonly dragProgress = new EventEmitter(false);\n    /**\n     * Event triggered when the user stop to drag the cursor\n     */\n    @Output() public readonly dragEnd = new EventEmitter(false);\n\n    /**\n     * Direction of the split\n     * Can be `horizontal` or `vertical`\n     */\n    @Input()\n    public set direction(direction: SplitterDirection) {\n        this._direction = direction;\n        this.ensureDirections();\n    }\n\n    public get direction(): SplitterDirection {\n        return this._direction;\n    }\n\n    /**\n    * Size of the gutter in pixels\n    * By default `10px`\n    */\n    @Input()\n    public set gutterSize(gutterSize: NumberInput) {\n        this._gutterSize = coerceNumberProperty(gutterSize);\n    }\n\n    public get gutterSize(): NumberInput {\n        return this._gutterSize;\n    }\n\n    @HostBinding('style.flex-direction')\n    protected get styleFlexDirection(): string {\n        return this.direction === 'horizontal' ? 'row' : 'column';\n    }\n\n    @ContentChildren(SplitAreaDirective)\n    protected set spliterAreas(spliterAreas: QueryList<SplitAreaDirective>) {\n        this.areas = spliterAreas.toArray();\n        this.areas.forEach((area, index) => area.order = 2 * index);\n        this.ensureDirections();\n    }\n\n    @HostBinding('attr.splitting')\n    protected splitting = null as boolean;\n\n    @HostBinding('attr.direction')\n    private _direction = 'horizontal' as SplitterDirection;\n\n    @HostBinding('attr.disabled')\n    private _disabled = null as boolean;\n\n    protected startDragging$ = new Subject<DraggingEvent>();\n\n    protected areas = new Array<SplitAreaDirective>() as ReadonlyArray<SplitAreaDirective>;\n\n    private _gutterSize = 10;\n\n    /** Retourne ou definit si le selecteur est desactivé. */\n    @Input()\n    public set disabled(value: BooleanInput) {\n        this._disabled = coerceBooleanProperty(value) || null;\n    }\n\n    public get disabled(): BooleanInput {\n        return this._disabled;\n    }\n\n    /**\n     * Constructor\n     */\n    public constructor(\n        changeDetectorRef: ChangeDetectorRef,\n        elementRef: ElementRef<HTMLElement>\n    ) {\n        super();\n\n        this.startDragging$.pipe(\n            filter(() => !this.disabled),\n            switchMap(draggingEvent => {\n                const areaA = this.areas.find(a => a.order === draggingEvent.index - 1);\n                const areaB = this.areas.find(a => a.order === draggingEvent.index + 1);\n                const mouseEvent = draggingEvent.event as MouseEvent;\n                if (!areaA || !areaB) {\n                    return of(mouseEvent);\n                }\n\n                const startPos = this.direction === 'horizontal' ? mouseEvent.pageX || mouseEvent.screenX : mouseEvent.pageY || mouseEvent.screenY;\n                const containerSizeInPixels = this.direction === 'horizontal' ? elementRef.nativeElement.offsetWidth : elementRef.nativeElement.offsetHeight;\n                const startSizeInPixelsA = areaA.sizeinPixels;\n                const startSizeInPixelsB = areaB.sizeinPixels;\n\n                this.dragStart.emit();\n\n                const mouseMove$ = fromEvent<MouseEvent>(document, 'mousemove').pipe(\n                    shareReplay({ bufferSize: 1, refCount: true })\n                );\n\n                const stopDragging$ = mouseMove$.pipe(\n                    filter(event => event.buttons !== 1),\n                    mergeWith(fromEvent(document, 'mouseup'), fromEvent(document, 'touchend'), fromEvent(document, 'touchcancel')),\n                    map(event => {\n                        this.dragEnd.emit();\n                        return event as MouseEvent;\n                    }),\n                    shareReplay({ bufferSize: 1, refCount: true })\n                );\n\n                const drag$ = mouseMove$.pipe(\n                    filter(event => event.buttons === 1),\n                    mergeWith(fromEvent<MouseEvent>(document, 'touchmove')),\n                    tap(event => {\n                        const pos = this.direction === 'horizontal' ? event.pageX || event.screenX : event.pageY || event.screenY;\n                        const diffInPixels = startPos - pos;\n                        areaA.size = Math.min(100, Math.max(0, 100 * (startSizeInPixelsA - diffInPixels) / containerSizeInPixels));\n                        areaB.size = Math.min(100, Math.max(0, 100 * (startSizeInPixelsB + diffInPixels) / containerSizeInPixels));\n                        this.dragProgress.emit();\n                    }),\n                    takeUntil(stopDragging$)\n                );\n\n                return stopDragging$.pipe(\n                    take(1),\n                    mergeWith(drag$)\n                );\n            }),\n            takeUntil(this.destroyed$)\n        ).subscribe(event => {\n            event.preventDefault();\n            this.splitting = event.type !== 'mouseup' && event.type !== 'touchend' && event.type !== 'touchcancel' || null;\n            changeDetectorRef.markForCheck();\n            return false;\n        });\n    }\n\n    private ensureDirections(): void {\n        this.areas.forEach(area => area.direction = this.direction);\n    }\n}\n","<ng-content></ng-content>\n<ng-template ngFor let-area [ngForOf]=\"areas\" let-index=\"index\" let-last=\"last\">\n    <div class=\"split-gutter\" *ngIf=\"last === false\" [style.order]=\"index*2+1\" [style.flex-basis.px]=\"gutterSize\" (mousedown)=\"startDragging$.next({ event: $event, index: index*2+1 })\" (touchstart)=\"startDragging$.next({ event: $event, index: index*2+1 })\">\n    </div>\n</ng-template>\n","/*\n *  @license\n *  Copyright Hôpitaux Universitaires de Genève. All Rights Reserved.\n *\n *  Use of this source code is governed by an Apache-2.0 license that can be\n *  found in the LICENSE file at https://github.com/DSI-HUG/dejajs-components/blob/master/LICENSE\n */\n\nexport type SplitterDirection = 'horizontal' | 'vertical';\n","/*\n *  @license\n *  Copyright Hôpitaux Universitaires de Genève. All Rights Reserved.\n *\n *  Use of this source code is governed by an Apache-2.0 license that can be\n *  found in the LICENSE file at https://github.com/DSI-HUG/dejajs-components/blob/master/LICENSE\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { SplitAreaDirective } from './split-area.directive';\nimport { DejaSplitterComponent } from './splitter.component';\n\n@NgModule({\n    declarations: [\n        DejaSplitterComponent,\n        SplitAreaDirective\n    ],\n    exports: [\n        DejaSplitterComponent,\n        SplitAreaDirective\n    ],\n    imports: [\n        CommonModule\n    ]\n})\nexport class DejaSplitterModule {\n\n}\n\nexport * from './splitter-direction-type';\nexport * from './split-area.directive';\nexport * from './splitter.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}