@skbkontur/react-ui 6.1.6-fe902.0 → 6.1.6

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 (223) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/components/CurrencyInput/CurrencyHelper.d.ts +1 -2
  3. package/components/CurrencyInput/CurrencyHelper.js +32 -28
  4. package/components/CurrencyInput/CurrencyHelper.js.map +1 -1
  5. package/components/CurrencyInput/CurrencyInputHelper.js +1 -1
  6. package/components/CurrencyInput/CurrencyInputHelper.js.map +1 -1
  7. package/components/DateInput/DateInput.js +4 -1
  8. package/components/DateInput/DateInput.js.map +1 -1
  9. package/components/FileUploader/FileUploaderFile.d.ts +1 -1
  10. package/components/FileUploader/FileUploaderFile.js +1 -1
  11. package/components/FileUploader/FileUploaderFile.js.map +1 -1
  12. package/components/FxInput/FxInput.d.ts +1 -1
  13. package/components/FxInput/FxInput.js.map +1 -1
  14. package/components/MaskedInput/MaskedInput.d.ts +2 -6
  15. package/components/MaskedInput/MaskedInput.js +126 -10
  16. package/components/MaskedInput/MaskedInput.js.map +1 -1
  17. package/components/MaskedInput/index.d.ts +0 -1
  18. package/components/MaskedInput/index.js +0 -1
  19. package/components/MaskedInput/index.js.map +1 -1
  20. package/components/MiniModal/MiniModal.d.ts +0 -9
  21. package/components/MiniModal/MiniModal.js +0 -9
  22. package/components/MiniModal/MiniModal.js.map +1 -1
  23. package/components/Modal/Modal.d.ts +0 -5
  24. package/components/Modal/Modal.js +0 -5
  25. package/components/Modal/Modal.js.map +1 -1
  26. package/components/Select/Select.d.ts +1 -0
  27. package/components/Select/Select.js +12 -2
  28. package/components/Select/Select.js.map +1 -1
  29. package/components/Switcher/Switcher.d.ts +3 -3
  30. package/components/Switcher/Switcher.js +1 -1
  31. package/components/Switcher/Switcher.js.map +1 -1
  32. package/components/Tabs/Tab.d.ts +4 -5
  33. package/components/Tabs/Tab.js +0 -1
  34. package/components/Tabs/Tab.js.map +1 -1
  35. package/components/Tabs/Tabs.d.ts +2 -2
  36. package/components/Tabs/Tabs.js +1 -1
  37. package/components/Tabs/Tabs.js.map +1 -1
  38. package/components/Token/Token.d.ts +1 -1
  39. package/components/Token/Token.js +1 -1
  40. package/components/Token/Token.js.map +1 -1
  41. package/components/TokenInput/TokenInput.d.ts +1 -1
  42. package/components/TokenInput/TokenInput.js +1 -1
  43. package/components/TokenInput/TokenInput.js.map +1 -1
  44. package/internal/Menu/Menu.d.ts +5 -0
  45. package/internal/Menu/Menu.js +21 -0
  46. package/internal/Menu/Menu.js.map +1 -1
  47. package/lib/events/keyboard/KeyboardEventCodes.d.ts +0 -2
  48. package/lib/events/keyboard/KeyboardEventCodes.js +0 -2
  49. package/lib/events/keyboard/KeyboardEventCodes.js.map +1 -1
  50. package/lib/events/keyboard/KeyboardMapKeys.js +0 -2
  51. package/lib/events/keyboard/KeyboardMapKeys.js.map +1 -1
  52. package/lib/events/keyboard/identifiers.d.ts +0 -2
  53. package/lib/events/keyboard/identifiers.js +0 -6
  54. package/lib/events/keyboard/identifiers.js.map +1 -1
  55. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +0 -1
  56. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +0 -1
  57. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
  58. package/package.json +1 -4
  59. package/components/MaskedInput/MaskedInputLegacy.d.ts +0 -3
  60. package/components/MaskedInput/MaskedInputLegacy.js +0 -142
  61. package/components/MaskedInput/MaskedInputLegacy.js.map +0 -1
  62. package/components/MaskedInputV2/MaskedInputV2.d.ts +0 -62
  63. package/components/MaskedInputV2/MaskedInputV2.helpers.d.ts +0 -9
  64. package/components/MaskedInputV2/MaskedInputV2.helpers.js +0 -17
  65. package/components/MaskedInputV2/MaskedInputV2.helpers.js.map +0 -1
  66. package/components/MaskedInputV2/MaskedInputV2.js +0 -307
  67. package/components/MaskedInputV2/MaskedInputV2.js.map +0 -1
  68. package/components/MaskedInputV2/MaskedInputV2.phone.d.ts +0 -28
  69. package/components/MaskedInputV2/MaskedInputV2.phone.js +0 -38
  70. package/components/MaskedInputV2/MaskedInputV2.phone.js.map +0 -1
  71. package/components/MaskedInputV2/MaskedInputV2.styles.d.ts +0 -7
  72. package/components/MaskedInputV2/MaskedInputV2.styles.js +0 -19
  73. package/components/MaskedInputV2/MaskedInputV2.styles.js.map +0 -1
  74. package/components/MaskedInputV2/index.d.ts +0 -2
  75. package/components/MaskedInputV2/index.js +0 -3
  76. package/components/MaskedInputV2/index.js.map +0 -1
  77. package/components/MaskedInputV2/internal/MaskOverlay.d.ts +0 -19
  78. package/components/MaskedInputV2/internal/MaskOverlay.js +0 -54
  79. package/components/MaskedInputV2/internal/MaskOverlay.js.map +0 -1
  80. package/components/MaskedInputV2/internal/MaskedCore.d.ts +0 -8
  81. package/components/MaskedInputV2/internal/MaskedCore.js +0 -186
  82. package/components/MaskedInputV2/internal/MaskedCore.js.map +0 -1
  83. package/components/MaskedInputV2/internal/MaskedCore.types.d.ts +0 -37
  84. package/components/MaskedInputV2/internal/MaskedCore.types.js +0 -2
  85. package/components/MaskedInputV2/internal/MaskedCore.types.js.map +0 -1
  86. package/components/MaskedInputV2/internal/MaskedInternal.styles.d.ts +0 -15
  87. package/components/MaskedInputV2/internal/MaskedInternal.styles.js +0 -34
  88. package/components/MaskedInputV2/internal/MaskedInternal.styles.js.map +0 -1
  89. package/components/MaskedInputV2/internal/buildSlotMap.d.ts +0 -11
  90. package/components/MaskedInputV2/internal/buildSlotMap.js +0 -37
  91. package/components/MaskedInputV2/internal/buildSlotMap.js.map +0 -1
  92. package/components/MaskedInputV2/internal/computeMaskAlignPadding.d.ts +0 -6
  93. package/components/MaskedInputV2/internal/computeMaskAlignPadding.js +0 -47
  94. package/components/MaskedInputV2/internal/computeMaskAlignPadding.js.map +0 -1
  95. package/components/MaskedInputV2/internal/computePasteMaskedCursor.d.ts +0 -3
  96. package/components/MaskedInputV2/internal/computePasteMaskedCursor.js +0 -11
  97. package/components/MaskedInputV2/internal/computePasteMaskedCursor.js.map +0 -1
  98. package/components/MaskedInputV2/internal/extractRaw.d.ts +0 -10
  99. package/components/MaskedInputV2/internal/extractRaw.js +0 -16
  100. package/components/MaskedInputV2/internal/extractRaw.js.map +0 -1
  101. package/components/MaskedInputV2/internal/findNearestRawLeft.d.ts +0 -10
  102. package/components/MaskedInputV2/internal/findNearestRawLeft.js +0 -18
  103. package/components/MaskedInputV2/internal/findNearestRawLeft.js.map +0 -1
  104. package/components/MaskedInputV2/internal/helpers.d.ts +0 -8
  105. package/components/MaskedInputV2/internal/helpers.js +0 -9
  106. package/components/MaskedInputV2/internal/helpers.js.map +0 -1
  107. package/components/MaskedInputV2/internal/maskedCoreClipboard.d.ts +0 -37
  108. package/components/MaskedInputV2/internal/maskedCoreClipboard.js +0 -52
  109. package/components/MaskedInputV2/internal/maskedCoreClipboard.js.map +0 -1
  110. package/components/MaskedInputV2/internal/maskedCoreDeletion.d.ts +0 -28
  111. package/components/MaskedInputV2/internal/maskedCoreDeletion.js +0 -70
  112. package/components/MaskedInputV2/internal/maskedCoreDeletion.js.map +0 -1
  113. package/components/MaskedInputV2/internal/maskedCoreInputChange.d.ts +0 -38
  114. package/components/MaskedInputV2/internal/maskedCoreInputChange.js +0 -49
  115. package/components/MaskedInputV2/internal/maskedCoreInputChange.js.map +0 -1
  116. package/components/MaskedInputV2/internal/maskedCoreNavigation.d.ts +0 -13
  117. package/components/MaskedInputV2/internal/maskedCoreNavigation.js +0 -79
  118. package/components/MaskedInputV2/internal/maskedCoreNavigation.js.map +0 -1
  119. package/components/MaskedInputV2/internal/measureInputTextWidth.d.ts +0 -2
  120. package/components/MaskedInputV2/internal/measureInputTextWidth.js +0 -30
  121. package/components/MaskedInputV2/internal/measureInputTextWidth.js.map +0 -1
  122. package/components/MaskedInputV2/internal/setMaskInputSelectionRange.d.ts +0 -2
  123. package/components/MaskedInputV2/internal/setMaskInputSelectionRange.js +0 -25
  124. package/components/MaskedInputV2/internal/setMaskInputSelectionRange.js.map +0 -1
  125. package/components/MaskedInputV2/internal/showOverlay.d.ts +0 -3
  126. package/components/MaskedInputV2/internal/showOverlay.js +0 -16
  127. package/components/MaskedInputV2/internal/showOverlay.js.map +0 -1
  128. package/components/MaskedInputV2/internal/stripMaskChars.d.ts +0 -11
  129. package/components/MaskedInputV2/internal/stripMaskChars.js +0 -20
  130. package/components/MaskedInputV2/internal/stripMaskChars.js.map +0 -1
  131. package/components/MaskedInputV2/internal/types.d.ts +0 -74
  132. package/components/MaskedInputV2/internal/types.js +0 -2
  133. package/components/MaskedInputV2/internal/types.js.map +0 -1
  134. package/components/MaskedInputV2/internal/useInputOverflow.d.ts +0 -4
  135. package/components/MaskedInputV2/internal/useInputOverflow.js +0 -34
  136. package/components/MaskedInputV2/internal/useInputOverflow.js.map +0 -1
  137. package/components/MaskedInputV2/internal/useMaskAlignPadding.d.ts +0 -2
  138. package/components/MaskedInputV2/internal/useMaskAlignPadding.js +0 -33
  139. package/components/MaskedInputV2/internal/useMaskAlignPadding.js.map +0 -1
  140. package/components/MaskedInputV2/internal/useMaskEngine.d.ts +0 -42
  141. package/components/MaskedInputV2/internal/useMaskEngine.js +0 -84
  142. package/components/MaskedInputV2/internal/useMaskEngine.js.map +0 -1
  143. package/components/MaskedInputV2/internal/useMaskedCoreHandlers.d.ts +0 -34
  144. package/components/MaskedInputV2/internal/useMaskedCoreHandlers.js +0 -335
  145. package/components/MaskedInputV2/internal/useMaskedCoreHandlers.js.map +0 -1
  146. package/components/MaskedInputV2/react-imask/imask/controls/html-input-mask-element.d.ts +0 -16
  147. package/components/MaskedInputV2/react-imask/imask/controls/html-input-mask-element.js +0 -59
  148. package/components/MaskedInputV2/react-imask/imask/controls/html-input-mask-element.js.map +0 -1
  149. package/components/MaskedInputV2/react-imask/imask/controls/html-mask-element.d.ts +0 -20
  150. package/components/MaskedInputV2/react-imask/imask/controls/html-mask-element.js +0 -106
  151. package/components/MaskedInputV2/react-imask/imask/controls/html-mask-element.js.map +0 -1
  152. package/components/MaskedInputV2/react-imask/imask/controls/input-history.d.ts +0 -17
  153. package/components/MaskedInputV2/react-imask/imask/controls/input-history.js +0 -49
  154. package/components/MaskedInputV2/react-imask/imask/controls/input-history.js.map +0 -1
  155. package/components/MaskedInputV2/react-imask/imask/controls/input.d.ts +0 -95
  156. package/components/MaskedInputV2/react-imask/imask/controls/input.js +0 -420
  157. package/components/MaskedInputV2/react-imask/imask/controls/input.js.map +0 -1
  158. package/components/MaskedInputV2/react-imask/imask/controls/mask-element.d.ts +0 -30
  159. package/components/MaskedInputV2/react-imask/imask/controls/mask-element.js +0 -59
  160. package/components/MaskedInputV2/react-imask/imask/controls/mask-element.js.map +0 -1
  161. package/components/MaskedInputV2/react-imask/imask/core/action-details.d.ts +0 -30
  162. package/components/MaskedInputV2/react-imask/imask/core/action-details.js +0 -100
  163. package/components/MaskedInputV2/react-imask/imask/core/action-details.js.map +0 -1
  164. package/components/MaskedInputV2/react-imask/imask/core/change-details.d.ts +0 -20
  165. package/components/MaskedInputV2/react-imask/imask/core/change-details.js +0 -46
  166. package/components/MaskedInputV2/react-imask/imask/core/change-details.js.map +0 -1
  167. package/components/MaskedInputV2/react-imask/imask/core/continuous-tail-details.d.ts +0 -21
  168. package/components/MaskedInputV2/react-imask/imask/core/continuous-tail-details.js +0 -52
  169. package/components/MaskedInputV2/react-imask/imask/core/continuous-tail-details.js.map +0 -1
  170. package/components/MaskedInputV2/react-imask/imask/core/holder.d.ts +0 -34
  171. package/components/MaskedInputV2/react-imask/imask/core/holder.js +0 -38
  172. package/components/MaskedInputV2/react-imask/imask/core/holder.js.map +0 -1
  173. package/components/MaskedInputV2/react-imask/imask/core/tail-details.d.ts +0 -20
  174. package/components/MaskedInputV2/react-imask/imask/core/tail-details.js +0 -2
  175. package/components/MaskedInputV2/react-imask/imask/core/tail-details.js.map +0 -1
  176. package/components/MaskedInputV2/react-imask/imask/core/utils.d.ts +0 -24
  177. package/components/MaskedInputV2/react-imask/imask/core/utils.js +0 -100
  178. package/components/MaskedInputV2/react-imask/imask/core/utils.js.map +0 -1
  179. package/components/MaskedInputV2/react-imask/imask/imask.d.ts +0 -5
  180. package/components/MaskedInputV2/react-imask/imask/imask.js +0 -7
  181. package/components/MaskedInputV2/react-imask/imask/imask.js.map +0 -1
  182. package/components/MaskedInputV2/react-imask/imask/index.d.ts +0 -17
  183. package/components/MaskedInputV2/react-imask/imask/index.js +0 -16
  184. package/components/MaskedInputV2/react-imask/imask/index.js.map +0 -1
  185. package/components/MaskedInputV2/react-imask/imask/masked/base.d.ts +0 -114
  186. package/components/MaskedInputV2/react-imask/imask/masked/base.js +0 -411
  187. package/components/MaskedInputV2/react-imask/imask/masked/base.js.map +0 -1
  188. package/components/MaskedInputV2/react-imask/imask/masked/create.d.ts +0 -14
  189. package/components/MaskedInputV2/react-imask/imask/masked/create.js +0 -11
  190. package/components/MaskedInputV2/react-imask/imask/masked/create.js.map +0 -1
  191. package/components/MaskedInputV2/react-imask/imask/masked/factory.d.ts +0 -62
  192. package/components/MaskedInputV2/react-imask/imask/masked/factory.js +0 -107
  193. package/components/MaskedInputV2/react-imask/imask/masked/factory.js.map +0 -1
  194. package/components/MaskedInputV2/react-imask/imask/masked/pattern.d.ts +0 -101
  195. package/components/MaskedInputV2/react-imask/imask/masked/pattern.js +0 -549
  196. package/components/MaskedInputV2/react-imask/imask/masked/pattern.js.map +0 -1
  197. package/components/MaskedInputV2/react-imask/imask/masked/patterns/block.d.ts +0 -30
  198. package/components/MaskedInputV2/react-imask/imask/masked/patterns/block.js +0 -2
  199. package/components/MaskedInputV2/react-imask/imask/masked/patterns/block.js.map +0 -1
  200. package/components/MaskedInputV2/react-imask/imask/masked/patterns/chunk-tail-details.d.ts +0 -20
  201. package/components/MaskedInputV2/react-imask/imask/masked/patterns/chunk-tail-details.js +0 -182
  202. package/components/MaskedInputV2/react-imask/imask/masked/patterns/chunk-tail-details.js.map +0 -1
  203. package/components/MaskedInputV2/react-imask/imask/masked/patterns/cursor.d.ts +0 -31
  204. package/components/MaskedInputV2/react-imask/imask/masked/patterns/cursor.js +0 -163
  205. package/components/MaskedInputV2/react-imask/imask/masked/patterns/cursor.js.map +0 -1
  206. package/components/MaskedInputV2/react-imask/imask/masked/patterns/fixed-definition.d.ts +0 -42
  207. package/components/MaskedInputV2/react-imask/imask/masked/patterns/fixed-definition.js +0 -158
  208. package/components/MaskedInputV2/react-imask/imask/masked/patterns/fixed-definition.js.map +0 -1
  209. package/components/MaskedInputV2/react-imask/imask/masked/patterns/input-definition.d.ts +0 -56
  210. package/components/MaskedInputV2/react-imask/imask/masked/patterns/input-definition.js +0 -185
  211. package/components/MaskedInputV2/react-imask/imask/masked/patterns/input-definition.js.map +0 -1
  212. package/components/MaskedInputV2/react-imask/imask/masked/regexp.d.ts +0 -17
  213. package/components/MaskedInputV2/react-imask/imask/masked/regexp.js +0 -36
  214. package/components/MaskedInputV2/react-imask/imask/masked/regexp.js.map +0 -1
  215. package/components/MaskedInputV2/react-imask/index.d.ts +0 -3
  216. package/components/MaskedInputV2/react-imask/index.js +0 -4
  217. package/components/MaskedInputV2/react-imask/index.js.map +0 -1
  218. package/components/MaskedInputV2/react-imask/input.d.ts +0 -8
  219. package/components/MaskedInputV2/react-imask/input.js +0 -35
  220. package/components/MaskedInputV2/react-imask/input.js.map +0 -1
  221. package/components/MaskedInputV2/react-imask/mixin.d.ts +0 -31
  222. package/components/MaskedInputV2/react-imask/mixin.js +0 -246
  223. package/components/MaskedInputV2/react-imask/mixin.js.map +0 -1
