qs_xinchun2026_h5/node_modules/vue-lazyload/src/index.ts

46 lines
1.3 KiB
TypeScript

import Lazy from './lazy'
import LazyComponent from './lazy-component'
import LazyContainer from './lazy-container'
import LazyImage from './lazy-image'
import { VueLazyloadOptions } from '../types/lazyload'
import { App } from 'vue'
export default {
/*
* install function
* @param {Vue} Vue
* @param {object} options lazyload options
*/
install (Vue: App, options: VueLazyloadOptions = {}) {
const lazy = new Lazy(options)
const lazyContainer = new LazyContainer(lazy)
const vueVersion = Number(Vue.version.split('.')[0])
if (vueVersion < 3) return new Error('Vue version at least 3.0')
Vue.config.globalProperties.$Lazyload = lazy
Vue.provide('Lazyload', lazy)
if (options.lazyComponent) {
Vue.component('lazy-component', LazyComponent(lazy))
}
if (options.lazyImage) {
Vue.component('lazy-image', LazyImage(lazy))
}
Vue.directive('lazy', {
beforeMount: lazy.add.bind(lazy),
beforeUpdate: lazy.update.bind(lazy),
updated: lazy.lazyLoadHandler.bind(lazy),
unmounted: lazy.remove.bind(lazy)
})
Vue.directive('lazy-container', {
beforeMount: lazyContainer.bind.bind(lazyContainer),
updated: lazyContainer.update.bind(lazyContainer),
unmounted: lazyContainer.unbind.bind(lazyContainer)
})
}
}