@skbkontur/react-ui 6.1.4-ff219.0 → 6.1.5
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 +23 -0
- package/components/Autocomplete/Autocomplete.js +2 -3
- package/components/Autocomplete/Autocomplete.js.map +1 -1
- package/components/Button/Button.classes.d.ts +8 -0
- package/components/Button/Button.classes.js +10 -0
- package/components/Button/Button.classes.js.map +1 -0
- package/components/Button/Button.mixins.js +1 -1
- package/components/Button/Button.mixins.js.map +1 -1
- package/components/Button/Button.styles.d.ts +2 -8
- package/components/Button/Button.styles.js +3 -9
- package/components/Button/Button.styles.js.map +1 -1
- package/components/Calendar/Calendar.d.ts +2 -8
- package/components/Calendar/Calendar.js +2 -7
- package/components/Calendar/Calendar.js.map +1 -1
- package/components/Calendar/CalendarDay.js +1 -1
- package/components/Calendar/CalendarDay.js.map +1 -1
- package/components/Calendar/MonthView.js +1 -1
- package/components/Calendar/MonthView.js.map +1 -1
- package/components/Calendar/MonthViewModel.js +1 -2
- package/components/Calendar/MonthViewModel.js.map +1 -1
- package/components/Calendar/tids.d.ts +7 -0
- package/components/Calendar/tids.js +8 -0
- package/components/Calendar/tids.js.map +1 -0
- package/components/FxInput/FxInput.js +2 -2
- package/components/FxInput/FxInput.js.map +1 -1
- package/components/MaskedInput/MaskedInput.d.ts +0 -2
- package/components/MaskedInput/MaskedInput.js +0 -6
- package/components/MaskedInput/MaskedInput.js.map +1 -1
- package/components/MenuItem/MenuItem.mixins.d.ts +1 -0
- package/components/MenuItem/MenuItem.mixins.js +6 -1
- package/components/MenuItem/MenuItem.mixins.js.map +1 -1
- package/components/MenuItem/MenuItem.styles.d.ts +2 -1
- package/components/MenuItem/MenuItem.styles.js +2 -7
- package/components/MenuItem/MenuItem.styles.js.map +1 -1
- package/components/MiniModal/MiniModal.d.ts +2 -7
- package/components/MiniModal/MiniModal.js +2 -7
- package/components/MiniModal/MiniModal.js.map +1 -1
- package/components/MiniModal/MiniModalBody.js +1 -1
- package/components/MiniModal/MiniModalBody.js.map +1 -1
- package/components/MiniModal/MiniModalFooter.js +1 -1
- package/components/MiniModal/MiniModalFooter.js.map +1 -1
- package/components/MiniModal/MiniModalHeader.js +1 -1
- package/components/MiniModal/MiniModalHeader.js.map +1 -1
- package/components/MiniModal/MiniModalIndent.js +1 -1
- package/components/MiniModal/MiniModalIndent.js.map +1 -1
- package/components/MiniModal/tids.d.ts +7 -0
- package/components/MiniModal/tids.js +8 -0
- package/components/MiniModal/tids.js.map +1 -0
- package/components/Modal/Modal.constants.d.ts +9 -0
- package/components/Modal/Modal.constants.js +10 -0
- package/components/Modal/Modal.constants.js.map +1 -0
- package/components/Modal/Modal.d.ts +2 -10
- package/components/Modal/Modal.js +2 -9
- package/components/Modal/Modal.js.map +1 -1
- package/components/Modal/ModalBody.js +1 -1
- package/components/Modal/ModalBody.js.map +1 -1
- package/components/Modal/ModalClose.js +1 -1
- package/components/Modal/ModalClose.js.map +1 -1
- package/components/Toggle/Toggle.classes.d.ts +8 -0
- package/components/Toggle/Toggle.classes.js +10 -0
- package/components/Toggle/Toggle.classes.js.map +1 -0
- package/components/Toggle/Toggle.mixins.js +1 -1
- package/components/Toggle/Toggle.mixins.js.map +1 -1
- package/components/Toggle/Toggle.styles.d.ts +2 -8
- package/components/Toggle/Toggle.styles.js +3 -9
- package/components/Toggle/Toggle.styles.js.map +1 -1
- package/components/TokenInput/TokenInput.d.ts +7 -3
- package/components/TokenInput/TokenInput.js +0 -1
- package/components/TokenInput/TokenInput.js.map +1 -1
- package/index.d.ts +0 -1
- package/index.js +0 -1
- package/index.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxView.js +2 -2
- package/internal/CustomComboBox/ComboBoxView.js.map +1 -1
- package/internal/Popup/PopupPin.js +8 -6
- package/internal/Popup/PopupPin.js.map +1 -1
- package/internal/themes/BasicTheme.d.ts +162 -0
- package/internal/themes/BasicTheme.js +162 -0
- package/internal/themes/BasicTheme.js.map +1 -1
- package/lib/date/InternalDateValidator.js +1 -2
- package/lib/date/InternalDateValidator.js.map +1 -1
- package/lib/events/keyListener.js +6 -0
- package/lib/events/keyListener.js.map +1 -1
- package/lib/events/keyboard/KeyboardEventCodes.d.ts +0 -2
- package/lib/events/keyboard/KeyboardEventCodes.js +0 -2
- package/lib/events/keyboard/KeyboardEventCodes.js.map +1 -1
- package/lib/events/keyboard/KeyboardMapKeys.js +0 -2
- package/lib/events/keyboard/KeyboardMapKeys.js.map +1 -1
- package/lib/events/keyboard/identifiers.d.ts +0 -2
- package/lib/events/keyboard/identifiers.js +0 -6
- package/lib/events/keyboard/identifiers.js.map +1 -1
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +0 -2
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +0 -1
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
- package/package.json +1 -4
- package/components/MaskedInputV2/MaskedInputV2.d.ts +0 -57
- package/components/MaskedInputV2/MaskedInputV2.helpers.d.ts +0 -9
- package/components/MaskedInputV2/MaskedInputV2.helpers.js +0 -17
- package/components/MaskedInputV2/MaskedInputV2.helpers.js.map +0 -1
- package/components/MaskedInputV2/MaskedInputV2.js +0 -234
- package/components/MaskedInputV2/MaskedInputV2.js.map +0 -1
- package/components/MaskedInputV2/MaskedInputV2.styles.d.ts +0 -7
- package/components/MaskedInputV2/MaskedInputV2.styles.js +0 -19
- package/components/MaskedInputV2/MaskedInputV2.styles.js.map +0 -1
- package/components/MaskedInputV2/index.d.ts +0 -1
- package/components/MaskedInputV2/index.js +0 -2
- package/components/MaskedInputV2/index.js.map +0 -1
- package/components/MaskedInputV2/internal/MaskOverlay.d.ts +0 -19
- package/components/MaskedInputV2/internal/MaskOverlay.js +0 -54
- package/components/MaskedInputV2/internal/MaskOverlay.js.map +0 -1
- package/components/MaskedInputV2/internal/MaskedCore.d.ts +0 -8
- package/components/MaskedInputV2/internal/MaskedCore.js +0 -101
- package/components/MaskedInputV2/internal/MaskedCore.js.map +0 -1
- package/components/MaskedInputV2/internal/MaskedCore.types.d.ts +0 -30
- package/components/MaskedInputV2/internal/MaskedCore.types.js +0 -2
- package/components/MaskedInputV2/internal/MaskedCore.types.js.map +0 -1
- package/components/MaskedInputV2/internal/MaskedInternal.styles.d.ts +0 -15
- package/components/MaskedInputV2/internal/MaskedInternal.styles.js +0 -34
- package/components/MaskedInputV2/internal/MaskedInternal.styles.js.map +0 -1
- package/components/MaskedInputV2/internal/buildSlotMap.d.ts +0 -11
- package/components/MaskedInputV2/internal/buildSlotMap.js +0 -37
- package/components/MaskedInputV2/internal/buildSlotMap.js.map +0 -1
- package/components/MaskedInputV2/internal/extractRaw.d.ts +0 -10
- package/components/MaskedInputV2/internal/extractRaw.js +0 -16
- package/components/MaskedInputV2/internal/extractRaw.js.map +0 -1
- package/components/MaskedInputV2/internal/findNearestRawLeft.d.ts +0 -10
- package/components/MaskedInputV2/internal/findNearestRawLeft.js +0 -18
- package/components/MaskedInputV2/internal/findNearestRawLeft.js.map +0 -1
- package/components/MaskedInputV2/internal/helpers.d.ts +0 -5
- package/components/MaskedInputV2/internal/helpers.js +0 -6
- package/components/MaskedInputV2/internal/helpers.js.map +0 -1
- package/components/MaskedInputV2/internal/maskedCoreClipboard.d.ts +0 -25
- package/components/MaskedInputV2/internal/maskedCoreClipboard.js +0 -30
- package/components/MaskedInputV2/internal/maskedCoreClipboard.js.map +0 -1
- package/components/MaskedInputV2/internal/maskedCoreDeletion.d.ts +0 -28
- package/components/MaskedInputV2/internal/maskedCoreDeletion.js +0 -70
- package/components/MaskedInputV2/internal/maskedCoreDeletion.js.map +0 -1
- package/components/MaskedInputV2/internal/maskedCoreInputChange.d.ts +0 -35
- package/components/MaskedInputV2/internal/maskedCoreInputChange.js +0 -31
- package/components/MaskedInputV2/internal/maskedCoreInputChange.js.map +0 -1
- package/components/MaskedInputV2/internal/maskedCoreNavigation.d.ts +0 -13
- package/components/MaskedInputV2/internal/maskedCoreNavigation.js +0 -79
- package/components/MaskedInputV2/internal/maskedCoreNavigation.js.map +0 -1
- package/components/MaskedInputV2/internal/stripMaskChars.d.ts +0 -11
- package/components/MaskedInputV2/internal/stripMaskChars.js +0 -20
- package/components/MaskedInputV2/internal/stripMaskChars.js.map +0 -1
- package/components/MaskedInputV2/internal/types.d.ts +0 -74
- package/components/MaskedInputV2/internal/types.js +0 -2
- package/components/MaskedInputV2/internal/types.js.map +0 -1
- package/components/MaskedInputV2/internal/useMaskEngine.d.ts +0 -42
- package/components/MaskedInputV2/internal/useMaskEngine.js +0 -82
- package/components/MaskedInputV2/internal/useMaskEngine.js.map +0 -1
- package/components/MaskedInputV2/internal/useMaskedCoreHandlers.d.ts +0 -28
- package/components/MaskedInputV2/internal/useMaskedCoreHandlers.js +0 -190
- package/components/MaskedInputV2/internal/useMaskedCoreHandlers.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/controls/html-input-mask-element.d.ts +0 -16
- package/components/MaskedInputV2/react-imask/imask/controls/html-input-mask-element.js +0 -59
- package/components/MaskedInputV2/react-imask/imask/controls/html-input-mask-element.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/controls/html-mask-element.d.ts +0 -20
- package/components/MaskedInputV2/react-imask/imask/controls/html-mask-element.js +0 -106
- package/components/MaskedInputV2/react-imask/imask/controls/html-mask-element.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/controls/input-history.d.ts +0 -17
- package/components/MaskedInputV2/react-imask/imask/controls/input-history.js +0 -49
- package/components/MaskedInputV2/react-imask/imask/controls/input-history.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/controls/input.d.ts +0 -95
- package/components/MaskedInputV2/react-imask/imask/controls/input.js +0 -420
- package/components/MaskedInputV2/react-imask/imask/controls/input.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/controls/mask-element.d.ts +0 -30
- package/components/MaskedInputV2/react-imask/imask/controls/mask-element.js +0 -59
- package/components/MaskedInputV2/react-imask/imask/controls/mask-element.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/core/action-details.d.ts +0 -30
- package/components/MaskedInputV2/react-imask/imask/core/action-details.js +0 -100
- package/components/MaskedInputV2/react-imask/imask/core/action-details.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/core/change-details.d.ts +0 -20
- package/components/MaskedInputV2/react-imask/imask/core/change-details.js +0 -46
- package/components/MaskedInputV2/react-imask/imask/core/change-details.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/core/continuous-tail-details.d.ts +0 -21
- package/components/MaskedInputV2/react-imask/imask/core/continuous-tail-details.js +0 -52
- package/components/MaskedInputV2/react-imask/imask/core/continuous-tail-details.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/core/holder.d.ts +0 -34
- package/components/MaskedInputV2/react-imask/imask/core/holder.js +0 -38
- package/components/MaskedInputV2/react-imask/imask/core/holder.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/core/tail-details.d.ts +0 -20
- package/components/MaskedInputV2/react-imask/imask/core/tail-details.js +0 -2
- package/components/MaskedInputV2/react-imask/imask/core/tail-details.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/core/utils.d.ts +0 -24
- package/components/MaskedInputV2/react-imask/imask/core/utils.js +0 -100
- package/components/MaskedInputV2/react-imask/imask/core/utils.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/imask.d.ts +0 -5
- package/components/MaskedInputV2/react-imask/imask/imask.js +0 -7
- package/components/MaskedInputV2/react-imask/imask/imask.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/index.d.ts +0 -17
- package/components/MaskedInputV2/react-imask/imask/index.js +0 -16
- package/components/MaskedInputV2/react-imask/imask/index.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/masked/base.d.ts +0 -114
- package/components/MaskedInputV2/react-imask/imask/masked/base.js +0 -411
- package/components/MaskedInputV2/react-imask/imask/masked/base.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/masked/factory.d.ts +0 -62
- package/components/MaskedInputV2/react-imask/imask/masked/factory.js +0 -96
- package/components/MaskedInputV2/react-imask/imask/masked/factory.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/masked/pattern.d.ts +0 -101
- package/components/MaskedInputV2/react-imask/imask/masked/pattern.js +0 -543
- package/components/MaskedInputV2/react-imask/imask/masked/pattern.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/block.d.ts +0 -30
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/block.js +0 -2
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/block.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/chunk-tail-details.d.ts +0 -21
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/chunk-tail-details.js +0 -180
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/chunk-tail-details.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/cursor.d.ts +0 -31
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/cursor.js +0 -163
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/cursor.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/fixed-definition.d.ts +0 -42
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/fixed-definition.js +0 -158
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/fixed-definition.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/input-definition.d.ts +0 -56
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/input-definition.js +0 -185
- package/components/MaskedInputV2/react-imask/imask/masked/patterns/input-definition.js.map +0 -1
- package/components/MaskedInputV2/react-imask/imask/masked/regexp.d.ts +0 -17
- package/components/MaskedInputV2/react-imask/imask/masked/regexp.js +0 -36
- package/components/MaskedInputV2/react-imask/imask/masked/regexp.js.map +0 -1
- package/components/MaskedInputV2/react-imask/index.d.ts +0 -3
- package/components/MaskedInputV2/react-imask/index.js +0 -4
- package/components/MaskedInputV2/react-imask/index.js.map +0 -1
- package/components/MaskedInputV2/react-imask/input.d.ts +0 -8
- package/components/MaskedInputV2/react-imask/input.js +0 -35
- package/components/MaskedInputV2/react-imask/input.js.map +0 -1
- package/components/MaskedInputV2/react-imask/mixin.d.ts +0 -31
- package/components/MaskedInputV2/react-imask/mixin.js +0 -246
- package/components/MaskedInputV2/react-imask/mixin.js.map +0 -1
- package/internal/FeaturedMaskedInput/FeaturedMaskedInput.d.ts +0 -4
- package/internal/FeaturedMaskedInput/FeaturedMaskedInput.js +0 -24
- package/internal/FeaturedMaskedInput/FeaturedMaskedInput.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useMaskEngine.js","sourceRoot":"","sources":["useMaskEngine.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1E,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAwCxD;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,KAAyB;;IACrD,IAAM,IAAI,GAAG,MAAA,KAAK,CAAC,IAAI,mCAAI,EAAE,CAAC;IAC9B,IAAM,KAAK,GAAG,MAAA,KAAK,CAAC,UAAU,0CAAE,KAAK,CAAC;IACtC,IAAM,KAAK,GAAG,OAAO,CACnB;QACE,OAAA,UAAU,YACR,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAQ,EACxC,eAAe,EAAE,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,EAC5C,WAAW,EAAE,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,EAC9C,KAAK,EAAE,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,QAAQ,EACxB,SAAS,EAAE,OAAO,EAClB,IAAI,EAAE,IAAI,IACN,KAAK,CAAC,UAAqB,EACH;IAR9B,CAQ8B;IAChC,sDAAsD;IACtD,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CACnF,CAAC;IAEF,0CAA0C;IAC1C,IAAM,OAAO,GAAG,OAAO,CAAC,cAAM,OAAA,YAAY,CAAC,KAAK,CAAC,EAAnB,CAAmB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAE5D,SAAS,OAAO,CAAC,GAAW,EAAE,OAAgB;QAC5C,IAAM,IAAI,GAAG,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,OAAO,CAAC;QAE/C,mEAAmE;QACnE,qCAAqC;QACrC,KAAK,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,wEAAwE;QACxE,gEAAgE;QAChE,6DAA6D;QAC7D,IAAI,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC;YAC1E,KAAK,CAAC,YAAY,EAAE,CAAC;QACvB,CAAC;QACD,IAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;QAE9B,IAAI,YAAY,GAAG,SAAS,CAAC;QAC7B,IAAI,UAAU,GAAG,SAAS,CAAC;QAE3B,yDAAyD;QACzD,6CAA6C;QAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,KAAK,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACrC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACpC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QACpC,CAAC;QAED,IAAM,QAAQ,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC;QACvD,OAAO;YACL,YAAY,cAAA;YACZ,UAAU,YAAA;YACV,WAAW,EAAE,UAAU,CAAC,MAAM;YAC9B,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YAChD,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC,MAAM;SAC3C,CAAC;IACJ,CAAC;IAED,SAAS,UAAU,CAAC,UAAkB,EAAE,YAAoB,EAAE,MAAc;QAC1E,+DAA+D;QAC/D,IAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;QACjD,IAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC7C,2EAA2E;QAC3E,IAAM,SAAS,GAAG,UAAU,CAAC,MAAM,EAAE,EAAE,KAAK,OAAA,EAAE,CAAC,CAAC;QAChD,IAAM,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK,CAAC;QAE7C,KAAK,CAAC,aAAa,GAAG,SAAS,CAAC;QAChC,IAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC;QAErC,OAAO;YACL,GAAG,EAAE,QAAQ;YACb,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM;SAC7C,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,OAAO,SAAA,EAAE,UAAU,YAAA,EAAE,OAAO,SAAA,EAAE,KAAK,OAAA,EAAE,CAAC;AACjD,CAAC","sourcesContent":["import { useMemo } from 'react';\n\nimport { getDefinitions, getMaskChar } from '../MaskedInputV2.helpers.js';\nimport type { MaskedPattern, MaskedPatternOptions } from '../react-imask/imask/index.js';\nimport { createMask } from '../react-imask/imask/index.js';\nimport type { IMaskInputProps } from '../react-imask/index.js';\nimport { buildSlotMap, extractRaw } from './helpers.js';\nimport type { MaskState, SlotMap } from './types.js';\n\nexport interface MaskEngine {\n /**\n * Применить raw-ввод, получить MaskState.\n * Чистая функция (без побочных эффектов на внешний стейт).\n */\n compute(raw: string, focused: boolean): MaskState;\n\n /**\n * Применить вставку с учётом текущего курсора.\n * Возвращает новый raw и флаг переполнения.\n */\n applyPaste(currentRaw: string, rawCursorPos: number, pasted: string): PasteResult;\n\n /** Карта слотов. Пересчитывается только при смене маски. */\n slotMap: SlotMap;\n\n /** Доступ к IMask-инстансу для edge cases (imaskProps escape hatch). */\n imask: MaskedPattern;\n}\n\ninterface PasteResult {\n raw: string;\n overflow: boolean; // pasted содержал символы, которые IMask не принял\n}\n\nexport type MaskEager = NonNullable<MaskedPatternOptions['eager']>;\n\n/** Пропсы хука {@link useMaskEngine}. */\ninterface UseMaskEngineProps {\n mask: string;\n maskChar?: string;\n formatChars?: Record<string, string>;\n unmask: boolean;\n alwaysShowMask: boolean;\n imaskProps?: IMaskInputProps<HTMLInputElement>;\n}\n\n/**\n * Создаёт headless IMask-движок для MaskedInputV2.\n * IMask используется как калькулятор состояния, без привязки к DOM.\n *\n * @param props — настройки маски и поведения отображения.\n * @returns объект {@link MaskEngine} с методами `compute`, `applyPaste`, `slotMap` и `imask`.\n */\nexport function useMaskEngine(props: UseMaskEngineProps): MaskEngine {\n const mask = props.mask ?? '';\n const eager = props.imaskProps?.eager;\n const imask = useMemo(\n () =>\n createMask({\n mask: mask.replace(/0/g, '{\\\\0}') as any,\n placeholderChar: getMaskChar(props.maskChar),\n definitions: getDefinitions(props.formatChars),\n eager: eager ?? 'append', // TODO: 'remove' or 'append'\n overwrite: 'shift',\n lazy: true,\n ...(props.imaskProps as object),\n }) as unknown as MaskedPattern,\n // Пересоздавать только при изменении структуры маски:\n [mask, props.imaskProps, props.maskChar, eager, JSON.stringify(props.formatChars)],\n );\n\n // SlotMap пересчитывается при смене маски\n const slotMap = useMemo(() => buildSlotMap(imask), [imask]);\n\n function compute(raw: string, focused: boolean): MaskState {\n const lazy = !props.alwaysShowMask && !focused;\n\n // input: true → триггерит _appendEager, чтобы trailing fixed chars\n // добавлялись и сохранялись при blur\n imask.updateOptions({ lazy: true });\n imask.resolve(raw, { input: true });\n // При пустом raw _appendEager не вызывается автоматически (str пустой).\n // Заполняем leading fixed chars только при фокусе (lazy=false),\n // при blur (lazy=true) с пустым raw поле должно быть пустым.\n if (focused && !raw && (imask.eager === 'append' || imask.eager === true)) {\n imask._appendEager();\n }\n const lazyValue = imask.value;\n\n let displayValue = lazyValue;\n let typedValue = lazyValue;\n\n // Для focused/alwaysShowMask пересчитываем с lazy=false,\n // чтобы получить placeholders в displayValue\n if (!lazy) {\n imask.updateOptions({ lazy: false });\n imask.resolve(raw, { input: true });\n displayValue = imask.displayValue;\n }\n\n const outValue = raw === '' ? '' : imask.unmaskedValue;\n return {\n displayValue,\n typedValue,\n typedLength: typedValue.length,\n outputValue: props.unmask ? outValue : lazyValue,\n isComplete: imask.isComplete,\n acceptedLength: imask.unmaskedValue.length,\n };\n }\n\n function applyPaste(currentRaw: string, rawCursorPos: number, pasted: string): PasteResult {\n // Позиция вставки в raw: вставляем после rawCursorPos символов\n const before = currentRaw.slice(0, rawCursorPos);\n const after = currentRaw.slice(rawCursorPos);\n // pasted может быть отформатированным (с литералами маски) — извлекаем raw\n const pastedRaw = extractRaw(pasted, { imask });\n const candidate = before + pastedRaw + after;\n\n imask.unmaskedValue = candidate;\n const accepted = imask.rawInputValue;\n\n return {\n raw: accepted,\n overflow: accepted.length < candidate.length,\n };\n }\n\n return { compute, applyPaste, slotMap, imask };\n}\n"]}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import type React from 'react';
|
|
2
|
-
import type { MaskedCoreProps } from './MaskedCore.types.js';
|
|
3
|
-
type MaskedCoreHandlerProps = Pick<MaskedCoreProps, 'maskState' | 'slotMap' | 'engine' | 'currentRaw' | 'onRawChange' | 'onUnexpectedInput' | 'onUndo' | 'onRedo' | 'coreInputRef' | 'onKeyDown' | 'onMouseUp' | 'onInput' | 'onSelect' | 'onFocus' | 'onPaste'>;
|
|
4
|
-
/**
|
|
5
|
-
* Собирает обработчики DOM-событий для {@link MaskedCore}.
|
|
6
|
-
* Инкапсулирует логику ввода, навигации, clipboard и undo/redo.
|
|
7
|
-
*
|
|
8
|
-
* @param props — состояние маски, движок и колбэки от MaskedInputV2.
|
|
9
|
-
* @returns refs и обработчики для прямого `<input>`.
|
|
10
|
-
*/
|
|
11
|
-
export declare function useMaskedCoreHandlers(props: MaskedCoreHandlerProps): {
|
|
12
|
-
pendingCursorRef: React.RefObject<number | null>;
|
|
13
|
-
selectionRange: {
|
|
14
|
-
start: number;
|
|
15
|
-
end: number;
|
|
16
|
-
};
|
|
17
|
-
syncSelection: (el: HTMLInputElement) => void;
|
|
18
|
-
handleChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
|
|
19
|
-
handleKeyDown: (e: React.KeyboardEvent<HTMLInputElement>) => void;
|
|
20
|
-
handleSelect: (e?: React.SyntheticEvent<HTMLInputElement>) => void;
|
|
21
|
-
handlePaste: (e: React.ClipboardEvent<HTMLInputElement>) => void;
|
|
22
|
-
handleCopy: (e: React.ClipboardEvent<HTMLInputElement>) => void;
|
|
23
|
-
handleCut: (e: React.ClipboardEvent<HTMLInputElement>) => void;
|
|
24
|
-
handleInput: (e: React.ChangeEvent<HTMLInputElement>) => void;
|
|
25
|
-
handleMouseUp: (e: React.MouseEvent<HTMLInputElement>) => void;
|
|
26
|
-
handleFocus: (e: React.FocusEvent<HTMLInputElement>) => void;
|
|
27
|
-
};
|
|
28
|
-
export {};
|
|
@@ -1,190 +0,0 @@
|
|
|
1
|
-
import { useCallback, useRef, useState } from 'react';
|
|
2
|
-
import { isKeyArrow, isKeyBackspace, isKeyDelete, isKeyEnd, isKeyHome, isShortcutRedo, isShortcutSelectAll, isShortcutUndo, } from '../../../lib/events/keyboard/identifiers.js';
|
|
3
|
-
import { scrollInputCaretIntoView } from '../../../lib/scrollInputCaretIntoView.js';
|
|
4
|
-
import { extractRaw } from './extractRaw.js';
|
|
5
|
-
import { computeMaskedCut, getMaskedCopyText } from './maskedCoreClipboard.js';
|
|
6
|
-
import { computeMaskedDeletion } from './maskedCoreDeletion.js';
|
|
7
|
-
import { applyMaskedInputChange } from './maskedCoreInputChange.js';
|
|
8
|
-
import { calcNavigationSelection } from './maskedCoreNavigation.js';
|
|
9
|
-
/**
|
|
10
|
-
* Собирает обработчики DOM-событий для {@link MaskedCore}.
|
|
11
|
-
* Инкапсулирует логику ввода, навигации, clipboard и undo/redo.
|
|
12
|
-
*
|
|
13
|
-
* @param props — состояние маски, движок и колбэки от MaskedInputV2.
|
|
14
|
-
* @returns refs и обработчики для прямого `<input>`.
|
|
15
|
-
*/
|
|
16
|
-
export function useMaskedCoreHandlers(props) {
|
|
17
|
-
var maskState = props.maskState, slotMap = props.slotMap, engine = props.engine, currentRaw = props.currentRaw, onRawChange = props.onRawChange, onUnexpectedInput = props.onUnexpectedInput, onUndo = props.onUndo, onRedo = props.onRedo, coreInputRef = props.coreInputRef, inputOnKeyDown = props.onKeyDown, inputOnMouseUp = props.onMouseUp, inputOnInput = props.onInput, inputOnSelect = props.onSelect, inputOnFocus = props.onFocus, inputOnPaste = props.onPaste;
|
|
18
|
-
var pendingCursorRef = useRef(null);
|
|
19
|
-
var lastSelectionRef = useRef({ start: 0, end: 0 });
|
|
20
|
-
var _a = useState({ start: 0, end: 0 }), selectionRange = _a[0], setSelectionRange = _a[1];
|
|
21
|
-
var syncSelection = useCallback(function (el) {
|
|
22
|
-
var _a, _b;
|
|
23
|
-
var start = (_a = el.selectionStart) !== null && _a !== void 0 ? _a : 0;
|
|
24
|
-
var end = (_b = el.selectionEnd) !== null && _b !== void 0 ? _b : 0;
|
|
25
|
-
lastSelectionRef.current = { start: start, end: end };
|
|
26
|
-
setSelectionRange(function (prev) { return (prev.start === start && prev.end === end ? prev : { start: start, end: end }); });
|
|
27
|
-
}, []);
|
|
28
|
-
function setPendingCursor(pos) {
|
|
29
|
-
var _a;
|
|
30
|
-
pendingCursorRef.current = pos;
|
|
31
|
-
(_a = coreInputRef.current) === null || _a === void 0 ? void 0 : _a.setSelectionRange(pos, pos);
|
|
32
|
-
}
|
|
33
|
-
function handleChange(e) {
|
|
34
|
-
var _a;
|
|
35
|
-
var _b = applyMaskedInputChange({
|
|
36
|
-
browserDraft: e.target.value,
|
|
37
|
-
cursorPos: (_a = e.target.selectionStart) !== null && _a !== void 0 ? _a : 0,
|
|
38
|
-
typedValue: maskState.typedValue,
|
|
39
|
-
currentRaw: currentRaw,
|
|
40
|
-
oldSelection: lastSelectionRef.current,
|
|
41
|
-
engine: engine,
|
|
42
|
-
}), newRaw = _b.newRaw, cursorPos = _b.cursorPos, rejected = _b.rejected;
|
|
43
|
-
setPendingCursor(cursorPos);
|
|
44
|
-
if (rejected) {
|
|
45
|
-
onUnexpectedInput();
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
onRawChange(newRaw, 'input', cursorPos);
|
|
49
|
-
}
|
|
50
|
-
function handleKeyDown(e) {
|
|
51
|
-
var el = coreInputRef.current;
|
|
52
|
-
if (isShortcutSelectAll(e) || isKeyArrow(e) || isKeyEnd(e) || isKeyHome(e) || isKeyBackspace(e) || isKeyDelete(e)) {
|
|
53
|
-
pendingCursorRef.current = null;
|
|
54
|
-
}
|
|
55
|
-
if (isShortcutSelectAll(e)) {
|
|
56
|
-
e.preventDefault();
|
|
57
|
-
el === null || el === void 0 ? void 0 : el.setSelectionRange(0, maskState.typedLength);
|
|
58
|
-
if (el) {
|
|
59
|
-
scrollInputCaretIntoView(el);
|
|
60
|
-
syncSelection(el);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
else if (isKeyArrow(e) || isKeyEnd(e) || isKeyHome(e)) {
|
|
64
|
-
e.preventDefault();
|
|
65
|
-
var _a = calcNavigationSelection(e, maskState.typedLength, el), start = _a[0], end = _a[1], dir = _a[2];
|
|
66
|
-
el === null || el === void 0 ? void 0 : el.setSelectionRange(start, end, dir);
|
|
67
|
-
if (el) {
|
|
68
|
-
scrollInputCaretIntoView(el);
|
|
69
|
-
syncSelection(el);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
else if (isKeyBackspace(e) || isKeyDelete(e)) {
|
|
73
|
-
e.preventDefault();
|
|
74
|
-
if (el) {
|
|
75
|
-
handleDeletion(isKeyBackspace(e), el);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
else if (isShortcutUndo(e)) {
|
|
79
|
-
e.preventDefault();
|
|
80
|
-
onUndo === null || onUndo === void 0 ? void 0 : onUndo();
|
|
81
|
-
}
|
|
82
|
-
else if (isShortcutRedo(e)) {
|
|
83
|
-
e.preventDefault();
|
|
84
|
-
onRedo === null || onRedo === void 0 ? void 0 : onRedo();
|
|
85
|
-
}
|
|
86
|
-
inputOnKeyDown === null || inputOnKeyDown === void 0 ? void 0 : inputOnKeyDown(e);
|
|
87
|
-
}
|
|
88
|
-
function handleDeletion(isBackspace, el) {
|
|
89
|
-
var _a, _b;
|
|
90
|
-
var result = computeMaskedDeletion({
|
|
91
|
-
isBackspace: isBackspace,
|
|
92
|
-
selStart: (_a = el.selectionStart) !== null && _a !== void 0 ? _a : 0,
|
|
93
|
-
selEnd: (_b = el.selectionEnd) !== null && _b !== void 0 ? _b : 0,
|
|
94
|
-
currentRaw: currentRaw,
|
|
95
|
-
slotMap: slotMap,
|
|
96
|
-
});
|
|
97
|
-
if (!result) {
|
|
98
|
-
onUnexpectedInput();
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
pendingCursorRef.current = result.cursorPos;
|
|
102
|
-
onRawChange(result.newRaw, 'input', result.cursorPos);
|
|
103
|
-
}
|
|
104
|
-
function handleSelect(e) {
|
|
105
|
-
var _a, _b, _c;
|
|
106
|
-
var el = coreInputRef.current;
|
|
107
|
-
if (!el) {
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
var max = maskState.typedLength;
|
|
111
|
-
var start = (_a = el.selectionStart) !== null && _a !== void 0 ? _a : 0;
|
|
112
|
-
var end = (_b = el.selectionEnd) !== null && _b !== void 0 ? _b : 0;
|
|
113
|
-
lastSelectionRef.current = { start: start, end: end };
|
|
114
|
-
if (end > max) {
|
|
115
|
-
el.setSelectionRange(Math.min(start, max), max, (_c = el.selectionDirection) !== null && _c !== void 0 ? _c : 'none');
|
|
116
|
-
}
|
|
117
|
-
syncSelection(el);
|
|
118
|
-
if (e) {
|
|
119
|
-
inputOnSelect === null || inputOnSelect === void 0 ? void 0 : inputOnSelect(e);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
function handlePaste(e) {
|
|
123
|
-
inputOnPaste === null || inputOnPaste === void 0 ? void 0 : inputOnPaste(e);
|
|
124
|
-
e.preventDefault();
|
|
125
|
-
if (!e.clipboardData) {
|
|
126
|
-
return;
|
|
127
|
-
}
|
|
128
|
-
onRawChange(e.clipboardData.getData('text/plain'), 'paste');
|
|
129
|
-
}
|
|
130
|
-
function handleCopy(e) {
|
|
131
|
-
var _a, _b;
|
|
132
|
-
var el = coreInputRef.current;
|
|
133
|
-
if (!el) {
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
var start = (_a = el.selectionStart) !== null && _a !== void 0 ? _a : 0;
|
|
137
|
-
var end = (_b = el.selectionEnd) !== null && _b !== void 0 ? _b : 0;
|
|
138
|
-
e.clipboardData.setData('text/plain', getMaskedCopyText(maskState.displayValue, start, end));
|
|
139
|
-
e.preventDefault();
|
|
140
|
-
}
|
|
141
|
-
function handleCut(e) {
|
|
142
|
-
var _a, _b;
|
|
143
|
-
handleCopy(e);
|
|
144
|
-
var el = coreInputRef.current;
|
|
145
|
-
if (!el) {
|
|
146
|
-
return;
|
|
147
|
-
}
|
|
148
|
-
var start = (_a = el.selectionStart) !== null && _a !== void 0 ? _a : 0;
|
|
149
|
-
var end = (_b = el.selectionEnd) !== null && _b !== void 0 ? _b : 0;
|
|
150
|
-
var _c = computeMaskedCut(start, end, currentRaw, slotMap), newRaw = _c.newRaw, cursorPos = _c.cursorPos;
|
|
151
|
-
pendingCursorRef.current = cursorPos;
|
|
152
|
-
onRawChange(newRaw, 'input', cursorPos);
|
|
153
|
-
}
|
|
154
|
-
function handleInput(e) {
|
|
155
|
-
inputOnInput === null || inputOnInput === void 0 ? void 0 : inputOnInput(e);
|
|
156
|
-
}
|
|
157
|
-
function handleMouseUp(e) {
|
|
158
|
-
handleSelect();
|
|
159
|
-
inputOnMouseUp === null || inputOnMouseUp === void 0 ? void 0 : inputOnMouseUp(e);
|
|
160
|
-
}
|
|
161
|
-
function handleFocus(e) {
|
|
162
|
-
var _a;
|
|
163
|
-
var domValue = e.currentTarget.value;
|
|
164
|
-
if (domValue !== maskState.typedValue) {
|
|
165
|
-
var syncedRaw = extractRaw(domValue, engine);
|
|
166
|
-
if (syncedRaw !== currentRaw) {
|
|
167
|
-
onRawChange(syncedRaw, 'input');
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
var clickedPos = (_a = e.target.selectionStart) !== null && _a !== void 0 ? _a : 0;
|
|
171
|
-
pendingCursorRef.current = Math.min(clickedPos, maskState.typedLength);
|
|
172
|
-
inputOnFocus === null || inputOnFocus === void 0 ? void 0 : inputOnFocus(e);
|
|
173
|
-
syncSelection(e.currentTarget);
|
|
174
|
-
}
|
|
175
|
-
return {
|
|
176
|
-
pendingCursorRef: pendingCursorRef,
|
|
177
|
-
selectionRange: selectionRange,
|
|
178
|
-
syncSelection: syncSelection,
|
|
179
|
-
handleChange: handleChange,
|
|
180
|
-
handleKeyDown: handleKeyDown,
|
|
181
|
-
handleSelect: handleSelect,
|
|
182
|
-
handlePaste: handlePaste,
|
|
183
|
-
handleCopy: handleCopy,
|
|
184
|
-
handleCut: handleCut,
|
|
185
|
-
handleInput: handleInput,
|
|
186
|
-
handleMouseUp: handleMouseUp,
|
|
187
|
-
handleFocus: handleFocus,
|
|
188
|
-
};
|
|
189
|
-
}
|
|
190
|
-
//# sourceMappingURL=useMaskedCoreHandlers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useMaskedCoreHandlers.js","sourceRoot":"","sources":["useMaskedCoreHandlers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEtD,OAAO,EACL,UAAU,EACV,cAAc,EACd,WAAW,EACX,QAAQ,EACR,SAAS,EACT,cAAc,EACd,mBAAmB,EACnB,cAAc,GACf,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAqBpE;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAA6B;IAE/D,IAAA,SAAS,GAeP,KAAK,UAfE,EACT,OAAO,GAcL,KAAK,QAdA,EACP,MAAM,GAaJ,KAAK,OAbD,EACN,UAAU,GAYR,KAAK,WAZG,EACV,WAAW,GAWT,KAAK,YAXI,EACX,iBAAiB,GAUf,KAAK,kBAVU,EACjB,MAAM,GASJ,KAAK,OATD,EACN,MAAM,GAQJ,KAAK,OARD,EACN,YAAY,GAOV,KAAK,aAPK,EACD,cAAc,GAMvB,KAAK,UANkB,EACd,cAAc,GAKvB,KAAK,UALkB,EAChB,YAAY,GAInB,KAAK,QAJc,EACX,aAAa,GAGrB,KAAK,SAHgB,EACd,YAAY,GAEnB,KAAK,QAFc,EACZ,YAAY,GACnB,KAAK,QADc,CACb;IAEV,IAAM,gBAAgB,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;IACrD,IAAM,gBAAgB,GAAG,MAAM,CAAiC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAChF,IAAA,KAAsC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAnE,cAAc,QAAA,EAAE,iBAAiB,QAAkC,CAAC;IAE3E,IAAM,aAAa,GAAG,WAAW,CAAC,UAAC,EAAoB;;QACrD,IAAM,KAAK,GAAG,MAAA,EAAE,CAAC,cAAc,mCAAI,CAAC,CAAC;QACrC,IAAM,GAAG,GAAG,MAAA,EAAE,CAAC,YAAY,mCAAI,CAAC,CAAC;QACjC,gBAAgB,CAAC,OAAO,GAAG,EAAE,KAAK,OAAA,EAAE,GAAG,KAAA,EAAE,CAAC;QAC1C,iBAAiB,CAAC,UAAC,IAAI,IAAK,OAAA,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,OAAA,EAAE,GAAG,KAAA,EAAE,CAAC,EAAlE,CAAkE,CAAC,CAAC;IAClG,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,gBAAgB,CAAC,GAAW;;QACnC,gBAAgB,CAAC,OAAO,GAAG,GAAG,CAAC;QAC/B,MAAA,YAAY,CAAC,OAAO,0CAAE,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACpD,CAAC;IAED,SAAS,YAAY,CAAC,CAAsC;;QACpD,IAAA,KAAkC,sBAAsB,CAAC;YAC7D,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK;YAC5B,SAAS,EAAE,MAAA,CAAC,CAAC,MAAM,CAAC,cAAc,mCAAI,CAAC;YACvC,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,UAAU,YAAA;YACV,YAAY,EAAE,gBAAgB,CAAC,OAAO;YACtC,MAAM,QAAA;SACP,CAAC,EAPM,MAAM,YAAA,EAAE,SAAS,eAAA,EAAE,QAAQ,cAOjC,CAAC;QAEH,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAE5B,IAAI,QAAQ,EAAE,CAAC;YACb,iBAAiB,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED,SAAS,aAAa,CAAC,CAAwC;QAC7D,IAAM,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC;QAEhC,IAAI,mBAAmB,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;YAClH,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC;QAClC,CAAC;QAED,IAAI,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3B,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,iBAAiB,CAAC,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;YAChD,IAAI,EAAE,EAAE,CAAC;gBACP,wBAAwB,CAAC,EAAE,CAAC,CAAC;gBAC7B,aAAa,CAAC,EAAE,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;aAAM,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,CAAC,CAAC,cAAc,EAAE,CAAC;YACb,IAAA,KAAoB,uBAAuB,CAAC,CAAC,EAAE,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC,EAAxE,KAAK,QAAA,EAAE,GAAG,QAAA,EAAE,GAAG,QAAyD,CAAC;YAChF,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YACvC,IAAI,EAAE,EAAE,CAAC;gBACP,wBAAwB,CAAC,EAAE,CAAC,CAAC;gBAC7B,aAAa,CAAC,EAAE,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;aAAM,IAAI,cAAc,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAI,EAAE,EAAE,CAAC;gBACP,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;aAAM,IAAI,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,MAAM,aAAN,MAAM,uBAAN,MAAM,EAAI,CAAC;QACb,CAAC;aAAM,IAAI,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,MAAM,aAAN,MAAM,uBAAN,MAAM,EAAI,CAAC;QACb,CAAC;QAED,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAG,CAAC,CAAC,CAAC;IACtB,CAAC;IAED,SAAS,cAAc,CAAC,WAAoB,EAAE,EAAoB;;QAChE,IAAM,MAAM,GAAG,qBAAqB,CAAC;YACnC,WAAW,aAAA;YACX,QAAQ,EAAE,MAAA,EAAE,CAAC,cAAc,mCAAI,CAAC;YAChC,MAAM,EAAE,MAAA,EAAE,CAAC,YAAY,mCAAI,CAAC;YAC5B,UAAU,YAAA;YACV,OAAO,SAAA;SACR,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,iBAAiB,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,gBAAgB,CAAC,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;QAC5C,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC;IAED,SAAS,YAAY,CAAC,CAA0C;;QAC9D,IAAM,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO;QACT,CAAC;QAED,IAAM,GAAG,GAAG,SAAS,CAAC,WAAW,CAAC;QAClC,IAAM,KAAK,GAAG,MAAA,EAAE,CAAC,cAAc,mCAAI,CAAC,CAAC;QACrC,IAAM,GAAG,GAAG,MAAA,EAAE,CAAC,YAAY,mCAAI,CAAC,CAAC;QACjC,gBAAgB,CAAC,OAAO,GAAG,EAAE,KAAK,OAAA,EAAE,GAAG,KAAA,EAAE,CAAC;QAE1C,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;YACd,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAA,EAAE,CAAC,kBAAkB,mCAAI,MAAM,CAAC,CAAC;QACnF,CAAC;QAED,aAAa,CAAC,EAAE,CAAC,CAAC;QAElB,IAAI,CAAC,EAAE,CAAC;YACN,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAG,CAAC,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,SAAS,WAAW,CAAC,CAAyC;QAC5D,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAG,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,cAAc,EAAE,CAAC;QAEnB,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED,SAAS,UAAU,CAAC,CAAyC;;QAC3D,IAAM,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO;QACT,CAAC;QAED,IAAM,KAAK,GAAG,MAAA,EAAE,CAAC,cAAc,mCAAI,CAAC,CAAC;QACrC,IAAM,GAAG,GAAG,MAAA,EAAE,CAAC,YAAY,mCAAI,CAAC,CAAC;QACjC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,EAAE,iBAAiB,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7F,CAAC,CAAC,cAAc,EAAE,CAAC;IACrB,CAAC;IAED,SAAS,SAAS,CAAC,CAAyC;;QAC1D,UAAU,CAAC,CAAC,CAAC,CAAC;QAEd,IAAM,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO;QACT,CAAC;QAED,IAAM,KAAK,GAAG,MAAA,EAAE,CAAC,cAAc,mCAAI,CAAC,CAAC;QACrC,IAAM,GAAG,GAAG,MAAA,EAAE,CAAC,YAAY,mCAAI,CAAC,CAAC;QAC3B,IAAA,KAAwB,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,EAAvE,MAAM,YAAA,EAAE,SAAS,eAAsD,CAAC;QAEhF,gBAAgB,CAAC,OAAO,GAAG,SAAS,CAAC;QACrC,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED,SAAS,WAAW,CAAC,CAAsC;QACzD,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAG,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,SAAS,aAAa,CAAC,CAAqC;QAC1D,YAAY,EAAE,CAAC;QACf,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAG,CAAC,CAAC,CAAC;IACtB,CAAC;IAED,SAAS,WAAW,CAAC,CAAqC;;QACxD,IAAM,QAAQ,GAAG,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC;QACvC,IAAI,QAAQ,KAAK,SAAS,CAAC,UAAU,EAAE,CAAC;YACtC,IAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC/C,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;gBAC7B,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QAED,IAAM,UAAU,GAAG,MAAA,CAAC,CAAC,MAAM,CAAC,cAAc,mCAAI,CAAC,CAAC;QAChD,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;QACvE,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAG,CAAC,CAAC,CAAC;QAClB,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IAED,OAAO;QACL,gBAAgB,kBAAA;QAChB,cAAc,gBAAA;QACd,aAAa,eAAA;QACb,YAAY,cAAA;QACZ,aAAa,eAAA;QACb,YAAY,cAAA;QACZ,WAAW,aAAA;QACX,UAAU,YAAA;QACV,SAAS,WAAA;QACT,WAAW,aAAA;QACX,aAAa,eAAA;QACb,WAAW,aAAA;KACZ,CAAC;AACJ,CAAC","sourcesContent":["import type React from 'react';\nimport { useCallback, useRef, useState } from 'react';\n\nimport {\n isKeyArrow,\n isKeyBackspace,\n isKeyDelete,\n isKeyEnd,\n isKeyHome,\n isShortcutRedo,\n isShortcutSelectAll,\n isShortcutUndo,\n} from '../../../lib/events/keyboard/identifiers.js';\nimport { scrollInputCaretIntoView } from '../../../lib/scrollInputCaretIntoView.js';\nimport { extractRaw } from './extractRaw.js';\nimport type { MaskedCoreProps } from './MaskedCore.types.js';\nimport { computeMaskedCut, getMaskedCopyText } from './maskedCoreClipboard.js';\nimport { computeMaskedDeletion } from './maskedCoreDeletion.js';\nimport { applyMaskedInputChange } from './maskedCoreInputChange.js';\nimport { calcNavigationSelection } from './maskedCoreNavigation.js';\n\ntype MaskedCoreHandlerProps = Pick<\n MaskedCoreProps,\n | 'maskState'\n | 'slotMap'\n | 'engine'\n | 'currentRaw'\n | 'onRawChange'\n | 'onUnexpectedInput'\n | 'onUndo'\n | 'onRedo'\n | 'coreInputRef'\n | 'onKeyDown'\n | 'onMouseUp'\n | 'onInput'\n | 'onSelect'\n | 'onFocus'\n | 'onPaste'\n>;\n\n/**\n * Собирает обработчики DOM-событий для {@link MaskedCore}.\n * Инкапсулирует логику ввода, навигации, clipboard и undo/redo.\n *\n * @param props — состояние маски, движок и колбэки от MaskedInputV2.\n * @returns refs и обработчики для прямого `<input>`.\n */\nexport function useMaskedCoreHandlers(props: MaskedCoreHandlerProps) {\n const {\n maskState,\n slotMap,\n engine,\n currentRaw,\n onRawChange,\n onUnexpectedInput,\n onUndo,\n onRedo,\n coreInputRef,\n onKeyDown: inputOnKeyDown,\n onMouseUp: inputOnMouseUp,\n onInput: inputOnInput,\n onSelect: inputOnSelect,\n onFocus: inputOnFocus,\n onPaste: inputOnPaste,\n } = props;\n\n const pendingCursorRef = useRef<number | null>(null);\n const lastSelectionRef = useRef<{ start: number; end: number }>({ start: 0, end: 0 });\n const [selectionRange, setSelectionRange] = useState({ start: 0, end: 0 });\n\n const syncSelection = useCallback((el: HTMLInputElement) => {\n const start = el.selectionStart ?? 0;\n const end = el.selectionEnd ?? 0;\n lastSelectionRef.current = { start, end };\n setSelectionRange((prev) => (prev.start === start && prev.end === end ? prev : { start, end }));\n }, []);\n\n function setPendingCursor(pos: number) {\n pendingCursorRef.current = pos;\n coreInputRef.current?.setSelectionRange(pos, pos);\n }\n\n function handleChange(e: React.ChangeEvent<HTMLInputElement>) {\n const { newRaw, cursorPos, rejected } = applyMaskedInputChange({\n browserDraft: e.target.value,\n cursorPos: e.target.selectionStart ?? 0,\n typedValue: maskState.typedValue,\n currentRaw,\n oldSelection: lastSelectionRef.current,\n engine,\n });\n\n setPendingCursor(cursorPos);\n\n if (rejected) {\n onUnexpectedInput();\n return;\n }\n\n onRawChange(newRaw, 'input', cursorPos);\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n const el = coreInputRef.current;\n\n if (isShortcutSelectAll(e) || isKeyArrow(e) || isKeyEnd(e) || isKeyHome(e) || isKeyBackspace(e) || isKeyDelete(e)) {\n pendingCursorRef.current = null;\n }\n\n if (isShortcutSelectAll(e)) {\n e.preventDefault();\n el?.setSelectionRange(0, maskState.typedLength);\n if (el) {\n scrollInputCaretIntoView(el);\n syncSelection(el);\n }\n } else if (isKeyArrow(e) || isKeyEnd(e) || isKeyHome(e)) {\n e.preventDefault();\n const [start, end, dir] = calcNavigationSelection(e, maskState.typedLength, el);\n el?.setSelectionRange(start, end, dir);\n if (el) {\n scrollInputCaretIntoView(el);\n syncSelection(el);\n }\n } else if (isKeyBackspace(e) || isKeyDelete(e)) {\n e.preventDefault();\n if (el) {\n handleDeletion(isKeyBackspace(e), el);\n }\n } else if (isShortcutUndo(e)) {\n e.preventDefault();\n onUndo?.();\n } else if (isShortcutRedo(e)) {\n e.preventDefault();\n onRedo?.();\n }\n\n inputOnKeyDown?.(e);\n }\n\n function handleDeletion(isBackspace: boolean, el: HTMLInputElement) {\n const result = computeMaskedDeletion({\n isBackspace,\n selStart: el.selectionStart ?? 0,\n selEnd: el.selectionEnd ?? 0,\n currentRaw,\n slotMap,\n });\n\n if (!result) {\n onUnexpectedInput();\n return;\n }\n\n pendingCursorRef.current = result.cursorPos;\n onRawChange(result.newRaw, 'input', result.cursorPos);\n }\n\n function handleSelect(e?: React.SyntheticEvent<HTMLInputElement>) {\n const el = coreInputRef.current;\n if (!el) {\n return;\n }\n\n const max = maskState.typedLength;\n const start = el.selectionStart ?? 0;\n const end = el.selectionEnd ?? 0;\n lastSelectionRef.current = { start, end };\n\n if (end > max) {\n el.setSelectionRange(Math.min(start, max), max, el.selectionDirection ?? 'none');\n }\n\n syncSelection(el);\n\n if (e) {\n inputOnSelect?.(e);\n }\n }\n\n function handlePaste(e: React.ClipboardEvent<HTMLInputElement>) {\n inputOnPaste?.(e);\n e.preventDefault();\n\n if (!e.clipboardData) {\n return;\n }\n\n onRawChange(e.clipboardData.getData('text/plain'), 'paste');\n }\n\n function handleCopy(e: React.ClipboardEvent<HTMLInputElement>) {\n const el = coreInputRef.current;\n if (!el) {\n return;\n }\n\n const start = el.selectionStart ?? 0;\n const end = el.selectionEnd ?? 0;\n e.clipboardData.setData('text/plain', getMaskedCopyText(maskState.displayValue, start, end));\n e.preventDefault();\n }\n\n function handleCut(e: React.ClipboardEvent<HTMLInputElement>) {\n handleCopy(e);\n\n const el = coreInputRef.current;\n if (!el) {\n return;\n }\n\n const start = el.selectionStart ?? 0;\n const end = el.selectionEnd ?? 0;\n const { newRaw, cursorPos } = computeMaskedCut(start, end, currentRaw, slotMap);\n\n pendingCursorRef.current = cursorPos;\n onRawChange(newRaw, 'input', cursorPos);\n }\n\n function handleInput(e: React.ChangeEvent<HTMLInputElement>) {\n inputOnInput?.(e);\n }\n\n function handleMouseUp(e: React.MouseEvent<HTMLInputElement>) {\n handleSelect();\n inputOnMouseUp?.(e);\n }\n\n function handleFocus(e: React.FocusEvent<HTMLInputElement>) {\n const domValue = e.currentTarget.value;\n if (domValue !== maskState.typedValue) {\n const syncedRaw = extractRaw(domValue, engine);\n if (syncedRaw !== currentRaw) {\n onRawChange(syncedRaw, 'input');\n }\n }\n\n const clickedPos = e.target.selectionStart ?? 0;\n pendingCursorRef.current = Math.min(clickedPos, maskState.typedLength);\n inputOnFocus?.(e);\n syncSelection(e.currentTarget);\n }\n\n return {\n pendingCursorRef,\n selectionRange,\n syncSelection,\n handleChange,\n handleKeyDown,\n handleSelect,\n handlePaste,\n handleCopy,\n handleCut,\n handleInput,\n handleMouseUp,\n handleFocus,\n };\n}\n"]}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { HTMLMaskElement } from './html-mask-element.js';
|
|
2
|
-
export type InputElement = HTMLTextAreaElement | HTMLInputElement;
|
|
3
|
-
/** Bridge between InputElement and {@link Masked} */
|
|
4
|
-
export declare class HTMLInputMaskElement extends HTMLMaskElement {
|
|
5
|
-
/** InputElement to use mask on */
|
|
6
|
-
input: InputElement;
|
|
7
|
-
constructor(input: InputElement);
|
|
8
|
-
/** Returns InputElement selection start */
|
|
9
|
-
get _unsafeSelectionStart(): number | null;
|
|
10
|
-
/** Returns InputElement selection end */
|
|
11
|
-
get _unsafeSelectionEnd(): number | null;
|
|
12
|
-
/** Sets InputElement selection */
|
|
13
|
-
_unsafeSelect(start: number, end: number): void;
|
|
14
|
-
get value(): string;
|
|
15
|
-
set value(value: string);
|
|
16
|
-
}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
var __extends = (this && this.__extends) || (function () {
|
|
2
|
-
var extendStatics = function (d, b) {
|
|
3
|
-
extendStatics = Object.setPrototypeOf ||
|
|
4
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
5
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
6
|
-
return extendStatics(d, b);
|
|
7
|
-
};
|
|
8
|
-
return function (d, b) {
|
|
9
|
-
if (typeof b !== "function" && b !== null)
|
|
10
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
11
|
-
extendStatics(d, b);
|
|
12
|
-
function __() { this.constructor = d; }
|
|
13
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
14
|
-
};
|
|
15
|
-
})();
|
|
16
|
-
/* eslint-disable eqeqeq */
|
|
17
|
-
import { HTMLMaskElement } from './html-mask-element.js';
|
|
18
|
-
/** Bridge between InputElement and {@link Masked} */
|
|
19
|
-
var HTMLInputMaskElement = /** @class */ (function (_super) {
|
|
20
|
-
__extends(HTMLInputMaskElement, _super);
|
|
21
|
-
function HTMLInputMaskElement(input) {
|
|
22
|
-
var _this = _super.call(this, input) || this;
|
|
23
|
-
_this.input = input;
|
|
24
|
-
return _this;
|
|
25
|
-
}
|
|
26
|
-
Object.defineProperty(HTMLInputMaskElement.prototype, "_unsafeSelectionStart", {
|
|
27
|
-
/** Returns InputElement selection start */
|
|
28
|
-
get: function () {
|
|
29
|
-
return this.input.selectionStart != null ? this.input.selectionStart : this.value.length;
|
|
30
|
-
},
|
|
31
|
-
enumerable: false,
|
|
32
|
-
configurable: true
|
|
33
|
-
});
|
|
34
|
-
Object.defineProperty(HTMLInputMaskElement.prototype, "_unsafeSelectionEnd", {
|
|
35
|
-
/** Returns InputElement selection end */
|
|
36
|
-
get: function () {
|
|
37
|
-
return this.input.selectionEnd;
|
|
38
|
-
},
|
|
39
|
-
enumerable: false,
|
|
40
|
-
configurable: true
|
|
41
|
-
});
|
|
42
|
-
/** Sets InputElement selection */
|
|
43
|
-
HTMLInputMaskElement.prototype._unsafeSelect = function (start, end) {
|
|
44
|
-
this.input.setSelectionRange(start, end);
|
|
45
|
-
};
|
|
46
|
-
Object.defineProperty(HTMLInputMaskElement.prototype, "value", {
|
|
47
|
-
get: function () {
|
|
48
|
-
return this.input.value;
|
|
49
|
-
},
|
|
50
|
-
set: function (value) {
|
|
51
|
-
this.input.value = value;
|
|
52
|
-
},
|
|
53
|
-
enumerable: false,
|
|
54
|
-
configurable: true
|
|
55
|
-
});
|
|
56
|
-
return HTMLInputMaskElement;
|
|
57
|
-
}(HTMLMaskElement));
|
|
58
|
-
export { HTMLInputMaskElement };
|
|
59
|
-
//# sourceMappingURL=html-input-mask-element.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"html-input-mask-element.js","sourceRoot":"","sources":["html-input-mask-element.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2BAA2B;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAIzD,qDAAqD;AACrD;IAA0C,wCAAe;IAIvD,8BAAY,KAAmB;QAC7B,YAAA,MAAK,YAAC,KAAK,CAAC,SAAC;QACb,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC;;IACrB,CAAC;IAGD,sBAAa,uDAAqB;QADlC,2CAA2C;aAC3C;YACE,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAC3F,CAAC;;;OAAA;IAGD,sBAAa,qDAAmB;QADhC,yCAAyC;aACzC;YACE,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;QACjC,CAAC;;;OAAA;IAED,kCAAkC;IAClC,4CAAa,GAAb,UAAc,KAAa,EAAE,GAAW;QACtC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC3C,CAAC;IAED,sBAAa,uCAAK;aAAlB;YACE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC1B,CAAC;aACD,UAAmB,KAAa;YAC9B,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QAC3B,CAAC;;;OAHA;IAIH,2BAAC;AAAD,CAAC,AA9BD,CAA0C,eAAe,GA8BxD","sourcesContent":["/* eslint-disable eqeqeq */\nimport { HTMLMaskElement } from './html-mask-element.js';\n\nexport type InputElement = HTMLTextAreaElement | HTMLInputElement;\n\n/** Bridge between InputElement and {@link Masked} */\nexport class HTMLInputMaskElement extends HTMLMaskElement {\n /** InputElement to use mask on */\n input!: InputElement;\n\n constructor(input: InputElement) {\n super(input);\n this.input = input;\n }\n\n /** Returns InputElement selection start */\n override get _unsafeSelectionStart(): number | null {\n return this.input.selectionStart != null ? this.input.selectionStart : this.value.length;\n }\n\n /** Returns InputElement selection end */\n override get _unsafeSelectionEnd(): number | null {\n return this.input.selectionEnd;\n }\n\n /** Sets InputElement selection */\n _unsafeSelect(start: number, end: number): void {\n this.input.setSelectionRange(start, end);\n }\n\n override get value(): string {\n return this.input.value;\n }\n override set value(value: string) {\n this.input.value = value;\n }\n}\n"]}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { MaskElement, type EventHandlers } from './mask-element.js';
|
|
2
|
-
/** Bridge between HTMLElement and {@link Masked} */
|
|
3
|
-
export declare abstract class HTMLMaskElement extends MaskElement {
|
|
4
|
-
/** HTMLElement to use mask on */
|
|
5
|
-
input: HTMLElement;
|
|
6
|
-
_handlers: EventHandlers;
|
|
7
|
-
abstract value: string;
|
|
8
|
-
constructor(input: HTMLElement);
|
|
9
|
-
get rootElement(): HTMLDocument;
|
|
10
|
-
/** Is element in focus */
|
|
11
|
-
get isActive(): boolean;
|
|
12
|
-
/** Binds HTMLElement events to mask internal events */
|
|
13
|
-
bindEvents(handlers: EventHandlers): void;
|
|
14
|
-
_onKeydown(e: KeyboardEvent): void;
|
|
15
|
-
_onBeforeinput(e: InputEvent): void;
|
|
16
|
-
_onCompositionEnd(e: CompositionEvent): void;
|
|
17
|
-
_onInput(e: InputEvent): void;
|
|
18
|
-
/** Unbinds HTMLElement events to mask internal events */
|
|
19
|
-
unbindEvents(): void;
|
|
20
|
-
}
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
var __extends = (this && this.__extends) || (function () {
|
|
2
|
-
var extendStatics = function (d, b) {
|
|
3
|
-
extendStatics = Object.setPrototypeOf ||
|
|
4
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
5
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
6
|
-
return extendStatics(d, b);
|
|
7
|
-
};
|
|
8
|
-
return function (d, b) {
|
|
9
|
-
if (typeof b !== "function" && b !== null)
|
|
10
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
11
|
-
extendStatics(d, b);
|
|
12
|
-
function __() { this.constructor = d; }
|
|
13
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
14
|
-
};
|
|
15
|
-
})();
|
|
16
|
-
import { MaskElement } from './mask-element.js';
|
|
17
|
-
/** Bridge between HTMLElement and {@link Masked} */
|
|
18
|
-
var HTMLMaskElement = /** @class */ (function (_super) {
|
|
19
|
-
__extends(HTMLMaskElement, _super);
|
|
20
|
-
function HTMLMaskElement(input) {
|
|
21
|
-
var _this = _super.call(this) || this;
|
|
22
|
-
_this.input = input;
|
|
23
|
-
_this._onKeydown = _this._onKeydown.bind(_this);
|
|
24
|
-
_this._onInput = _this._onInput.bind(_this);
|
|
25
|
-
_this._onBeforeinput = _this._onBeforeinput.bind(_this);
|
|
26
|
-
_this._onCompositionEnd = _this._onCompositionEnd.bind(_this);
|
|
27
|
-
return _this;
|
|
28
|
-
}
|
|
29
|
-
Object.defineProperty(HTMLMaskElement.prototype, "rootElement", {
|
|
30
|
-
get: function () {
|
|
31
|
-
var _a, _b, _c;
|
|
32
|
-
return ((_c = (_b = (_a = this.input).getRootNode) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : document);
|
|
33
|
-
},
|
|
34
|
-
enumerable: false,
|
|
35
|
-
configurable: true
|
|
36
|
-
});
|
|
37
|
-
Object.defineProperty(HTMLMaskElement.prototype, "isActive", {
|
|
38
|
-
/** Is element in focus */
|
|
39
|
-
get: function () {
|
|
40
|
-
return this.input === this.rootElement.activeElement;
|
|
41
|
-
},
|
|
42
|
-
enumerable: false,
|
|
43
|
-
configurable: true
|
|
44
|
-
});
|
|
45
|
-
/** Binds HTMLElement events to mask internal events */
|
|
46
|
-
HTMLMaskElement.prototype.bindEvents = function (handlers) {
|
|
47
|
-
this.input.addEventListener('keydown', this._onKeydown);
|
|
48
|
-
this.input.addEventListener('input', this._onInput);
|
|
49
|
-
this.input.addEventListener('beforeinput', this._onBeforeinput);
|
|
50
|
-
this.input.addEventListener('compositionend', this._onCompositionEnd);
|
|
51
|
-
this.input.addEventListener('drop', handlers.drop);
|
|
52
|
-
this.input.addEventListener('click', handlers.click);
|
|
53
|
-
this.input.addEventListener('focus', handlers.focus);
|
|
54
|
-
this.input.addEventListener('blur', handlers.commit);
|
|
55
|
-
this._handlers = handlers;
|
|
56
|
-
};
|
|
57
|
-
HTMLMaskElement.prototype._onKeydown = function (e) {
|
|
58
|
-
var isUndo = (e.key === 'z' || e.key === 'Z') && (e.metaKey || e.ctrlKey) && !e.shiftKey;
|
|
59
|
-
var isRedo = ((e.key === 'y' || e.key === 'Y') && (e.metaKey || e.ctrlKey)) ||
|
|
60
|
-
((e.key === 'z' || e.key === 'Z') && e.shiftKey && (e.metaKey || e.ctrlKey));
|
|
61
|
-
if (this._handlers.redo && isRedo) {
|
|
62
|
-
e.preventDefault();
|
|
63
|
-
return this._handlers.redo(e);
|
|
64
|
-
}
|
|
65
|
-
if (this._handlers.undo && isUndo) {
|
|
66
|
-
e.preventDefault();
|
|
67
|
-
return this._handlers.undo(e);
|
|
68
|
-
}
|
|
69
|
-
if (!e.isComposing) {
|
|
70
|
-
this._handlers.selectionChange(e);
|
|
71
|
-
}
|
|
72
|
-
};
|
|
73
|
-
HTMLMaskElement.prototype._onBeforeinput = function (e) {
|
|
74
|
-
if (e.inputType === 'historyUndo' && this._handlers.undo) {
|
|
75
|
-
e.preventDefault();
|
|
76
|
-
return this._handlers.undo(e);
|
|
77
|
-
}
|
|
78
|
-
if (e.inputType === 'historyRedo' && this._handlers.redo) {
|
|
79
|
-
e.preventDefault();
|
|
80
|
-
return this._handlers.redo(e);
|
|
81
|
-
}
|
|
82
|
-
};
|
|
83
|
-
HTMLMaskElement.prototype._onCompositionEnd = function (e) {
|
|
84
|
-
this._handlers.input(e);
|
|
85
|
-
};
|
|
86
|
-
HTMLMaskElement.prototype._onInput = function (e) {
|
|
87
|
-
if (!e.isComposing) {
|
|
88
|
-
this._handlers.input(e);
|
|
89
|
-
}
|
|
90
|
-
};
|
|
91
|
-
/** Unbinds HTMLElement events to mask internal events */
|
|
92
|
-
HTMLMaskElement.prototype.unbindEvents = function () {
|
|
93
|
-
this.input.removeEventListener('keydown', this._onKeydown);
|
|
94
|
-
this.input.removeEventListener('input', this._onInput);
|
|
95
|
-
this.input.removeEventListener('beforeinput', this._onBeforeinput);
|
|
96
|
-
this.input.removeEventListener('compositionend', this._onCompositionEnd);
|
|
97
|
-
this.input.removeEventListener('drop', this._handlers.drop);
|
|
98
|
-
this.input.removeEventListener('click', this._handlers.click);
|
|
99
|
-
this.input.removeEventListener('focus', this._handlers.focus);
|
|
100
|
-
this.input.removeEventListener('blur', this._handlers.commit);
|
|
101
|
-
this._handlers = {};
|
|
102
|
-
};
|
|
103
|
-
return HTMLMaskElement;
|
|
104
|
-
}(MaskElement));
|
|
105
|
-
export { HTMLMaskElement };
|
|
106
|
-
//# sourceMappingURL=html-mask-element.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"html-mask-element.js","sourceRoot":"","sources":["html-mask-element.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAsB,MAAM,mBAAmB,CAAC;AAEpE,oDAAoD;AACpD;IAA8C,mCAAW;IAMvD,yBAAY,KAAkB;QAC5B,YAAA,MAAK,WAAE,SAAC;QACR,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,KAAI,CAAC,UAAU,GAAG,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;QAC7C,KAAI,CAAC,QAAQ,GAAG,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;QACzC,KAAI,CAAC,cAAc,GAAG,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;QACrD,KAAI,CAAC,iBAAiB,GAAG,KAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;;IAC7D,CAAC;IAED,sBAAI,wCAAW;aAAf;;YACE,OAAO,CAAC,MAAA,MAAA,MAAA,IAAI,CAAC,KAAK,EAAC,WAAW,kDAAI,mCAAI,QAAQ,CAAiB,CAAC;QAClE,CAAC;;;OAAA;IAGD,sBAAI,qCAAQ;QADZ,0BAA0B;aAC1B;YACE,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;QACvD,CAAC;;;OAAA;IAED,uDAAuD;IAC9C,oCAAU,GAAnB,UAAoB,QAAuB;QACzC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,UAA2B,CAAC,CAAC;QACzE,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAyB,CAAC,CAAC;QACrE,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,cAA+B,CAAC,CAAC;QACjF,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,IAAI,CAAC,iBAAkC,CAAC,CAAC;QACvF,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED,oCAAU,GAAV,UAAW,CAAgB;QACzB,IAAM,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC3F,IAAM,MAAM,GACV,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAE/E,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC;YAClC,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC;YAClC,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,wCAAc,GAAd,UAAe,CAAa;QAC1B,IAAI,CAAC,CAAC,SAAS,KAAK,aAAa,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACzD,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,CAAC,CAAC,SAAS,KAAK,aAAa,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACzD,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,2CAAiB,GAAjB,UAAkB,CAAmB;QACnC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED,kCAAQ,GAAR,UAAS,CAAa;QACpB,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,yDAAyD;IAChD,sCAAY,GAArB;QACE,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,UAA2B,CAAC,CAAC;QAC5E,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAyB,CAAC,CAAC;QACxE,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,cAA+B,CAAC,CAAC;QACpF,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,IAAI,CAAC,iBAAkC,CAAC,CAAC;QAC1F,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5D,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC9D,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC9D,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC9D,IAAI,CAAC,SAAS,GAAG,EAAmB,CAAC;IACvC,CAAC;IACH,sBAAC;AAAD,CAAC,AA5FD,CAA8C,WAAW,GA4FxD","sourcesContent":["import { MaskElement, type EventHandlers } from './mask-element.js';\n\n/** Bridge between HTMLElement and {@link Masked} */\nexport abstract class HTMLMaskElement extends MaskElement {\n /** HTMLElement to use mask on */\n input!: HTMLElement;\n _handlers!: EventHandlers;\n abstract value: string;\n\n constructor(input: HTMLElement) {\n super();\n this.input = input;\n this._onKeydown = this._onKeydown.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onBeforeinput = this._onBeforeinput.bind(this);\n this._onCompositionEnd = this._onCompositionEnd.bind(this);\n }\n\n get rootElement(): HTMLDocument {\n return (this.input.getRootNode?.() ?? document) as HTMLDocument;\n }\n\n /** Is element in focus */\n get isActive(): boolean {\n return this.input === this.rootElement.activeElement;\n }\n\n /** Binds HTMLElement events to mask internal events */\n override bindEvents(handlers: EventHandlers): void {\n this.input.addEventListener('keydown', this._onKeydown as EventListener);\n this.input.addEventListener('input', this._onInput as EventListener);\n this.input.addEventListener('beforeinput', this._onBeforeinput as EventListener);\n this.input.addEventListener('compositionend', this._onCompositionEnd as EventListener);\n this.input.addEventListener('drop', handlers.drop);\n this.input.addEventListener('click', handlers.click);\n this.input.addEventListener('focus', handlers.focus);\n this.input.addEventListener('blur', handlers.commit);\n this._handlers = handlers;\n }\n\n _onKeydown(e: KeyboardEvent): void {\n const isUndo = (e.key === 'z' || e.key === 'Z') && (e.metaKey || e.ctrlKey) && !e.shiftKey;\n const isRedo =\n ((e.key === 'y' || e.key === 'Y') && (e.metaKey || e.ctrlKey)) ||\n ((e.key === 'z' || e.key === 'Z') && e.shiftKey && (e.metaKey || e.ctrlKey));\n\n if (this._handlers.redo && isRedo) {\n e.preventDefault();\n return this._handlers.redo(e);\n }\n\n if (this._handlers.undo && isUndo) {\n e.preventDefault();\n return this._handlers.undo(e);\n }\n\n if (!e.isComposing) {\n this._handlers.selectionChange(e);\n }\n }\n\n _onBeforeinput(e: InputEvent): void {\n if (e.inputType === 'historyUndo' && this._handlers.undo) {\n e.preventDefault();\n return this._handlers.undo(e);\n }\n\n if (e.inputType === 'historyRedo' && this._handlers.redo) {\n e.preventDefault();\n return this._handlers.redo(e);\n }\n }\n\n _onCompositionEnd(e: CompositionEvent): void {\n this._handlers.input(e);\n }\n\n _onInput(e: InputEvent): void {\n if (!e.isComposing) {\n this._handlers.input(e);\n }\n }\n\n /** Unbinds HTMLElement events to mask internal events */\n override unbindEvents(): void {\n this.input.removeEventListener('keydown', this._onKeydown as EventListener);\n this.input.removeEventListener('input', this._onInput as EventListener);\n this.input.removeEventListener('beforeinput', this._onBeforeinput as EventListener);\n this.input.removeEventListener('compositionend', this._onCompositionEnd as EventListener);\n this.input.removeEventListener('drop', this._handlers.drop);\n this.input.removeEventListener('click', this._handlers.click);\n this.input.removeEventListener('focus', this._handlers.focus);\n this.input.removeEventListener('blur', this._handlers.commit);\n this._handlers = {} as EventHandlers;\n }\n}\n"]}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { type Selection } from '../core/utils.js';
|
|
2
|
-
export interface InputHistoryState {
|
|
3
|
-
unmaskedValue: string;
|
|
4
|
-
selection: Selection;
|
|
5
|
-
}
|
|
6
|
-
export declare class InputHistory {
|
|
7
|
-
static MAX_LENGTH: number;
|
|
8
|
-
states: InputHistoryState[];
|
|
9
|
-
currentIndex: number;
|
|
10
|
-
get currentState(): InputHistoryState | undefined;
|
|
11
|
-
get isEmpty(): boolean;
|
|
12
|
-
push(state: InputHistoryState): void;
|
|
13
|
-
go(steps: number): InputHistoryState | undefined;
|
|
14
|
-
undo(): InputHistoryState | undefined;
|
|
15
|
-
redo(): InputHistoryState | undefined;
|
|
16
|
-
clear(): void;
|
|
17
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
var InputHistory = /** @class */ (function () {
|
|
2
|
-
function InputHistory() {
|
|
3
|
-
this.states = [];
|
|
4
|
-
this.currentIndex = 0;
|
|
5
|
-
}
|
|
6
|
-
Object.defineProperty(InputHistory.prototype, "currentState", {
|
|
7
|
-
get: function () {
|
|
8
|
-
return this.states[this.currentIndex];
|
|
9
|
-
},
|
|
10
|
-
enumerable: false,
|
|
11
|
-
configurable: true
|
|
12
|
-
});
|
|
13
|
-
Object.defineProperty(InputHistory.prototype, "isEmpty", {
|
|
14
|
-
get: function () {
|
|
15
|
-
return this.states.length === 0;
|
|
16
|
-
},
|
|
17
|
-
enumerable: false,
|
|
18
|
-
configurable: true
|
|
19
|
-
});
|
|
20
|
-
InputHistory.prototype.push = function (state) {
|
|
21
|
-
// if current index points before the last element then remove the future
|
|
22
|
-
if (this.currentIndex < this.states.length - 1) {
|
|
23
|
-
this.states.length = this.currentIndex + 1;
|
|
24
|
-
}
|
|
25
|
-
this.states.push(state);
|
|
26
|
-
if (this.states.length > InputHistory.MAX_LENGTH) {
|
|
27
|
-
this.states.shift();
|
|
28
|
-
}
|
|
29
|
-
this.currentIndex = this.states.length - 1;
|
|
30
|
-
};
|
|
31
|
-
InputHistory.prototype.go = function (steps) {
|
|
32
|
-
this.currentIndex = Math.min(Math.max(this.currentIndex + steps, 0), this.states.length - 1);
|
|
33
|
-
return this.currentState;
|
|
34
|
-
};
|
|
35
|
-
InputHistory.prototype.undo = function () {
|
|
36
|
-
return this.go(-1);
|
|
37
|
-
};
|
|
38
|
-
InputHistory.prototype.redo = function () {
|
|
39
|
-
return this.go(+1);
|
|
40
|
-
};
|
|
41
|
-
InputHistory.prototype.clear = function () {
|
|
42
|
-
this.states.length = 0;
|
|
43
|
-
this.currentIndex = 0;
|
|
44
|
-
};
|
|
45
|
-
InputHistory.MAX_LENGTH = 100;
|
|
46
|
-
return InputHistory;
|
|
47
|
-
}());
|
|
48
|
-
export { InputHistory };
|
|
49
|
-
//# sourceMappingURL=input-history.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"input-history.js","sourceRoot":"","sources":["input-history.ts"],"names":[],"mappings":"AAOA;IAAA;QAEE,WAAM,GAAwB,EAAE,CAAC;QACjC,iBAAY,GAAG,CAAC,CAAC;IAuCnB,CAAC;IArCC,sBAAI,sCAAY;aAAhB;YACE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxC,CAAC;;;OAAA;IAED,sBAAI,iCAAO;aAAX;YACE,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;QAClC,CAAC;;;OAAA;IAED,2BAAI,GAAJ,UAAK,KAAwB;QAC3B,yEAAyE;QACzE,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/C,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC;YACjD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED,yBAAE,GAAF,UAAG,KAAa;QACd,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,KAAK,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC7F,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,2BAAI,GAAJ;QACE,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAED,2BAAI,GAAJ;QACE,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAED,4BAAK,GAAL;QACE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;IACxB,CAAC;IAxCM,uBAAU,GAAG,GAAG,AAAN,CAAO;IAyC1B,mBAAC;CAAA,AA1CD,IA0CC;SA1CY,YAAY","sourcesContent":["import { type Selection } from '../core/utils.js';\n\nexport interface InputHistoryState {\n unmaskedValue: string;\n selection: Selection;\n}\n\nexport class InputHistory {\n static MAX_LENGTH = 100;\n states: InputHistoryState[] = [];\n currentIndex = 0;\n\n get currentState(): InputHistoryState | undefined {\n return this.states[this.currentIndex];\n }\n\n get isEmpty(): boolean {\n return this.states.length === 0;\n }\n\n push(state: InputHistoryState): void {\n // if current index points before the last element then remove the future\n if (this.currentIndex < this.states.length - 1) {\n this.states.length = this.currentIndex + 1;\n }\n this.states.push(state);\n if (this.states.length > InputHistory.MAX_LENGTH) {\n this.states.shift();\n }\n this.currentIndex = this.states.length - 1;\n }\n\n go(steps: number): InputHistoryState | undefined {\n this.currentIndex = Math.min(Math.max(this.currentIndex + steps, 0), this.states.length - 1);\n return this.currentState;\n }\n\n undo(): InputHistoryState | undefined {\n return this.go(-1);\n }\n\n redo(): InputHistoryState | undefined {\n return this.go(+1);\n }\n\n clear(): void {\n this.states.length = 0;\n this.currentIndex = 0;\n }\n}\n"]}
|