103 lines
No EOL
4.1 KiB
TypeScript
103 lines
No EOL
4.1 KiB
TypeScript
import ChangeDetails from '../core/change-details';
|
|
import { type TailDetails } from '../core/tail-details';
|
|
import { type Direction } from '../core/utils';
|
|
import Masked, { type AppendFlags, type ExtractFlags, type MaskedOptions, type MaskedState } from './base';
|
|
import { type FactoryArg, type ExtendFactoryArgOptions } from './factory';
|
|
import type PatternBlock from './pattern/block';
|
|
import PatternFixedDefinition from './pattern/fixed-definition';
|
|
import PatternInputDefinition from './pattern/input-definition';
|
|
import './regexp';
|
|
export type MaskedPatternOptions<Value = string, M extends MaskedPattern<Value> = MaskedPattern<Value>, Props extends keyof M = never> = MaskedOptions<M, 'definitions' | 'blocks' | 'placeholderChar' | 'displayChar' | 'lazy' | Props>;
|
|
export type Definitions = {
|
|
[k: string]: FactoryArg;
|
|
};
|
|
export type MaskedPatternState = MaskedState & {
|
|
_blocks: Array<MaskedState>;
|
|
};
|
|
export type BlockPosData = {
|
|
index: number;
|
|
offset: number;
|
|
};
|
|
export type BlockExtraOptions = {
|
|
expose?: boolean;
|
|
repeat?: number | [number, number];
|
|
};
|
|
/** Pattern mask */
|
|
export default class MaskedPattern<Value = string> extends Masked<Value> {
|
|
static DEFAULTS: {
|
|
lazy: boolean;
|
|
placeholderChar: string;
|
|
skipInvalid?: boolean | undefined;
|
|
};
|
|
static STOP_CHAR: string;
|
|
static ESCAPE_CHAR: string;
|
|
static InputDefinition: typeof PatternInputDefinition;
|
|
static FixedDefinition: typeof PatternFixedDefinition;
|
|
mask: string;
|
|
/** */
|
|
blocks: {
|
|
[key: string]: ExtendFactoryArgOptions<BlockExtraOptions>;
|
|
};
|
|
/** */
|
|
definitions: Definitions;
|
|
/** Single char for empty input */
|
|
placeholderChar: string;
|
|
/** Single char for filled input */
|
|
displayChar: string;
|
|
/** Show placeholder only when needed */
|
|
lazy: boolean;
|
|
/** Enable characters overwriting */
|
|
overwrite?: boolean | 'shift' | undefined;
|
|
/** */
|
|
eager?: boolean | 'remove' | 'append' | undefined;
|
|
/** */
|
|
skipInvalid?: boolean | undefined;
|
|
/** */
|
|
autofix?: boolean | 'pad' | undefined;
|
|
_blocks: Array<PatternBlock>;
|
|
_maskedBlocks: {
|
|
[key: string]: Array<number>;
|
|
};
|
|
_stops: Array<number>;
|
|
exposeBlock?: Masked;
|
|
constructor(opts: MaskedPatternOptions<Value>);
|
|
updateOptions(opts: Partial<MaskedPatternOptions<Value>>): void;
|
|
_update(opts: Partial<MaskedPatternOptions<Value>>): void;
|
|
_rebuildMask(): void;
|
|
get state(): MaskedPatternState;
|
|
set state(state: MaskedPatternState);
|
|
reset(): void;
|
|
get isComplete(): boolean;
|
|
get isFilled(): boolean;
|
|
get isFixed(): boolean;
|
|
get isOptional(): boolean;
|
|
doCommit(): void;
|
|
get unmaskedValue(): string;
|
|
set unmaskedValue(unmaskedValue: string);
|
|
get value(): string;
|
|
set value(value: string);
|
|
get typedValue(): Value;
|
|
set typedValue(value: Value);
|
|
get displayValue(): string;
|
|
appendTail(tail: string | String | TailDetails): ChangeDetails;
|
|
_appendEager(): ChangeDetails;
|
|
_appendCharRaw(ch: string, flags?: AppendFlags<MaskedPatternState>): ChangeDetails;
|
|
extractTail(fromPos?: number, toPos?: number): TailDetails;
|
|
extractInput(fromPos?: number, toPos?: number, flags?: ExtractFlags): string;
|
|
_findStopBefore(blockIndex: number): number | undefined;
|
|
/** Appends placeholder depending on laziness */
|
|
_appendPlaceholder(toBlockIndex?: number): ChangeDetails;
|
|
/** Finds block in pos */
|
|
_mapPosToBlock(pos: number): BlockPosData | undefined;
|
|
_blockStartPos(blockIndex: number): number;
|
|
_forEachBlocksInRange(fromPos: number, toPos: number | undefined, fn: (block: PatternBlock, blockIndex: number, fromPos: number, toPos: number) => void): void;
|
|
remove(fromPos?: number, toPos?: number): ChangeDetails;
|
|
nearestInputPos(cursorPos: number, direction?: Direction): number;
|
|
totalInputPositions(fromPos?: number, toPos?: number): number;
|
|
/** Get block by name */
|
|
maskedBlock(name: string): PatternBlock | undefined;
|
|
/** Get all blocks by name */
|
|
maskedBlocks(name: string): Array<PatternBlock>;
|
|
pad(flags?: AppendFlags): ChangeDetails;
|
|
}
|
|
//# sourceMappingURL=pattern.d.ts.map
|