38 lines
915 B
TypeScript
38 lines
915 B
TypeScript
import { INode, MaskInputFn, MaskInputOptions } from './types';
|
|
|
|
export function isElement(n: Node | INode): n is Element {
|
|
return n.nodeType === n.ELEMENT_NODE;
|
|
}
|
|
|
|
export function isShadowRoot(n: Node): n is ShadowRoot {
|
|
const host: Element | null = (n as ShadowRoot)?.host;
|
|
return Boolean(host && host.shadowRoot && host.shadowRoot === n);
|
|
}
|
|
|
|
export function maskInputValue({
|
|
maskInputOptions,
|
|
tagName,
|
|
type,
|
|
value,
|
|
maskInputFn,
|
|
}: {
|
|
maskInputOptions: MaskInputOptions;
|
|
tagName: string;
|
|
type: string | number | boolean | null;
|
|
value: string | null;
|
|
maskInputFn?: MaskInputFn;
|
|
}): string {
|
|
let text = value || '';
|
|
if (
|
|
maskInputOptions[tagName.toLowerCase() as keyof MaskInputOptions] ||
|
|
maskInputOptions[type as keyof MaskInputOptions]
|
|
) {
|
|
if (maskInputFn) {
|
|
text = maskInputFn(text);
|
|
} else {
|
|
text = '*'.repeat(text.length);
|
|
}
|
|
}
|
|
return text;
|
|
}
|