@mtes-mct/monitor-ui 10.16.1 → 10.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/cypress/global.d.ts +18 -0
- package/cypress/index.js +19 -0
- package/cypress/index.js.map +1 -1
- package/formiks/FormikDatePicker.d.ts +1 -0
- package/formiks/FormikDatePicker.d.ts.map +1 -1
- package/formiks/FormikDateRangePicker.d.ts +1 -0
- package/formiks/FormikDateRangePicker.d.ts.map +1 -1
- package/hooks/useDeepCompareEffect.d.ts +3 -0
- package/hooks/useDeepCompareEffect.d.ts.map +1 -0
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -1
- package/index.js +416 -196
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/utils/nullify.d.ts.map +1 -1
- package/utils/undefine.d.ts.map +1 -1
package/index.js
CHANGED
|
@@ -65110,8 +65110,7 @@ function isString$1(str) {
|
|
|
65110
65110
|
|
|
65111
65111
|
/** Checks if value is object */
|
|
65112
65112
|
function isObject$3(obj) {
|
|
65113
|
-
|
|
65114
|
-
return typeof obj === 'object' && obj != null && (obj == null || (_obj$constructor = obj.constructor) == null ? void 0 : _obj$constructor.name) === 'Object';
|
|
65113
|
+
return typeof obj === 'object' && obj != null && obj?.constructor?.name === 'Object';
|
|
65115
65114
|
}
|
|
65116
65115
|
function pick(obj, keys) {
|
|
65117
65116
|
if (Array.isArray(keys)) return pick(obj, (_, k) => keys.includes(k));
|
|
@@ -65199,6 +65198,11 @@ class ActionDetails {
|
|
|
65199
65198
|
while (this.value.slice(0, this.startChangePos) !== this.oldValue.slice(0, this.startChangePos)) {
|
|
65200
65199
|
--this.oldSelection.start;
|
|
65201
65200
|
}
|
|
65201
|
+
|
|
65202
|
+
// double check right part
|
|
65203
|
+
while (this.value.slice(this.cursorPos) !== this.oldValue.slice(this.oldSelection.end)) {
|
|
65204
|
+
if (this.value.length - this.cursorPos < this.oldValue.length - this.oldSelection.end) ++this.oldSelection.end;else ++this.cursorPos;
|
|
65205
|
+
}
|
|
65202
65206
|
}
|
|
65203
65207
|
|
|
65204
65208
|
/** Start changing position */
|
|
@@ -65282,6 +65286,7 @@ function IMask(el, opts) {
|
|
|
65282
65286
|
// export function maskedClass<Mask extends typeof Masked> (mask: Mask): Mask;
|
|
65283
65287
|
// export function maskedClass(mask: RegExp): typeof MaskedRegExp;
|
|
65284
65288
|
// export function maskedClass(mask: (value: string, ...args: any[]) => boolean): typeof MaskedFunction;
|
|
65289
|
+
|
|
65285
65290
|
/** Get Masked class by mask type */
|
|
65286
65291
|
function maskedClass(mask) /* TODO */{
|
|
65287
65292
|
if (mask == null) throw new Error('mask property should be defined');
|
|
@@ -65362,7 +65367,7 @@ function createMask(opts) {
|
|
|
65362
65367
|
if (IMask.Masked && opts instanceof IMask.Masked) return opts;
|
|
65363
65368
|
const nOpts = normalizeOpts(opts);
|
|
65364
65369
|
const MaskedClass = maskedClass(nOpts.mask);
|
|
65365
|
-
if (!MaskedClass) throw new Error(
|
|
65370
|
+
if (!MaskedClass) throw new Error(`Masked class is not found for provided mask ${nOpts.mask}, appropriate module needs to be imported manually before creating mask.`);
|
|
65366
65371
|
if (nOpts.mask === MaskedClass) delete nOpts.mask;
|
|
65367
65372
|
if (nOpts._mask) {
|
|
65368
65373
|
nOpts.mask = nOpts._mask;
|
|
@@ -65416,9 +65421,11 @@ class MaskElement {
|
|
|
65416
65421
|
|
|
65417
65422
|
/** */
|
|
65418
65423
|
}
|
|
65419
|
-
|
|
65420
65424
|
IMask.MaskElement = MaskElement;
|
|
65421
65425
|
|
|
65426
|
+
const KEY_Z = 90;
|
|
65427
|
+
const KEY_Y = 89;
|
|
65428
|
+
|
|
65422
65429
|
/** Bridge between HTMLElement and {@link Masked} */
|
|
65423
65430
|
class HTMLMaskElement extends MaskElement {
|
|
65424
65431
|
/** HTMLElement to use mask on */
|
|
@@ -65426,53 +65433,73 @@ class HTMLMaskElement extends MaskElement {
|
|
|
65426
65433
|
constructor(input) {
|
|
65427
65434
|
super();
|
|
65428
65435
|
this.input = input;
|
|
65429
|
-
this.
|
|
65436
|
+
this._onKeydown = this._onKeydown.bind(this);
|
|
65437
|
+
this._onInput = this._onInput.bind(this);
|
|
65438
|
+
this._onBeforeinput = this._onBeforeinput.bind(this);
|
|
65439
|
+
this._onCompositionEnd = this._onCompositionEnd.bind(this);
|
|
65430
65440
|
}
|
|
65431
65441
|
get rootElement() {
|
|
65432
|
-
|
|
65433
|
-
return (_this$input$getRootNo = (_this$input$getRootNo2 = (_this$input = this.input).getRootNode) == null ? void 0 : _this$input$getRootNo2.call(_this$input)) != null ? _this$input$getRootNo : document;
|
|
65442
|
+
return this.input.getRootNode?.() ?? document;
|
|
65434
65443
|
}
|
|
65435
65444
|
|
|
65436
|
-
/**
|
|
65437
|
-
Is element in focus
|
|
65438
|
-
*/
|
|
65445
|
+
/** Is element in focus */
|
|
65439
65446
|
get isActive() {
|
|
65440
65447
|
return this.input === this.rootElement.activeElement;
|
|
65441
65448
|
}
|
|
65442
65449
|
|
|
65443
|
-
/**
|
|
65444
|
-
Binds HTMLElement events to mask internal events
|
|
65445
|
-
*/
|
|
65450
|
+
/** Binds HTMLElement events to mask internal events */
|
|
65446
65451
|
bindEvents(handlers) {
|
|
65447
|
-
|
|
65452
|
+
this.input.addEventListener('keydown', this._onKeydown);
|
|
65453
|
+
this.input.addEventListener('input', this._onInput);
|
|
65454
|
+
this.input.addEventListener('beforeinput', this._onBeforeinput);
|
|
65455
|
+
this.input.addEventListener('compositionend', this._onCompositionEnd);
|
|
65456
|
+
this.input.addEventListener('drop', handlers.drop);
|
|
65457
|
+
this.input.addEventListener('click', handlers.click);
|
|
65458
|
+
this.input.addEventListener('focus', handlers.focus);
|
|
65459
|
+
this.input.addEventListener('blur', handlers.commit);
|
|
65460
|
+
this._handlers = handlers;
|
|
65448
65461
|
}
|
|
65449
|
-
|
|
65450
|
-
|
|
65451
|
-
|
|
65452
|
-
|
|
65453
|
-
|
|
65454
|
-
|
|
65462
|
+
_onKeydown(e) {
|
|
65463
|
+
if (this._handlers.redo && (e.keyCode === KEY_Z && e.shiftKey && (e.metaKey || e.ctrlKey) || e.keyCode === KEY_Y && e.ctrlKey)) {
|
|
65464
|
+
e.preventDefault();
|
|
65465
|
+
return this._handlers.redo(e);
|
|
65466
|
+
}
|
|
65467
|
+
if (this._handlers.undo && e.keyCode === KEY_Z && (e.metaKey || e.ctrlKey)) {
|
|
65468
|
+
e.preventDefault();
|
|
65469
|
+
return this._handlers.undo(e);
|
|
65470
|
+
}
|
|
65471
|
+
if (!e.isComposing) this._handlers.selectionChange(e);
|
|
65455
65472
|
}
|
|
65456
|
-
|
|
65457
|
-
if (this._handlers
|
|
65458
|
-
|
|
65459
|
-
|
|
65473
|
+
_onBeforeinput(e) {
|
|
65474
|
+
if (e.inputType === 'historyUndo' && this._handlers.undo) {
|
|
65475
|
+
e.preventDefault();
|
|
65476
|
+
return this._handlers.undo(e);
|
|
65460
65477
|
}
|
|
65461
|
-
if (
|
|
65462
|
-
|
|
65463
|
-
this._handlers
|
|
65478
|
+
if (e.inputType === 'historyRedo' && this._handlers.redo) {
|
|
65479
|
+
e.preventDefault();
|
|
65480
|
+
return this._handlers.redo(e);
|
|
65464
65481
|
}
|
|
65465
65482
|
}
|
|
65483
|
+
_onCompositionEnd(e) {
|
|
65484
|
+
this._handlers.input(e);
|
|
65485
|
+
}
|
|
65486
|
+
_onInput(e) {
|
|
65487
|
+
if (!e.isComposing) this._handlers.input(e);
|
|
65488
|
+
}
|
|
65489
|
+
|
|
65490
|
+
/** Unbinds HTMLElement events to mask internal events */
|
|
65491
|
+
unbindEvents() {
|
|
65492
|
+
this.input.removeEventListener('keydown', this._onKeydown);
|
|
65493
|
+
this.input.removeEventListener('input', this._onInput);
|
|
65494
|
+
this.input.removeEventListener('beforeinput', this._onBeforeinput);
|
|
65495
|
+
this.input.removeEventListener('compositionend', this._onCompositionEnd);
|
|
65496
|
+
this.input.removeEventListener('drop', this._handlers.drop);
|
|
65497
|
+
this.input.removeEventListener('click', this._handlers.click);
|
|
65498
|
+
this.input.removeEventListener('focus', this._handlers.focus);
|
|
65499
|
+
this.input.removeEventListener('blur', this._handlers.commit);
|
|
65500
|
+
this._handlers = {};
|
|
65501
|
+
}
|
|
65466
65502
|
}
|
|
65467
|
-
/** Mapping between HTMLElement events and mask internal events */
|
|
65468
|
-
HTMLMaskElement.EVENTS_MAP = {
|
|
65469
|
-
selectionChange: 'keydown',
|
|
65470
|
-
input: 'input',
|
|
65471
|
-
drop: 'drop',
|
|
65472
|
-
click: 'click',
|
|
65473
|
-
focus: 'focus',
|
|
65474
|
-
commit: 'blur'
|
|
65475
|
-
};
|
|
65476
65503
|
IMask.HTMLMaskElement = HTMLMaskElement;
|
|
65477
65504
|
|
|
65478
65505
|
/** Bridge between InputElement and {@link Masked} */
|
|
@@ -65482,7 +65509,6 @@ class HTMLInputMaskElement extends HTMLMaskElement {
|
|
|
65482
65509
|
constructor(input) {
|
|
65483
65510
|
super(input);
|
|
65484
65511
|
this.input = input;
|
|
65485
|
-
this._handlers = {};
|
|
65486
65512
|
}
|
|
65487
65513
|
|
|
65488
65514
|
/** Returns InputElement selection start */
|
|
@@ -65557,6 +65583,39 @@ class HTMLContenteditableMaskElement extends HTMLMaskElement {
|
|
|
65557
65583
|
}
|
|
65558
65584
|
IMask.HTMLContenteditableMaskElement = HTMLContenteditableMaskElement;
|
|
65559
65585
|
|
|
65586
|
+
class InputHistory {
|
|
65587
|
+
static MAX_LENGTH = 100;
|
|
65588
|
+
states = [];
|
|
65589
|
+
currentIndex = 0;
|
|
65590
|
+
get currentState() {
|
|
65591
|
+
return this.states[this.currentIndex];
|
|
65592
|
+
}
|
|
65593
|
+
get isEmpty() {
|
|
65594
|
+
return this.states.length === 0;
|
|
65595
|
+
}
|
|
65596
|
+
push(state) {
|
|
65597
|
+
// if current index points before the last element then remove the future
|
|
65598
|
+
if (this.currentIndex < this.states.length - 1) this.states.length = this.currentIndex + 1;
|
|
65599
|
+
this.states.push(state);
|
|
65600
|
+
if (this.states.length > InputHistory.MAX_LENGTH) this.states.shift();
|
|
65601
|
+
this.currentIndex = this.states.length - 1;
|
|
65602
|
+
}
|
|
65603
|
+
go(steps) {
|
|
65604
|
+
this.currentIndex = Math.min(Math.max(this.currentIndex + steps, 0), this.states.length - 1);
|
|
65605
|
+
return this.currentState;
|
|
65606
|
+
}
|
|
65607
|
+
undo() {
|
|
65608
|
+
return this.go(-1);
|
|
65609
|
+
}
|
|
65610
|
+
redo() {
|
|
65611
|
+
return this.go(+1);
|
|
65612
|
+
}
|
|
65613
|
+
clear() {
|
|
65614
|
+
this.states.length = 0;
|
|
65615
|
+
this.currentIndex = 0;
|
|
65616
|
+
}
|
|
65617
|
+
}
|
|
65618
|
+
|
|
65560
65619
|
/** Listens to element events and controls changes between element and {@link Masked} */
|
|
65561
65620
|
class InputMask {
|
|
65562
65621
|
/**
|
|
@@ -65571,12 +65630,16 @@ class InputMask {
|
|
|
65571
65630
|
this._listeners = {};
|
|
65572
65631
|
this._value = '';
|
|
65573
65632
|
this._unmaskedValue = '';
|
|
65633
|
+
this._rawInputValue = '';
|
|
65634
|
+
this.history = new InputHistory();
|
|
65574
65635
|
this._saveSelection = this._saveSelection.bind(this);
|
|
65575
65636
|
this._onInput = this._onInput.bind(this);
|
|
65576
65637
|
this._onChange = this._onChange.bind(this);
|
|
65577
65638
|
this._onDrop = this._onDrop.bind(this);
|
|
65578
65639
|
this._onFocus = this._onFocus.bind(this);
|
|
65579
65640
|
this._onClick = this._onClick.bind(this);
|
|
65641
|
+
this._onUndo = this._onUndo.bind(this);
|
|
65642
|
+
this._onRedo = this._onRedo.bind(this);
|
|
65580
65643
|
this.alignCursor = this.alignCursor.bind(this);
|
|
65581
65644
|
this.alignCursorFriendly = this.alignCursorFriendly.bind(this);
|
|
65582
65645
|
this._bindEvents();
|
|
@@ -65586,8 +65649,7 @@ class InputMask {
|
|
|
65586
65649
|
this._onChange();
|
|
65587
65650
|
}
|
|
65588
65651
|
maskEquals(mask) {
|
|
65589
|
-
|
|
65590
|
-
return mask == null || ((_this$masked = this.masked) == null ? void 0 : _this$masked.maskEquals(mask));
|
|
65652
|
+
return mask == null || this.masked?.maskEquals(mask);
|
|
65591
65653
|
}
|
|
65592
65654
|
|
|
65593
65655
|
/** Masked */
|
|
@@ -65617,8 +65679,7 @@ class InputMask {
|
|
|
65617
65679
|
set value(str) {
|
|
65618
65680
|
if (this.value === str) return;
|
|
65619
65681
|
this.masked.value = str;
|
|
65620
|
-
this.updateControl();
|
|
65621
|
-
this.alignCursor();
|
|
65682
|
+
this.updateControl('auto');
|
|
65622
65683
|
}
|
|
65623
65684
|
|
|
65624
65685
|
/** Unmasked value */
|
|
@@ -65628,6 +65689,16 @@ class InputMask {
|
|
|
65628
65689
|
set unmaskedValue(str) {
|
|
65629
65690
|
if (this.unmaskedValue === str) return;
|
|
65630
65691
|
this.masked.unmaskedValue = str;
|
|
65692
|
+
this.updateControl('auto');
|
|
65693
|
+
}
|
|
65694
|
+
|
|
65695
|
+
/** Raw input value */
|
|
65696
|
+
get rawInputValue() {
|
|
65697
|
+
return this._rawInputValue;
|
|
65698
|
+
}
|
|
65699
|
+
set rawInputValue(str) {
|
|
65700
|
+
if (this.rawInputValue === str) return;
|
|
65701
|
+
this.masked.rawInputValue = str;
|
|
65631
65702
|
this.updateControl();
|
|
65632
65703
|
this.alignCursor();
|
|
65633
65704
|
}
|
|
@@ -65639,8 +65710,7 @@ class InputMask {
|
|
|
65639
65710
|
set typedValue(val) {
|
|
65640
65711
|
if (this.masked.typedValueEquals(val)) return;
|
|
65641
65712
|
this.masked.typedValue = val;
|
|
65642
|
-
this.updateControl();
|
|
65643
|
-
this.alignCursor();
|
|
65713
|
+
this.updateControl('auto');
|
|
65644
65714
|
}
|
|
65645
65715
|
|
|
65646
65716
|
/** Display value */
|
|
@@ -65656,7 +65726,9 @@ class InputMask {
|
|
|
65656
65726
|
drop: this._onDrop,
|
|
65657
65727
|
click: this._onClick,
|
|
65658
65728
|
focus: this._onFocus,
|
|
65659
|
-
commit: this._onChange
|
|
65729
|
+
commit: this._onChange,
|
|
65730
|
+
undo: this._onUndo,
|
|
65731
|
+
redo: this._onRedo
|
|
65660
65732
|
});
|
|
65661
65733
|
}
|
|
65662
65734
|
|
|
@@ -65693,7 +65765,6 @@ class InputMask {
|
|
|
65693
65765
|
if (this.displayValue !== this.el.value) {
|
|
65694
65766
|
console.warn('Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly.'); // eslint-disable-line no-console
|
|
65695
65767
|
}
|
|
65696
|
-
|
|
65697
65768
|
this._selection = {
|
|
65698
65769
|
start: this.selectionStart,
|
|
65699
65770
|
end: this.cursorPos
|
|
@@ -65707,15 +65778,25 @@ class InputMask {
|
|
|
65707
65778
|
}
|
|
65708
65779
|
|
|
65709
65780
|
/** Syncronizes view from model value, fires change events */
|
|
65710
|
-
updateControl() {
|
|
65781
|
+
updateControl(cursorPos) {
|
|
65711
65782
|
const newUnmaskedValue = this.masked.unmaskedValue;
|
|
65712
65783
|
const newValue = this.masked.value;
|
|
65784
|
+
const newRawInputValue = this.masked.rawInputValue;
|
|
65713
65785
|
const newDisplayValue = this.displayValue;
|
|
65714
|
-
const isChanged = this.unmaskedValue !== newUnmaskedValue || this.value !== newValue;
|
|
65786
|
+
const isChanged = this.unmaskedValue !== newUnmaskedValue || this.value !== newValue || this._rawInputValue !== newRawInputValue;
|
|
65715
65787
|
this._unmaskedValue = newUnmaskedValue;
|
|
65716
65788
|
this._value = newValue;
|
|
65789
|
+
this._rawInputValue = newRawInputValue;
|
|
65717
65790
|
if (this.el.value !== newDisplayValue) this.el.value = newDisplayValue;
|
|
65791
|
+
if (cursorPos === 'auto') this.alignCursor();else if (cursorPos != null) this.cursorPos = cursorPos;
|
|
65718
65792
|
if (isChanged) this._fireChangeEvents();
|
|
65793
|
+
if (!this._historyChanging && (isChanged || this.history.isEmpty)) this.history.push({
|
|
65794
|
+
unmaskedValue: newUnmaskedValue,
|
|
65795
|
+
selection: {
|
|
65796
|
+
start: this.selectionStart,
|
|
65797
|
+
end: this.cursorPos
|
|
65798
|
+
}
|
|
65799
|
+
});
|
|
65719
65800
|
}
|
|
65720
65801
|
|
|
65721
65802
|
/** Updates options with deep equal check, recreates {@link Masked} model if mask type changes */
|
|
@@ -65723,9 +65804,10 @@ class InputMask {
|
|
|
65723
65804
|
const {
|
|
65724
65805
|
mask,
|
|
65725
65806
|
...restOpts
|
|
65726
|
-
} = opts;
|
|
65807
|
+
} = opts; // TODO types, yes, mask is optional
|
|
65808
|
+
|
|
65727
65809
|
const updateMask = !this.maskEquals(mask);
|
|
65728
|
-
const updateOpts =
|
|
65810
|
+
const updateOpts = this.masked.optionsIsChanged(restOpts);
|
|
65729
65811
|
if (updateMask) this.mask = mask;
|
|
65730
65812
|
if (updateOpts) this.masked.updateOptions(restOpts); // TODO
|
|
65731
65813
|
|
|
@@ -65800,9 +65882,6 @@ class InputMask {
|
|
|
65800
65882
|
_onInput(e) {
|
|
65801
65883
|
this._inputEvent = e;
|
|
65802
65884
|
this._abortUpdateCursor();
|
|
65803
|
-
|
|
65804
|
-
// fix strange IE behavior
|
|
65805
|
-
if (!this._selection) return this.updateValue();
|
|
65806
65885
|
const details = new ActionDetails({
|
|
65807
65886
|
// new state
|
|
65808
65887
|
value: this.el.value,
|
|
@@ -65822,8 +65901,7 @@ class InputMask {
|
|
|
65822
65901
|
const removeDirection = oldRawValue === this.masked.rawInputValue ? details.removeDirection : DIRECTION.NONE;
|
|
65823
65902
|
let cursorPos = this.masked.nearestInputPos(details.startChangePos + offset, removeDirection);
|
|
65824
65903
|
if (removeDirection !== DIRECTION.NONE) cursorPos = this.masked.nearestInputPos(cursorPos, DIRECTION.NONE);
|
|
65825
|
-
this.updateControl();
|
|
65826
|
-
this.updateCursor(cursorPos);
|
|
65904
|
+
this.updateControl(cursorPos);
|
|
65827
65905
|
delete this._inputEvent;
|
|
65828
65906
|
}
|
|
65829
65907
|
|
|
@@ -65852,6 +65930,20 @@ class InputMask {
|
|
|
65852
65930
|
_onClick(ev) {
|
|
65853
65931
|
this.alignCursorFriendly();
|
|
65854
65932
|
}
|
|
65933
|
+
_onUndo() {
|
|
65934
|
+
this._applyHistoryState(this.history.undo());
|
|
65935
|
+
}
|
|
65936
|
+
_onRedo() {
|
|
65937
|
+
this._applyHistoryState(this.history.redo());
|
|
65938
|
+
}
|
|
65939
|
+
_applyHistoryState(state) {
|
|
65940
|
+
if (!state) return;
|
|
65941
|
+
this._historyChanging = true;
|
|
65942
|
+
this.unmaskedValue = state.unmaskedValue;
|
|
65943
|
+
this.el.select(state.selection.start, state.selection.end);
|
|
65944
|
+
this._saveSelection();
|
|
65945
|
+
this._historyChanging = false;
|
|
65946
|
+
}
|
|
65855
65947
|
|
|
65856
65948
|
/** Unbind view events and removes element reference */
|
|
65857
65949
|
destroy() {
|
|
@@ -65962,6 +66054,11 @@ class ContinuousTailDetails {
|
|
|
65962
66054
|
|
|
65963
66055
|
/** Provides common masking stuff */
|
|
65964
66056
|
class Masked {
|
|
66057
|
+
static DEFAULTS = {
|
|
66058
|
+
skipInvalid: true
|
|
66059
|
+
};
|
|
66060
|
+
static EMPTY_VALUES = [undefined, null, ''];
|
|
66061
|
+
|
|
65965
66062
|
/** */
|
|
65966
66063
|
|
|
65967
66064
|
/** */
|
|
@@ -65997,7 +66094,7 @@ class Masked {
|
|
|
65997
66094
|
|
|
65998
66095
|
/** Sets and applies new options */
|
|
65999
66096
|
updateOptions(opts) {
|
|
66000
|
-
if (!
|
|
66097
|
+
if (!this.optionsIsChanged(opts)) return;
|
|
66001
66098
|
this.withValueRefresh(this._update.bind(this, opts));
|
|
66002
66099
|
}
|
|
66003
66100
|
|
|
@@ -66139,7 +66236,7 @@ class Masked {
|
|
|
66139
66236
|
const consistentState = this.state;
|
|
66140
66237
|
let details;
|
|
66141
66238
|
[ch, details] = this.doPrepareChar(ch, flags);
|
|
66142
|
-
details = details.aggregate(this._appendCharRaw(ch, flags));
|
|
66239
|
+
if (ch) details = details.aggregate(this._appendCharRaw(ch, flags));
|
|
66143
66240
|
if (details.inserted) {
|
|
66144
66241
|
let consistentTail;
|
|
66145
66242
|
let appended = this.doValidate(flags) !== false;
|
|
@@ -66148,18 +66245,22 @@ class Masked {
|
|
|
66148
66245
|
const beforeTailState = this.state;
|
|
66149
66246
|
if (this.overwrite === true) {
|
|
66150
66247
|
consistentTail = checkTail.state;
|
|
66151
|
-
|
|
66248
|
+
for (let i = 0; i < details.rawInserted.length; ++i) {
|
|
66249
|
+
checkTail.unshift(this.displayValue.length - details.tailShift);
|
|
66250
|
+
}
|
|
66152
66251
|
}
|
|
66153
66252
|
let tailDetails = this.appendTail(checkTail);
|
|
66154
|
-
appended = tailDetails.rawInserted === checkTail.toString();
|
|
66253
|
+
appended = tailDetails.rawInserted.length === checkTail.toString().length;
|
|
66155
66254
|
|
|
66156
66255
|
// not ok, try shift
|
|
66157
66256
|
if (!(appended && tailDetails.inserted) && this.overwrite === 'shift') {
|
|
66158
66257
|
this.state = beforeTailState;
|
|
66159
66258
|
consistentTail = checkTail.state;
|
|
66160
|
-
|
|
66259
|
+
for (let i = 0; i < details.rawInserted.length; ++i) {
|
|
66260
|
+
checkTail.shift();
|
|
66261
|
+
}
|
|
66161
66262
|
tailDetails = this.appendTail(checkTail);
|
|
66162
|
-
appended = tailDetails.rawInserted === checkTail.toString();
|
|
66263
|
+
appended = tailDetails.rawInserted.length === checkTail.toString().length;
|
|
66163
66264
|
}
|
|
66164
66265
|
|
|
66165
66266
|
// if ok, rollback state after tail
|
|
@@ -66190,7 +66291,7 @@ class Masked {
|
|
|
66190
66291
|
append(str, flags, tail) {
|
|
66191
66292
|
if (!isString$1(str)) throw new Error('value should be string');
|
|
66192
66293
|
const checkTail = isString$1(tail) ? new ContinuousTailDetails(String(tail)) : tail;
|
|
66193
|
-
if (flags
|
|
66294
|
+
if (flags?.tail) flags._beforeTailState = this.state;
|
|
66194
66295
|
let details;
|
|
66195
66296
|
[str, details] = this.doPrepare(str, flags);
|
|
66196
66297
|
for (let ci = 0; ci < str.length; ++ci) {
|
|
@@ -66198,7 +66299,7 @@ class Masked {
|
|
|
66198
66299
|
if (!d.rawInserted && !this.doSkipInvalid(str[ci], flags, checkTail)) break;
|
|
66199
66300
|
details.aggregate(d);
|
|
66200
66301
|
}
|
|
66201
|
-
if ((this.eager === true || this.eager === 'append') && flags
|
|
66302
|
+
if ((this.eager === true || this.eager === 'append') && flags?.input && str) {
|
|
66202
66303
|
details.aggregate(this._appendEager());
|
|
66203
66304
|
}
|
|
66204
66305
|
|
|
@@ -66209,7 +66310,6 @@ class Masked {
|
|
|
66209
66310
|
// but it causes bugs when one append calls another (when dynamic dispatch set rawInputValue)
|
|
66210
66311
|
// this._resetBeforeTailState();
|
|
66211
66312
|
}
|
|
66212
|
-
|
|
66213
66313
|
return details;
|
|
66214
66314
|
}
|
|
66215
66315
|
remove(fromPos, toPos) {
|
|
@@ -66234,6 +66334,7 @@ class Masked {
|
|
|
66234
66334
|
// append lost trailing chars at the end
|
|
66235
66335
|
if (this.value && this.value !== value && value.indexOf(this.value) === 0) {
|
|
66236
66336
|
this.append(value.slice(this.displayValue.length), {}, '');
|
|
66337
|
+
this.doCommit();
|
|
66237
66338
|
}
|
|
66238
66339
|
delete this._refreshing;
|
|
66239
66340
|
return ret;
|
|
@@ -66323,15 +66424,14 @@ class Masked {
|
|
|
66323
66424
|
maskEquals(mask) {
|
|
66324
66425
|
return this.mask === mask;
|
|
66325
66426
|
}
|
|
66427
|
+
optionsIsChanged(opts) {
|
|
66428
|
+
return !objectIncludes(this, opts);
|
|
66429
|
+
}
|
|
66326
66430
|
typedValueEquals(value) {
|
|
66327
66431
|
const tval = this.typedValue;
|
|
66328
66432
|
return value === tval || Masked.EMPTY_VALUES.includes(value) && Masked.EMPTY_VALUES.includes(tval) || (this.format ? this.format(value, this) === this.format(this.typedValue, this) : false);
|
|
66329
66433
|
}
|
|
66330
66434
|
}
|
|
66331
|
-
Masked.DEFAULTS = {
|
|
66332
|
-
skipInvalid: true
|
|
66333
|
-
};
|
|
66334
|
-
Masked.EMPTY_VALUES = [undefined, null, ''];
|
|
66335
66435
|
IMask.Masked = Masked;
|
|
66336
66436
|
|
|
66337
66437
|
class ChunksTailDetails {
|
|
@@ -66546,11 +66646,9 @@ class PatternCursor {
|
|
|
66546
66646
|
this.offset = this.block.displayValue.length; // TODO this is stupid type error, `block` depends on index that was changed above
|
|
66547
66647
|
}
|
|
66548
66648
|
}
|
|
66549
|
-
|
|
66550
66649
|
_pushLeft(fn) {
|
|
66551
66650
|
this.pushState();
|
|
66552
|
-
for (this.bindBlock(); 0 <= this.index; --this.index, this.offset =
|
|
66553
|
-
var _this$block;
|
|
66651
|
+
for (this.bindBlock(); 0 <= this.index; --this.index, this.offset = this.block?.displayValue.length || 0) {
|
|
66554
66652
|
if (fn()) return this.ok = true;
|
|
66555
66653
|
}
|
|
66556
66654
|
return this.ok = false;
|
|
@@ -66760,6 +66858,13 @@ class PatternFixedDefinition {
|
|
|
66760
66858
|
}
|
|
66761
66859
|
|
|
66762
66860
|
class PatternInputDefinition {
|
|
66861
|
+
static DEFAULT_DEFINITIONS = {
|
|
66862
|
+
'0': /\d/,
|
|
66863
|
+
'a': /[\u0041-\u005A\u0061-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/,
|
|
66864
|
+
// http://stackoverflow.com/a/22075070
|
|
66865
|
+
'*': /./
|
|
66866
|
+
};
|
|
66867
|
+
|
|
66763
66868
|
/** */
|
|
66764
66869
|
|
|
66765
66870
|
/** */
|
|
@@ -66923,19 +67028,12 @@ class PatternInputDefinition {
|
|
|
66923
67028
|
this.isFilled = state.isFilled;
|
|
66924
67029
|
}
|
|
66925
67030
|
currentMaskFlags(flags) {
|
|
66926
|
-
var _flags$_beforeTailSta;
|
|
66927
67031
|
return {
|
|
66928
67032
|
...flags,
|
|
66929
|
-
_beforeTailState:
|
|
67033
|
+
_beforeTailState: flags?._beforeTailState?.masked || flags?._beforeTailState
|
|
66930
67034
|
};
|
|
66931
67035
|
}
|
|
66932
67036
|
}
|
|
66933
|
-
PatternInputDefinition.DEFAULT_DEFINITIONS = {
|
|
66934
|
-
'0': /\d/,
|
|
66935
|
-
'a': /[\u0041-\u005A\u0061-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/,
|
|
66936
|
-
// http://stackoverflow.com/a/22075070
|
|
66937
|
-
'*': /./
|
|
66938
|
-
};
|
|
66939
67037
|
|
|
66940
67038
|
/** Masking by RegExp */
|
|
66941
67039
|
class MaskedRegExp extends Masked {
|
|
@@ -66960,6 +67058,15 @@ IMask.MaskedRegExp = MaskedRegExp;
|
|
|
66960
67058
|
|
|
66961
67059
|
/** Pattern mask */
|
|
66962
67060
|
class MaskedPattern extends Masked {
|
|
67061
|
+
static DEFAULTS = {
|
|
67062
|
+
lazy: true,
|
|
67063
|
+
placeholderChar: '_'
|
|
67064
|
+
};
|
|
67065
|
+
static STOP_CHAR = '`';
|
|
67066
|
+
static ESCAPE_CHAR = '\\';
|
|
67067
|
+
static InputDefinition = PatternInputDefinition;
|
|
67068
|
+
static FixedDefinition = PatternFixedDefinition;
|
|
67069
|
+
|
|
66963
67070
|
/** */
|
|
66964
67071
|
|
|
66965
67072
|
/** */
|
|
@@ -66980,7 +67087,7 @@ class MaskedPattern extends Masked {
|
|
|
66980
67087
|
super({
|
|
66981
67088
|
...MaskedPattern.DEFAULTS,
|
|
66982
67089
|
...opts,
|
|
66983
|
-
definitions: Object.assign({}, PatternInputDefinition.DEFAULT_DEFINITIONS, opts
|
|
67090
|
+
definitions: Object.assign({}, PatternInputDefinition.DEFAULT_DEFINITIONS, opts?.definitions)
|
|
66984
67091
|
});
|
|
66985
67092
|
}
|
|
66986
67093
|
updateOptions(opts) {
|
|
@@ -67012,17 +67119,20 @@ class MaskedPattern extends Masked {
|
|
|
67012
67119
|
if (bName) {
|
|
67013
67120
|
const {
|
|
67014
67121
|
expose,
|
|
67015
|
-
|
|
67016
|
-
|
|
67017
|
-
|
|
67122
|
+
repeat,
|
|
67123
|
+
...bOpts
|
|
67124
|
+
} = normalizeOpts(this.blocks[bName]); // TODO type Opts<Arg & Extra>
|
|
67125
|
+
const blockOpts = {
|
|
67018
67126
|
lazy: this.lazy,
|
|
67019
67127
|
eager: this.eager,
|
|
67020
67128
|
placeholderChar: this.placeholderChar,
|
|
67021
67129
|
displayChar: this.displayChar,
|
|
67022
67130
|
overwrite: this.overwrite,
|
|
67023
|
-
...
|
|
67131
|
+
...bOpts,
|
|
67132
|
+
repeat,
|
|
67024
67133
|
parent: this
|
|
67025
|
-
}
|
|
67134
|
+
};
|
|
67135
|
+
const maskedBlock = repeat != null ? new IMask.RepeatBlock(blockOpts /* TODO */) : createMask(blockOpts);
|
|
67026
67136
|
if (maskedBlock) {
|
|
67027
67137
|
this._blocks.push(maskedBlock);
|
|
67028
67138
|
if (expose) this.exposeBlock = maskedBlock;
|
|
@@ -67078,6 +67188,10 @@ class MaskedPattern extends Masked {
|
|
|
67078
67188
|
};
|
|
67079
67189
|
}
|
|
67080
67190
|
set state(state) {
|
|
67191
|
+
if (!state) {
|
|
67192
|
+
this.reset();
|
|
67193
|
+
return;
|
|
67194
|
+
}
|
|
67081
67195
|
const {
|
|
67082
67196
|
_blocks,
|
|
67083
67197
|
...maskedState
|
|
@@ -67147,9 +67261,8 @@ class MaskedPattern extends Masked {
|
|
|
67147
67261
|
return super.appendTail(tail).aggregate(this._appendPlaceholder());
|
|
67148
67262
|
}
|
|
67149
67263
|
_appendEager() {
|
|
67150
|
-
var _this$_mapPosToBlock;
|
|
67151
67264
|
const details = new ChangeDetails();
|
|
67152
|
-
let startBlockIndex =
|
|
67265
|
+
let startBlockIndex = this._mapPosToBlock(this.displayValue.length)?.index;
|
|
67153
67266
|
if (startBlockIndex == null) return details;
|
|
67154
67267
|
|
|
67155
67268
|
// TODO test if it works for nested pattern masks
|
|
@@ -67168,19 +67281,14 @@ class MaskedPattern extends Masked {
|
|
|
67168
67281
|
const blockIter = this._mapPosToBlock(this.displayValue.length);
|
|
67169
67282
|
const details = new ChangeDetails();
|
|
67170
67283
|
if (!blockIter) return details;
|
|
67171
|
-
for (let bi = blockIter.index
|
|
67172
|
-
var _flags$_beforeTailSta;
|
|
67173
|
-
const block = this._blocks[bi];
|
|
67174
|
-
if (!block) break;
|
|
67284
|
+
for (let bi = blockIter.index, block; block = this._blocks[bi]; ++bi) {
|
|
67175
67285
|
const blockDetails = block._appendChar(ch, {
|
|
67176
67286
|
...flags,
|
|
67177
|
-
_beforeTailState:
|
|
67287
|
+
_beforeTailState: flags._beforeTailState?._blocks?.[bi]
|
|
67178
67288
|
});
|
|
67179
|
-
const skip = blockDetails.skip;
|
|
67180
67289
|
details.aggregate(blockDetails);
|
|
67181
|
-
if (skip || blockDetails.rawInserted) break; // go next char
|
|
67290
|
+
if (blockDetails.skip || blockDetails.rawInserted) break; // go next char
|
|
67182
67291
|
}
|
|
67183
|
-
|
|
67184
67292
|
return details;
|
|
67185
67293
|
}
|
|
67186
67294
|
extractTail(fromPos, toPos) {
|
|
@@ -67237,8 +67345,7 @@ class MaskedPattern extends Masked {
|
|
|
67237
67345
|
const endBlockIndex = toBlockIndex != null ? toBlockIndex : this._blocks.length;
|
|
67238
67346
|
this._blocks.slice(startBlockIndex, endBlockIndex).forEach(b => {
|
|
67239
67347
|
if (!b.lazy || toBlockIndex != null) {
|
|
67240
|
-
|
|
67241
|
-
const bDetails = b._appendPlaceholder((_blocks2 = b._blocks) == null ? void 0 : _blocks2.length);
|
|
67348
|
+
const bDetails = b._appendPlaceholder(b._blocks?.length);
|
|
67242
67349
|
this._value += bDetails.inserted;
|
|
67243
67350
|
details.aggregate(bDetails);
|
|
67244
67351
|
}
|
|
@@ -67389,14 +67496,6 @@ class MaskedPattern extends Masked {
|
|
|
67389
67496
|
return indices.map(gi => this._blocks[gi]);
|
|
67390
67497
|
}
|
|
67391
67498
|
}
|
|
67392
|
-
MaskedPattern.DEFAULTS = {
|
|
67393
|
-
lazy: true,
|
|
67394
|
-
placeholderChar: '_'
|
|
67395
|
-
};
|
|
67396
|
-
MaskedPattern.STOP_CHAR = '`';
|
|
67397
|
-
MaskedPattern.ESCAPE_CHAR = '\\';
|
|
67398
|
-
MaskedPattern.InputDefinition = PatternInputDefinition;
|
|
67399
|
-
MaskedPattern.FixedDefinition = PatternFixedDefinition;
|
|
67400
67499
|
IMask.MaskedPattern = MaskedPattern;
|
|
67401
67500
|
|
|
67402
67501
|
/** Pattern which accepts ranges */
|
|
@@ -67418,7 +67517,6 @@ class MaskedRange extends MaskedPattern {
|
|
|
67418
67517
|
constructor(opts) {
|
|
67419
67518
|
super(opts); // mask will be created in _update
|
|
67420
67519
|
}
|
|
67421
|
-
|
|
67422
67520
|
updateOptions(opts) {
|
|
67423
67521
|
super.updateOptions(opts);
|
|
67424
67522
|
}
|
|
@@ -67462,7 +67560,10 @@ class MaskedRange extends MaskedPattern {
|
|
|
67462
67560
|
}
|
|
67463
67561
|
let details;
|
|
67464
67562
|
[ch, details] = super.doPrepareChar(ch.replace(/\D/g, ''), flags);
|
|
67465
|
-
if (!this.autofix || !ch)
|
|
67563
|
+
if (!this.autofix || !ch) {
|
|
67564
|
+
details.skip = !this.isComplete;
|
|
67565
|
+
return [ch, details];
|
|
67566
|
+
}
|
|
67466
67567
|
const fromStr = String(this.from).padStart(this.maxLength, '0');
|
|
67467
67568
|
const toStr = String(this.to).padStart(this.maxLength, '0');
|
|
67468
67569
|
const nextVal = this.value + ch;
|
|
@@ -67489,6 +67590,52 @@ IMask.MaskedRange = MaskedRange;
|
|
|
67489
67590
|
|
|
67490
67591
|
/** Date mask */
|
|
67491
67592
|
class MaskedDate extends MaskedPattern {
|
|
67593
|
+
static GET_DEFAULT_BLOCKS = () => ({
|
|
67594
|
+
d: {
|
|
67595
|
+
mask: MaskedRange,
|
|
67596
|
+
from: 1,
|
|
67597
|
+
to: 31,
|
|
67598
|
+
maxLength: 2
|
|
67599
|
+
},
|
|
67600
|
+
m: {
|
|
67601
|
+
mask: MaskedRange,
|
|
67602
|
+
from: 1,
|
|
67603
|
+
to: 12,
|
|
67604
|
+
maxLength: 2
|
|
67605
|
+
},
|
|
67606
|
+
Y: {
|
|
67607
|
+
mask: MaskedRange,
|
|
67608
|
+
from: 1900,
|
|
67609
|
+
to: 9999
|
|
67610
|
+
}
|
|
67611
|
+
});
|
|
67612
|
+
static DEFAULTS = {
|
|
67613
|
+
mask: Date,
|
|
67614
|
+
pattern: 'd{.}`m{.}`Y',
|
|
67615
|
+
format: (date, masked) => {
|
|
67616
|
+
if (!date) return '';
|
|
67617
|
+
const day = String(date.getDate()).padStart(2, '0');
|
|
67618
|
+
const month = String(date.getMonth() + 1).padStart(2, '0');
|
|
67619
|
+
const year = date.getFullYear();
|
|
67620
|
+
return [day, month, year].join('.');
|
|
67621
|
+
},
|
|
67622
|
+
parse: (str, masked) => {
|
|
67623
|
+
const [day, month, year] = str.split('.').map(Number);
|
|
67624
|
+
return new Date(year, month - 1, day);
|
|
67625
|
+
}
|
|
67626
|
+
};
|
|
67627
|
+
static extractPatternOptions(opts) {
|
|
67628
|
+
const {
|
|
67629
|
+
mask,
|
|
67630
|
+
pattern,
|
|
67631
|
+
...patternOpts
|
|
67632
|
+
} = opts;
|
|
67633
|
+
return {
|
|
67634
|
+
...patternOpts,
|
|
67635
|
+
mask: isString$1(mask) ? mask : pattern
|
|
67636
|
+
};
|
|
67637
|
+
}
|
|
67638
|
+
|
|
67492
67639
|
/** Pattern mask for date according to {@link MaskedDate#format} */
|
|
67493
67640
|
|
|
67494
67641
|
/** Start date */
|
|
@@ -67502,18 +67649,10 @@ class MaskedDate extends MaskedPattern {
|
|
|
67502
67649
|
/** Parse string to get typed value */
|
|
67503
67650
|
|
|
67504
67651
|
constructor(opts) {
|
|
67505
|
-
|
|
67506
|
-
mask,
|
|
67507
|
-
pattern,
|
|
67508
|
-
...patternOpts
|
|
67509
|
-
} = {
|
|
67652
|
+
super(MaskedDate.extractPatternOptions({
|
|
67510
67653
|
...MaskedDate.DEFAULTS,
|
|
67511
67654
|
...opts
|
|
67512
|
-
};
|
|
67513
|
-
super({
|
|
67514
|
-
...patternOpts,
|
|
67515
|
-
mask: isString$1(mask) ? mask : pattern
|
|
67516
|
-
});
|
|
67655
|
+
}));
|
|
67517
67656
|
}
|
|
67518
67657
|
updateOptions(opts) {
|
|
67519
67658
|
super.updateOptions(opts);
|
|
@@ -67579,45 +67718,16 @@ class MaskedDate extends MaskedPattern {
|
|
|
67579
67718
|
maskEquals(mask) {
|
|
67580
67719
|
return mask === Date || super.maskEquals(mask);
|
|
67581
67720
|
}
|
|
67582
|
-
|
|
67583
|
-
MaskedDate.
|
|
67584
|
-
d: {
|
|
67585
|
-
mask: MaskedRange,
|
|
67586
|
-
from: 1,
|
|
67587
|
-
to: 31,
|
|
67588
|
-
maxLength: 2
|
|
67589
|
-
},
|
|
67590
|
-
m: {
|
|
67591
|
-
mask: MaskedRange,
|
|
67592
|
-
from: 1,
|
|
67593
|
-
to: 12,
|
|
67594
|
-
maxLength: 2
|
|
67595
|
-
},
|
|
67596
|
-
Y: {
|
|
67597
|
-
mask: MaskedRange,
|
|
67598
|
-
from: 1900,
|
|
67599
|
-
to: 9999
|
|
67600
|
-
}
|
|
67601
|
-
});
|
|
67602
|
-
MaskedDate.DEFAULTS = {
|
|
67603
|
-
mask: Date,
|
|
67604
|
-
pattern: 'd{.}`m{.}`Y',
|
|
67605
|
-
format: (date, masked) => {
|
|
67606
|
-
if (!date) return '';
|
|
67607
|
-
const day = String(date.getDate()).padStart(2, '0');
|
|
67608
|
-
const month = String(date.getMonth() + 1).padStart(2, '0');
|
|
67609
|
-
const year = date.getFullYear();
|
|
67610
|
-
return [day, month, year].join('.');
|
|
67611
|
-
},
|
|
67612
|
-
parse: (str, masked) => {
|
|
67613
|
-
const [day, month, year] = str.split('.').map(Number);
|
|
67614
|
-
return new Date(year, month - 1, day);
|
|
67721
|
+
optionsIsChanged(opts) {
|
|
67722
|
+
return super.optionsIsChanged(MaskedDate.extractPatternOptions(opts));
|
|
67615
67723
|
}
|
|
67616
|
-
}
|
|
67724
|
+
}
|
|
67617
67725
|
IMask.MaskedDate = MaskedDate;
|
|
67618
67726
|
|
|
67619
67727
|
/** Dynamic mask for choosing appropriate mask in run-time */
|
|
67620
67728
|
class MaskedDynamic extends Masked {
|
|
67729
|
+
static DEFAULTS;
|
|
67730
|
+
|
|
67621
67731
|
/** Currently chosen mask */
|
|
67622
67732
|
|
|
67623
67733
|
/** Currently chosen mask */
|
|
@@ -67659,7 +67769,6 @@ class MaskedDynamic extends Masked {
|
|
|
67659
67769
|
// this.currentMask = this.doDispatch(''); // probably not needed but lets see
|
|
67660
67770
|
}
|
|
67661
67771
|
}
|
|
67662
|
-
|
|
67663
67772
|
_appendCharRaw(ch, flags) {
|
|
67664
67773
|
if (flags === void 0) {
|
|
67665
67774
|
flags = {};
|
|
@@ -67686,7 +67795,7 @@ class MaskedDynamic extends Masked {
|
|
|
67686
67795
|
const tailValue = inputValue.slice(insertValue.length);
|
|
67687
67796
|
const prevMask = this.currentMask;
|
|
67688
67797
|
const details = new ChangeDetails();
|
|
67689
|
-
const prevMaskState = prevMask
|
|
67798
|
+
const prevMaskState = prevMask?.state;
|
|
67690
67799
|
|
|
67691
67800
|
// clone flags to prevent overwriting `_beforeTailState`
|
|
67692
67801
|
this.currentMask = this.doDispatch(appended, {
|
|
@@ -67738,10 +67847,9 @@ class MaskedDynamic extends Masked {
|
|
|
67738
67847
|
return details.aggregate(this.currentMask ? this.currentMask.appendTail(tail) : super.appendTail(tail));
|
|
67739
67848
|
}
|
|
67740
67849
|
currentMaskFlags(flags) {
|
|
67741
|
-
var _flags$_beforeTailSta, _flags$_beforeTailSta2;
|
|
67742
67850
|
return {
|
|
67743
67851
|
...flags,
|
|
67744
|
-
_beforeTailState:
|
|
67852
|
+
_beforeTailState: flags._beforeTailState?.currentMaskRef === this.currentMask && flags._beforeTailState?.currentMask || flags._beforeTailState
|
|
67745
67853
|
};
|
|
67746
67854
|
}
|
|
67747
67855
|
doDispatch(appended, flags, tail) {
|
|
@@ -67781,8 +67889,7 @@ class MaskedDynamic extends Masked {
|
|
|
67781
67889
|
return [s, details];
|
|
67782
67890
|
}
|
|
67783
67891
|
reset() {
|
|
67784
|
-
|
|
67785
|
-
(_this$currentMask = this.currentMask) == null ? void 0 : _this$currentMask.reset();
|
|
67892
|
+
this.currentMask?.reset();
|
|
67786
67893
|
this.compiledMasks.forEach(m => m.reset());
|
|
67787
67894
|
}
|
|
67788
67895
|
get value() {
|
|
@@ -67828,12 +67935,10 @@ class MaskedDynamic extends Masked {
|
|
|
67828
67935
|
return this.currentMask ? this.currentMask.displayValue : '';
|
|
67829
67936
|
}
|
|
67830
67937
|
get isComplete() {
|
|
67831
|
-
|
|
67832
|
-
return Boolean((_this$currentMask2 = this.currentMask) == null ? void 0 : _this$currentMask2.isComplete);
|
|
67938
|
+
return Boolean(this.currentMask?.isComplete);
|
|
67833
67939
|
}
|
|
67834
67940
|
get isFilled() {
|
|
67835
|
-
|
|
67836
|
-
return Boolean((_this$currentMask3 = this.currentMask) == null ? void 0 : _this$currentMask3.isFilled);
|
|
67941
|
+
return Boolean(this.currentMask?.isFilled);
|
|
67837
67942
|
}
|
|
67838
67943
|
remove(fromPos, toPos) {
|
|
67839
67944
|
const details = new ChangeDetails();
|
|
@@ -67845,13 +67950,12 @@ class MaskedDynamic extends Masked {
|
|
|
67845
67950
|
return details;
|
|
67846
67951
|
}
|
|
67847
67952
|
get state() {
|
|
67848
|
-
var _this$currentMask4;
|
|
67849
67953
|
return {
|
|
67850
67954
|
...super.state,
|
|
67851
67955
|
_rawInputValue: this.rawInputValue,
|
|
67852
67956
|
compiledMasks: this.compiledMasks.map(m => m.state),
|
|
67853
67957
|
currentMaskRef: this.currentMask,
|
|
67854
|
-
currentMask:
|
|
67958
|
+
currentMask: this.currentMask?.state
|
|
67855
67959
|
};
|
|
67856
67960
|
}
|
|
67857
67961
|
set state(state) {
|
|
@@ -67910,11 +68014,9 @@ class MaskedDynamic extends Masked {
|
|
|
67910
68014
|
}) : super.maskEquals(mask);
|
|
67911
68015
|
}
|
|
67912
68016
|
typedValueEquals(value) {
|
|
67913
|
-
|
|
67914
|
-
return Boolean((_this$currentMask5 = this.currentMask) == null ? void 0 : _this$currentMask5.typedValueEquals(value));
|
|
68017
|
+
return Boolean(this.currentMask?.typedValueEquals(value));
|
|
67915
68018
|
}
|
|
67916
68019
|
}
|
|
67917
|
-
MaskedDynamic.DEFAULTS = void 0;
|
|
67918
68020
|
MaskedDynamic.DEFAULTS = {
|
|
67919
68021
|
dispatch: (appended, masked, flags, tail) => {
|
|
67920
68022
|
if (!masked.compiledMasks.length) return;
|
|
@@ -67953,7 +68055,6 @@ class MaskedEnum extends MaskedPattern {
|
|
|
67953
68055
|
constructor(opts) {
|
|
67954
68056
|
super(opts); // mask will be created in _update
|
|
67955
68057
|
}
|
|
67956
|
-
|
|
67957
68058
|
updateOptions(opts) {
|
|
67958
68059
|
super.updateOptions(opts);
|
|
67959
68060
|
}
|
|
@@ -68002,6 +68103,25 @@ IMask.MaskedFunction = MaskedFunction;
|
|
|
68002
68103
|
|
|
68003
68104
|
/** Number mask */
|
|
68004
68105
|
class MaskedNumber extends Masked {
|
|
68106
|
+
static UNMASKED_RADIX = '.';
|
|
68107
|
+
static EMPTY_VALUES = [...Masked.EMPTY_VALUES, 0];
|
|
68108
|
+
static DEFAULTS = {
|
|
68109
|
+
mask: Number,
|
|
68110
|
+
radix: ',',
|
|
68111
|
+
thousandsSeparator: '',
|
|
68112
|
+
mapToRadix: [MaskedNumber.UNMASKED_RADIX],
|
|
68113
|
+
min: Number.MIN_SAFE_INTEGER,
|
|
68114
|
+
max: Number.MAX_SAFE_INTEGER,
|
|
68115
|
+
scale: 2,
|
|
68116
|
+
normalizeZeros: true,
|
|
68117
|
+
padFractionalZeros: false,
|
|
68118
|
+
parse: Number,
|
|
68119
|
+
format: n => n.toLocaleString('en-US', {
|
|
68120
|
+
useGrouping: false,
|
|
68121
|
+
maximumFractionDigits: 20
|
|
68122
|
+
})
|
|
68123
|
+
};
|
|
68124
|
+
|
|
68005
68125
|
/** Single char */
|
|
68006
68126
|
|
|
68007
68127
|
/** Single char */
|
|
@@ -68044,9 +68164,9 @@ class MaskedNumber extends Masked {
|
|
|
68044
68164
|
_updateRegExps() {
|
|
68045
68165
|
const start = '^' + (this.allowNegative ? '[+|\\-]?' : '');
|
|
68046
68166
|
const mid = '\\d*';
|
|
68047
|
-
const end = (this.scale ?
|
|
68167
|
+
const end = (this.scale ? `(${escapeRegExp(this.radix)}\\d{0,${this.scale}})?` : '') + '$';
|
|
68048
68168
|
this._numberRegExp = new RegExp(start + mid + end);
|
|
68049
|
-
this._mapToRadixRegExp = new RegExp(
|
|
68169
|
+
this._mapToRadixRegExp = new RegExp(`[${this.mapToRadix.map(escapeRegExp).join('')}]`, 'g');
|
|
68050
68170
|
this._thousandsSeparatorRegExp = new RegExp(escapeRegExp(this.thousandsSeparator), 'g');
|
|
68051
68171
|
}
|
|
68052
68172
|
_removeThousandsSeparators(value) {
|
|
@@ -68221,7 +68341,6 @@ class MaskedNumber extends Masked {
|
|
|
68221
68341
|
parts[1] = parts[1].replace(/0*$/, ''); // remove trailing zeros
|
|
68222
68342
|
if (!parts[1].length) parts.length = 1; // remove fractional
|
|
68223
68343
|
}
|
|
68224
|
-
|
|
68225
68344
|
return this._insertThousandsSeparators(parts.join(this.radix));
|
|
68226
68345
|
}
|
|
68227
68346
|
_padFractionalZeros(value) {
|
|
@@ -68258,17 +68377,9 @@ class MaskedNumber extends Masked {
|
|
|
68258
68377
|
set number(number) {
|
|
68259
68378
|
this.typedValue = number;
|
|
68260
68379
|
}
|
|
68261
|
-
|
|
68262
|
-
/**
|
|
68263
|
-
Is negative allowed
|
|
68264
|
-
*/
|
|
68265
68380
|
get allowNegative() {
|
|
68266
68381
|
return this.min != null && this.min < 0 || this.max != null && this.max < 0;
|
|
68267
68382
|
}
|
|
68268
|
-
|
|
68269
|
-
/**
|
|
68270
|
-
Is positive allowed
|
|
68271
|
-
*/
|
|
68272
68383
|
get allowPositive() {
|
|
68273
68384
|
return this.min != null && this.min > 0 || this.max != null && this.max > 0;
|
|
68274
68385
|
}
|
|
@@ -68278,24 +68389,6 @@ class MaskedNumber extends Masked {
|
|
|
68278
68389
|
return (super.typedValueEquals(value) || MaskedNumber.EMPTY_VALUES.includes(value) && MaskedNumber.EMPTY_VALUES.includes(this.typedValue)) && !(value === 0 && this.value === '');
|
|
68279
68390
|
}
|
|
68280
68391
|
}
|
|
68281
|
-
MaskedNumber.UNMASKED_RADIX = '.';
|
|
68282
|
-
MaskedNumber.EMPTY_VALUES = [...Masked.EMPTY_VALUES, 0];
|
|
68283
|
-
MaskedNumber.DEFAULTS = {
|
|
68284
|
-
mask: Number,
|
|
68285
|
-
radix: ',',
|
|
68286
|
-
thousandsSeparator: '',
|
|
68287
|
-
mapToRadix: [MaskedNumber.UNMASKED_RADIX],
|
|
68288
|
-
min: Number.MIN_SAFE_INTEGER,
|
|
68289
|
-
max: Number.MAX_SAFE_INTEGER,
|
|
68290
|
-
scale: 2,
|
|
68291
|
-
normalizeZeros: true,
|
|
68292
|
-
padFractionalZeros: false,
|
|
68293
|
-
parse: Number,
|
|
68294
|
-
format: n => n.toLocaleString('en-US', {
|
|
68295
|
-
useGrouping: false,
|
|
68296
|
-
maximumFractionDigits: 20
|
|
68297
|
-
})
|
|
68298
|
-
};
|
|
68299
68392
|
IMask.MaskedNumber = MaskedNumber;
|
|
68300
68393
|
|
|
68301
68394
|
/** Mask pipe source and destination types */
|
|
@@ -68327,6 +68420,124 @@ IMask.PIPE_TYPE = PIPE_TYPE;
|
|
|
68327
68420
|
IMask.createPipe = createPipe;
|
|
68328
68421
|
IMask.pipe = pipe;
|
|
68329
68422
|
|
|
68423
|
+
/** Pattern mask */
|
|
68424
|
+
class RepeatBlock extends MaskedPattern {
|
|
68425
|
+
get repeatFrom() {
|
|
68426
|
+
return (Array.isArray(this.repeat) ? this.repeat[0] : this.repeat === Infinity ? 0 : this.repeat) ?? 0;
|
|
68427
|
+
}
|
|
68428
|
+
get repeatTo() {
|
|
68429
|
+
return (Array.isArray(this.repeat) ? this.repeat[1] : this.repeat) ?? Infinity;
|
|
68430
|
+
}
|
|
68431
|
+
constructor(opts) {
|
|
68432
|
+
super(opts);
|
|
68433
|
+
}
|
|
68434
|
+
updateOptions(opts) {
|
|
68435
|
+
super.updateOptions(opts);
|
|
68436
|
+
}
|
|
68437
|
+
_update(opts) {
|
|
68438
|
+
const {
|
|
68439
|
+
repeat,
|
|
68440
|
+
...blockOpts
|
|
68441
|
+
} = normalizeOpts(opts); // TODO type
|
|
68442
|
+
this._blockOpts = Object.assign({}, this._blockOpts, blockOpts);
|
|
68443
|
+
const block = createMask(this._blockOpts);
|
|
68444
|
+
this.repeat = repeat ?? block.repeat ?? this.repeat ?? Infinity; // TODO type
|
|
68445
|
+
|
|
68446
|
+
super._update({
|
|
68447
|
+
mask: 'm'.repeat(Math.max(this.repeatTo === Infinity && this._blocks?.length || 0, this.repeatFrom)),
|
|
68448
|
+
blocks: {
|
|
68449
|
+
m: block
|
|
68450
|
+
},
|
|
68451
|
+
eager: block.eager,
|
|
68452
|
+
overwrite: block.overwrite,
|
|
68453
|
+
skipInvalid: block.skipInvalid,
|
|
68454
|
+
lazy: block.lazy,
|
|
68455
|
+
placeholderChar: block.placeholderChar,
|
|
68456
|
+
displayChar: block.displayChar
|
|
68457
|
+
});
|
|
68458
|
+
}
|
|
68459
|
+
_allocateBlock(bi) {
|
|
68460
|
+
if (bi < this._blocks.length) return this._blocks[bi];
|
|
68461
|
+
if (this.repeatTo === Infinity || this._blocks.length < this.repeatTo) {
|
|
68462
|
+
this._blocks.push(createMask(this._blockOpts));
|
|
68463
|
+
this.mask += 'm';
|
|
68464
|
+
return this._blocks[this._blocks.length - 1];
|
|
68465
|
+
}
|
|
68466
|
+
}
|
|
68467
|
+
_appendCharRaw(ch, flags) {
|
|
68468
|
+
if (flags === void 0) {
|
|
68469
|
+
flags = {};
|
|
68470
|
+
}
|
|
68471
|
+
const details = new ChangeDetails();
|
|
68472
|
+
for (let bi = this._mapPosToBlock(this.displayValue.length)?.index ?? Math.max(this._blocks.length - 1, 0), block, allocated;
|
|
68473
|
+
// try to get a block or
|
|
68474
|
+
// try to allocate a new block if not allocated already
|
|
68475
|
+
block = this._blocks[bi] ?? (allocated = !allocated && this._allocateBlock(bi)); ++bi) {
|
|
68476
|
+
const blockDetails = block._appendChar(ch, {
|
|
68477
|
+
...flags,
|
|
68478
|
+
_beforeTailState: flags._beforeTailState?._blocks?.[bi]
|
|
68479
|
+
});
|
|
68480
|
+
if (blockDetails.skip && allocated) {
|
|
68481
|
+
// remove the last allocated block and break
|
|
68482
|
+
this._blocks.pop();
|
|
68483
|
+
this.mask = this.mask.slice(1);
|
|
68484
|
+
break;
|
|
68485
|
+
}
|
|
68486
|
+
details.aggregate(blockDetails);
|
|
68487
|
+
if (blockDetails.skip || blockDetails.rawInserted) break; // go next char
|
|
68488
|
+
}
|
|
68489
|
+
return details;
|
|
68490
|
+
}
|
|
68491
|
+
_trimEmptyTail(fromPos, toPos) {
|
|
68492
|
+
if (fromPos === void 0) {
|
|
68493
|
+
fromPos = 0;
|
|
68494
|
+
}
|
|
68495
|
+
const firstBlockIndex = Math.max(this._mapPosToBlock(fromPos)?.index || 0, this.repeatFrom, 0);
|
|
68496
|
+
let lastBlockIndex;
|
|
68497
|
+
if (toPos != null) lastBlockIndex = this._mapPosToBlock(toPos)?.index;
|
|
68498
|
+
if (lastBlockIndex == null) lastBlockIndex = this._blocks.length - 1;
|
|
68499
|
+
let removeCount = 0;
|
|
68500
|
+
for (let blockIndex = lastBlockIndex; firstBlockIndex <= blockIndex; --blockIndex, ++removeCount) {
|
|
68501
|
+
if (this._blocks[blockIndex].unmaskedValue) break;
|
|
68502
|
+
}
|
|
68503
|
+
if (removeCount) {
|
|
68504
|
+
this._blocks.splice(lastBlockIndex - removeCount + 1, removeCount);
|
|
68505
|
+
this.mask = this.mask.slice(removeCount);
|
|
68506
|
+
}
|
|
68507
|
+
}
|
|
68508
|
+
reset() {
|
|
68509
|
+
super.reset();
|
|
68510
|
+
this._trimEmptyTail();
|
|
68511
|
+
}
|
|
68512
|
+
remove(fromPos, toPos) {
|
|
68513
|
+
if (fromPos === void 0) {
|
|
68514
|
+
fromPos = 0;
|
|
68515
|
+
}
|
|
68516
|
+
if (toPos === void 0) {
|
|
68517
|
+
toPos = this.displayValue.length;
|
|
68518
|
+
}
|
|
68519
|
+
const removeDetails = super.remove(fromPos, toPos);
|
|
68520
|
+
this._trimEmptyTail(fromPos, toPos);
|
|
68521
|
+
return removeDetails;
|
|
68522
|
+
}
|
|
68523
|
+
totalInputPositions(fromPos, toPos) {
|
|
68524
|
+
if (fromPos === void 0) {
|
|
68525
|
+
fromPos = 0;
|
|
68526
|
+
}
|
|
68527
|
+
if (toPos == null && this.repeatTo === Infinity) return Infinity;
|
|
68528
|
+
return super.totalInputPositions(fromPos, toPos);
|
|
68529
|
+
}
|
|
68530
|
+
get state() {
|
|
68531
|
+
return super.state;
|
|
68532
|
+
}
|
|
68533
|
+
set state(state) {
|
|
68534
|
+
this._blocks.length = state._blocks.length;
|
|
68535
|
+
this.mask = this.mask.slice(0, this._blocks.length);
|
|
68536
|
+
super.state = state;
|
|
68537
|
+
}
|
|
68538
|
+
}
|
|
68539
|
+
IMask.RepeatBlock = RepeatBlock;
|
|
68540
|
+
|
|
68330
68541
|
try {
|
|
68331
68542
|
globalThis.IMask = IMask;
|
|
68332
68543
|
} catch {}
|
|
@@ -70420,6 +70631,15 @@ var Mission;
|
|
|
70420
70631
|
})(Mission.MissionSourceEnum || (Mission.MissionSourceEnum = {}));
|
|
70421
70632
|
})(Mission || (Mission = {}));
|
|
70422
70633
|
|
|
70634
|
+
function useDeepCompareEffect(effect, deps) {
|
|
70635
|
+
const previousValue = usePrevious(deps);
|
|
70636
|
+
const isDifferent = !fp.isEqual(previousValue, deps);
|
|
70637
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
70638
|
+
useEffect(effect, [
|
|
70639
|
+
isDifferent
|
|
70640
|
+
]);
|
|
70641
|
+
}
|
|
70642
|
+
|
|
70423
70643
|
function useFieldControl(value, onChange, defaultValueWhenUndefined) {
|
|
70424
70644
|
const previousValue = usePrevious(value);
|
|
70425
70645
|
const [internalValue, setInternalValue] = useState(value);
|
|
@@ -76443,5 +76663,5 @@ const undefineObjectPropPair = ([key, value])=>[
|
|
|
76443
76663
|
return value;
|
|
76444
76664
|
}
|
|
76445
76665
|
|
|
76446
|
-
export { Accent, Button$1 as Button, CheckPicker, Checkbox, ControlUnit, CoordinatesFormat, CoordinatesInput, CustomSearch, DataTable, DatePicker, DateRangePicker, Dialog, Dropdown, ExclamationPoint, Field$2 as Field, FieldError, Fieldset, FormikCheckbox, FormikCoordinatesInput, FormikDatePicker, FormikDateRangePicker, FormikEffect, FormikMultiCheckbox, FormikMultiRadio, FormikMultiSelect, FormikNumberInput, FormikSearch, FormikSelect, FormikTextInput, FormikTextarea, GlobalStyle, index as Icon, IconButton, Label, Legend, Level, MapMenuDialog, Message, Mission, MultiCheckbox, MultiRadio, MultiSelect, MultiZoneEditor, NewWindow, NewWindowContext, NotificationEvent, Notifier, NumberInput, OPENLAYERS_PROJECTION, OnlyFontGlobalStyle, Search, Select, SideMenu, SimpleTable, SingleTag, Size, THEME, TableWithSelectableRows, Tag, TagBullet, TagGroup, TextInput, Textarea, ThemeProvider, WSG84_PROJECTION, cleanString, coordinatesAreDistinct, customDayjs, getCoordinates, getHashFromCollection, getLocalizedDayjs, getOptionsFromIdAndName, getOptionsFromLabelledEnum, getPseudoRandomString, getUtcizedDayjs, isArray, isDefined, isEmptyish, isNumeric, isObject, logSoftError, normalizeString, nullify, pluralize, sortCollectionByLocalizedProps, stopMouseEventPropagation, undefine, useClickOutsideEffect, useFieldControl, useForceUpdate, useKey, useNewWindow, usePrevious };
|
|
76666
|
+
export { Accent, Button$1 as Button, CheckPicker, Checkbox, ControlUnit, CoordinatesFormat, CoordinatesInput, CustomSearch, DataTable, DatePicker, DateRangePicker, Dialog, Dropdown, ExclamationPoint, Field$2 as Field, FieldError, Fieldset, FormikCheckbox, FormikCoordinatesInput, FormikDatePicker, FormikDateRangePicker, FormikEffect, FormikMultiCheckbox, FormikMultiRadio, FormikMultiSelect, FormikNumberInput, FormikSearch, FormikSelect, FormikTextInput, FormikTextarea, GlobalStyle, index as Icon, IconButton, Label, Legend, Level, MapMenuDialog, Message, Mission, MultiCheckbox, MultiRadio, MultiSelect, MultiZoneEditor, NewWindow, NewWindowContext, NotificationEvent, Notifier, NumberInput, OPENLAYERS_PROJECTION, OnlyFontGlobalStyle, Search, Select, SideMenu, SimpleTable, SingleTag, Size, THEME, TableWithSelectableRows, Tag, TagBullet, TagGroup, TextInput, Textarea, ThemeProvider, WSG84_PROJECTION, cleanString, coordinatesAreDistinct, customDayjs, getCoordinates, getHashFromCollection, getLocalizedDayjs, getOptionsFromIdAndName, getOptionsFromLabelledEnum, getPseudoRandomString, getUtcizedDayjs, isArray, isDefined, isEmptyish, isNumeric, isObject, logSoftError, normalizeString, nullify, pluralize, sortCollectionByLocalizedProps, stopMouseEventPropagation, undefine, useClickOutsideEffect, useDeepCompareEffect, useFieldControl, useForceUpdate, useKey, useNewWindow, usePrevious };
|
|
76447
76667
|
//# sourceMappingURL=index.js.map
|