UNPKG

@exposure-lib/vue2

Version:
66 lines (61 loc) 1.77 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var core = require('@exposure-lib/core'); let Vue; let exposure; const Logger = console; const useResetExposure = core.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 = core.createExposure(golablThreshold); } installDirective(); }; const ExposurePLugin = { install, }; exports["default"] = ExposurePLugin; exports.useResetExposure = useResetExposure;