@@ -1,335 +0,0 @@
1
- var __assign = (this && this.__assign) || function () {
2
- __assign = Object.assign || function(t) {
3
- for (var s, i = 1, n = arguments.length; i < n; i++) {
4
- s = arguments[i];
5
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
- t[p] = s[p];
7
- }
8
- return t;
9
- };
10
- return __assign.apply(this, arguments);
11
- };
12
- import { useCallback, useRef, useState } from 'react';
13
- import { isKeyArrow, isKeyBackspace, isKeyDelete, isKeyEnd, isKeyHome, isShortcutRedo, isShortcutSelectAll, isShortcutUndo, } from '../../../lib/events/keyboard/identifiers.js';
14
- import { scrollInputCaretIntoView } from '../../../lib/scrollInputCaretIntoView.js';
15
- import { ActionDetails } from '../react-imask/imask/core/action-details.js';
16
- import { extractRaw } from './extractRaw.js';
17
- import { computeMaskedCut, getMaskedCopyText } from './maskedCoreClipboard.js';
18
- import { computeMaskedDeletion } from './maskedCoreDeletion.js';
19
- import { applyMaskedInputChange } from './maskedCoreInputChange.js';
20
- import { calcNavigationSelection } from './maskedCoreNavigation.js';
21
- import { setMaskInputSelectionRange } from './setMaskInputSelectionRange.js';
22
- /**
23
- * Собирает обработчики DOM-событий для {@link MaskedCore}.
24
- * Инкапсулирует логику ввода, навигации, clipboard и undo/redo.
25
- *
26
- * @param props — состояние маски, движок и колбэки от MaskedInputV2.
27
- * @returns refs и обработчики для прямого `<input>`.
28
- */
29
- export function useMaskedCoreHandlers(props) {
30
- 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, inputOnBlur = props.onBlur, inputOnPaste = props.onPaste, selectAllOnFocus = props.selectAllOnFocus, syncOverlayScroll = props.syncOverlayScroll, requestSelectionIntent = props.requestSelectionIntent;
31
- var pendingCursorRef = useRef(null);
32
- var resetCaretOnMouseUpRef = useRef(false);
33
- var pointerFocusRef = useRef(false);
34
- /** Блокирует нативный change/input после нашего paste (beforeinput/input race в браузере). */
35
- var ignoreChangeFromPasteRef = useRef(false);
36
- var lastSelectionRef = useRef({ start: 0, end: 0 });
37
- var _a = useState({ start: 0, end: 0 }), selectionRange = _a[0], setSelectionRange = _a[1];
38
- var syncSelection = useCallback(function (el) {
39
- var _a, _b;
40
- var start = (_a = el.selectionStart) !== null && _a !== void 0 ? _a : 0;
41
- var end = (_b = el.selectionEnd) !== null && _b !== void 0 ? _b : 0;
42
- lastSelectionRef.current = { start: start, end: end };
43
- setSelectionRange(function (prev) { return (prev.start === start && prev.end === end ? prev : { start: start, end: end }); });
44
- }, []);
45
- function getFocusedInputCaretPos() {
46
- return engine.compute(currentRaw, true).typedLength;
47
- }
48
- function scrollCaretIntoView(el) {
49
- scrollInputCaretIntoView(el);
50
- syncOverlayScroll();
51
- }
52
- function resetCaretToInputStart(el) {
53
- var pos = getFocusedInputCaretPos();
54
- pendingCursorRef.current = pos;
55
- setMaskInputSelectionRange(el, pos);
56
- scrollCaretIntoView(el);
57
- syncSelection(el);
58
- }
59
- function setPendingCursor(pos) {
60
- requestSelectionIntent(null);
61
- pendingCursorRef.current = pos;
62
- setMaskInputSelectionRange(coreInputRef.current, pos);
63
- }
64
- function handleChange(e) {
65
- var _a;
66
- if (ignoreChangeFromPasteRef.current) {
67
- return;
68
- }
69
- requestSelectionIntent(null);
70
- resetCaretOnMouseUpRef.current = false;
71
- var browserDraft = e.target.value;
72
- var cursorPos = (_a = e.target.selectionStart) !== null && _a !== void 0 ? _a : 0;
73
- var oldSelection = lastSelectionRef.current;
74
- var inputType = e.nativeEvent.inputType;
75
- var details = new ActionDetails({
76
- value: browserDraft,
77
- cursorPos: cursorPos,
78
- oldValue: maskState.typedValue,
79
- oldSelection: __assign({}, oldSelection),
80
- });
81
- // Autofill / insertReplacementText / drop: нет clipboard paste-события,
82
- // но нужна та же нормализация, что и у onBeforePasteValue.
83
- // Всегда replace-all: повторный change (Яндекс.Браузер и др.) иначе вставляет
84
- // в позицию курсора поверх уже нормализованного raw → порча значения.
85
- var isBulkInsert = details.inserted.length > 1 || inputType === 'insertReplacementText';
86
- if (isBulkInsert) {
87
- ignoreChangeFromPasteRef.current = true;
88
- setTimeout(function () {
89
- ignoreChangeFromPasteRef.current = false;
90
- }, 0);
91
- if (coreInputRef.current) {
92
- setMaskInputSelectionRange(coreInputRef.current, 0, maskState.typedLength);
93
- lastSelectionRef.current = { start: 0, end: maskState.typedLength };
94
- }
95
- onRawChange(browserDraft, 'paste');
96
- return;
97
- }
98
- var result = applyMaskedInputChange({
99
- browserDraft: browserDraft,
100
- cursorPos: cursorPos,
101
- typedValue: maskState.typedValue,
102
- currentRaw: currentRaw,
103
- oldSelection: oldSelection,
104
- engine: engine,
105
- });
106
- setPendingCursor(result.cursorPos);
107
- if (result.rejected) {
108
- onUnexpectedInput();
109
- return;
110
- }
111
- onRawChange(result.newRaw, 'input', result.cursorPos);
112
- }
113
- function handleKeyDown(e) {
114
- requestSelectionIntent(null);
115
- resetCaretOnMouseUpRef.current = false;
116
- var el = coreInputRef.current;
117
- if (isShortcutSelectAll(e) || isKeyArrow(e) || isKeyEnd(e) || isKeyHome(e) || isKeyBackspace(e) || isKeyDelete(e)) {
118
- pendingCursorRef.current = null;
119
- }
120
- if (isShortcutSelectAll(e)) {
121
- e.preventDefault();
122
- setMaskInputSelectionRange(el, 0, maskState.typedLength);
123
- if (el) {
124
- scrollCaretIntoView(el);
125
- syncSelection(el);
126
- }
127
- }
128
- else if (isKeyArrow(e) || isKeyEnd(e) || isKeyHome(e)) {
129
- e.preventDefault();
130
- var _a = calcNavigationSelection(e, maskState.typedLength, el), start = _a[0], end = _a[1], dir = _a[2];
131
- setMaskInputSelectionRange(el, start, end, dir);
132
- if (el) {
133
- scrollCaretIntoView(el);
134
- syncSelection(el);
135
- }
136
- }
137
- else if (isKeyBackspace(e) || isKeyDelete(e)) {
138
- e.preventDefault();
139
- if (el) {
140
- // Cmd/Ctrl+Backspace — удалить до начала строки; Cmd/Ctrl+Delete — до конца.
141
- if (e.metaKey || e.ctrlKey) {
142
- handleLineDeletion(isKeyBackspace(e), el);
143
- }
144
- else {
145
- handleDeletion(isKeyBackspace(e), el);
146
- }
147
- }
148
- }
149
- else if (isShortcutUndo(e)) {
150
- e.preventDefault();
151
- onUndo === null || onUndo === void 0 ? void 0 : onUndo();
152
- }
153
- else if (isShortcutRedo(e)) {
154
- e.preventDefault();
155
- onRedo === null || onRedo === void 0 ? void 0 : onRedo();
156
- }
157
- inputOnKeyDown === null || inputOnKeyDown === void 0 ? void 0 : inputOnKeyDown(e);
158
- }
159
- function handleDeletion(isBackspace, el) {
160
- var _a, _b;
161
- applyDeletion(isBackspace, (_a = el.selectionStart) !== null && _a !== void 0 ? _a : 0, (_b = el.selectionEnd) !== null && _b !== void 0 ? _b : 0);
162
- }
163
- function handleLineDeletion(isBackspace, el) {
164
- var _a, _b;
165
- var selStart = (_a = el.selectionStart) !== null && _a !== void 0 ? _a : 0;
166
- var selEnd = (_b = el.selectionEnd) !== null && _b !== void 0 ? _b : 0;
167
- if (selStart !== selEnd) {
168
- applyDeletion(isBackspace, selStart, selEnd);
169
- return;
170
- }
171
- var start = isBackspace ? 0 : selStart;
172
- var end = isBackspace ? selStart : maskState.typedLength;
173
- if (start === end) {
174
- return;
175
- }
176
- applyDeletion(isBackspace, start, end);
177
- }
178
- function applyDeletion(isBackspace, selStart, selEnd) {
179
- var result = computeMaskedDeletion({
180
- isBackspace: isBackspace,
181
- selStart: selStart,
182
- selEnd: selEnd,
183
- currentRaw: currentRaw,
184
- slotMap: slotMap,
185
- });
186
- if (!result) {
187
- onUnexpectedInput();
188
- return;
189
- }
190
- pendingCursorRef.current = result.cursorPos;
191
- onRawChange(result.newRaw, 'input', result.cursorPos);
192
- }
193
- function handleSelect(e) {
194
- var _a, _b, _c;
195
- var el = coreInputRef.current;
196
- if (!el) {
197
- return;
198
- }
199
- var max = maskState.typedLength;
200
- var start = (_a = el.selectionStart) !== null && _a !== void 0 ? _a : 0;
201
- var end = (_b = el.selectionEnd) !== null && _b !== void 0 ? _b : 0;
202
- lastSelectionRef.current = { start: start, end: end };
203
- if (end > max) {
204
- setMaskInputSelectionRange(el, Math.min(start, max), max, (_c = el.selectionDirection) !== null && _c !== void 0 ? _c : 'none');
205
- }
206
- syncSelection(el);
207
- syncOverlayScroll();
208
- if (e) {
209
- inputOnSelect === null || inputOnSelect === void 0 ? void 0 : inputOnSelect(e);
210
- }
211
- }
212
- function handlePaste(e) {
213
- inputOnPaste === null || inputOnPaste === void 0 ? void 0 : inputOnPaste(e);
214
- e.preventDefault();
215
- if (!e.clipboardData) {
216
- return;
217
- }
218
- // Игнорируем последующий input/change от браузера (beforeinput insertFromPaste и т.п.),
219
- // иначе controlled value перетирается ненормализованным черновиком.
220
- ignoreChangeFromPasteRef.current = true;
221
- setTimeout(function () {
222
- ignoreChangeFromPasteRef.current = false;
223
- }, 0);
224
- onRawChange(e.clipboardData.getData('text/plain'), 'paste');
225
- }
226
- function handleBeforeInput(e) {
227
- var nativeEvent = e.nativeEvent;
228
- if (nativeEvent.inputType === 'insertFromPaste') {
229
- e.preventDefault();
230
- ignoreChangeFromPasteRef.current = true;
231
- setTimeout(function () {
232
- ignoreChangeFromPasteRef.current = false;
233
- }, 0);
234
- }
235
- }
236
- function handleCopy(e) {
237
- var _a, _b;
238
- var el = coreInputRef.current;
239
- if (!el) {
240
- return;
241
- }
242
- var start = (_a = el.selectionStart) !== null && _a !== void 0 ? _a : 0;
243
- var end = (_b = el.selectionEnd) !== null && _b !== void 0 ? _b : 0;
244
- e.clipboardData.setData('text/plain', getMaskedCopyText(maskState.displayValue, start, end));
245
- e.preventDefault();
246
- }
247
- function handleCut(e) {
248
- var _a, _b;
249
- handleCopy(e);
250
- var el = coreInputRef.current;
251
- if (!el) {
252
- return;
253
- }
254
- var start = (_a = el.selectionStart) !== null && _a !== void 0 ? _a : 0;
255
- var end = (_b = el.selectionEnd) !== null && _b !== void 0 ? _b : 0;
256
- var _c = computeMaskedCut(start, end, currentRaw, slotMap), newRaw = _c.newRaw, cursorPos = _c.cursorPos;
257
- pendingCursorRef.current = cursorPos;
258
- onRawChange(newRaw, 'input', cursorPos);
259
- }
260
- function handleInput(e) {
261
- inputOnInput === null || inputOnInput === void 0 ? void 0 : inputOnInput(e);
262
- }
263
- function handleMouseDown() {
264
- requestSelectionIntent(null);
265
- pointerFocusRef.current = true;
266
- }
267
- function handleMouseUp(e) {
268
- var el = e.currentTarget;
269
- if (resetCaretOnMouseUpRef.current && !selectAllOnFocus) {
270
- resetCaretOnMouseUpRef.current = false;
271
- resetCaretToInputStart(el);
272
- }
273
- else {
274
- resetCaretOnMouseUpRef.current = false;
275
- handleSelect();
276
- }
277
- inputOnMouseUp === null || inputOnMouseUp === void 0 ? void 0 : inputOnMouseUp(e);
278
- }
279
- function handleFocus(e) {
280
- var domValue = e.currentTarget.value;
281
- if (domValue !== maskState.typedValue) {
282
- var syncedRaw = extractRaw(domValue, engine);
283
- if (syncedRaw !== currentRaw) {
284
- onRawChange(syncedRaw, 'input');
285
- }
286
- }
287
- if (selectAllOnFocus) {
288
- requestSelectionIntent('select-all');
289
- pointerFocusRef.current = false;
290
- resetCaretOnMouseUpRef.current = false;
291
- }
292
- else if (pointerFocusRef.current) {
293
- resetCaretOnMouseUpRef.current = currentRaw.length === 0;
294
- pointerFocusRef.current = false;
295
- requestSelectionIntent(null);
296
- }
297
- else {
298
- // Tab / programmatic focus() (в т.ч. ref.focus()): после актуализации
299
- // maskState каретка должна оказаться после typed / leading fixed.
300
- requestSelectionIntent('caret-end');
301
- pendingCursorRef.current = null;
302
- }
303
- inputOnFocus === null || inputOnFocus === void 0 ? void 0 : inputOnFocus(e);
304
- syncSelection(e.currentTarget);
305
- }
306
- function handleBlur(e) {
307
- var _a;
308
- var pos = (_a = e.currentTarget.selectionStart) !== null && _a !== void 0 ? _a : lastSelectionRef.current.start;
309
- var collapsed = { start: pos, end: pos };
310
- lastSelectionRef.current = collapsed;
311
- setSelectionRange(collapsed);
312
- pointerFocusRef.current = false;
313
- resetCaretOnMouseUpRef.current = false;
314
- requestSelectionIntent(null);
315
- inputOnBlur === null || inputOnBlur === void 0 ? void 0 : inputOnBlur(e);
316
- }
317
- return {
318
- pendingCursorRef: pendingCursorRef,
319
- selectionRange: selectionRange,
320
- syncSelection: syncSelection,
321
- handleChange: handleChange,
322
- handleKeyDown: handleKeyDown,
323
- handleSelect: handleSelect,
324
- handlePaste: handlePaste,
325
- handleBeforeInput: handleBeforeInput,
326
- handleCopy: handleCopy,
327
- handleCut: handleCut,
328
- handleInput: handleInput,
329
- handleMouseDown: handleMouseDown,
330
- handleMouseUp: handleMouseUp,
331
- handleFocus: handleFocus,
332
- handleBlur: handleBlur,
333
- };
334
- }
335
- //# 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 { ActionDetails } from '../react-imask/imask/core/action-details.js';\nimport { extractRaw } from './extractRaw.js';\nimport type { MaskedCoreProps, MaskedSelectionIntent } 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';\nimport { setMaskInputSelectionRange } from './setMaskInputSelectionRange.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 | 'onBlur'\n | 'onPaste'\n | 'selectAllOnFocus'\n> & {\n syncOverlayScroll: () => void;\n requestSelectionIntent: (intent: MaskedSelectionIntent) => void;\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 onBlur: inputOnBlur,\n onPaste: inputOnPaste,\n selectAllOnFocus,\n syncOverlayScroll,\n requestSelectionIntent,\n } = props;\n\n const pendingCursorRef = useRef<number | null>(null);\n const resetCaretOnMouseUpRef = useRef(false);\n const pointerFocusRef = useRef(false);\n /** Блокирует нативный change/input после нашего paste (beforeinput/input race в браузере). */\n const ignoreChangeFromPasteRef = useRef(false);\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 getFocusedInputCaretPos() {\n return engine.compute(currentRaw, true).typedLength;\n }\n\n function scrollCaretIntoView(el: HTMLInputElement) {\n scrollInputCaretIntoView(el);\n syncOverlayScroll();\n }\n\n function resetCaretToInputStart(el: HTMLInputElement) {\n const pos = getFocusedInputCaretPos();\n pendingCursorRef.current = pos;\n setMaskInputSelectionRange(el, pos);\n scrollCaretIntoView(el);\n syncSelection(el);\n }\n\n function setPendingCursor(pos: number) {\n requestSelectionIntent(null);\n pendingCursorRef.current = pos;\n setMaskInputSelectionRange(coreInputRef.current, pos);\n }\n\n function handleChange(e: React.ChangeEvent<HTMLInputElement>) {\n if (ignoreChangeFromPasteRef.current) {\n return;\n }\n\n requestSelectionIntent(null);\n resetCaretOnMouseUpRef.current = false;\n\n const browserDraft = e.target.value;\n const cursorPos = e.target.selectionStart ?? 0;\n const oldSelection = lastSelectionRef.current;\n const inputType = (e.nativeEvent as InputEvent).inputType;\n const details = new ActionDetails({\n value: browserDraft,\n cursorPos,\n oldValue: maskState.typedValue,\n oldSelection: { ...oldSelection },\n });\n\n // Autofill / insertReplacementText / drop: нет clipboard paste-события,\n // но нужна та же нормализация, что и у onBeforePasteValue.\n // Всегда replace-all: повторный change (Яндекс.Браузер и др.) иначе вставляет\n // в позицию курсора поверх уже нормализованного raw → порча значения.\n const isBulkInsert = details.inserted.length > 1 || inputType === 'insertReplacementText';\n if (isBulkInsert) {\n ignoreChangeFromPasteRef.current = true;\n setTimeout(() => {\n ignoreChangeFromPasteRef.current = false;\n }, 0);\n\n if (coreInputRef.current) {\n setMaskInputSelectionRange(coreInputRef.current, 0, maskState.typedLength);\n lastSelectionRef.current = { start: 0, end: maskState.typedLength };\n }\n onRawChange(browserDraft, 'paste');\n return;\n }\n\n const result = applyMaskedInputChange({\n browserDraft,\n cursorPos,\n typedValue: maskState.typedValue,\n currentRaw,\n oldSelection,\n engine,\n });\n\n setPendingCursor(result.cursorPos);\n\n if (result.rejected) {\n onUnexpectedInput();\n return;\n }\n\n onRawChange(result.newRaw, 'input', result.cursorPos);\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n requestSelectionIntent(null);\n resetCaretOnMouseUpRef.current = false;\n\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 setMaskInputSelectionRange(el, 0, maskState.typedLength);\n if (el) {\n scrollCaretIntoView(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 setMaskInputSelectionRange(el, start, end, dir);\n if (el) {\n scrollCaretIntoView(el);\n syncSelection(el);\n }\n } else if (isKeyBackspace(e) || isKeyDelete(e)) {\n e.preventDefault();\n if (el) {\n // Cmd/Ctrl+Backspace — удалить до начала строки; Cmd/Ctrl+Delete — до конца.\n if (e.metaKey || e.ctrlKey) {\n handleLineDeletion(isKeyBackspace(e), el);\n } else {\n handleDeletion(isKeyBackspace(e), el);\n }\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 applyDeletion(isBackspace, el.selectionStart ?? 0, el.selectionEnd ?? 0);\n }\n\n function handleLineDeletion(isBackspace: boolean, el: HTMLInputElement) {\n const selStart = el.selectionStart ?? 0;\n const selEnd = el.selectionEnd ?? 0;\n\n if (selStart !== selEnd) {\n applyDeletion(isBackspace, selStart, selEnd);\n return;\n }\n\n const start = isBackspace ? 0 : selStart;\n const end = isBackspace ? selStart : maskState.typedLength;\n if (start === end) {\n return;\n }\n\n applyDeletion(isBackspace, start, end);\n }\n\n function applyDeletion(isBackspace: boolean, selStart: number, selEnd: number) {\n const result = computeMaskedDeletion({\n isBackspace,\n selStart,\n selEnd,\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 setMaskInputSelectionRange(el, Math.min(start, max), max, el.selectionDirection ?? 'none');\n }\n\n syncSelection(el);\n syncOverlayScroll();\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 // Игнорируем последующий input/change от браузера (beforeinput insertFromPaste и т.п.),\n // иначе controlled value перетирается ненормализованным черновиком.\n ignoreChangeFromPasteRef.current = true;\n setTimeout(() => {\n ignoreChangeFromPasteRef.current = false;\n }, 0);\n\n onRawChange(e.clipboardData.getData('text/plain'), 'paste');\n }\n\n function handleBeforeInput(e: React.FormEvent<HTMLInputElement>) {\n const nativeEvent = e.nativeEvent as InputEvent;\n if (nativeEvent.inputType === 'insertFromPaste') {\n e.preventDefault();\n ignoreChangeFromPasteRef.current = true;\n setTimeout(() => {\n ignoreChangeFromPasteRef.current = false;\n }, 0);\n }\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 handleMouseDown() {\n requestSelectionIntent(null);\n pointerFocusRef.current = true;\n }\n\n function handleMouseUp(e: React.MouseEvent<HTMLInputElement>) {\n const el = e.currentTarget;\n\n if (resetCaretOnMouseUpRef.current && !selectAllOnFocus) {\n resetCaretOnMouseUpRef.current = false;\n resetCaretToInputStart(el);\n } else {\n resetCaretOnMouseUpRef.current = false;\n handleSelect();\n }\n\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 if (selectAllOnFocus) {\n requestSelectionIntent('select-all');\n pointerFocusRef.current = false;\n resetCaretOnMouseUpRef.current = false;\n } else if (pointerFocusRef.current) {\n resetCaretOnMouseUpRef.current = currentRaw.length === 0;\n pointerFocusRef.current = false;\n requestSelectionIntent(null);\n } else {\n // Tab / programmatic focus() (в т.ч. ref.focus()): после актуализации\n // maskState каретка должна оказаться после typed / leading fixed.\n requestSelectionIntent('caret-end');\n pendingCursorRef.current = null;\n }\n\n inputOnFocus?.(e);\n syncSelection(e.currentTarget);\n }\n\n function handleBlur(e: React.FocusEvent<HTMLInputElement>) {\n const pos = e.currentTarget.selectionStart ?? lastSelectionRef.current.start;\n const collapsed = { start: pos, end: pos };\n\n lastSelectionRef.current = collapsed;\n setSelectionRange(collapsed);\n pointerFocusRef.current = false;\n resetCaretOnMouseUpRef.current = false;\n requestSelectionIntent(null);\n\n inputOnBlur?.(e);\n }\n\n return {\n pendingCursorRef,\n selectionRange,\n syncSelection,\n handleChange,\n handleKeyDown,\n handleSelect,\n handlePaste,\n handleBeforeInput,\n handleCopy,\n handleCut,\n handleInput,\n handleMouseDown,\n handleMouseUp,\n handleFocus,\n handleBlur,\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
- }