{"version":3,"file":"primeng-scrollpanel.umd.js","sources":["../../src/app/components/scrollpanel/scrollpanel.ts","../../src/app/components/scrollpanel/primeng-scrollpanel.ts"],"sourcesContent":["import { NgModule, Component, Input, AfterViewInit, OnDestroy, ElementRef, NgZone, ViewChild, ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef, AfterContentInit, ContentChildren, QueryList, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler } from 'primeng/dom';\nimport { PrimeTemplate } from 'primeng/api';\n\n@Component({\n    selector: 'p-scrollPanel',\n    template: `\n        <div #container [ngClass]=\"'p-scrollpanel p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <div class=\"p-scrollpanel-wrapper\">\n                <div #content class=\"p-scrollpanel-content\">\n                    <ng-content></ng-content>\n                    <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n                </div>\n            </div>\n            <div #xBar class=\"p-scrollpanel-bar p-scrollpanel-bar-x\"></div>\n            <div #yBar class=\"p-scrollpanel-bar p-scrollpanel-bar-y\"></div>   \n        </div>\n    `,\n   changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./scrollpanel.css']\n})\nexport class ScrollPanel implements AfterViewInit, AfterContentInit, OnDestroy {\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n    \n    constructor(public el: ElementRef, public zone: NgZone, public cd: ChangeDetectorRef) {}\n\n    @ViewChild('container') containerViewChild: ElementRef;\n\n    @ViewChild('content') contentViewChild: ElementRef;\n\n    @ViewChild('xBar') xBarViewChild: ElementRef;\n    \n    @ViewChild('yBar') yBarViewChild: ElementRef;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n    scrollYRatio: number;\n\n    scrollXRatio: number;\n\n    timeoutFrame: any = (fn) => setTimeout(fn, 0);\n\n    initialized: boolean;\n\n    lastPageY: number;\n\n    lastPageX: number;\n\n    isXBarClicked: boolean;\n\n    isYBarClicked: boolean;\n\n    contentTemplate: TemplateRef<any>;\n\n    ngAfterViewInit() {\n        this.zone.runOutsideAngular(() => {\n            this.moveBar();\n            this.moveBar = this.moveBar.bind(this);\n            this.onXBarMouseDown = this.onXBarMouseDown.bind(this);\n            this.onYBarMouseDown = this.onYBarMouseDown.bind(this);\n            this.onDocumentMouseMove = this.onDocumentMouseMove.bind(this);\n            this.onDocumentMouseUp = this.onDocumentMouseUp.bind(this);\n            \n            window.addEventListener('resize', this.moveBar);\n            this.contentViewChild.nativeElement.addEventListener('scroll', this.moveBar);\n            this.contentViewChild.nativeElement.addEventListener('mouseenter', this.moveBar);\n            this.xBarViewChild.nativeElement.addEventListener('mousedown', this.onXBarMouseDown);\n            this.yBarViewChild.nativeElement.addEventListener('mousedown', this.onYBarMouseDown);\n\n            this.calculateContainerHeight();\n\n            this.initialized = true;\n        });\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'content':\n                    this.contentTemplate = item.template;\n                break;\n\n                default:\n                    this.contentTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    calculateContainerHeight() {\n        let container = this.containerViewChild.nativeElement;\n        let content = this.contentViewChild.nativeElement;\n        let xBar = this.xBarViewChild.nativeElement;\n\n        let containerStyles = getComputedStyle(container),\n        xBarStyles = getComputedStyle(xBar),\n        pureContainerHeight = DomHandler.getHeight(container) - parseInt(xBarStyles['height'], 10);\n\n        if (containerStyles['max-height'] != \"none\" && pureContainerHeight == 0) {\n            if (content.offsetHeight + parseInt(xBarStyles['height'], 10) > parseInt(containerStyles['max-height'], 10)) {\n                container.style.height = containerStyles['max-height'];\n            }\n            else {\n                container.style.height = content.offsetHeight + parseFloat(containerStyles.paddingTop) + parseFloat(containerStyles.paddingBottom) + parseFloat(containerStyles.borderTopWidth) + parseFloat(containerStyles.borderBottomWidth) + \"px\";\n            }\n        }\n    }\n\n    moveBar() {\n        let container = this.containerViewChild.nativeElement;\n        let content = this.contentViewChild.nativeElement;\n\n        /* horizontal scroll */\n        let xBar = this.xBarViewChild.nativeElement;\n        let totalWidth = content.scrollWidth;\n        let ownWidth = content.clientWidth;\n        let bottom = (container.clientHeight - xBar.clientHeight) * -1;\n\n        this.scrollXRatio = ownWidth / totalWidth;\n\n        /* vertical scroll */\n        let yBar = this.yBarViewChild.nativeElement;\n        let totalHeight = content.scrollHeight;\n        let ownHeight = content.clientHeight;\n        let right = (container.clientWidth - yBar.clientWidth) * -1;\n\n        this.scrollYRatio = ownHeight / totalHeight;\n\n        this.requestAnimationFrame(() => {\n            if (this.scrollXRatio >= 1) {\n                DomHandler.addClass(xBar, 'p-scrollpanel-hidden');\n            } \n            else {\n                DomHandler.removeClass(xBar, 'p-scrollpanel-hidden');\n                const xBarWidth = Math.max(this.scrollXRatio * 100, 10);\n                const xBarLeft = content.scrollLeft * (100 - xBarWidth) / (totalWidth - ownWidth);\n                xBar.style.cssText = 'width:' + xBarWidth + '%; left:' + xBarLeft + '%;bottom:' + bottom + 'px;';\n            }\n\n            if (this.scrollYRatio >= 1) {\n                DomHandler.addClass(yBar, 'p-scrollpanel-hidden');\n            } \n            else {\n                DomHandler.removeClass(yBar, 'p-scrollpanel-hidden');\n                const yBarHeight = Math.max(this.scrollYRatio * 100, 10);\n                const yBarTop = content.scrollTop * (100 - yBarHeight) / (totalHeight - ownHeight);\n                yBar.style.cssText = 'height:' + yBarHeight + '%; top: calc(' + yBarTop + '% - ' + xBar.clientHeight + 'px);right:' + right + 'px;';\n            }\n        });\n        this.cd.markForCheck();\n    }\n\n    onYBarMouseDown(e: MouseEvent) {\n        this.isYBarClicked = true;\n        this.lastPageY = e.pageY;\n        DomHandler.addClass(this.yBarViewChild.nativeElement, 'p-scrollpanel-grabbed');\n        \n        DomHandler.addClass(document.body, 'p-scrollpanel-grabbed');\n\n        document.addEventListener('mousemove', this.onDocumentMouseMove);\n        document.addEventListener('mouseup', this.onDocumentMouseUp);\n        e.preventDefault();\n    }\n\n    onXBarMouseDown(e: MouseEvent) {\n        this.isXBarClicked = true;\n        this.lastPageX = e.pageX;\n        DomHandler.addClass(this.xBarViewChild.nativeElement, 'p-scrollpanel-grabbed');\n\n        DomHandler.addClass(document.body, 'p-scrollpanel-grabbed');\n\n        document.addEventListener('mousemove', this.onDocumentMouseMove);\n        document.addEventListener('mouseup', this.onDocumentMouseUp);\n        e.preventDefault();\n    }\n\n    onDocumentMouseMove(e: MouseEvent) {\n        if (this.isXBarClicked) {\n            this.onMouseMoveForXBar(e);\n        }\n        else if (this.isYBarClicked) {\n            this.onMouseMoveForYBar(e);\n        }\n        else {\n            this.onMouseMoveForXBar(e);\n            this.onMouseMoveForYBar(e);\n        }\n        \n    }\n\n    onMouseMoveForXBar(e: MouseEvent) {\n        let deltaX = e.pageX - this.lastPageX;\n        this.lastPageX = e.pageX;\n\n        this.requestAnimationFrame(() => {\n            this.contentViewChild.nativeElement.scrollLeft += deltaX / this.scrollXRatio;\n        });\n    }\n\n    onMouseMoveForYBar(e: MouseEvent) {\n        let deltaY = e.pageY - this.lastPageY;\n        this.lastPageY = e.pageY;\n\n        this.requestAnimationFrame(() => {\n            this.contentViewChild.nativeElement.scrollTop += deltaY / this.scrollYRatio;\n        });\n    }\n\n    scrollTop(scrollTop: number) {\n        let scrollableHeight = this.contentViewChild.nativeElement.scrollHeight - this.contentViewChild.nativeElement.clientHeight;\n        scrollTop = scrollTop > scrollableHeight ? scrollableHeight : scrollTop > 0 ? scrollTop : 0;\n        this.contentViewChild.nativeElement.scrollTop = scrollTop;\n    }\n\n    onDocumentMouseUp(e: Event) {\n        DomHandler.removeClass(this.yBarViewChild.nativeElement, 'p-scrollpanel-grabbed');\n        DomHandler.removeClass(this.xBarViewChild.nativeElement, 'p-scrollpanel-grabbed');\n        DomHandler.removeClass(document.body, 'p-scrollpanel-grabbed');\n\n        document.removeEventListener('mousemove', this.onDocumentMouseMove);\n        document.removeEventListener('mouseup', this.onDocumentMouseUp);\n        this.isXBarClicked = false;\n        this.isYBarClicked = false;\n    }\n\n    requestAnimationFrame(f: Function) {\n        let frame = window.requestAnimationFrame || this.timeoutFrame;\n        frame(f);\n    }\n\n    ngOnDestroy() {\n        if (this.initialized) {\n            window.removeEventListener('resize', this.moveBar);\n            this.contentViewChild.nativeElement.removeEventListener('scroll', this.moveBar);\n            this.contentViewChild.nativeElement.removeEventListener('mouseenter', this.moveBar);\n            this.xBarViewChild.nativeElement.removeEventListener('mousedown', this.onXBarMouseDown);\n            this.yBarViewChild.nativeElement.removeEventListener('mousedown', this.onYBarMouseDown);\n        }\n    }\n\n    refresh() {\n        this.moveBar();\n    }\n\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [ScrollPanel],\n    declarations: [ScrollPanel]\n})\nexport class ScrollPanelModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["DomHandler","PrimeTemplate","Component","ChangeDetectionStrategy","ViewEncapsulation","Input","ViewChild","ContentChildren","CommonModule","NgModule"],"mappings":"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"}