@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.
Files changed (233) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/components/Autocomplete/Autocomplete.js +2 -3
  3. package/components/Autocomplete/Autocomplete.js.map +1 -1
  4. package/components/Button/Button.classes.d.ts +8 -0
  5. package/components/Button/Button.classes.js +10 -0
  6. package/components/Button/Button.classes.js.map +1 -0
  7. package/components/Button/Button.mixins.js +1 -1
  8. package/components/Button/Button.mixins.js.map +1 -1
  9. package/components/Button/Button.styles.d.ts +2 -8
  10. package/components/Button/Button.styles.js +3 -9
  11. package/components/Button/Button.styles.js.map +1 -1
  12. package/components/Calendar/Calendar.d.ts +2 -8
  13. package/components/Calendar/Calendar.js +2 -7
  14. package/components/Calendar/Calendar.js.map +1 -1
  15. package/components/Calendar/CalendarDay.js +1 -1
  16. package/components/Calendar/CalendarDay.js.map +1 -1
  17. package/components/Calendar/MonthView.js +1 -1
  18. package/components/Calendar/MonthView.js.map +1 -1
  19. package/components/Calendar/MonthViewModel.js +1 -2
  20. package/components/Calendar/MonthViewModel.js.map +1 -1
  21. package/components/Calendar/tids.d.ts +7 -0
  22. package/components/Calendar/tids.js +8 -0
  23. package/components/Calendar/tids.js.map +1 -0
  24. package/components/FxInput/FxInput.js +2 -2
  25. package/components/FxInput/FxInput.js.map +1 -1
  26. package/components/MaskedInput/MaskedInput.d.ts +0 -2
  27. package/components/MaskedInput/MaskedInput.js +0 -6
  28. package/components/MaskedInput/MaskedInput.js.map +1 -1
  29. package/components/MenuItem/MenuItem.mixins.d.ts +1 -0
  30. package/components/MenuItem/MenuItem.mixins.js +6 -1
  31. package/components/MenuItem/MenuItem.mixins.js.map +1 -1
  32. package/components/MenuItem/MenuItem.styles.d.ts +2 -1
  33. package/components/MenuItem/MenuItem.styles.js +2 -7
  34. package/components/MenuItem/MenuItem.styles.js.map +1 -1
  35. package/components/MiniModal/MiniModal.d.ts +2 -7
  36. package/components/MiniModal/MiniModal.js +2 -7
  37. package/components/MiniModal/MiniModal.js.map +1 -1
  38. package/components/MiniModal/MiniModalBody.js +1 -1
  39. package/components/MiniModal/MiniModalBody.js.map +1 -1
  40. package/components/MiniModal/MiniModalFooter.js +1 -1
  41. package/components/MiniModal/MiniModalFooter.js.map +1 -1
  42. package/components/MiniModal/MiniModalHeader.js +1 -1
  43. package/components/MiniModal/MiniModalHeader.js.map +1 -1
  44. package/components/MiniModal/MiniModalIndent.js +1 -1
  45. package/components/MiniModal/MiniModalIndent.js.map +1 -1
  46. package/components/MiniModal/tids.d.ts +7 -0
  47. package/components/MiniModal/tids.js +8 -0
  48. package/components/MiniModal/tids.js.map +1 -0
  49. package/components/Modal/Modal.constants.d.ts +9 -0
  50. package/components/Modal/Modal.constants.js +10 -0
  51. package/components/Modal/Modal.constants.js.map +1 -0
  52. package/components/Modal/Modal.d.ts +2 -10
  53. package/components/Modal/Modal.js +2 -9
  54. package/components/Modal/Modal.js.map +1 -1
  55. package/components/Modal/ModalBody.js +1 -1
  56. package/components/Modal/ModalBody.js.map +1 -1
  57. package/components/Modal/ModalClose.js +1 -1
  58. package/components/Modal/ModalClose.js.map +1 -1
  59. package/components/Toggle/Toggle.classes.d.ts +8 -0
  60. package/components/Toggle/Toggle.classes.js +10 -0
  61. package/components/Toggle/Toggle.classes.js.map +1 -0
  62. package/components/Toggle/Toggle.mixins.js +1 -1
  63. package/components/Toggle/Toggle.mixins.js.map +1 -1
  64. package/components/Toggle/Toggle.styles.d.ts +2 -8
  65. package/components/Toggle/Toggle.styles.js +3 -9
  66. package/components/Toggle/Toggle.styles.js.map +1 -1
  67. package/components/TokenInput/TokenInput.d.ts +7 -3
  68. package/components/TokenInput/TokenInput.js +0 -1
  69. package/components/TokenInput/TokenInput.js.map +1 -1
  70. package/index.d.ts +0 -1
  71. package/index.js +0 -1
  72. package/index.js.map +1 -1
  73. package/internal/CustomComboBox/ComboBoxView.js +2 -2
  74. package/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  75. package/internal/Popup/PopupPin.js +8 -6
  76. package/internal/Popup/PopupPin.js.map +1 -1
  77. package/internal/themes/BasicTheme.d.ts +162 -0
  78. package/internal/themes/BasicTheme.js +162 -0
  79. package/internal/themes/BasicTheme.js.map +1 -1
  80. package/lib/date/InternalDateValidator.js +1 -2
  81. package/lib/date/InternalDateValidator.js.map +1 -1
  82. package/lib/events/keyListener.js +6 -0
  83. package/lib/events/keyListener.js.map +1 -1
  84. package/lib/events/keyboard/KeyboardEventCodes.d.ts +0 -2
  85. package/lib/events/keyboard/KeyboardEventCodes.js +0 -2
  86. package/lib/events/keyboard/KeyboardEventCodes.js.map +1 -1
  87. package/lib/events/keyboard/KeyboardMapKeys.js +0 -2
  88. package/lib/events/keyboard/KeyboardMapKeys.js.map +1 -1
  89. package/lib/events/keyboard/identifiers.d.ts +0 -2
  90. package/lib/events/keyboard/identifiers.js +0 -6
  91. package/lib/events/keyboard/identifiers.js.map +1 -1
  92. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +0 -2
  93. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +0 -1
  94. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
  95. package/package.json +1 -4
  96. package/components/MaskedInputV2/MaskedInputV2.d.ts +0 -57
  97. package/components/MaskedInputV2/MaskedInputV2.helpers.d.ts +0 -9
  98. package/components/MaskedInputV2/MaskedInputV2.helpers.js +0 -17
  99. package/components/MaskedInputV2/MaskedInputV2.helpers.js.map +0 -1
  100. package/components/MaskedInputV2/MaskedInputV2.js +0 -234
  101. package/components/MaskedInputV2/MaskedInputV2.js.map +0 -1
  102. package/components/MaskedInputV2/MaskedInputV2.styles.d.ts +0 -7
  103. package/components/MaskedInputV2/MaskedInputV2.styles.js +0 -19
  104. package/components/MaskedInputV2/MaskedInputV2.styles.js.map +0 -1
  105. package/components/MaskedInputV2/index.d.ts +0 -1
  106. package/components/MaskedInputV2/index.js +0 -2
  107. package/components/MaskedInputV2/index.js.map +0 -1
  108. package/components/MaskedInputV2/internal/MaskOverlay.d.ts +0 -19
  109. package/components/MaskedInputV2/internal/MaskOverlay.js +0 -54
  110. package/components/MaskedInputV2/internal/MaskOverlay.js.map +0 -1
  111. package/components/MaskedInputV2/internal/MaskedCore.d.ts +0 -8
  112. package/components/MaskedInputV2/internal/MaskedCore.js +0 -101
  113. package/components/MaskedInputV2/internal/MaskedCore.js.map +0 -1
  114. package/components/MaskedInputV2/internal/MaskedCore.types.d.ts +0 -30
  115. package/components/MaskedInputV2/internal/MaskedCore.types.js +0 -2
  116. package/components/MaskedInputV2/internal/MaskedCore.types.js.map +0 -1
  117. package/components/MaskedInputV2/internal/MaskedInternal.styles.d.ts +0 -15
  118. package/components/MaskedInputV2/internal/MaskedInternal.styles.js +0 -34
  119. package/components/MaskedInputV2/internal/MaskedInternal.styles.js.map +0 -1
  120. package/components/MaskedInputV2/internal/buildSlotMap.d.ts +0 -11
  121. package/components/MaskedInputV2/internal/buildSlotMap.js +0 -37
  122. package/components/MaskedInputV2/internal/buildSlotMap.js.map +0 -1
  123. package/components/MaskedInputV2/internal/extractRaw.d.ts +0 -10
  124. package/components/MaskedInputV2/internal/extractRaw.js +0 -16
  125. package/components/MaskedInputV2/internal/extractRaw.js.map +0 -1
  126. package/components/MaskedInputV2/internal/findNearestRawLeft.d.ts +0 -10
  127. package/components/MaskedInputV2/internal/findNearestRawLeft.js +0 -18
  128. package/components/MaskedInputV2/internal/findNearestRawLeft.js.map +0 -1
  129. package/components/MaskedInputV2/internal/helpers.d.ts +0 -5
  130. package/components/MaskedInputV2/internal/helpers.js +0 -6
  131. package/components/MaskedInputV2/internal/helpers.js.map +0 -1
  132. package/components/MaskedInputV2/internal/maskedCoreClipboard.d.ts +0 -25
  133. package/components/MaskedInputV2/internal/maskedCoreClipboard.js +0 -30
  134. package/components/MaskedInputV2/internal/maskedCoreClipboard.js.map +0 -1
  135. package/components/MaskedInputV2/internal/maskedCoreDeletion.d.ts +0 -28
  136. package/components/MaskedInputV2/internal/maskedCoreDeletion.js +0 -70
  137. package/components/MaskedInputV2/internal/maskedCoreDeletion.js.map +0 -1
  138. package/components/MaskedInputV2/internal/maskedCoreInputChange.d.ts +0 -35
  139. package/components/MaskedInputV2/internal/maskedCoreInputChange.js +0 -31
  140. package/components/MaskedInputV2/internal/maskedCoreInputChange.js.map +0 -1
  141. package/components/MaskedInputV2/internal/maskedCoreNavigation.d.ts +0 -13
  142. package/components/MaskedInputV2/internal/maskedCoreNavigation.js +0 -79
  143. package/components/MaskedInputV2/internal/maskedCoreNavigation.js.map +0 -1
  144. package/components/MaskedInputV2/internal/stripMaskChars.d.ts +0 -11
  145. package/components/MaskedInputV2/internal/stripMaskChars.js +0 -20
  146. package/components/MaskedInputV2/internal/stripMaskChars.js.map +0 -1
  147. package/components/MaskedInputV2/internal/types.d.ts +0 -74
  148. package/components/MaskedInputV2/internal/types.js +0 -2
  149. package/components/MaskedInputV2/internal/types.js.map +0 -1
  150. package/components/MaskedInputV2/internal/useMaskEngine.d.ts +0 -42
  151. package/components/MaskedInputV2/internal/useMaskEngine.js +0 -82
  152. package/components/MaskedInputV2/internal/useMaskEngine.js.map +0 -1
  153. package/components/MaskedInputV2/internal/useMaskedCoreHandlers.d.ts +0 -28
  154. package/components/MaskedInputV2/internal/useMaskedCoreHandlers.js +0 -190
  155. package/components/MaskedInputV2/internal/useMaskedCoreHandlers.js.map +0 -1
  156. package/components/MaskedInputV2/react-imask/imask/controls/html-input-mask-element.d.ts +0 -16
  157. package/components/MaskedInputV2/react-imask/imask/controls/html-input-mask-element.js +0 -59
  158. package/components/MaskedInputV2/react-imask/imask/controls/html-input-mask-element.js.map +0 -1
  159. package/components/MaskedInputV2/react-imask/imask/controls/html-mask-element.d.ts +0 -20
  160. package/components/MaskedInputV2/react-imask/imask/controls/html-mask-element.js +0 -106
  161. package/components/MaskedInputV2/react-imask/imask/controls/html-mask-element.js.map +0 -1
  162. package/components/MaskedInputV2/react-imask/imask/controls/input-history.d.ts +0 -17
  163. package/components/MaskedInputV2/react-imask/imask/controls/input-history.js +0 -49
  164. package/components/MaskedInputV2/react-imask/imask/controls/input-history.js.map +0 -1
  165. package/components/MaskedInputV2/react-imask/imask/controls/input.d.ts +0 -95
  166. package/components/MaskedInputV2/react-imask/imask/controls/input.js +0 -420
  167. package/components/MaskedInputV2/react-imask/imask/controls/input.js.map +0 -1
  168. package/components/MaskedInputV2/react-imask/imask/controls/mask-element.d.ts +0 -30
  169. package/components/MaskedInputV2/react-imask/imask/controls/mask-element.js +0 -59
  170. package/components/MaskedInputV2/react-imask/imask/controls/mask-element.js.map +0 -1
  171. package/components/MaskedInputV2/react-imask/imask/core/action-details.d.ts +0 -30
  172. package/components/MaskedInputV2/react-imask/imask/core/action-details.js +0 -100
  173. package/components/MaskedInputV2/react-imask/imask/core/action-details.js.map +0 -1
  174. package/components/MaskedInputV2/react-imask/imask/core/change-details.d.ts +0 -20
  175. package/components/MaskedInputV2/react-imask/imask/core/change-details.js +0 -46
  176. package/components/MaskedInputV2/react-imask/imask/core/change-details.js.map +0 -1
  177. package/components/MaskedInputV2/react-imask/imask/core/continuous-tail-details.d.ts +0 -21
  178. package/components/MaskedInputV2/react-imask/imask/core/continuous-tail-details.js +0 -52
  179. package/components/MaskedInputV2/react-imask/imask/core/continuous-tail-details.js.map +0 -1
  180. package/components/MaskedInputV2/react-imask/imask/core/holder.d.ts +0 -34
  181. package/components/MaskedInputV2/react-imask/imask/core/holder.js +0 -38
  182. package/components/MaskedInputV2/react-imask/imask/core/holder.js.map +0 -1
  183. package/components/MaskedInputV2/react-imask/imask/core/tail-details.d.ts +0 -20
  184. package/components/MaskedInputV2/react-imask/imask/core/tail-details.js +0 -2
  185. package/components/MaskedInputV2/react-imask/imask/core/tail-details.js.map +0 -1
  186. package/components/MaskedInputV2/react-imask/imask/core/utils.d.ts +0 -24
  187. package/components/MaskedInputV2/react-imask/imask/core/utils.js +0 -100
  188. package/components/MaskedInputV2/react-imask/imask/core/utils.js.map +0 -1
  189. package/components/MaskedInputV2/react-imask/imask/imask.d.ts +0 -5
  190. package/components/MaskedInputV2/react-imask/imask/imask.js +0 -7
  191. package/components/MaskedInputV2/react-imask/imask/imask.js.map +0 -1
  192. package/components/MaskedInputV2/react-imask/imask/index.d.ts +0 -17
  193. package/components/MaskedInputV2/react-imask/imask/index.js +0 -16
  194. package/components/MaskedInputV2/react-imask/imask/index.js.map +0 -1
  195. package/components/MaskedInputV2/react-imask/imask/masked/base.d.ts +0 -114
  196. package/components/MaskedInputV2/react-imask/imask/masked/base.js +0 -411
  197. package/components/MaskedInputV2/react-imask/imask/masked/base.js.map +0 -1
  198. package/components/MaskedInputV2/react-imask/imask/masked/factory.d.ts +0 -62
  199. package/components/MaskedInputV2/react-imask/imask/masked/factory.js +0 -96
  200. package/components/MaskedInputV2/react-imask/imask/masked/factory.js.map +0 -1
  201. package/components/MaskedInputV2/react-imask/imask/masked/pattern.d.ts +0 -101
  202. package/components/MaskedInputV2/react-imask/imask/masked/pattern.js +0 -543
  203. package/components/MaskedInputV2/react-imask/imask/masked/pattern.js.map +0 -1
  204. package/components/MaskedInputV2/react-imask/imask/masked/patterns/block.d.ts +0 -30
  205. package/components/MaskedInputV2/react-imask/imask/masked/patterns/block.js +0 -2
  206. package/components/MaskedInputV2/react-imask/imask/masked/patterns/block.js.map +0 -1
  207. package/components/MaskedInputV2/react-imask/imask/masked/patterns/chunk-tail-details.d.ts +0 -21
  208. package/components/MaskedInputV2/react-imask/imask/masked/patterns/chunk-tail-details.js +0 -180
  209. package/components/MaskedInputV2/react-imask/imask/masked/patterns/chunk-tail-details.js.map +0 -1
  210. package/components/MaskedInputV2/react-imask/imask/masked/patterns/cursor.d.ts +0 -31
  211. package/components/MaskedInputV2/react-imask/imask/masked/patterns/cursor.js +0 -163
  212. package/components/MaskedInputV2/react-imask/imask/masked/patterns/cursor.js.map +0 -1
  213. package/components/MaskedInputV2/react-imask/imask/masked/patterns/fixed-definition.d.ts +0 -42
  214. package/components/MaskedInputV2/react-imask/imask/masked/patterns/fixed-definition.js +0 -158
  215. package/components/MaskedInputV2/react-imask/imask/masked/patterns/fixed-definition.js.map +0 -1
  216. package/components/MaskedInputV2/react-imask/imask/masked/patterns/input-definition.d.ts +0 -56
  217. package/components/MaskedInputV2/react-imask/imask/masked/patterns/input-definition.js +0 -185
  218. package/components/MaskedInputV2/react-imask/imask/masked/patterns/input-definition.js.map +0 -1
  219. package/components/MaskedInputV2/react-imask/imask/masked/regexp.d.ts +0 -17
  220. package/components/MaskedInputV2/react-imask/imask/masked/regexp.js +0 -36
  221. package/components/MaskedInputV2/react-imask/imask/masked/regexp.js.map +0 -1
  222. package/components/MaskedInputV2/react-imask/index.d.ts +0 -3
  223. package/components/MaskedInputV2/react-imask/index.js +0 -4
  224. package/components/MaskedInputV2/react-imask/index.js.map +0 -1
  225. package/components/MaskedInputV2/react-imask/input.d.ts +0 -8
  226. package/components/MaskedInputV2/react-imask/input.js +0 -35
  227. package/components/MaskedInputV2/react-imask/input.js.map +0 -1
  228. package/components/MaskedInputV2/react-imask/mixin.d.ts +0 -31
  229. package/components/MaskedInputV2/react-imask/mixin.js +0 -246
  230. package/components/MaskedInputV2/react-imask/mixin.js.map +0 -1
  231. package/internal/FeaturedMaskedInput/FeaturedMaskedInput.d.ts +0 -4
  232. package/internal/FeaturedMaskedInput/FeaturedMaskedInput.js +0 -24
  233. 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":"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","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":"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","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"]}