import {ScopedElementsMixin} from '@open-wc/scoped-elements';
import DBPLitElement from "../../common/dbp-lit-element";

export default class DbpFileHandlingLitElement extends ScopedElementsMixin(DBPLitElement) {
    constructor() {
        super();

    }

    static get properties() {
        return {
            ...super.properties,
        };
    }

    /**
     * Handles the scroll of the current element and displays the right and/or the left paddle
     * to match the scrolling position
     *
     * @param e
     */
    handleScroll(e) {
        if (!this._(".right-paddle") || !this._(".left-paddle"))
            return;
        let horizontal = e.currentTarget.scrollLeft;
        let scrollWidth = e.currentTarget.scrollWidth - e.currentTarget.clientWidth; //e.currentTarget.scrollLeftMax isn't support except firefox
        if(horizontal > 0) {
            this._(".left-paddle").classList.remove("hidden");
        }
        if (horizontal < scrollWidth) {
            this._(".right-paddle").classList.remove("hidden");
        }

        if (horizontal >= scrollWidth) {
            this._(".right-paddle").classList.add("hidden");
        }

        if (horizontal <= 0) {
            this._(".left-paddle").classList.add("hidden");
        }
    }

    /**
     * Scrolls smooth to the maximum right of an given element
     *
     * @param element
     */
    handleScrollRight(element) {
        const maxwidth = element.scrollWidth - element.clientWidth;
        let container = element;
        let scrollAmount = 0;
        let slideTimer = setInterval(function(){
            container.scrollLeft += 10;
            scrollAmount += 10;
            if(scrollAmount >= maxwidth){
                window.clearInterval(slideTimer);
            }
        }, 25);
    }

    /**
     * Scrolls smooth to the min left of an given element
     *
     * @param element
     */
    handleScrollLeft(element) {
        const minwidth = 0;
        let container = element;
        let scrollAmount = element.scrollWidth - element.clientWidth;
        let slideTimer = setInterval(function(){
            container.scrollLeft -= 10;
            scrollAmount -= 10;
            if(scrollAmount <= minwidth){
                window.clearInterval(slideTimer);
            }
        }, 25);
    }

}