import { computed, shallowRef, toValue, watch } from 'vue'; import { readInputState, writeInputState } from '@robonen/platform/browsers'; import type { TextFieldElement } from '@robonen/platform/browsers'; import { isMaskComplete, resolveMask } from '../mask/conform'; import { MASK_NOOP, MaskModel, maskTransform, normalizeMaskOptions, resolveMaskOptions, runPostprocessors, runPreprocessors, unmask, } from '../mask/model'; import type { ElementState, MaskOptionInput, ResolvedMaskOptions } from '../mask/types'; import type { MaskInputBindings, UseMaskedInputOptions, UseMaskedInputReturn } from './types'; export type { MaskInputBindings, UseMaskedInputOptions, UseMaskedInputReturn } from './types'; /** * @name useMaskedInput * @category Forms * @description Headless input masking. Returns a `bind` object to spread onto an * ``/`