UNPKG

@exposure-lib/vue2

Version:
61 lines (58 loc) 1.68 kB
import { resetExposure, createExposure } from '@exposure-lib/core'; let Vue; let exposure; const Logger = console; const useResetExposure = resetExposure; const bind = (el, binding, vnode) => { let { value, arg } = binding; let threshold; const { context } = vnode; if (!context) { return; } if (!exposure) { Logger.error('exposure is not initialized, please use Vue.use(Exposure)'); return; } threshold = Number(arg); if ((arg && typeof arg !== 'number') || !arg) { arg && Logger.error('element arguments must be number type'); threshold = exposure.threshold; } if (context.$resetExposure && context.$resetExposure !== useResetExposure) { Logger.error('context bind $resetExposure propertyKey'); return; } !context.$resetExposure && (context.$resetExposure = useResetExposure); exposure.observe(el, value, threshold); }; const unbind = (el) => { if (!exposure) { Logger.error('exposure is not initialized, please use Vue.use(Exposure)'); return; } exposure.unobserve(el); }; const installDirective = () => { Vue.directive('exposure', { bind, unbind, }); }; const install = (_Vue, options) => { if (!Vue) { Vue = _Vue; } let golablThreshold; if (options && options.threshold) { golablThreshold = options.threshold; } if (!exposure) { exposure = createExposure(golablThreshold); } installDirective(); }; const ExposurePLugin = { install, }; export { ExposurePLugin as default, useResetExposure };