@maskito/vue
Version:
The Vue-specific Maskito's library
32 lines (29 loc) • 969 B
JavaScript
import { MASKITO_DEFAULT_ELEMENT_PREDICATE, Maskito } from '@maskito/core';
const teardown = new Map();
const predicates = new Map();
async function update(element, options) {
const predicate = options?.elementPredicate ?? 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 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);
}
},
};
export { maskito };