import scrollPosition from './scroll-position'

export default {
    // eslint-disable-next-line no-unused-vars
    install(Vue, options) {
        Vue.prototype.extend = (target, source) => {
            for (let obj in source) {
                target[obj] = source[obj]
            }
            return target
        }

        Vue.prototype.getClientWidth = () => {
            return document.body.clientWidth
        }

        Vue.prototype.collapse = () => {
            return !(Vue.prototype.getClientWidth() > 768 || Vue.prototype.getClientWidth() < 512)
        }

        Vue.prototype.bytesToSize = (bytes) => {
            if (bytes === 0) return '0 B'

            const k = 1024

            const sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']

            const i = Math.floor(Math.log(bytes) / Math.log(k))
            return (bytes / Math.pow(k, i)).toPrecision(3) + ' ' + sizes[i]
        }

        Vue.prototype.scrollPosition = scrollPosition

        Vue.prototype.getWebSocketRoot = () => {
            const protocol = location.protocol === "https:" ? "wss://" : "ws://"
            if (process.env.NODE_ENV === 'development' && process.env["VUE_APP_API_WSS_ROOT"]) {
                return process.env["VUE_APP_API_WSS_ROOT"]
            }
            return protocol + location.host + '/' + process.env["VUE_APP_API_WSS_ROOT"]
        }
    }
}
