@maskito/vue
Version:
The Vue-specific Maskito's library
34 lines (30 loc) • 962 B
JavaScript
;
var core = require('@maskito/core');
const teardown = new Map();
const predicates = new Map();
async function update(element, options) {
const predicate = options?.elementPredicate ?? core.MASKITO_DEFAULT_ELEMENT_PREDICATE;
predicates.set(element, predicate);
const predicateResult = await predicate(element);
if (predicates.get(element) !== predicate) {
return;
}
teardown.get(element)?.destroy();
if (options) {
teardown.set(element, new core.Maskito(predicateResult, options));
}
}
const maskito = {
unmounted: (element) => {
teardown.get(element)?.destroy();
teardown.delete(element);
predicates.delete(element);
},
mounted: async (element, { value }) => update(element, value),
updated: async (element, { value, oldValue }) => {
if (value !== oldValue) {
await update(element, value);
}
},
};
exports.maskito = maskito;