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
* ``/`