{"version":3,"file":"index.mjs","sources":["../../src/scrollpanel/BaseScrollPanel.vue","../../src/scrollpanel/ScrollPanel.vue","../../src/scrollpanel/ScrollPanel.vue?vue&type=template&id=34af76e6&lang.js"],"sourcesContent":["<script>\nimport BaseComponent from '@primevue/core/basecomponent';\nimport ScrollPanelStyle from 'primevue/scrollpanel/style';\n\nexport default {\n    name: 'BaseScrollPanel',\n    extends: BaseComponent,\n    props: {\n        step: {\n            type: Number,\n            default: 5\n        }\n    },\n    style: ScrollPanelStyle,\n    provide() {\n        return {\n            $pcScrollPanel: this,\n            $parentInstance: this\n        };\n    }\n};\n</script>\n","<template>\n    <div :class=\"cx('root')\" v-bind=\"ptmi('root')\">\n        <div :class=\"cx('contentContainer')\" v-bind=\"ptm('contentContainer')\">\n            <div ref=\"content\" :id=\"contentId\" :class=\"cx('content')\" @scroll=\"onScroll\" @mouseenter=\"moveBar\" v-bind=\"ptm('content')\">\n                <slot></slot>\n            </div>\n        </div>\n        <div\n            ref=\"xBar\"\n            :class=\"cx('barx')\"\n            tabindex=\"0\"\n            role=\"scrollbar\"\n            aria-orientation=\"horizontal\"\n            :aria-controls=\"contentId\"\n            :aria-valuenow=\"lastScrollLeft\"\n            @mousedown=\"onXBarMouseDown\"\n            @keydown=\"onKeyDown($event)\"\n            @keyup=\"onKeyUp\"\n            @focus=\"onFocus\"\n            @blur=\"onBlur\"\n            v-bind=\"ptm('barx')\"\n            data-pc-group-section=\"bar\"\n        ></div>\n        <div\n            ref=\"yBar\"\n            :class=\"cx('bary')\"\n            tabindex=\"0\"\n            role=\"scrollbar\"\n            aria-orientation=\"vertical\"\n            :aria-controls=\"contentId\"\n            :aria-valuenow=\"lastScrollTop\"\n            @mousedown=\"onYBarMouseDown\"\n            @keydown=\"onKeyDown($event)\"\n            @keyup=\"onKeyUp\"\n            @focus=\"onFocus\"\n            v-bind=\"ptm('bary')\"\n            data-pc-group-section=\"bar\"\n        ></div>\n    </div>\n</template>\n\n<script>\nimport { addClass, getHeight, removeClass } from '@primeuix/utils/dom';\nimport { UniqueComponentId } from '@primevue/core/utils';\nimport BaseScrollPanel from './BaseScrollPanel.vue';\n\nexport default {\n    name: 'ScrollPanel',\n    extends: BaseScrollPanel,\n    inheritAttrs: false,\n    initialized: false,\n    documentResizeListener: null,\n    documentMouseMoveListener: null,\n    documentMouseUpListener: null,\n    frame: null,\n    scrollXRatio: null,\n    scrollYRatio: null,\n    isXBarClicked: false,\n    isYBarClicked: false,\n    lastPageX: null,\n    lastPageY: null,\n    timer: null,\n    outsideClickListener: null,\n    mutationObserver: null,\n    data() {\n        return {\n            id: this.$attrs.id,\n            orientation: 'vertical',\n            lastScrollTop: 0,\n            lastScrollLeft: 0,\n            isRTL: false\n        };\n    },\n    watch: {\n        '$attrs.id': function (newValue) {\n            this.id = newValue || UniqueComponentId();\n        }\n    },\n    mounted() {\n        this.id = this.id || UniqueComponentId();\n\n        if (this.$el.offsetParent) {\n            this.initialize();\n        }\n\n        this.updateDirection();\n        this.observeDirectionChanges();\n    },\n    updated() {\n        if (!this.initialized && this.$el.offsetParent) {\n            this.initialize();\n        }\n    },\n    beforeUnmount() {\n        this.unbindDocumentResizeListener();\n\n        if (this.frame) {\n            window.cancelAnimationFrame(this.frame);\n        }\n\n        if (this.mutationObserver) {\n            this.mutationObserver.disconnect();\n        }\n    },\n    methods: {\n        updateDirection() {\n            this.isRTL = !!this.$el.closest('[dir=\"rtl\"]');\n        },\n        observeDirectionChanges() {\n            const targetNode = document.documentElement;\n            const config = { attributes: true, attributeFilter: ['dir'] };\n\n            this.mutationObserver = new MutationObserver(() => {\n                this.updateDirection();\n            });\n\n            this.mutationObserver.observe(targetNode, config);\n        },\n        initialize() {\n            this.moveBar();\n            this.bindDocumentResizeListener();\n            this.calculateContainerHeight();\n        },\n        calculateContainerHeight() {\n            let containerStyles = getComputedStyle(this.$el),\n                xBarStyles = getComputedStyle(this.$refs.xBar),\n                pureContainerHeight = getHeight(this.$el) - parseInt(xBarStyles['height'], 10);\n\n            if (containerStyles['max-height'] !== 'none' && pureContainerHeight === 0) {\n                if (this.$refs.content.offsetHeight + parseInt(xBarStyles['height'], 10) > parseInt(containerStyles['max-height'], 10)) {\n                    this.$el.style.height = containerStyles['max-height'];\n                } else {\n                    this.$el.style.height =\n                        this.$refs.content.offsetHeight + parseFloat(containerStyles.paddingTop) + parseFloat(containerStyles.paddingBottom) + parseFloat(containerStyles.borderTopWidth) + parseFloat(containerStyles.borderBottomWidth) + 'px';\n                }\n            }\n        },\n        moveBar() {\n            if (this.$refs.content) {\n                /* horizontal scroll */\n                let totalWidth = this.$refs.content.scrollWidth;\n                let ownWidth = this.$refs.content.clientWidth;\n                let bottom = (this.$el.clientHeight - this.$refs.xBar.clientHeight) * -1;\n\n                this.scrollXRatio = ownWidth / totalWidth;\n\n                /* vertical scroll */\n                let totalHeight = this.$refs.content.scrollHeight;\n                let ownHeight = this.$refs.content.clientHeight;\n                let right = (this.$el.clientWidth - this.$refs.yBar.clientWidth) * -1;\n\n                this.scrollYRatio = ownHeight / totalHeight;\n\n                this.frame = this.requestAnimationFrame(() => {\n                    if (this.$refs.xBar) {\n                        if (this.scrollXRatio >= 1) {\n                            this.$refs.xBar.setAttribute('data-p-scrollpanel-hidden', 'true');\n                            !this.isUnstyled && addClass(this.$refs.xBar, 'p-scrollpanel-hidden');\n                        } else {\n                            this.$refs.xBar.setAttribute('data-p-scrollpanel-hidden', 'false');\n                            !this.isUnstyled && removeClass(this.$refs.xBar, 'p-scrollpanel-hidden');\n\n                            if (this.isRTL) {\n                                this.$refs.xBar.style.cssText = 'width:' + Math.max(this.scrollXRatio * 100, 10) + '%; right:' + (this.$refs.content.scrollLeft / totalWidth) * 100 + '%;bottom:' + bottom + 'px;';\n                            } else {\n                                this.$refs.xBar.style.cssText = 'width:' + Math.max(this.scrollXRatio * 100, 10) + '%; left:' + (this.$refs.content.scrollLeft / totalWidth) * 100 + '%;bottom:' + bottom + 'px;';\n                            }\n                        }\n                    }\n\n                    if (this.$refs.yBar) {\n                        if (this.scrollYRatio >= 1) {\n                            this.$refs.yBar.setAttribute('data-p-scrollpanel-hidden', 'true');\n                            !this.isUnstyled && addClass(this.$refs.yBar, 'p-scrollpanel-hidden');\n                        } else {\n                            this.$refs.yBar.setAttribute('data-p-scrollpanel-hidden', 'false');\n                            !this.isUnstyled && removeClass(this.$refs.yBar, 'p-scrollpanel-hidden');\n\n                            if (this.isRTL) {\n                                this.$refs.yBar.style.cssText =\n                                    'height:' + Math.max(this.scrollYRatio * 100, 10) + '%; top: calc(' + (this.$refs.content.scrollTop / totalHeight) * 100 + '% - ' + this.$refs.xBar.clientHeight + 'px);left:' + right + 'px;';\n                            } else {\n                                this.$refs.yBar.style.cssText =\n                                    'height:' + Math.max(this.scrollYRatio * 100, 10) + '%; top: calc(' + (this.$refs.content.scrollTop / totalHeight) * 100 + '% - ' + this.$refs.xBar.clientHeight + 'px);right:' + right + 'px;';\n                            }\n                        }\n                    }\n                });\n            }\n        },\n        onYBarMouseDown(e) {\n            this.isYBarClicked = true;\n            this.$refs.yBar.focus();\n            this.lastPageY = e.pageY;\n            this.$refs.yBar.setAttribute('data-p-scrollpanel-grabbed', 'true');\n            !this.isUnstyled && addClass(this.$refs.yBar, 'p-scrollpanel-grabbed');\n            document.body.setAttribute('data-p-scrollpanel-grabbed', 'true');\n            !this.isUnstyled && addClass(document.body, 'p-scrollpanel-grabbed');\n\n            this.bindDocumentMouseListeners();\n            e.preventDefault();\n        },\n        onXBarMouseDown(e) {\n            this.isXBarClicked = true;\n            this.$refs.xBar.focus();\n            this.lastPageX = e.pageX;\n            this.$refs.yBar.setAttribute('data-p-scrollpanel-grabbed', 'false');\n            !this.isUnstyled && addClass(this.$refs.xBar, 'p-scrollpanel-grabbed');\n            document.body.setAttribute('data-p-scrollpanel-grabbed', 'false');\n            !this.isUnstyled && addClass(document.body, 'p-scrollpanel-grabbed');\n\n            this.bindDocumentMouseListeners();\n            e.preventDefault();\n        },\n        onScroll(event) {\n            if (this.lastScrollLeft !== event.target.scrollLeft) {\n                this.lastScrollLeft = event.target.scrollLeft;\n                this.orientation = 'horizontal';\n            } else if (this.lastScrollTop !== event.target.scrollTop) {\n                this.lastScrollTop = event.target.scrollTop;\n                this.orientation = 'vertical';\n            }\n\n            this.moveBar();\n        },\n        onKeyDown(event) {\n            if (this.orientation === 'vertical') {\n                switch (event.code) {\n                    case 'ArrowDown': {\n                        this.setTimer('scrollTop', this.step);\n                        event.preventDefault();\n                        break;\n                    }\n\n                    case 'ArrowUp': {\n                        this.setTimer('scrollTop', this.step * -1);\n                        event.preventDefault();\n                        break;\n                    }\n\n                    case 'ArrowLeft':\n\n                    case 'ArrowRight': {\n                        event.preventDefault();\n                        break;\n                    }\n\n                    default:\n                        //no op\n                        break;\n                }\n            } else if (this.orientation === 'horizontal') {\n                switch (event.code) {\n                    case 'ArrowRight': {\n                        this.setTimer('scrollLeft', this.step);\n                        event.preventDefault();\n                        break;\n                    }\n\n                    case 'ArrowLeft': {\n                        this.setTimer('scrollLeft', this.step * -1);\n                        event.preventDefault();\n                        break;\n                    }\n\n                    case 'ArrowDown':\n\n                    case 'ArrowUp': {\n                        event.preventDefault();\n                        break;\n                    }\n\n                    default:\n                        //no op\n                        break;\n                }\n            }\n        },\n        onKeyUp() {\n            this.clearTimer();\n        },\n        repeat(bar, step) {\n            this.$refs.content[bar] += step;\n            this.moveBar();\n        },\n        setTimer(bar, step) {\n            this.clearTimer();\n            this.timer = setTimeout(() => {\n                this.repeat(bar, step);\n            }, 40);\n        },\n        clearTimer() {\n            if (this.timer) {\n                clearTimeout(this.timer);\n            }\n        },\n        onDocumentMouseMove(e) {\n            if (this.isXBarClicked) {\n                this.onMouseMoveForXBar(e);\n            } else if (this.isYBarClicked) {\n                this.onMouseMoveForYBar(e);\n            } else {\n                this.onMouseMoveForXBar(e);\n                this.onMouseMoveForYBar(e);\n            }\n        },\n        onMouseMoveForXBar(e) {\n            let deltaX = e.pageX - this.lastPageX;\n\n            this.lastPageX = e.pageX;\n\n            this.frame = this.requestAnimationFrame(() => {\n                this.$refs.content.scrollLeft += deltaX / this.scrollXRatio;\n            });\n        },\n        onMouseMoveForYBar(e) {\n            let deltaY = e.pageY - this.lastPageY;\n\n            this.lastPageY = e.pageY;\n\n            this.frame = this.requestAnimationFrame(() => {\n                this.$refs.content.scrollTop += deltaY / this.scrollYRatio;\n            });\n        },\n        onFocus(event) {\n            if (this.$refs.xBar.isSameNode(event.target)) {\n                this.orientation = 'horizontal';\n            } else if (this.$refs.yBar.isSameNode(event.target)) {\n                this.orientation = 'vertical';\n            }\n        },\n        onBlur() {\n            if (this.orientation === 'horizontal') {\n                this.orientation = 'vertical';\n            }\n        },\n        onDocumentMouseUp() {\n            this.$refs.yBar.setAttribute('data-p-scrollpanel-grabbed', 'false');\n            !this.isUnstyled && removeClass(this.$refs.yBar, 'p-scrollpanel-grabbed');\n            this.$refs.xBar.setAttribute('data-p-scrollpanel-grabbed', 'false');\n            !this.isUnstyled && removeClass(this.$refs.xBar, 'p-scrollpanel-grabbed');\n            document.body.setAttribute('data-p-scrollpanel-grabbed', 'false');\n            !this.isUnstyled && removeClass(document.body, 'p-scrollpanel-grabbed');\n\n            this.unbindDocumentMouseListeners();\n            this.isXBarClicked = false;\n            this.isYBarClicked = false;\n        },\n        requestAnimationFrame(f) {\n            let frame = window.requestAnimationFrame || this.timeoutFrame;\n\n            return frame(f);\n        },\n        refresh() {\n            this.moveBar();\n        },\n        scrollTop(scrollTop) {\n            let scrollableHeight = this.$refs.content.scrollHeight - this.$refs.content.clientHeight;\n\n            scrollTop = scrollTop > scrollableHeight ? scrollableHeight : scrollTop > 0 ? scrollTop : 0;\n            this.$refs.content.scrollTop = scrollTop;\n        },\n        timeoutFrame(fn) {\n            setTimeout(fn, 0);\n        },\n        bindDocumentMouseListeners() {\n            if (!this.documentMouseMoveListener) {\n                this.documentMouseMoveListener = (e) => {\n                    this.onDocumentMouseMove(e);\n                };\n\n                document.addEventListener('mousemove', this.documentMouseMoveListener);\n            }\n\n            if (!this.documentMouseUpListener) {\n                this.documentMouseUpListener = (e) => {\n                    this.onDocumentMouseUp(e);\n                };\n\n                document.addEventListener('mouseup', this.documentMouseUpListener);\n            }\n        },\n        unbindDocumentMouseListeners() {\n            if (this.documentMouseMoveListener) {\n                document.removeEventListener('mousemove', this.documentMouseMoveListener);\n                this.documentMouseMoveListener = null;\n            }\n\n            if (this.documentMouseUpListener) {\n                document.removeEventListener('mouseup', this.documentMouseUpListener);\n                this.documentMouseUpListener = null;\n            }\n        },\n        bindDocumentResizeListener() {\n            if (!this.documentResizeListener) {\n                this.documentResizeListener = () => {\n                    this.moveBar();\n                };\n\n                window.addEventListener('resize', this.documentResizeListener);\n            }\n        },\n        unbindDocumentResizeListener() {\n            if (this.documentResizeListener) {\n                window.removeEventListener('resize', this.documentResizeListener);\n                this.documentResizeListener = null;\n            }\n        }\n    },\n    computed: {\n        contentId() {\n            return this.id + '_content';\n        }\n    }\n};\n</script>\n","<template>\n    <div :class=\"cx('root')\" v-bind=\"ptmi('root')\">\n        <div :class=\"cx('contentContainer')\" v-bind=\"ptm('contentContainer')\">\n            <div ref=\"content\" :id=\"contentId\" :class=\"cx('content')\" @scroll=\"onScroll\" @mouseenter=\"moveBar\" v-bind=\"ptm('content')\">\n                <slot></slot>\n            </div>\n        </div>\n        <div\n            ref=\"xBar\"\n            :class=\"cx('barx')\"\n            tabindex=\"0\"\n            role=\"scrollbar\"\n            aria-orientation=\"horizontal\"\n            :aria-controls=\"contentId\"\n            :aria-valuenow=\"lastScrollLeft\"\n            @mousedown=\"onXBarMouseDown\"\n            @keydown=\"onKeyDown($event)\"\n            @keyup=\"onKeyUp\"\n            @focus=\"onFocus\"\n            @blur=\"onBlur\"\n            v-bind=\"ptm('barx')\"\n            data-pc-group-section=\"bar\"\n        ></div>\n        <div\n            ref=\"yBar\"\n            :class=\"cx('bary')\"\n            tabindex=\"0\"\n            role=\"scrollbar\"\n            aria-orientation=\"vertical\"\n            :aria-controls=\"contentId\"\n            :aria-valuenow=\"lastScrollTop\"\n            @mousedown=\"onYBarMouseDown\"\n            @keydown=\"onKeyDown($event)\"\n            @keyup=\"onKeyUp\"\n            @focus=\"onFocus\"\n            v-bind=\"ptm('bary')\"\n            data-pc-group-section=\"bar\"\n        ></div>\n    </div>\n</template>\n\n<script>\nimport { addClass, getHeight, removeClass } from '@primeuix/utils/dom';\nimport { UniqueComponentId } from '@primevue/core/utils';\nimport BaseScrollPanel from './BaseScrollPanel.vue';\n\nexport default {\n    name: 'ScrollPanel',\n    extends: BaseScrollPanel,\n    inheritAttrs: false,\n    initialized: false,\n    documentResizeListener: null,\n    documentMouseMoveListener: null,\n    documentMouseUpListener: null,\n    frame: null,\n    scrollXRatio: null,\n    scrollYRatio: null,\n    isXBarClicked: false,\n    isYBarClicked: false,\n    lastPageX: null,\n    lastPageY: null,\n    timer: null,\n    outsideClickListener: null,\n    mutationObserver: null,\n    data() {\n        return {\n            id: this.$attrs.id,\n            orientation: 'vertical',\n            lastScrollTop: 0,\n            lastScrollLeft: 0,\n            isRTL: false\n        };\n    },\n    watch: {\n        '$attrs.id': function (newValue) {\n            this.id = newValue || UniqueComponentId();\n        }\n    },\n    mounted() {\n        this.id = this.id || UniqueComponentId();\n\n        if (this.$el.offsetParent) {\n            this.initialize();\n        }\n\n        this.updateDirection();\n        this.observeDirectionChanges();\n    },\n    updated() {\n        if (!this.initialized && this.$el.offsetParent) {\n            this.initialize();\n        }\n    },\n    beforeUnmount() {\n        this.unbindDocumentResizeListener();\n\n        if (this.frame) {\n            window.cancelAnimationFrame(this.frame);\n        }\n\n        if (this.mutationObserver) {\n            this.mutationObserver.disconnect();\n        }\n    },\n    methods: {\n        updateDirection() {\n            this.isRTL = !!this.$el.closest('[dir=\"rtl\"]');\n        },\n        observeDirectionChanges() {\n            const targetNode = document.documentElement;\n            const config = { attributes: true, attributeFilter: ['dir'] };\n\n            this.mutationObserver = new MutationObserver(() => {\n                this.updateDirection();\n            });\n\n            this.mutationObserver.observe(targetNode, config);\n        },\n        initialize() {\n            this.moveBar();\n            this.bindDocumentResizeListener();\n            this.calculateContainerHeight();\n        },\n        calculateContainerHeight() {\n            let containerStyles = getComputedStyle(this.$el),\n                xBarStyles = getComputedStyle(this.$refs.xBar),\n                pureContainerHeight = getHeight(this.$el) - parseInt(xBarStyles['height'], 10);\n\n            if (containerStyles['max-height'] !== 'none' && pureContainerHeight === 0) {\n                if (this.$refs.content.offsetHeight + parseInt(xBarStyles['height'], 10) > parseInt(containerStyles['max-height'], 10)) {\n                    this.$el.style.height = containerStyles['max-height'];\n                } else {\n                    this.$el.style.height =\n                        this.$refs.content.offsetHeight + parseFloat(containerStyles.paddingTop) + parseFloat(containerStyles.paddingBottom) + parseFloat(containerStyles.borderTopWidth) + parseFloat(containerStyles.borderBottomWidth) + 'px';\n                }\n            }\n        },\n        moveBar() {\n            if (this.$refs.content) {\n                /* horizontal scroll */\n                let totalWidth = this.$refs.content.scrollWidth;\n                let ownWidth = this.$refs.content.clientWidth;\n                let bottom = (this.$el.clientHeight - this.$refs.xBar.clientHeight) * -1;\n\n                this.scrollXRatio = ownWidth / totalWidth;\n\n                /* vertical scroll */\n                let totalHeight = this.$refs.content.scrollHeight;\n                let ownHeight = this.$refs.content.clientHeight;\n                let right = (this.$el.clientWidth - this.$refs.yBar.clientWidth) * -1;\n\n                this.scrollYRatio = ownHeight / totalHeight;\n\n                this.frame = this.requestAnimationFrame(() => {\n                    if (this.$refs.xBar) {\n                        if (this.scrollXRatio >= 1) {\n                            this.$refs.xBar.setAttribute('data-p-scrollpanel-hidden', 'true');\n                            !this.isUnstyled && addClass(this.$refs.xBar, 'p-scrollpanel-hidden');\n                        } else {\n                            this.$refs.xBar.setAttribute('data-p-scrollpanel-hidden', 'false');\n                            !this.isUnstyled && removeClass(this.$refs.xBar, 'p-scrollpanel-hidden');\n\n                            if (this.isRTL) {\n                                this.$refs.xBar.style.cssText = 'width:' + Math.max(this.scrollXRatio * 100, 10) + '%; right:' + (this.$refs.content.scrollLeft / totalWidth) * 100 + '%;bottom:' + bottom + 'px;';\n                            } else {\n                                this.$refs.xBar.style.cssText = 'width:' + Math.max(this.scrollXRatio * 100, 10) + '%; left:' + (this.$refs.content.scrollLeft / totalWidth) * 100 + '%;bottom:' + bottom + 'px;';\n                            }\n                        }\n                    }\n\n                    if (this.$refs.yBar) {\n                        if (this.scrollYRatio >= 1) {\n                            this.$refs.yBar.setAttribute('data-p-scrollpanel-hidden', 'true');\n                            !this.isUnstyled && addClass(this.$refs.yBar, 'p-scrollpanel-hidden');\n                        } else {\n                            this.$refs.yBar.setAttribute('data-p-scrollpanel-hidden', 'false');\n                            !this.isUnstyled && removeClass(this.$refs.yBar, 'p-scrollpanel-hidden');\n\n                            if (this.isRTL) {\n                                this.$refs.yBar.style.cssText =\n                                    'height:' + Math.max(this.scrollYRatio * 100, 10) + '%; top: calc(' + (this.$refs.content.scrollTop / totalHeight) * 100 + '% - ' + this.$refs.xBar.clientHeight + 'px);left:' + right + 'px;';\n                            } else {\n                                this.$refs.yBar.style.cssText =\n                                    'height:' + Math.max(this.scrollYRatio * 100, 10) + '%; top: calc(' + (this.$refs.content.scrollTop / totalHeight) * 100 + '% - ' + this.$refs.xBar.clientHeight + 'px);right:' + right + 'px;';\n                            }\n                        }\n                    }\n                });\n            }\n        },\n        onYBarMouseDown(e) {\n            this.isYBarClicked = true;\n            this.$refs.yBar.focus();\n            this.lastPageY = e.pageY;\n            this.$refs.yBar.setAttribute('data-p-scrollpanel-grabbed', 'true');\n            !this.isUnstyled && addClass(this.$refs.yBar, 'p-scrollpanel-grabbed');\n            document.body.setAttribute('data-p-scrollpanel-grabbed', 'true');\n            !this.isUnstyled && addClass(document.body, 'p-scrollpanel-grabbed');\n\n            this.bindDocumentMouseListeners();\n            e.preventDefault();\n        },\n        onXBarMouseDown(e) {\n            this.isXBarClicked = true;\n            this.$refs.xBar.focus();\n            this.lastPageX = e.pageX;\n            this.$refs.yBar.setAttribute('data-p-scrollpanel-grabbed', 'false');\n            !this.isUnstyled && addClass(this.$refs.xBar, 'p-scrollpanel-grabbed');\n            document.body.setAttribute('data-p-scrollpanel-grabbed', 'false');\n            !this.isUnstyled && addClass(document.body, 'p-scrollpanel-grabbed');\n\n            this.bindDocumentMouseListeners();\n            e.preventDefault();\n        },\n        onScroll(event) {\n            if (this.lastScrollLeft !== event.target.scrollLeft) {\n                this.lastScrollLeft = event.target.scrollLeft;\n                this.orientation = 'horizontal';\n            } else if (this.lastScrollTop !== event.target.scrollTop) {\n                this.lastScrollTop = event.target.scrollTop;\n                this.orientation = 'vertical';\n            }\n\n            this.moveBar();\n        },\n        onKeyDown(event) {\n            if (this.orientation === 'vertical') {\n                switch (event.code) {\n                    case 'ArrowDown': {\n                        this.setTimer('scrollTop', this.step);\n                        event.preventDefault();\n                        break;\n                    }\n\n                    case 'ArrowUp': {\n                        this.setTimer('scrollTop', this.step * -1);\n                        event.preventDefault();\n                        break;\n                    }\n\n                    case 'ArrowLeft':\n\n                    case 'ArrowRight': {\n                        event.preventDefault();\n                        break;\n                    }\n\n                    default:\n                        //no op\n                        break;\n                }\n            } else if (this.orientation === 'horizontal') {\n                switch (event.code) {\n                    case 'ArrowRight': {\n                        this.setTimer('scrollLeft', this.step);\n                        event.preventDefault();\n                        break;\n                    }\n\n                    case 'ArrowLeft': {\n                        this.setTimer('scrollLeft', this.step * -1);\n                        event.preventDefault();\n                        break;\n                    }\n\n                    case 'ArrowDown':\n\n                    case 'ArrowUp': {\n                        event.preventDefault();\n                        break;\n                    }\n\n                    default:\n                        //no op\n                        break;\n                }\n            }\n        },\n        onKeyUp() {\n            this.clearTimer();\n        },\n        repeat(bar, step) {\n            this.$refs.content[bar] += step;\n            this.moveBar();\n        },\n        setTimer(bar, step) {\n            this.clearTimer();\n            this.timer = setTimeout(() => {\n                this.repeat(bar, step);\n            }, 40);\n        },\n        clearTimer() {\n            if (this.timer) {\n                clearTimeout(this.timer);\n            }\n        },\n        onDocumentMouseMove(e) {\n            if (this.isXBarClicked) {\n                this.onMouseMoveForXBar(e);\n            } else if (this.isYBarClicked) {\n                this.onMouseMoveForYBar(e);\n            } else {\n                this.onMouseMoveForXBar(e);\n                this.onMouseMoveForYBar(e);\n            }\n        },\n        onMouseMoveForXBar(e) {\n            let deltaX = e.pageX - this.lastPageX;\n\n            this.lastPageX = e.pageX;\n\n            this.frame = this.requestAnimationFrame(() => {\n                this.$refs.content.scrollLeft += deltaX / this.scrollXRatio;\n            });\n        },\n        onMouseMoveForYBar(e) {\n            let deltaY = e.pageY - this.lastPageY;\n\n            this.lastPageY = e.pageY;\n\n            this.frame = this.requestAnimationFrame(() => {\n                this.$refs.content.scrollTop += deltaY / this.scrollYRatio;\n            });\n        },\n        onFocus(event) {\n            if (this.$refs.xBar.isSameNode(event.target)) {\n                this.orientation = 'horizontal';\n            } else if (this.$refs.yBar.isSameNode(event.target)) {\n                this.orientation = 'vertical';\n            }\n        },\n        onBlur() {\n            if (this.orientation === 'horizontal') {\n                this.orientation = 'vertical';\n            }\n        },\n        onDocumentMouseUp() {\n            this.$refs.yBar.setAttribute('data-p-scrollpanel-grabbed', 'false');\n            !this.isUnstyled && removeClass(this.$refs.yBar, 'p-scrollpanel-grabbed');\n            this.$refs.xBar.setAttribute('data-p-scrollpanel-grabbed', 'false');\n            !this.isUnstyled && removeClass(this.$refs.xBar, 'p-scrollpanel-grabbed');\n            document.body.setAttribute('data-p-scrollpanel-grabbed', 'false');\n            !this.isUnstyled && removeClass(document.body, 'p-scrollpanel-grabbed');\n\n            this.unbindDocumentMouseListeners();\n            this.isXBarClicked = false;\n            this.isYBarClicked = false;\n        },\n        requestAnimationFrame(f) {\n            let frame = window.requestAnimationFrame || this.timeoutFrame;\n\n            return frame(f);\n        },\n        refresh() {\n            this.moveBar();\n        },\n        scrollTop(scrollTop) {\n            let scrollableHeight = this.$refs.content.scrollHeight - this.$refs.content.clientHeight;\n\n            scrollTop = scrollTop > scrollableHeight ? scrollableHeight : scrollTop > 0 ? scrollTop : 0;\n            this.$refs.content.scrollTop = scrollTop;\n        },\n        timeoutFrame(fn) {\n            setTimeout(fn, 0);\n        },\n        bindDocumentMouseListeners() {\n            if (!this.documentMouseMoveListener) {\n                this.documentMouseMoveListener = (e) => {\n                    this.onDocumentMouseMove(e);\n                };\n\n                document.addEventListener('mousemove', this.documentMouseMoveListener);\n            }\n\n            if (!this.documentMouseUpListener) {\n                this.documentMouseUpListener = (e) => {\n                    this.onDocumentMouseUp(e);\n                };\n\n                document.addEventListener('mouseup', this.documentMouseUpListener);\n            }\n        },\n        unbindDocumentMouseListeners() {\n            if (this.documentMouseMoveListener) {\n                document.removeEventListener('mousemove', this.documentMouseMoveListener);\n                this.documentMouseMoveListener = null;\n            }\n\n            if (this.documentMouseUpListener) {\n                document.removeEventListener('mouseup', this.documentMouseUpListener);\n                this.documentMouseUpListener = null;\n            }\n        },\n        bindDocumentResizeListener() {\n            if (!this.documentResizeListener) {\n                this.documentResizeListener = () => {\n                    this.moveBar();\n                };\n\n                window.addEventListener('resize', this.documentResizeListener);\n            }\n        },\n        unbindDocumentResizeListener() {\n            if (this.documentResizeListener) {\n                window.removeEventListener('resize', this.documentResizeListener);\n                this.documentResizeListener = null;\n            }\n        }\n    },\n    computed: {\n        contentId() {\n            return this.id + '_content';\n        }\n    }\n};\n</script>\n"],"names":["name","BaseComponent","props","step","type","Number","style","ScrollPanelStyle","provide","$pcScrollPanel","$parentInstance","BaseScrollPanel","inheritAttrs","initialized","documentResizeListener","documentMouseMoveListener","documentMouseUpListener","frame","scrollXRatio","scrollYRatio","isXBarClicked","isYBarClicked","lastPageX","lastPageY","timer","outsideClickListener","mutationObserver","data","id","$attrs","orientation","lastScrollTop","lastScrollLeft","isRTL","watch","$attrsId","newValue","UniqueComponentId","mounted","$el","offsetParent","initialize","updateDirection","observeDirectionChanges","updated","beforeUnmount","unbindDocumentResizeListener","window","cancelAnimationFrame","disconnect","methods","closest","_this","targetNode","document","documentElement","config","attributes","attributeFilter","MutationObserver","observe","moveBar","bindDocumentResizeListener","calculateContainerHeight","containerStyles","getComputedStyle","xBarStyles","$refs","xBar","pureContainerHeight","getHeight","parseInt","content","offsetHeight","height","parseFloat","paddingTop","paddingBottom","borderTopWidth","borderBottomWidth","_this2","totalWidth","scrollWidth","ownWidth","clientWidth","bottom","clientHeight","totalHeight","scrollHeight","ownHeight","right","yBar","requestAnimationFrame","setAttribute","isUnstyled","addClass","removeClass","cssText","Math","max","scrollLeft","scrollTop","onYBarMouseDown","e","focus","pageY","body","bindDocumentMouseListeners","preventDefault","onXBarMouseDown","pageX","onScroll","event","target","onKeyDown","code","setTimer","onKeyUp","clearTimer","repeat","bar","_this3","setTimeout","clearTimeout","onDocumentMouseMove","onMouseMoveForXBar","onMouseMoveForYBar","_this4","deltaX","_this5","deltaY","onFocus","isSameNode","onBlur","onDocumentMouseUp","unbindDocumentMouseListeners","f","timeoutFrame","refresh","scrollableHeight","fn","_this6","addEventListener","removeEventListener","_this7","computed","contentId","_openBlock","_createElementBlock","_mergeProps","_ctx","cx","ptmi","_createElementVNode","ptm","ref","$options","apply","arguments","onMouseenter","_renderSlot","$slots","tabindex","role","$data","onMousedown","onKeydown","_cache","$event","onKeyup","_hoisted_2","_hoisted_3"],"mappings":"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"}