@skbkontur/react-ui 6.1.4-eef21.0 → 6.1.4-ff219.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/components/Autocomplete/Autocomplete.js +3 -2
- package/components/Autocomplete/Autocomplete.js.map +1 -1
- package/components/FxInput/FxInput.js +2 -2
- package/components/FxInput/FxInput.js.map +1 -1
- package/components/Group/Group.js +2 -3
- package/components/Group/Group.js.map +1 -1
- package/components/Input/Input.d.ts +1 -1
- package/components/Input/Input.js.map +1 -1
- package/components/MaskedInput/MaskedInput.d.ts +2 -0
- package/components/MaskedInput/MaskedInput.js +6 -0
- package/components/MaskedInput/MaskedInput.js.map +1 -1
- package/components/MaskedInputV2/MaskedInputV2.d.ts +57 -0
- package/components/MaskedInputV2/MaskedInputV2.helpers.d.ts +9 -0
- package/components/MaskedInputV2/MaskedInputV2.helpers.js +17 -0
- package/components/MaskedInputV2/MaskedInputV2.helpers.js.map +1 -0
- package/components/MaskedInputV2/MaskedInputV2.js +234 -0
- package/components/MaskedInputV2/MaskedInputV2.js.map +1 -0
- package/components/MaskedInputV2/MaskedInputV2.styles.d.ts +7 -0
- package/components/MaskedInputV2/MaskedInputV2.styles.js +19 -0
- package/components/MaskedInputV2/MaskedInputV2.styles.js.map +1 -0
- package/components/MaskedInputV2/index.d.ts +1 -0
- package/components/MaskedInputV2/index.js +2 -0
- package/components/MaskedInputV2/index.js.map +1 -0
- package/components/MaskedInputV2/internal/MaskOverlay.d.ts +19 -0
- package/components/MaskedInputV2/internal/MaskOverlay.js +54 -0
- package/components/MaskedInputV2/internal/MaskOverlay.js.map +1 -0
- package/components/MaskedInputV2/internal/MaskedCore.d.ts +8 -0
- package/components/MaskedInputV2/internal/MaskedCore.js +101 -0
- package/components/MaskedInputV2/internal/MaskedCore.js.map +1 -0
- package/components/MaskedInputV2/internal/MaskedCore.types.d.ts +30 -0
- package/components/MaskedInputV2/internal/MaskedCore.types.js +2 -0
- package/components/MaskedInputV2/internal/MaskedCore.types.js.map +1 -0
- package/components/MaskedInputV2/internal/MaskedInternal.styles.d.ts +15 -0
- package/components/MaskedInputV2/internal/MaskedInternal.styles.js +34 -0
- package/components/MaskedInputV2/internal/MaskedInternal.styles.js.map +1 -0
- package/components/MaskedInputV2/internal/buildSlotMap.d.ts +11 -0
- package/components/MaskedInputV2/internal/buildSlotMap.js +37 -0
- package/components/MaskedInputV2/internal/buildSlotMap.js.map +1 -0
- package/components/MaskedInputV2/internal/extractRaw.d.ts +10 -0
- package/components/MaskedInputV2/internal/extractRaw.js +16 -0
- package/components/MaskedInputV2/internal/extractRaw.js.map +1 -0
- package/components/MaskedInputV2/internal/findNearestRawLeft.d.ts +10 -0
- package/components/MaskedInputV2/internal/findNearestRawLeft.js +18 -0
- package/components/MaskedInputV2/internal/findNearestRawLeft.js.map +1 -0
- package/components/MaskedInputV2/internal/helpers.d.ts +5 -0
- package/components/MaskedInputV2/internal/helpers.js +6 -0
- package/components/MaskedInputV2/internal/helpers.js.map +1 -0
- package/components/MaskedInputV2/internal/maskedCoreClipboard.d.ts +25 -0
- package/components/MaskedInputV2/internal/maskedCoreClipboard.js +30 -0
- package/components/MaskedInputV2/internal/maskedCoreClipboard.js.map +1 -0
- package/components/MaskedInputV2/internal/maskedCoreDeletion.d.ts +28 -0
- package/components/MaskedInputV2/internal/maskedCoreDeletion.js +70 -0
- package/components/MaskedInputV2/internal/maskedCoreDeletion.js.map +1 -0
- package/components/MaskedInputV2/internal/maskedCoreInputChange.d.ts +35 -0
- package/components/MaskedInputV2/internal/maskedCoreInputChange.js +31 -0
- package/components/MaskedInputV2/internal/maskedCoreInputChange.js.map +1 -0
- package/components/MaskedInputV2/internal/maskedCoreNavigation.d.ts +13 -0
- package/components/MaskedInputV2/internal/maskedCoreNavigation.js +79 -0
- package/components/MaskedInputV2/internal/maskedCoreNavigation.js.map +1 -0
- package/components/MaskedInputV2/internal/stripMaskChars.d.ts +11 -0
- package/components/MaskedInputV2/internal/stripMaskChars.js +20 -0
- package/components/MaskedInputV2/internal/stripMaskChars.js.map +1 -0
- package/components/MaskedInputV2/internal/types.d.ts +74 -0
- package/components/MaskedInputV2/internal/types.js +2 -0
- package/components/MaskedInputV2/internal/types.js.map +1 -0
- package/components/MaskedInputV2/internal/useMaskEngine.d.ts +42 -0
- package/components/MaskedInputV2/internal/useMaskEngine.js +82 -0
- package/components/MaskedInputV2/internal/useMaskEngine.js.map +1 -0
- package/components/MaskedInputV2/internal/useMaskedCoreHandlers.d.ts +28 -0
- package/components/MaskedInputV2/internal/useMaskedCoreHandlers.js +190 -0
- package/components/MaskedInputV2/internal/useMaskedCoreHandlers.js.map +1 -0
- package/components/MaskedInputV2/react-imask/imask/controls/html-input-mask-element.d.ts +16 -0
- package/components/MaskedInputV2/react-imask/imask/controls/html-input-mask-element.js +59 -0
- package/components/MaskedInputV2/react-imask/imask/controls/html-input-mask-element.js.map +1 -0
- package/components/MaskedInputV2/react-imask/imask/controls/html-mask-element.d.ts +20 -0
- package/components/MaskedInputV2/react-imask/imask/controls/html-mask-element.js +106 -0
- package/components/MaskedInputV2/react-imask/imask/controls/html-mask-element.js.map +1 -0
- package/components/MaskedInputV2/react-imask/imask/controls/input-history.d.ts +17 -0
- package/components/MaskedInputV2/react-imask/imask/controls/input-history.js +49 -0
- package/components/MaskedInputV2/react-imask/imask/controls/input-history.js.map +1 -0
- package/components/MaskedInputV2/react-imask/imask/controls/input.d.ts +95 -0
- package/components/MaskedInputV2/react-imask/imask/controls/input.js +420 -0
- package/components/MaskedInputV2/react-imask/imask/controls/input.js.map +1 -0
- package/components/MaskedInputV2/react-imask/imask/controls/mask-element.d.ts +30 -0
- package/components/MaskedInputV2/react-imask/imask/controls/mask-element.js +59 -0
- package/components/MaskedInputV2/react-imask/imask/controls/mask-element.js.map +1 -0
- package/components/MaskedInputV2/react-imask/imask/core/action-details.d.ts +30 -0
- package/components/MaskedInputV2/react-imask/imask/core/action-details.js +100 -0
- package/components/MaskedInputV2/react-imask/imask/core/action-details.js.map +1 -0
- package/components/MaskedInputV2/react-imask/imask/core/change-details.d.ts +20 -0
- package/components/MaskedInputV2/react-imask/imask/core/change-details.js +46 -0
- package/components/MaskedInputV2/react-imask/imask/core/change-details.js.map +1 -0
- package/components/MaskedInputV2/react-imask/imask/core/continuous-tail-details.d.ts +21 -0
- package/components/MaskedInputV2/react-imask/imask/core/continuous-tail-details.js +52 -0
- package/components/MaskedInputV2/react-imask/imask/core/continuous-tail-details.js.map +1 -0
- package/components/MaskedInputV2/react-imask/imask/core/holder.d.ts +34 -0
- package/components/MaskedInputV2/react-imask/imask/core/holder.js +38 -0
- package/components/MaskedInputV2/react-imask/imask/core/holder.js.map +1 -0
- package/components/MaskedInputV2/react-imask/imask/core/tail-details.d.ts +20 -0
- package/components/MaskedInputV2/react-imask/imask/core/tail-details.js +2 -0
- package/components/MaskedInputV2/react-imask/imask/core/tail-details.js.map +1 -0
- package/components/MaskedInputV2/react-imask/imask/core/utils.d.ts +24 -0
- package/components/MaskedInputV2/react-imask/imask/core/utils.js +100 -0
- package/components/MaskedInputV2/react-imask/imask/core/utils.js.map +1 -0
- package/components/MaskedInputV2/react-imask/imask/imask.d.ts +5 -0
- package/components/MaskedInputV2/react-imask/imask/imask.js +7 -0
- package/components/MaskedInputV2/react-imask/imask/imask.js.map +1 -0
- package/components/MaskedInputV2/react-imask/imask/index.d.ts +17 -0
- package/components/MaskedInputV2/react-imask/imask/index.js +16 -0
- package/components/MaskedInputV2/react-imask/imask/index.js.map +1 -0
- package/components/MaskedInputV2/react-imask/imask/masked/base.d.ts +114 -0
- package/components/MaskedInputV2/react-imask/imask/masked/base.js +411 -0
- package/components/MaskedInputV2/react-imask/imask/masked/base.js.map +1 -0
- package/components/MaskedInputV2/react-imask/imask/masked/factory.d.ts +62 -0
- package/components/MaskedInputV2/react-imask/imask/masked/factory.js +96 -0
- package/components/MaskedInputV2/react-imask/imask/masked/factory.js.map +1 -0
- package/components/MaskedInputV2/react-imask/imask/masked/pattern.d.ts +101 -0
- package/components/MaskedInputV2/react-imask/imask/masked/pattern.js +543 -0
- package/components/MaskedInputV2/react-imask/imask/masked/pattern.js.map +1 -0
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/block.d.ts +30 -0
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/block.js +2 -0
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/block.js.map +1 -0
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/chunk-tail-details.d.ts +21 -0
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/chunk-tail-details.js +180 -0
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/chunk-tail-details.js.map +1 -0
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/cursor.d.ts +31 -0
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/cursor.js +163 -0
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/cursor.js.map +1 -0
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/fixed-definition.d.ts +42 -0
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/fixed-definition.js +158 -0
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/fixed-definition.js.map +1 -0
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/input-definition.d.ts +56 -0
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/input-definition.js +185 -0
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/input-definition.js.map +1 -0
- package/components/MaskedInputV2/react-imask/imask/masked/regexp.d.ts +17 -0
- package/components/MaskedInputV2/react-imask/imask/masked/regexp.js +36 -0
- package/components/MaskedInputV2/react-imask/imask/masked/regexp.js.map +1 -0
- package/components/MaskedInputV2/react-imask/index.d.ts +3 -0
- package/components/MaskedInputV2/react-imask/index.js +4 -0
- package/components/MaskedInputV2/react-imask/index.js.map +1 -0
- package/components/MaskedInputV2/react-imask/input.d.ts +8 -0
- package/components/MaskedInputV2/react-imask/input.js +35 -0
- package/components/MaskedInputV2/react-imask/input.js.map +1 -0
- package/components/MaskedInputV2/react-imask/mixin.d.ts +31 -0
- package/components/MaskedInputV2/react-imask/mixin.js +246 -0
- package/components/MaskedInputV2/react-imask/mixin.js.map +1 -0
- package/index.d.ts +1 -1
- package/index.js +1 -1
- package/index.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxView.js +2 -2
- package/internal/CustomComboBox/ComboBoxView.js.map +1 -1
- package/internal/FeaturedMaskedInput/FeaturedMaskedInput.d.ts +4 -0
- package/internal/FeaturedMaskedInput/FeaturedMaskedInput.js +24 -0
- package/internal/FeaturedMaskedInput/FeaturedMaskedInput.js.map +1 -0
- package/internal/themes/BasicTheme.d.ts +0 -34
- package/internal/themes/BasicTheme.js +0 -96
- package/internal/themes/BasicTheme.js.map +1 -1
- package/lib/events/keyboard/KeyboardEventCodes.d.ts +2 -0
- package/lib/events/keyboard/KeyboardEventCodes.js +2 -0
- package/lib/events/keyboard/KeyboardEventCodes.js.map +1 -1
- package/lib/events/keyboard/KeyboardMapKeys.js +2 -0
- package/lib/events/keyboard/KeyboardMapKeys.js.map +1 -1
- package/lib/events/keyboard/identifiers.d.ts +2 -0
- package/lib/events/keyboard/identifiers.js +6 -0
- package/lib/events/keyboard/identifiers.js.map +1 -1
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +2 -0
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +1 -0
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
- package/lib/utils.d.ts +0 -2
- package/lib/utils.js +0 -1
- package/lib/utils.js.map +1 -1
- package/package.json +4 -5
- package/components/TimePicker/TimeClockIcon.d.ts +0 -3
- package/components/TimePicker/TimeClockIcon.js +0 -11
- package/components/TimePicker/TimeClockIcon.js.map +0 -1
- package/components/TimePicker/TimeFragmentsView.d.ts +0 -15
- package/components/TimePicker/TimeFragmentsView.js +0 -72
- package/components/TimePicker/TimeFragmentsView.js.map +0 -1
- package/components/TimePicker/TimeFragmentsView.styles.d.ts +0 -12
- package/components/TimePicker/TimeFragmentsView.styles.js +0 -43
- package/components/TimePicker/TimeFragmentsView.styles.js.map +0 -1
- package/components/TimePicker/TimeInput.d.ts +0 -22
- package/components/TimePicker/TimeInput.js +0 -103
- package/components/TimePicker/TimeInput.js.map +0 -1
- package/components/TimePicker/TimePicker.d.ts +0 -77
- package/components/TimePicker/TimePicker.js +0 -508
- package/components/TimePicker/TimePicker.js.map +0 -1
- package/components/TimePicker/TimePicker.styles.d.ts +0 -14
- package/components/TimePicker/TimePicker.styles.js +0 -45
- package/components/TimePicker/TimePicker.styles.js.map +0 -1
- package/components/TimePicker/TimePickerItems.d.ts +0 -17
- package/components/TimePicker/TimePickerItems.js +0 -80
- package/components/TimePicker/TimePickerItems.js.map +0 -1
- package/components/TimePicker/TimePickerMobilePopup.d.ts +0 -38
- package/components/TimePicker/TimePickerMobilePopup.js +0 -21
- package/components/TimePicker/TimePickerMobilePopup.js.map +0 -1
- package/components/TimePicker/TimePickerPopup.d.ts +0 -20
- package/components/TimePicker/TimePickerPopup.js +0 -18
- package/components/TimePicker/TimePickerPopup.js.map +0 -1
- package/components/TimePicker/helpers/TimePicker.constants.d.ts +0 -22
- package/components/TimePicker/helpers/TimePicker.constants.js +0 -31
- package/components/TimePicker/helpers/TimePicker.constants.js.map +0 -1
- package/components/TimePicker/helpers/TimePicker.editing.d.ts +0 -23
- package/components/TimePicker/helpers/TimePicker.editing.js +0 -101
- package/components/TimePicker/helpers/TimePicker.editing.js.map +0 -1
- package/components/TimePicker/helpers/TimePicker.layout.d.ts +0 -6
- package/components/TimePicker/helpers/TimePicker.layout.js +0 -49
- package/components/TimePicker/helpers/TimePicker.layout.js.map +0 -1
- package/components/TimePicker/helpers/TimePicker.selection.d.ts +0 -5
- package/components/TimePicker/helpers/TimePicker.selection.js +0 -23
- package/components/TimePicker/helpers/TimePicker.selection.js.map +0 -1
- package/components/TimePicker/helpers/TimePicker.shared.d.ts +0 -47
- package/components/TimePicker/helpers/TimePicker.shared.js +0 -70
- package/components/TimePicker/helpers/TimePicker.shared.js.map +0 -1
- package/components/TimePicker/helpers/TimePicker.value.d.ts +0 -30
- package/components/TimePicker/helpers/TimePicker.value.js +0 -96
- package/components/TimePicker/helpers/TimePicker.value.js.map +0 -1
- package/components/TimePicker/helpers/scrollSelectedItemIntoView.d.ts +0 -4
- package/components/TimePicker/helpers/scrollSelectedItemIntoView.js +0 -24
- package/components/TimePicker/helpers/scrollSelectedItemIntoView.js.map +0 -1
- package/components/TimePicker/helpers/validateTimePicker.d.ts +0 -8
- package/components/TimePicker/helpers/validateTimePicker.js +0 -16
- package/components/TimePicker/helpers/validateTimePicker.js.map +0 -1
- package/components/TimePicker/hooks/useTimePickerDropdown.d.ts +0 -17
- package/components/TimePicker/hooks/useTimePickerDropdown.js +0 -62
- package/components/TimePicker/hooks/useTimePickerDropdown.js.map +0 -1
- package/components/TimePicker/hooks/useTimePickerSelection.d.ts +0 -18
- package/components/TimePicker/hooks/useTimePickerSelection.js +0 -66
- package/components/TimePicker/hooks/useTimePickerSelection.js.map +0 -1
- package/components/TimePicker/hooks/useTimePickerValue.d.ts +0 -18
- package/components/TimePicker/hooks/useTimePickerValue.js +0 -59
- package/components/TimePicker/hooks/useTimePickerValue.js.map +0 -1
- package/components/TimePicker/index.d.ts +0 -2
- package/components/TimePicker/index.js +0 -2
- package/components/TimePicker/index.js.map +0 -1
- package/internal/NativeTimeInput/NativeTimeInput.d.ts +0 -16
- package/internal/NativeTimeInput/NativeTimeInput.js +0 -25
- package/internal/NativeTimeInput/NativeTimeInput.js.map +0 -1
- package/internal/NativeTimeInput/NativeTimeInput.styles.d.ts +0 -3
- package/internal/NativeTimeInput/NativeTimeInput.styles.js +0 -15
- package/internal/NativeTimeInput/NativeTimeInput.styles.js.map +0 -1
- package/internal/NativeTimeInput/NativeTimeInput.utils.d.ts +0 -7
- package/internal/NativeTimeInput/NativeTimeInput.utils.js +0 -28
- package/internal/NativeTimeInput/NativeTimeInput.utils.js.map +0 -1
- package/internal/NativeTimeInput/index.d.ts +0 -1
- package/internal/NativeTimeInput/index.js +0 -2
- package/internal/NativeTimeInput/index.js.map +0 -1
- package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.d.ts +0 -2
- package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.js +0 -20
- package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.js.map +0 -1
- package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.d.ts +0 -2
- package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.js +0 -20
- package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.js.map +0 -1
- package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.d.ts +0 -2
- package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.js +0 -20
- package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.js.map +0 -1
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { ChangeDetails } from '../core/change-details.js';
|
|
2
|
+
import { type TailDetails } from '../core/tail-details.js';
|
|
3
|
+
import { type Direction } from '../core/utils.js';
|
|
4
|
+
export interface MaskedState {
|
|
5
|
+
_value: string;
|
|
6
|
+
_rawInputValue: string;
|
|
7
|
+
}
|
|
8
|
+
/** Append flags */
|
|
9
|
+
export interface AppendFlags<State = MaskedState> {
|
|
10
|
+
input?: boolean;
|
|
11
|
+
tail?: boolean;
|
|
12
|
+
raw?: boolean;
|
|
13
|
+
_beforeTailState?: State;
|
|
14
|
+
}
|
|
15
|
+
/** Extract flags */
|
|
16
|
+
export interface ExtractFlags {
|
|
17
|
+
raw?: boolean;
|
|
18
|
+
}
|
|
19
|
+
export type MaskedOptions<M extends Masked = Masked, Props extends keyof M = never> = Partial<Pick<M, 'mask' | 'parent' | 'prepare' | 'prepareChar' | 'validate' | 'commit' | 'format' | 'parse' | 'overwrite' | 'eager' | 'skipInvalid' | 'autofix' | Props>>;
|
|
20
|
+
/** Provides common masking stuff */
|
|
21
|
+
export declare abstract class Masked<Value = any> {
|
|
22
|
+
static DEFAULTS: Pick<MaskedOptions, 'skipInvalid'>;
|
|
23
|
+
static EMPTY_VALUES: any[];
|
|
24
|
+
/** */
|
|
25
|
+
mask: unknown;
|
|
26
|
+
/** */
|
|
27
|
+
parent?: Masked;
|
|
28
|
+
/** Transforms value before mask processing */
|
|
29
|
+
prepare?: (chars: string, masked: Masked, flags: AppendFlags) => string | [string, ChangeDetails];
|
|
30
|
+
/** Transforms each char before mask processing */
|
|
31
|
+
prepareChar?: (chars: string, masked: Masked, flags: AppendFlags) => string | [string, ChangeDetails];
|
|
32
|
+
/** Validates if value is acceptable */
|
|
33
|
+
validate?: (value: string, masked: Masked, flags: AppendFlags) => boolean;
|
|
34
|
+
/** Does additional processing at the end of editing */
|
|
35
|
+
commit?: (value: string, masked: Masked) => void;
|
|
36
|
+
/** Format typed value to string */
|
|
37
|
+
format?: (value: Value, masked: Masked) => string;
|
|
38
|
+
/** Parse string to get typed value */
|
|
39
|
+
parse?: (str: string, masked: Masked) => Value;
|
|
40
|
+
/** Enable characters overwriting */
|
|
41
|
+
abstract overwrite?: boolean | 'shift' | undefined;
|
|
42
|
+
/** */
|
|
43
|
+
abstract eager?: boolean | 'remove' | 'append' | undefined;
|
|
44
|
+
/** */
|
|
45
|
+
abstract skipInvalid?: boolean | undefined;
|
|
46
|
+
/** */
|
|
47
|
+
abstract autofix?: boolean | 'pad' | undefined;
|
|
48
|
+
/** */
|
|
49
|
+
_initialized: boolean;
|
|
50
|
+
_value: string;
|
|
51
|
+
_refreshing?: boolean;
|
|
52
|
+
_isolated?: boolean;
|
|
53
|
+
constructor(opts: MaskedOptions);
|
|
54
|
+
/** Sets and applies new options */
|
|
55
|
+
updateOptions(opts: Partial<MaskedOptions>): void;
|
|
56
|
+
/** Sets new options */
|
|
57
|
+
_update(opts: Partial<MaskedOptions>): void;
|
|
58
|
+
/** Mask state */
|
|
59
|
+
get state(): MaskedState;
|
|
60
|
+
set state(state: MaskedState);
|
|
61
|
+
/** Resets value */
|
|
62
|
+
reset(): void;
|
|
63
|
+
get value(): string;
|
|
64
|
+
set value(value: string);
|
|
65
|
+
/** Resolve new value */
|
|
66
|
+
resolve(value: string, flags?: AppendFlags): void;
|
|
67
|
+
get unmaskedValue(): string;
|
|
68
|
+
set unmaskedValue(value: string);
|
|
69
|
+
get typedValue(): Value;
|
|
70
|
+
set typedValue(value: Value);
|
|
71
|
+
/** Value that includes raw user input */
|
|
72
|
+
get rawInputValue(): string;
|
|
73
|
+
set rawInputValue(value: string);
|
|
74
|
+
get displayValue(): string;
|
|
75
|
+
get isComplete(): boolean;
|
|
76
|
+
get isFilled(): boolean;
|
|
77
|
+
/** Finds nearest input position in direction */
|
|
78
|
+
nearestInputPos(cursorPos: number, _direction?: Direction): number;
|
|
79
|
+
totalInputPositions(fromPos?: number, toPos?: number): number;
|
|
80
|
+
/** Extracts value in range considering flags */
|
|
81
|
+
extractInput(fromPos?: number, toPos?: number, _flags?: ExtractFlags): string;
|
|
82
|
+
/** Extracts tail in range */
|
|
83
|
+
extractTail(fromPos?: number, toPos?: number): TailDetails;
|
|
84
|
+
/** Appends tail */
|
|
85
|
+
appendTail(tail: string | TailDetails): ChangeDetails;
|
|
86
|
+
/** Appends char */
|
|
87
|
+
_appendCharRaw(ch: string, _flags?: AppendFlags): ChangeDetails;
|
|
88
|
+
/** Appends char */
|
|
89
|
+
_appendChar(ch: string, flags?: AppendFlags, checkTail?: TailDetails): ChangeDetails;
|
|
90
|
+
/** Appends optional placeholder at the end */
|
|
91
|
+
_appendPlaceholder(): ChangeDetails;
|
|
92
|
+
/** Appends optional eager placeholder at the end */
|
|
93
|
+
_appendEager(): ChangeDetails;
|
|
94
|
+
/** Appends symbols considering flags */
|
|
95
|
+
append(str: string, flags?: AppendFlags, tail?: string | TailDetails): ChangeDetails;
|
|
96
|
+
remove(fromPos?: number, toPos?: number): ChangeDetails;
|
|
97
|
+
/** Calls function and reapplies current value */
|
|
98
|
+
withValueRefresh<T>(fn: () => T): T;
|
|
99
|
+
runIsolated<T>(fn: (masked: this) => T): T;
|
|
100
|
+
doSkipInvalid(_ch: string, _flags?: AppendFlags, _checkTail?: TailDetails): boolean;
|
|
101
|
+
/** Prepares string before mask processing */
|
|
102
|
+
doPrepare(str: string, flags?: AppendFlags): [string, ChangeDetails];
|
|
103
|
+
/** Prepares each char before mask processing */
|
|
104
|
+
doPrepareChar(str: string, flags?: AppendFlags): [string, ChangeDetails];
|
|
105
|
+
/** Validates if value is acceptable */
|
|
106
|
+
doValidate(flags: AppendFlags): boolean;
|
|
107
|
+
/** Does additional processing at the end of editing */
|
|
108
|
+
doCommit(): void;
|
|
109
|
+
splice(start: number, deleteCount: number, inserted?: string, removeDirection?: Direction, flags?: AppendFlags): ChangeDetails;
|
|
110
|
+
maskEquals(mask: unknown): boolean;
|
|
111
|
+
optionsIsChanged(opts: Partial<MaskedOptions>): boolean;
|
|
112
|
+
typedValueEquals(value: Value): boolean;
|
|
113
|
+
pad(_flags?: AppendFlags): ChangeDetails;
|
|
114
|
+
}
|
|
@@ -0,0 +1,411 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
/* eslint-disable default-param-last, eqeqeq */
|
|
13
|
+
import { ChangeDetails } from '../core/change-details.js';
|
|
14
|
+
import { ContinuousTailDetails } from '../core/continuous-tail-details.js';
|
|
15
|
+
import { DIRECTION, isString, forceDirection, objectIncludes } from '../core/utils.js';
|
|
16
|
+
/** Provides common masking stuff */
|
|
17
|
+
var Masked = /** @class */ (function () {
|
|
18
|
+
function Masked(opts) {
|
|
19
|
+
this._value = '';
|
|
20
|
+
this._update(__assign(__assign({}, Masked.DEFAULTS), opts));
|
|
21
|
+
this._initialized = true;
|
|
22
|
+
}
|
|
23
|
+
/** Sets and applies new options */
|
|
24
|
+
Masked.prototype.updateOptions = function (opts) {
|
|
25
|
+
if (!this.optionsIsChanged(opts)) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
this.withValueRefresh(this._update.bind(this, opts));
|
|
29
|
+
};
|
|
30
|
+
/** Sets new options */
|
|
31
|
+
Masked.prototype._update = function (opts) {
|
|
32
|
+
Object.assign(this, opts);
|
|
33
|
+
};
|
|
34
|
+
Object.defineProperty(Masked.prototype, "state", {
|
|
35
|
+
/** Mask state */
|
|
36
|
+
get: function () {
|
|
37
|
+
return {
|
|
38
|
+
_value: this.value,
|
|
39
|
+
_rawInputValue: this.rawInputValue,
|
|
40
|
+
};
|
|
41
|
+
},
|
|
42
|
+
set: function (state) {
|
|
43
|
+
this._value = state._value;
|
|
44
|
+
},
|
|
45
|
+
enumerable: false,
|
|
46
|
+
configurable: true
|
|
47
|
+
});
|
|
48
|
+
/** Resets value */
|
|
49
|
+
Masked.prototype.reset = function () {
|
|
50
|
+
this._value = '';
|
|
51
|
+
};
|
|
52
|
+
Object.defineProperty(Masked.prototype, "value", {
|
|
53
|
+
get: function () {
|
|
54
|
+
return this._value;
|
|
55
|
+
},
|
|
56
|
+
set: function (value) {
|
|
57
|
+
this.resolve(value, { input: true });
|
|
58
|
+
},
|
|
59
|
+
enumerable: false,
|
|
60
|
+
configurable: true
|
|
61
|
+
});
|
|
62
|
+
/** Resolve new value */
|
|
63
|
+
Masked.prototype.resolve = function (value, flags) {
|
|
64
|
+
if (flags === void 0) { flags = { input: true }; }
|
|
65
|
+
this.reset();
|
|
66
|
+
this.append(value, flags, '');
|
|
67
|
+
this.doCommit();
|
|
68
|
+
};
|
|
69
|
+
Object.defineProperty(Masked.prototype, "unmaskedValue", {
|
|
70
|
+
get: function () {
|
|
71
|
+
return this.value;
|
|
72
|
+
},
|
|
73
|
+
set: function (value) {
|
|
74
|
+
this.resolve(value, {});
|
|
75
|
+
},
|
|
76
|
+
enumerable: false,
|
|
77
|
+
configurable: true
|
|
78
|
+
});
|
|
79
|
+
Object.defineProperty(Masked.prototype, "typedValue", {
|
|
80
|
+
get: function () {
|
|
81
|
+
return this.parse ? this.parse(this.value, this) : this.unmaskedValue;
|
|
82
|
+
},
|
|
83
|
+
set: function (value) {
|
|
84
|
+
if (this.format) {
|
|
85
|
+
this.value = this.format(value, this);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
this.unmaskedValue = String(value);
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
enumerable: false,
|
|
92
|
+
configurable: true
|
|
93
|
+
});
|
|
94
|
+
Object.defineProperty(Masked.prototype, "rawInputValue", {
|
|
95
|
+
/** Value that includes raw user input */
|
|
96
|
+
get: function () {
|
|
97
|
+
return this.extractInput(0, this.displayValue.length, { raw: true });
|
|
98
|
+
},
|
|
99
|
+
set: function (value) {
|
|
100
|
+
this.resolve(value, { raw: true });
|
|
101
|
+
},
|
|
102
|
+
enumerable: false,
|
|
103
|
+
configurable: true
|
|
104
|
+
});
|
|
105
|
+
Object.defineProperty(Masked.prototype, "displayValue", {
|
|
106
|
+
get: function () {
|
|
107
|
+
return this.value;
|
|
108
|
+
},
|
|
109
|
+
enumerable: false,
|
|
110
|
+
configurable: true
|
|
111
|
+
});
|
|
112
|
+
Object.defineProperty(Masked.prototype, "isComplete", {
|
|
113
|
+
get: function () {
|
|
114
|
+
return true;
|
|
115
|
+
},
|
|
116
|
+
enumerable: false,
|
|
117
|
+
configurable: true
|
|
118
|
+
});
|
|
119
|
+
Object.defineProperty(Masked.prototype, "isFilled", {
|
|
120
|
+
get: function () {
|
|
121
|
+
return this.isComplete;
|
|
122
|
+
},
|
|
123
|
+
enumerable: false,
|
|
124
|
+
configurable: true
|
|
125
|
+
});
|
|
126
|
+
/** Finds nearest input position in direction */
|
|
127
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
128
|
+
Masked.prototype.nearestInputPos = function (cursorPos, _direction) {
|
|
129
|
+
return cursorPos;
|
|
130
|
+
};
|
|
131
|
+
Masked.prototype.totalInputPositions = function (fromPos, toPos) {
|
|
132
|
+
if (fromPos === void 0) { fromPos = 0; }
|
|
133
|
+
if (toPos === void 0) { toPos = this.displayValue.length; }
|
|
134
|
+
return Math.min(this.displayValue.length, toPos - fromPos);
|
|
135
|
+
};
|
|
136
|
+
/** Extracts value in range considering flags */
|
|
137
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
138
|
+
Masked.prototype.extractInput = function (fromPos, toPos, _flags) {
|
|
139
|
+
if (fromPos === void 0) { fromPos = 0; }
|
|
140
|
+
if (toPos === void 0) { toPos = this.displayValue.length; }
|
|
141
|
+
return this.displayValue.slice(fromPos, toPos);
|
|
142
|
+
};
|
|
143
|
+
/** Extracts tail in range */
|
|
144
|
+
Masked.prototype.extractTail = function (fromPos, toPos) {
|
|
145
|
+
if (fromPos === void 0) { fromPos = 0; }
|
|
146
|
+
if (toPos === void 0) { toPos = this.displayValue.length; }
|
|
147
|
+
return new ContinuousTailDetails(this.extractInput(fromPos, toPos), fromPos);
|
|
148
|
+
};
|
|
149
|
+
/** Appends tail */
|
|
150
|
+
Masked.prototype.appendTail = function (tail) {
|
|
151
|
+
if (isString(tail)) {
|
|
152
|
+
// eslint-disable-next-line no-param-reassign
|
|
153
|
+
tail = new ContinuousTailDetails(String(tail));
|
|
154
|
+
}
|
|
155
|
+
return tail.appendTo(this);
|
|
156
|
+
};
|
|
157
|
+
/** Appends char */
|
|
158
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
159
|
+
Masked.prototype._appendCharRaw = function (ch, _flags) {
|
|
160
|
+
if (_flags === void 0) { _flags = {}; }
|
|
161
|
+
if (!ch) {
|
|
162
|
+
return new ChangeDetails();
|
|
163
|
+
}
|
|
164
|
+
this._value += ch;
|
|
165
|
+
return new ChangeDetails({
|
|
166
|
+
inserted: ch,
|
|
167
|
+
rawInserted: ch,
|
|
168
|
+
});
|
|
169
|
+
};
|
|
170
|
+
/** Appends char */
|
|
171
|
+
Masked.prototype._appendChar = function (ch, flags, checkTail) {
|
|
172
|
+
var _a;
|
|
173
|
+
if (flags === void 0) { flags = {}; }
|
|
174
|
+
var consistentState = this.state;
|
|
175
|
+
var details;
|
|
176
|
+
// eslint-disable-next-line no-param-reassign
|
|
177
|
+
_a = this.doPrepareChar(ch, flags), ch = _a[0], details = _a[1];
|
|
178
|
+
if (ch) {
|
|
179
|
+
details = details.aggregate(this._appendCharRaw(ch, flags));
|
|
180
|
+
// TODO handle `skip`?
|
|
181
|
+
// try `autofix` lookahead
|
|
182
|
+
if (!details.rawInserted && this.autofix === 'pad') {
|
|
183
|
+
var noFixState = this.state;
|
|
184
|
+
this.state = consistentState;
|
|
185
|
+
var fixDetails = this.pad(flags);
|
|
186
|
+
var chDetails = this._appendCharRaw(ch, flags);
|
|
187
|
+
fixDetails = fixDetails.aggregate(chDetails);
|
|
188
|
+
// if fix was applied or
|
|
189
|
+
// if details are equal use skip restoring state optimization
|
|
190
|
+
if (chDetails.rawInserted || fixDetails.equals(details)) {
|
|
191
|
+
details = fixDetails;
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
this.state = noFixState;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
if (details.inserted) {
|
|
199
|
+
var consistentTail = void 0;
|
|
200
|
+
var appended = this.doValidate(flags) !== false;
|
|
201
|
+
if (appended && checkTail != null) {
|
|
202
|
+
// validation ok, check tail
|
|
203
|
+
var beforeTailState = this.state;
|
|
204
|
+
if (this.overwrite === true) {
|
|
205
|
+
consistentTail = checkTail.state;
|
|
206
|
+
for (var i = 0; i < details.rawInserted.length; ++i) {
|
|
207
|
+
checkTail.unshift(this.displayValue.length - details.tailShift);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
var tailDetails = this.appendTail(checkTail);
|
|
211
|
+
appended = tailDetails.rawInserted.length === checkTail.toString().length;
|
|
212
|
+
// not ok, try shift
|
|
213
|
+
if (!(appended && tailDetails.inserted) && this.overwrite === 'shift') {
|
|
214
|
+
this.state = beforeTailState;
|
|
215
|
+
consistentTail = checkTail.state;
|
|
216
|
+
for (var i = 0; i < details.rawInserted.length; ++i) {
|
|
217
|
+
checkTail.shift();
|
|
218
|
+
}
|
|
219
|
+
tailDetails = this.appendTail(checkTail);
|
|
220
|
+
appended = tailDetails.rawInserted.length === checkTail.toString().length;
|
|
221
|
+
}
|
|
222
|
+
// if ok, rollback state after tail
|
|
223
|
+
if (appended && tailDetails.inserted) {
|
|
224
|
+
this.state = beforeTailState;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
// revert all if something went wrong
|
|
228
|
+
if (!appended) {
|
|
229
|
+
details = new ChangeDetails();
|
|
230
|
+
this.state = consistentState;
|
|
231
|
+
if (checkTail && consistentTail) {
|
|
232
|
+
checkTail.state = consistentTail;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
return details;
|
|
237
|
+
};
|
|
238
|
+
/** Appends optional placeholder at the end */
|
|
239
|
+
Masked.prototype._appendPlaceholder = function () {
|
|
240
|
+
return new ChangeDetails();
|
|
241
|
+
};
|
|
242
|
+
/** Appends optional eager placeholder at the end */
|
|
243
|
+
Masked.prototype._appendEager = function () {
|
|
244
|
+
return new ChangeDetails();
|
|
245
|
+
};
|
|
246
|
+
/** Appends symbols considering flags */
|
|
247
|
+
Masked.prototype.append = function (str, flags, tail) {
|
|
248
|
+
var _a;
|
|
249
|
+
if (!isString(str)) {
|
|
250
|
+
throw new Error('value should be string');
|
|
251
|
+
}
|
|
252
|
+
var checkTail = isString(tail) ? new ContinuousTailDetails(String(tail)) : tail;
|
|
253
|
+
if (flags === null || flags === void 0 ? void 0 : flags.tail) {
|
|
254
|
+
flags._beforeTailState = this.state;
|
|
255
|
+
}
|
|
256
|
+
var details;
|
|
257
|
+
// eslint-disable-next-line no-param-reassign
|
|
258
|
+
_a = this.doPrepare(str, flags), str = _a[0], details = _a[1];
|
|
259
|
+
for (var ci = 0; ci < str.length; ++ci) {
|
|
260
|
+
var d = this._appendChar(str[ci], flags, checkTail);
|
|
261
|
+
if (!d.rawInserted && !this.doSkipInvalid(str[ci], flags, checkTail)) {
|
|
262
|
+
break;
|
|
263
|
+
}
|
|
264
|
+
details.aggregate(d);
|
|
265
|
+
}
|
|
266
|
+
if ((this.eager === true || this.eager === 'append') && (flags === null || flags === void 0 ? void 0 : flags.input) && str) {
|
|
267
|
+
details.aggregate(this._appendEager());
|
|
268
|
+
}
|
|
269
|
+
// append tail but aggregate only tailShift
|
|
270
|
+
if (checkTail != null) {
|
|
271
|
+
details.tailShift += this.appendTail(checkTail).tailShift;
|
|
272
|
+
// TODO it's a good idea to clear state after appending ends
|
|
273
|
+
// but it causes bugs when one append calls another (when dynamic dispatch set rawInputValue)
|
|
274
|
+
// this._resetBeforeTailState();
|
|
275
|
+
}
|
|
276
|
+
return details;
|
|
277
|
+
};
|
|
278
|
+
Masked.prototype.remove = function (fromPos, toPos) {
|
|
279
|
+
if (fromPos === void 0) { fromPos = 0; }
|
|
280
|
+
if (toPos === void 0) { toPos = this.displayValue.length; }
|
|
281
|
+
this._value = this.displayValue.slice(0, fromPos) + this.displayValue.slice(toPos);
|
|
282
|
+
return new ChangeDetails();
|
|
283
|
+
};
|
|
284
|
+
/** Calls function and reapplies current value */
|
|
285
|
+
Masked.prototype.withValueRefresh = function (fn) {
|
|
286
|
+
if (this._refreshing || !this._initialized) {
|
|
287
|
+
return fn();
|
|
288
|
+
}
|
|
289
|
+
this._refreshing = true;
|
|
290
|
+
var rawInput = this.rawInputValue;
|
|
291
|
+
var value = this.value;
|
|
292
|
+
var ret = fn();
|
|
293
|
+
this.rawInputValue = rawInput;
|
|
294
|
+
// append lost trailing chars at the end
|
|
295
|
+
if (this.value && this.value !== value && value.indexOf(this.value) === 0) {
|
|
296
|
+
this.append(value.slice(this.displayValue.length), {}, '');
|
|
297
|
+
this.doCommit();
|
|
298
|
+
}
|
|
299
|
+
delete this._refreshing;
|
|
300
|
+
return ret;
|
|
301
|
+
};
|
|
302
|
+
Masked.prototype.runIsolated = function (fn) {
|
|
303
|
+
if (this._isolated || !this._initialized) {
|
|
304
|
+
return fn(this);
|
|
305
|
+
}
|
|
306
|
+
this._isolated = true;
|
|
307
|
+
var state = this.state;
|
|
308
|
+
var ret = fn(this);
|
|
309
|
+
this.state = state;
|
|
310
|
+
delete this._isolated;
|
|
311
|
+
return ret;
|
|
312
|
+
};
|
|
313
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
314
|
+
Masked.prototype.doSkipInvalid = function (_ch, _flags, _checkTail) {
|
|
315
|
+
if (_flags === void 0) { _flags = {}; }
|
|
316
|
+
return Boolean(this.skipInvalid);
|
|
317
|
+
};
|
|
318
|
+
/** Prepares string before mask processing */
|
|
319
|
+
Masked.prototype.doPrepare = function (str, flags) {
|
|
320
|
+
if (flags === void 0) { flags = {}; }
|
|
321
|
+
return ChangeDetails.normalize(this.prepare ? this.prepare(str, this, flags) : str);
|
|
322
|
+
};
|
|
323
|
+
/** Prepares each char before mask processing */
|
|
324
|
+
Masked.prototype.doPrepareChar = function (str, flags) {
|
|
325
|
+
if (flags === void 0) { flags = {}; }
|
|
326
|
+
return ChangeDetails.normalize(this.prepareChar ? this.prepareChar(str, this, flags) : str);
|
|
327
|
+
};
|
|
328
|
+
/** Validates if value is acceptable */
|
|
329
|
+
Masked.prototype.doValidate = function (flags) {
|
|
330
|
+
return ((!this.validate || this.validate(this.value, this, flags)) && (!this.parent || this.parent.doValidate(flags)));
|
|
331
|
+
};
|
|
332
|
+
/** Does additional processing at the end of editing */
|
|
333
|
+
Masked.prototype.doCommit = function () {
|
|
334
|
+
if (this.commit) {
|
|
335
|
+
this.commit(this.value, this);
|
|
336
|
+
}
|
|
337
|
+
};
|
|
338
|
+
Masked.prototype.splice = function (start, deleteCount, inserted, removeDirection, flags) {
|
|
339
|
+
if (inserted === void 0) { inserted = ''; }
|
|
340
|
+
if (removeDirection === void 0) { removeDirection = DIRECTION.NONE; }
|
|
341
|
+
if (flags === void 0) { flags = { input: true }; }
|
|
342
|
+
var tailPos = start + deleteCount;
|
|
343
|
+
var tail = this.extractTail(tailPos);
|
|
344
|
+
// `append`: досрочный показ разделителей при вводе; при удалении — и выравнивание nearestInputPos (FORCE_*),
|
|
345
|
+
// и цикл while, пока raw не изменился (пропуск литералов маски без отдельных нажатий).
|
|
346
|
+
var eagerRemoveLoop = this.eager === true || this.eager === 'remove' || this.eager === 'append';
|
|
347
|
+
var eagerRemoveAlign = eagerRemoveLoop;
|
|
348
|
+
var oldRawValue;
|
|
349
|
+
if (eagerRemoveLoop) {
|
|
350
|
+
// eslint-disable-next-line no-param-reassign
|
|
351
|
+
removeDirection = forceDirection(removeDirection);
|
|
352
|
+
oldRawValue = this.extractInput(0, tailPos, { raw: true });
|
|
353
|
+
}
|
|
354
|
+
var startChangePos = start;
|
|
355
|
+
var details = new ChangeDetails();
|
|
356
|
+
// if it is just deletion without insertion
|
|
357
|
+
if (removeDirection !== DIRECTION.NONE) {
|
|
358
|
+
// При Delete (FORCE_RIGHT) не сдвигаем start вправо — удаляем символ в текущей позиции (в т.ч. фиксированный).
|
|
359
|
+
if (removeDirection === DIRECTION.FORCE_RIGHT) {
|
|
360
|
+
startChangePos = start;
|
|
361
|
+
}
|
|
362
|
+
else {
|
|
363
|
+
startChangePos = this.nearestInputPos(start, deleteCount > 1 && start !== 0 && !eagerRemoveAlign ? DIRECTION.NONE : removeDirection);
|
|
364
|
+
}
|
|
365
|
+
// adjust tailShift if start was aligned
|
|
366
|
+
details.tailShift = startChangePos - start;
|
|
367
|
+
}
|
|
368
|
+
// При Delete (FORCE_RIGHT) удаляем только deleteCount символов в текущей позиции — без сдвига хвоста.
|
|
369
|
+
if (removeDirection === DIRECTION.FORCE_RIGHT && startChangePos === start) {
|
|
370
|
+
details.aggregate(this.remove(startChangePos, startChangePos + deleteCount));
|
|
371
|
+
var tailAfterRemove = this.extractTail(this.displayValue.length);
|
|
372
|
+
return details.aggregate(this.append(inserted, flags, tailAfterRemove));
|
|
373
|
+
}
|
|
374
|
+
details.aggregate(this.remove(startChangePos));
|
|
375
|
+
if (eagerRemoveLoop && removeDirection !== DIRECTION.NONE && oldRawValue === this.rawInputValue) {
|
|
376
|
+
if (removeDirection === DIRECTION.FORCE_LEFT) {
|
|
377
|
+
var valLength = void 0;
|
|
378
|
+
while (oldRawValue === this.rawInputValue && (valLength = this.displayValue.length)) {
|
|
379
|
+
details.aggregate(new ChangeDetails({ tailShift: -1 })).aggregate(this.remove(valLength - 1));
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
else if (removeDirection === DIRECTION.FORCE_RIGHT) {
|
|
383
|
+
tail.unshift();
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
return details.aggregate(this.append(inserted, flags, tail));
|
|
387
|
+
};
|
|
388
|
+
Masked.prototype.maskEquals = function (mask) {
|
|
389
|
+
return this.mask === mask;
|
|
390
|
+
};
|
|
391
|
+
Masked.prototype.optionsIsChanged = function (opts) {
|
|
392
|
+
return !objectIncludes(this, opts);
|
|
393
|
+
};
|
|
394
|
+
Masked.prototype.typedValueEquals = function (value) {
|
|
395
|
+
var tval = this.typedValue;
|
|
396
|
+
return (value === tval ||
|
|
397
|
+
(Masked.EMPTY_VALUES.includes(value) && Masked.EMPTY_VALUES.includes(tval)) ||
|
|
398
|
+
(this.format ? this.format(value, this) === this.format(this.typedValue, this) : false));
|
|
399
|
+
};
|
|
400
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
401
|
+
Masked.prototype.pad = function (_flags) {
|
|
402
|
+
return new ChangeDetails();
|
|
403
|
+
};
|
|
404
|
+
Masked.DEFAULTS = {
|
|
405
|
+
skipInvalid: true,
|
|
406
|
+
};
|
|
407
|
+
Masked.EMPTY_VALUES = [undefined, null, ''];
|
|
408
|
+
return Masked;
|
|
409
|
+
}());
|
|
410
|
+
export { Masked };
|
|
411
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["base.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable default-param-last, eqeqeq */\nimport { ChangeDetails } from '../core/change-details.js';\nimport { ContinuousTailDetails } from '../core/continuous-tail-details.js';\nimport { type TailDetails } from '../core/tail-details.js';\nimport { type Direction, DIRECTION, isString, forceDirection, objectIncludes } from '../core/utils.js';\n\nexport interface MaskedState {\n _value: string;\n _rawInputValue: string;\n}\n\n/** Append flags */\nexport interface AppendFlags<State = MaskedState> {\n input?: boolean;\n tail?: boolean;\n raw?: boolean;\n _beforeTailState?: State;\n}\n\n/** Extract flags */\nexport interface ExtractFlags {\n raw?: boolean;\n}\n\n// see https://github.com/microsoft/TypeScript/issues/6223\n\nexport type MaskedOptions<M extends Masked = Masked, Props extends keyof M = never> = Partial<\n Pick<\n M,\n | 'mask'\n | 'parent'\n | 'prepare'\n | 'prepareChar'\n | 'validate'\n | 'commit'\n | 'format'\n | 'parse'\n | 'overwrite'\n | 'eager'\n | 'skipInvalid'\n | 'autofix'\n | Props\n >\n>;\n\n/** Provides common masking stuff */\nexport abstract class Masked<Value = any> {\n static DEFAULTS: Pick<MaskedOptions, 'skipInvalid'> = {\n skipInvalid: true,\n };\n static EMPTY_VALUES: any[] = [undefined, null, ''];\n\n /** */\n mask!: unknown;\n /** */\n parent?: Masked;\n /** Transforms value before mask processing */\n prepare?: (chars: string, masked: Masked, flags: AppendFlags) => string | [string, ChangeDetails];\n /** Transforms each char before mask processing */\n prepareChar?: (chars: string, masked: Masked, flags: AppendFlags) => string | [string, ChangeDetails];\n /** Validates if value is acceptable */\n validate?: (value: string, masked: Masked, flags: AppendFlags) => boolean;\n /** Does additional processing at the end of editing */\n commit?: (value: string, masked: Masked) => void;\n /** Format typed value to string */\n format?: (value: Value, masked: Masked) => string;\n /** Parse string to get typed value */\n parse?: (str: string, masked: Masked) => Value;\n /** Enable characters overwriting */\n abstract overwrite?: boolean | 'shift' | undefined;\n /** */\n abstract eager?: boolean | 'remove' | 'append' | undefined;\n /** */\n abstract skipInvalid?: boolean | undefined;\n /** */\n abstract autofix?: boolean | 'pad' | undefined;\n\n /** */\n _initialized!: boolean;\n\n _value!: string;\n _refreshing?: boolean;\n _isolated?: boolean;\n\n constructor(opts: MaskedOptions) {\n this._value = '';\n this._update({\n ...Masked.DEFAULTS,\n ...opts,\n });\n this._initialized = true;\n }\n\n /** Sets and applies new options */\n updateOptions(opts: Partial<MaskedOptions>): void {\n if (!this.optionsIsChanged(opts)) {\n return;\n }\n\n this.withValueRefresh(this._update.bind(this, opts));\n }\n\n /** Sets new options */\n _update(opts: Partial<MaskedOptions>): void {\n Object.assign(this, opts);\n }\n\n /** Mask state */\n get state(): MaskedState {\n return {\n _value: this.value,\n _rawInputValue: this.rawInputValue,\n };\n }\n\n set state(state: MaskedState) {\n this._value = state._value;\n }\n\n /** Resets value */\n reset(): void {\n this._value = '';\n }\n\n get value(): string {\n return this._value;\n }\n\n set value(value: string) {\n this.resolve(value, { input: true });\n }\n\n /** Resolve new value */\n resolve(value: string, flags: AppendFlags = { input: true }): void {\n this.reset();\n this.append(value, flags, '');\n this.doCommit();\n }\n\n get unmaskedValue(): string {\n return this.value;\n }\n\n set unmaskedValue(value: string) {\n this.resolve(value, {});\n }\n\n get typedValue(): Value {\n return this.parse ? this.parse(this.value, this) : (this.unmaskedValue as Value);\n }\n\n set typedValue(value: Value) {\n if (this.format) {\n this.value = this.format(value, this);\n } else {\n this.unmaskedValue = String(value);\n }\n }\n\n /** Value that includes raw user input */\n get rawInputValue(): string {\n return this.extractInput(0, this.displayValue.length, { raw: true });\n }\n\n set rawInputValue(value: string) {\n this.resolve(value, { raw: true });\n }\n\n get displayValue(): string {\n return this.value;\n }\n\n get isComplete(): boolean {\n return true;\n }\n\n get isFilled(): boolean {\n return this.isComplete;\n }\n\n /** Finds nearest input position in direction */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n nearestInputPos(cursorPos: number, _direction?: Direction): number {\n return cursorPos;\n }\n\n totalInputPositions(fromPos: number = 0, toPos: number = this.displayValue.length): number {\n return Math.min(this.displayValue.length, toPos - fromPos);\n }\n\n /** Extracts value in range considering flags */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n extractInput(fromPos: number = 0, toPos: number = this.displayValue.length, _flags?: ExtractFlags): string {\n return this.displayValue.slice(fromPos, toPos);\n }\n\n /** Extracts tail in range */\n extractTail(fromPos: number = 0, toPos: number = this.displayValue.length): TailDetails {\n return new ContinuousTailDetails(this.extractInput(fromPos, toPos), fromPos);\n }\n\n /** Appends tail */\n appendTail(tail: string | TailDetails): ChangeDetails {\n if (isString(tail)) {\n // eslint-disable-next-line no-param-reassign\n tail = new ContinuousTailDetails(String(tail));\n }\n\n return (tail as TailDetails).appendTo(this);\n }\n\n /** Appends char */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _appendCharRaw(ch: string, _flags: AppendFlags = {}): ChangeDetails {\n if (!ch) {\n return new ChangeDetails();\n }\n\n this._value += ch;\n return new ChangeDetails({\n inserted: ch,\n rawInserted: ch,\n });\n }\n\n /** Appends char */\n _appendChar(ch: string, flags: AppendFlags = {}, checkTail?: TailDetails): ChangeDetails {\n const consistentState = this.state;\n let details: ChangeDetails;\n // eslint-disable-next-line no-param-reassign\n [ch, details] = this.doPrepareChar(ch, flags);\n\n if (ch) {\n details = details.aggregate(this._appendCharRaw(ch, flags));\n\n // TODO handle `skip`?\n\n // try `autofix` lookahead\n if (!details.rawInserted && this.autofix === 'pad') {\n const noFixState = this.state;\n this.state = consistentState;\n\n let fixDetails = this.pad(flags);\n const chDetails = this._appendCharRaw(ch, flags);\n fixDetails = fixDetails.aggregate(chDetails);\n\n // if fix was applied or\n // if details are equal use skip restoring state optimization\n if (chDetails.rawInserted || fixDetails.equals(details)) {\n details = fixDetails;\n } else {\n this.state = noFixState;\n }\n }\n }\n\n if (details.inserted) {\n let consistentTail;\n let appended = this.doValidate(flags) !== false;\n\n if (appended && checkTail != null) {\n // validation ok, check tail\n const beforeTailState = this.state;\n if (this.overwrite === true) {\n consistentTail = checkTail.state;\n for (let i = 0; i < details.rawInserted.length; ++i) {\n checkTail.unshift(this.displayValue.length - details.tailShift);\n }\n }\n\n let tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted.length === checkTail.toString().length;\n\n // not ok, try shift\n if (!(appended && tailDetails.inserted) && this.overwrite === 'shift') {\n this.state = beforeTailState;\n consistentTail = checkTail.state;\n for (let i = 0; i < details.rawInserted.length; ++i) {\n checkTail.shift();\n }\n\n tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted.length === checkTail.toString().length;\n }\n\n // if ok, rollback state after tail\n if (appended && tailDetails.inserted) {\n this.state = beforeTailState;\n }\n }\n\n // revert all if something went wrong\n if (!appended) {\n details = new ChangeDetails();\n this.state = consistentState;\n if (checkTail && consistentTail) {\n checkTail.state = consistentTail;\n }\n }\n }\n return details;\n }\n\n /** Appends optional placeholder at the end */\n _appendPlaceholder(): ChangeDetails {\n return new ChangeDetails();\n }\n\n /** Appends optional eager placeholder at the end */\n _appendEager(): ChangeDetails {\n return new ChangeDetails();\n }\n\n /** Appends symbols considering flags */\n append(str: string, flags?: AppendFlags, tail?: string | TailDetails): ChangeDetails {\n if (!isString(str)) {\n throw new Error('value should be string');\n }\n const checkTail = isString(tail) ? new ContinuousTailDetails(String(tail)) : (tail as TailDetails);\n if (flags?.tail) {\n flags._beforeTailState = this.state;\n }\n\n let details;\n // eslint-disable-next-line no-param-reassign\n [str, details] = this.doPrepare(str, flags);\n\n for (let ci = 0; ci < str.length; ++ci) {\n const d = this._appendChar(str[ci], flags, checkTail);\n if (!d.rawInserted && !this.doSkipInvalid(str[ci], flags, checkTail)) {\n break;\n }\n details.aggregate(d);\n }\n\n if ((this.eager === true || this.eager === 'append') && flags?.input && str) {\n details.aggregate(this._appendEager());\n }\n\n // append tail but aggregate only tailShift\n if (checkTail != null) {\n details.tailShift += this.appendTail(checkTail).tailShift;\n // TODO it's a good idea to clear state after appending ends\n // but it causes bugs when one append calls another (when dynamic dispatch set rawInputValue)\n // this._resetBeforeTailState();\n }\n\n return details;\n }\n\n remove(fromPos: number = 0, toPos: number = this.displayValue.length): ChangeDetails {\n this._value = this.displayValue.slice(0, fromPos) + this.displayValue.slice(toPos);\n return new ChangeDetails();\n }\n\n /** Calls function and reapplies current value */\n withValueRefresh<T>(fn: () => T): T {\n if (this._refreshing || !this._initialized) {\n return fn();\n }\n this._refreshing = true;\n\n const rawInput = this.rawInputValue;\n const value = this.value;\n\n const ret = fn();\n\n this.rawInputValue = rawInput;\n // append lost trailing chars at the end\n if (this.value && this.value !== value && value.indexOf(this.value) === 0) {\n this.append(value.slice(this.displayValue.length), {}, '');\n this.doCommit();\n }\n\n delete this._refreshing;\n return ret;\n }\n\n runIsolated<T>(fn: (masked: this) => T): T {\n if (this._isolated || !this._initialized) {\n return fn(this);\n }\n this._isolated = true;\n const state = this.state;\n\n const ret = fn(this);\n\n this.state = state;\n delete this._isolated;\n\n return ret;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n doSkipInvalid(_ch: string, _flags: AppendFlags = {}, _checkTail?: TailDetails): boolean {\n return Boolean(this.skipInvalid);\n }\n\n /** Prepares string before mask processing */\n doPrepare(str: string, flags: AppendFlags = {}): [string, ChangeDetails] {\n return ChangeDetails.normalize(this.prepare ? this.prepare(str, this, flags) : str);\n }\n\n /** Prepares each char before mask processing */\n doPrepareChar(str: string, flags: AppendFlags = {}): [string, ChangeDetails] {\n return ChangeDetails.normalize(this.prepareChar ? this.prepareChar(str, this, flags) : str);\n }\n\n /** Validates if value is acceptable */\n doValidate(flags: AppendFlags): boolean {\n return (\n (!this.validate || this.validate(this.value, this, flags)) && (!this.parent || this.parent.doValidate(flags))\n );\n }\n\n /** Does additional processing at the end of editing */\n doCommit(): void {\n if (this.commit) {\n this.commit(this.value, this);\n }\n }\n\n splice(\n start: number,\n deleteCount: number,\n inserted = '',\n removeDirection: Direction = DIRECTION.NONE,\n flags: AppendFlags = { input: true },\n ): ChangeDetails {\n const tailPos: number = start + deleteCount;\n const tail: TailDetails = this.extractTail(tailPos);\n\n // `append`: досрочный показ разделителей при вводе; при удалении — и выравнивание nearestInputPos (FORCE_*),\n // и цикл while, пока raw не изменился (пропуск литералов маски без отдельных нажатий).\n const eagerRemoveLoop = this.eager === true || this.eager === 'remove' || this.eager === 'append';\n const eagerRemoveAlign = eagerRemoveLoop;\n\n let oldRawValue;\n if (eagerRemoveLoop) {\n // eslint-disable-next-line no-param-reassign\n removeDirection = forceDirection(removeDirection);\n oldRawValue = this.extractInput(0, tailPos, { raw: true });\n }\n\n let startChangePos: number = start;\n const details: ChangeDetails = new ChangeDetails();\n\n // if it is just deletion without insertion\n if (removeDirection !== DIRECTION.NONE) {\n // При Delete (FORCE_RIGHT) не сдвигаем start вправо — удаляем символ в текущей позиции (в т.ч. фиксированный).\n if (removeDirection === DIRECTION.FORCE_RIGHT) {\n startChangePos = start;\n } else {\n startChangePos = this.nearestInputPos(\n start,\n deleteCount > 1 && start !== 0 && !eagerRemoveAlign ? DIRECTION.NONE : removeDirection,\n );\n }\n // adjust tailShift if start was aligned\n details.tailShift = startChangePos - start;\n }\n\n // При Delete (FORCE_RIGHT) удаляем только deleteCount символов в текущей позиции — без сдвига хвоста.\n if (removeDirection === DIRECTION.FORCE_RIGHT && startChangePos === start) {\n details.aggregate(this.remove(startChangePos, startChangePos + deleteCount));\n const tailAfterRemove = this.extractTail(this.displayValue.length);\n return details.aggregate(this.append(inserted, flags, tailAfterRemove));\n }\n\n details.aggregate(this.remove(startChangePos));\n\n if (eagerRemoveLoop && removeDirection !== DIRECTION.NONE && oldRawValue === this.rawInputValue) {\n if (removeDirection === DIRECTION.FORCE_LEFT) {\n let valLength;\n while (oldRawValue === this.rawInputValue && (valLength = this.displayValue.length)) {\n details.aggregate(new ChangeDetails({ tailShift: -1 })).aggregate(this.remove(valLength - 1));\n }\n } else if (removeDirection === DIRECTION.FORCE_RIGHT) {\n tail.unshift();\n }\n }\n\n return details.aggregate(this.append(inserted, flags, tail));\n }\n\n maskEquals(mask: unknown): boolean {\n return this.mask === mask;\n }\n\n optionsIsChanged(opts: Partial<MaskedOptions>): boolean {\n return !objectIncludes(this, opts);\n }\n\n typedValueEquals(value: Value): boolean {\n const tval = this.typedValue;\n\n return (\n value === tval ||\n (Masked.EMPTY_VALUES.includes(value) && Masked.EMPTY_VALUES.includes(tval)) ||\n (this.format ? this.format(value, this) === this.format(this.typedValue, this) : false)\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n pad(_flags?: AppendFlags): ChangeDetails {\n return new ChangeDetails();\n }\n}\n"]}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Masked, type MaskedOptions } from './base.js';
|
|
2
|
+
import { MaskedPattern, type MaskedPatternOptions } from './pattern.js';
|
|
3
|
+
import { MaskedRegExp, type MaskedRegExpOptions } from './regexp.js';
|
|
4
|
+
export type FactoryStaticOpts = MaskedPatternOptions | MaskedRegExpOptions;
|
|
5
|
+
export type AllFactoryStaticOpts = MaskedPatternOptions & MaskedRegExpOptions;
|
|
6
|
+
export type FactoryStaticReturnMasked<Opts extends FactoryStaticOpts> = Opts extends MaskedPatternOptions ? MaskedPattern : Opts extends MaskedRegExpOptions ? MaskedRegExp : never;
|
|
7
|
+
export type FactoryStaticMaskReturnMasked<Mask extends FactoryStaticOpts['mask']> = Mask extends MaskedPatternOptions['mask'] ? MaskedPattern : Mask extends MaskedRegExpOptions['mask'] ? MaskedRegExp : never;
|
|
8
|
+
export type FactoryInstanceOpts = ({
|
|
9
|
+
mask: MaskedRegExp;
|
|
10
|
+
} & Omit<MaskedRegExpOptions, 'mask'>) | ({
|
|
11
|
+
mask: MaskedPattern;
|
|
12
|
+
} & Omit<MaskedPatternOptions, 'mask'>) | ({
|
|
13
|
+
mask: Masked;
|
|
14
|
+
} & Omit<MaskedOptions, 'mask'>);
|
|
15
|
+
export type FactoryInstanceReturnMasked<Opts extends FactoryInstanceOpts> = Opts extends {
|
|
16
|
+
mask: infer M;
|
|
17
|
+
} ? M : never;
|
|
18
|
+
export type FactoryConstructorOpts = ({
|
|
19
|
+
mask: typeof MaskedRegExp;
|
|
20
|
+
} & Omit<MaskedRegExpOptions, 'mask'>) | ({
|
|
21
|
+
mask: typeof MaskedPattern;
|
|
22
|
+
} & Omit<MaskedPatternOptions, 'mask'>) | ({
|
|
23
|
+
mask: typeof Masked;
|
|
24
|
+
} & Omit<MaskedOptions, 'mask'>);
|
|
25
|
+
export type FactoryConstructorReturnMasked<Opts extends FactoryConstructorOpts> = Opts extends {
|
|
26
|
+
mask: typeof MaskedRegExp;
|
|
27
|
+
} ? MaskedRegExp : Opts extends {
|
|
28
|
+
mask: typeof MaskedPattern;
|
|
29
|
+
} ? MaskedPattern : Masked;
|
|
30
|
+
export type FactoryOpts = FactoryConstructorOpts | FactoryInstanceOpts | FactoryStaticOpts;
|
|
31
|
+
export type FactoryArg = Masked | FactoryOpts | FactoryStaticOpts['mask'];
|
|
32
|
+
export type ExtendFactoryArgOptions<Opts extends {
|
|
33
|
+
[key: string]: any;
|
|
34
|
+
}> = Masked | (FactoryOpts & Opts) | FactoryStaticOpts['mask'];
|
|
35
|
+
export type UpdateStaticOpts<Opts extends FactoryStaticOpts> = Opts extends MaskedPatternOptions ? MaskedPatternOptions : Opts extends MaskedRegExpOptions ? MaskedRegExpOptions : never;
|
|
36
|
+
type AnyOpts = Record<string, any>;
|
|
37
|
+
export type UpdateInstanceOpts<M extends Masked> = M extends MaskedRegExp ? MaskedRegExpOptions : M extends MaskedPattern ? MaskedPatternOptions : AnyOpts;
|
|
38
|
+
export type UpdateConstructorOpts<M extends FactoryConstructorOpts> = M extends {
|
|
39
|
+
mask: typeof MaskedRegExp;
|
|
40
|
+
} ? MaskedRegExpOptions : M extends {
|
|
41
|
+
mask: typeof MaskedPattern;
|
|
42
|
+
} ? MaskedPatternOptions : AnyOpts;
|
|
43
|
+
export type UpdateStaticMaskOpts<M extends FactoryStaticOpts['mask']> = M extends MaskedPatternOptions['mask'] ? MaskedPatternOptions : M extends MaskedRegExpOptions['mask'] ? MaskedRegExpOptions : never;
|
|
44
|
+
export type UpdateOpts<Opts extends FactoryArg> = Partial<Opts extends Masked ? UpdateInstanceOpts<Opts> : Opts extends FactoryStaticOpts['mask'] ? UpdateStaticMaskOpts<Opts> : Opts extends FactoryStaticOpts ? UpdateStaticOpts<Opts> : Opts extends FactoryInstanceOpts ? UpdateInstanceOpts<Opts['mask']> : Opts extends FactoryConstructorOpts ? UpdateConstructorOpts<Opts> : AnyOpts>;
|
|
45
|
+
export type FactoryReturnMasked<Opts extends FactoryArg> = Opts extends Masked ? Opts : Opts extends FactoryStaticOpts['mask'] ? FactoryStaticMaskReturnMasked<Opts> : Opts extends FactoryConstructorOpts ? FactoryConstructorReturnMasked<Opts> : Opts extends FactoryInstanceOpts ? FactoryInstanceReturnMasked<Opts> : Opts extends FactoryStaticOpts ? FactoryStaticReturnMasked<Opts> : never;
|
|
46
|
+
/** Get Masked class by mask type */
|
|
47
|
+
export declare function maskedClass(mask: Masked | FactoryOpts['mask']): typeof MaskedPattern | typeof MaskedRegExp | typeof Masked;
|
|
48
|
+
type MaskedClassOf<M extends Masked> = M extends MaskedRegExp ? typeof MaskedRegExp : M extends MaskedPattern ? typeof MaskedPattern : any;
|
|
49
|
+
type NormalizedMaskedOpts<Opts extends Masked> = Omit<Opts, 'mask'> & {
|
|
50
|
+
_mask: Opts;
|
|
51
|
+
mask: MaskedClassOf<Opts>;
|
|
52
|
+
};
|
|
53
|
+
type NormalizedInstanceOpts<Opts extends FactoryInstanceOpts> = Omit<Opts['mask'], `_${string}` | 'mask'> & NormalizedMaskedOpts<Opts['mask']>;
|
|
54
|
+
export type NormalizedOpts<Opts extends FactoryArg> = Opts extends FactoryStaticOpts['mask'] ? {
|
|
55
|
+
mask: Opts;
|
|
56
|
+
} : Opts extends Masked ? NormalizedMaskedOpts<Opts> : Opts extends FactoryInstanceOpts ? NormalizedInstanceOpts<Opts> : Opts extends FactoryStaticOpts | FactoryConstructorOpts ? Opts : {
|
|
57
|
+
mask: Opts;
|
|
58
|
+
};
|
|
59
|
+
export declare function normalizeOpts<Opts extends FactoryArg>(opts: Opts): NormalizedOpts<Opts>;
|
|
60
|
+
/** Creates new {@link Masked} depending on mask type */
|
|
61
|
+
export declare function createMask<Opts extends FactoryArg>(opts: Opts): FactoryReturnMasked<Opts>;
|
|
62
|
+
export {};
|