UNPKG

@maskito/vue

Version:

The Vue-specific Maskito's library

32 lines (29 loc) 969 B
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 };