@exposure-lib/vue2
Version:
66 lines (61 loc) • 1.77 kB
JavaScript
;
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;