imask
Version:
vanilla javascript input mask
56 lines (51 loc) • 1.21 kB
JavaScript
/** Provides details of continuous extracted tail */
class ContinuousTailDetails {
/** Tail value as string */
/** Tail start position */
/** Start position */
constructor(value, from, stop) {
if (value === void 0) {
value = '';
}
if (from === void 0) {
from = 0;
}
this.value = value;
this.from = from;
this.stop = stop;
}
toString() {
return this.value;
}
extend(tail) {
this.value += String(tail);
}
appendTo(masked) {
return masked.append(this.toString(), {
tail: true
}).aggregate(masked._appendPlaceholder());
}
get state() {
return {
value: this.value,
from: this.from,
stop: this.stop
};
}
set state(state) {
Object.assign(this, state);
}
unshift(beforePos) {
if (!this.value.length || beforePos != null && this.from >= beforePos) return '';
const shiftChar = this.value[0];
this.value = this.value.slice(1);
return shiftChar;
}
shift() {
if (!this.value.length) return '';
const shiftChar = this.value[this.value.length - 1];
this.value = this.value.slice(0, -1);
return shiftChar;
}
}
export { ContinuousTailDetails as default };