@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,543 +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
- var __assign = (this && this.__assign) || function () {
17
- __assign = Object.assign || function(t) {
18
- for (var s, i = 1, n = arguments.length; i < n; i++) {
19
- s = arguments[i];
20
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
21
- t[p] = s[p];
22
- }
23
- return t;
24
- };
25
- return __assign.apply(this, arguments);
26
- };
27
- var __rest = (this && this.__rest) || function (s, e) {
28
- var t = {};
29
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
30
- t[p] = s[p];
31
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
32
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
33
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
34
- t[p[i]] = s[p[i]];
35
- }
36
- return t;
37
- };
38
- /* eslint-disable eqeqeq */
39
- import { ChangeDetails } from '../core/change-details.js';
40
- import { DIRECTION } from '../core/utils.js';
41
- import { Masked } from './base.js';
42
- import { createMask, normalizeOpts, } from './factory.js';
43
- import { ChunksTailDetails } from './patterns/chunk-tail-details.js';
44
- import { PatternCursor } from './patterns/cursor.js';
45
- import { PatternFixedDefinition } from './patterns/fixed-definition.js';
46
- import { PatternInputDefinition } from './patterns/input-definition.js';
47
- import './regexp.js'; // support for default definitions which are regexp's
48
- /** Pattern mask */
49
- var MaskedPattern = /** @class */ (function (_super) {
50
- __extends(MaskedPattern, _super);
51
- function MaskedPattern(opts) {
52
- return _super.call(this, __assign(__assign(__assign({}, MaskedPattern.DEFAULTS), opts), { definitions: Object.assign({}, PatternInputDefinition.DEFAULT_DEFINITIONS, opts === null || opts === void 0 ? void 0 : opts.definitions) })) || this;
53
- }
54
- MaskedPattern.prototype.updateOptions = function (opts) {
55
- _super.prototype.updateOptions.call(this, opts);
56
- };
57
- MaskedPattern.prototype._update = function (opts) {
58
- opts.definitions = Object.assign({}, this.definitions, opts.definitions);
59
- _super.prototype._update.call(this, opts);
60
- this._rebuildMask();
61
- };
62
- MaskedPattern.prototype._rebuildMask = function () {
63
- var defs = this.definitions;
64
- this._blocks = [];
65
- this.exposeBlock = undefined;
66
- this._stops = [];
67
- this._maskedBlocks = {};
68
- var pattern = this.mask;
69
- if (!pattern || !defs) {
70
- return;
71
- }
72
- var unmaskingBlock = false;
73
- var optionalBlock = false;
74
- var _loop_1 = function (i) {
75
- if (this_1.blocks) {
76
- var p_1 = pattern.slice(i);
77
- var bNames = Object.keys(this_1.blocks).filter(function (bName) { return p_1.indexOf(bName) === 0; });
78
- // order by key length
79
- bNames.sort(function (a, b) { return b.length - a.length; });
80
- // use block name with max length
81
- var bName = bNames[0];
82
- if (bName) {
83
- var _a = normalizeOpts(this_1.blocks[bName]), expose = _a.expose, bOpts = __rest(_a, ["expose"]); // TODO type Opts<Arg & Extra>
84
- var blockOpts = __assign(__assign({ lazy: this_1.lazy, eager: this_1.eager, placeholderChar: this_1.placeholderChar, displayChar: this_1.displayChar, overwrite: this_1.overwrite, autofix: this_1.autofix }, bOpts), { parent: this_1 });
85
- var maskedBlock = createMask(blockOpts);
86
- if (maskedBlock) {
87
- this_1._blocks.push(maskedBlock);
88
- if (expose) {
89
- this_1.exposeBlock = maskedBlock;
90
- }
91
- // store block index
92
- if (!this_1._maskedBlocks[bName]) {
93
- this_1._maskedBlocks[bName] = [];
94
- }
95
- this_1._maskedBlocks[bName].push(this_1._blocks.length - 1);
96
- }
97
- i += bName.length - 1;
98
- return out_i_1 = i, "continue";
99
- }
100
- }
101
- var char = pattern[i];
102
- var isInput = char in defs;
103
- if (char === MaskedPattern.STOP_CHAR) {
104
- this_1._stops.push(this_1._blocks.length);
105
- return out_i_1 = i, "continue";
106
- }
107
- if (char === '{' || char === '}') {
108
- unmaskingBlock = !unmaskingBlock;
109
- return out_i_1 = i, "continue";
110
- }
111
- if (char === '[' || char === ']') {
112
- optionalBlock = !optionalBlock;
113
- return out_i_1 = i, "continue";
114
- }
115
- if (char === MaskedPattern.ESCAPE_CHAR) {
116
- ++i;
117
- char = pattern[i];
118
- if (!char) {
119
- return out_i_1 = i, "break";
120
- }
121
- isInput = false;
122
- }
123
- var def = isInput
124
- ? new PatternInputDefinition(__assign(__assign({ isOptional: optionalBlock, lazy: this_1.lazy, eager: this_1.eager, placeholderChar: this_1.placeholderChar, displayChar: this_1.displayChar }, normalizeOpts(defs[char])), { parent: this_1 }))
125
- : new PatternFixedDefinition({
126
- char: char,
127
- eager: this_1.eager,
128
- isUnmasking: unmaskingBlock,
129
- });
130
- this_1._blocks.push(def);
131
- out_i_1 = i;
132
- };
133
- var this_1 = this, out_i_1;
134
- for (var i = 0; i < pattern.length; ++i) {
135
- var state_1 = _loop_1(i);
136
- i = out_i_1;
137
- if (state_1 === "break")
138
- break;
139
- }
140
- };
141
- Object.defineProperty(MaskedPattern.prototype, "state", {
142
- get: function () {
143
- return __assign(__assign({}, _super.prototype.state), { _blocks: this._blocks.map(function (b) { return b.state; }) });
144
- },
145
- set: function (state) {
146
- if (!state) {
147
- this.reset();
148
- return;
149
- }
150
- var _blocks = state._blocks, maskedState = __rest(state, ["_blocks"]);
151
- this._blocks.forEach(function (b, bi) { return (b.state = _blocks[bi]); });
152
- // @ts-expect-error - super.state is protected
153
- _super.prototype.state = maskedState;
154
- },
155
- enumerable: false,
156
- configurable: true
157
- });
158
- MaskedPattern.prototype.reset = function () {
159
- _super.prototype.reset.call(this);
160
- this._blocks.forEach(function (b) { return b.reset(); });
161
- };
162
- Object.defineProperty(MaskedPattern.prototype, "isComplete", {
163
- get: function () {
164
- return this.exposeBlock ? this.exposeBlock.isComplete : this._blocks.every(function (b) { return b.isComplete; });
165
- },
166
- enumerable: false,
167
- configurable: true
168
- });
169
- Object.defineProperty(MaskedPattern.prototype, "isFilled", {
170
- get: function () {
171
- return this._blocks.every(function (b) { return b.isFilled; });
172
- },
173
- enumerable: false,
174
- configurable: true
175
- });
176
- Object.defineProperty(MaskedPattern.prototype, "isFixed", {
177
- get: function () {
178
- return this._blocks.every(function (b) { return b.isFixed; });
179
- },
180
- enumerable: false,
181
- configurable: true
182
- });
183
- Object.defineProperty(MaskedPattern.prototype, "isOptional", {
184
- get: function () {
185
- return this._blocks.every(function (b) { return b.isOptional; });
186
- },
187
- enumerable: false,
188
- configurable: true
189
- });
190
- MaskedPattern.prototype.doCommit = function () {
191
- this._blocks.forEach(function (b) { return b.doCommit(); });
192
- _super.prototype.doCommit.call(this);
193
- };
194
- Object.defineProperty(MaskedPattern.prototype, "unmaskedValue", {
195
- get: function () {
196
- return this.exposeBlock
197
- ? this.exposeBlock.unmaskedValue
198
- : // eslint-disable-next-line no-param-reassign
199
- this._blocks.reduce(function (str, b) { return (str += b.unmaskedValue); }, '');
200
- },
201
- set: function (unmaskedValue) {
202
- if (this.exposeBlock) {
203
- var tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);
204
- this.exposeBlock.unmaskedValue = unmaskedValue;
205
- this.appendTail(tail);
206
- this.doCommit();
207
- }
208
- else {
209
- // @ts-expect-error - super.unmaskedValue is protected
210
- _super.prototype.unmaskedValue = unmaskedValue;
211
- }
212
- },
213
- enumerable: false,
214
- configurable: true
215
- });
216
- Object.defineProperty(MaskedPattern.prototype, "value", {
217
- get: function () {
218
- return this.exposeBlock
219
- ? this.exposeBlock.value
220
- : // TODO return _value when not in change?
221
- // eslint-disable-next-line no-param-reassign
222
- this._blocks.reduce(function (str, b) { return (str += b.value); }, '');
223
- },
224
- set: function (value) {
225
- if (this.exposeBlock) {
226
- var tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);
227
- this.exposeBlock.value = value;
228
- this.appendTail(tail);
229
- this.doCommit();
230
- }
231
- else {
232
- // @ts-expect-error - super.value is protected
233
- _super.prototype.value = value;
234
- }
235
- },
236
- enumerable: false,
237
- configurable: true
238
- });
239
- Object.defineProperty(MaskedPattern.prototype, "typedValue", {
240
- get: function () {
241
- // @ts-expect-error - super.typedValue is protected
242
- return this.exposeBlock ? this.exposeBlock.typedValue : _super.prototype.typedValue;
243
- },
244
- set: function (value) {
245
- if (this.exposeBlock) {
246
- var tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);
247
- this.exposeBlock.typedValue = value;
248
- this.appendTail(tail);
249
- this.doCommit();
250
- }
251
- else {
252
- // @ts-expect-error - super.typedValue is protected
253
- _super.prototype.typedValue = value;
254
- }
255
- },
256
- enumerable: false,
257
- configurable: true
258
- });
259
- Object.defineProperty(MaskedPattern.prototype, "displayValue", {
260
- get: function () {
261
- // eslint-disable-next-line no-param-reassign
262
- return this._blocks.reduce(function (str, b) { return (str += b.displayValue); }, '');
263
- },
264
- enumerable: false,
265
- configurable: true
266
- });
267
- MaskedPattern.prototype.appendTail = function (tail) {
268
- return _super.prototype.appendTail.call(this, tail).aggregate(this._appendPlaceholder());
269
- };
270
- MaskedPattern.prototype._appendEager = function () {
271
- var _a;
272
- var details = new ChangeDetails();
273
- var startBlockIndex = (_a = this._mapPosToBlock(this.displayValue.length)) === null || _a === void 0 ? void 0 : _a.index;
274
- if (startBlockIndex == null) {
275
- return details;
276
- }
277
- // TODO test if it works for nested pattern masks
278
- if (this._blocks[startBlockIndex].isFilled) {
279
- ++startBlockIndex;
280
- }
281
- for (var bi = startBlockIndex; bi < this._blocks.length; ++bi) {
282
- var d = this._blocks[bi]._appendEager();
283
- if (!d.inserted) {
284
- break;
285
- }
286
- details.aggregate(d);
287
- }
288
- return details;
289
- };
290
- MaskedPattern.prototype._appendCharRaw = function (ch, flags) {
291
- var _a, _b;
292
- if (flags === void 0) { flags = {}; }
293
- var blockIter = this._mapPosToBlock(this.displayValue.length);
294
- var details = new ChangeDetails();
295
- if (!blockIter) {
296
- return details;
297
- }
298
- for (var bi = blockIter.index, block = void 0; (block = this._blocks[bi]); ++bi) {
299
- var blockDetails = block._appendChar(ch, __assign(__assign({}, flags), { _beforeTailState: (_b = (_a = flags._beforeTailState) === null || _a === void 0 ? void 0 : _a._blocks) === null || _b === void 0 ? void 0 : _b[bi] }));
300
- details.aggregate(blockDetails);
301
- if (blockDetails.consumed) {
302
- break;
303
- } // go next char
304
- }
305
- return details;
306
- };
307
- MaskedPattern.prototype.extractTail = function (fromPos, toPos) {
308
- var _this = this;
309
- if (fromPos === void 0) { fromPos = 0; }
310
- if (toPos === void 0) { toPos = this.displayValue.length; }
311
- var chunkTail = new ChunksTailDetails();
312
- if (fromPos === toPos) {
313
- return chunkTail;
314
- }
315
- this._forEachBlocksInRange(fromPos, toPos, function (b, bi, bFromPos, bToPos) {
316
- var blockChunk = b.extractTail(bFromPos, bToPos);
317
- blockChunk.stop = _this._findStopBefore(bi);
318
- blockChunk.from = _this._blockStartPos(bi);
319
- if (blockChunk instanceof ChunksTailDetails) {
320
- blockChunk.blockIndex = bi;
321
- }
322
- chunkTail.extend(blockChunk);
323
- });
324
- return chunkTail;
325
- };
326
- MaskedPattern.prototype.extractInput = function (fromPos, toPos, flags) {
327
- if (fromPos === void 0) { fromPos = 0; }
328
- if (toPos === void 0) { toPos = this.displayValue.length; }
329
- if (flags === void 0) { flags = {}; }
330
- if (fromPos === toPos) {
331
- return '';
332
- }
333
- var input = '';
334
- this._forEachBlocksInRange(fromPos, toPos, function (b, _, fromPos, toPos) {
335
- input += b.extractInput(fromPos, toPos, flags);
336
- });
337
- return input;
338
- };
339
- MaskedPattern.prototype._findStopBefore = function (blockIndex) {
340
- var stopBefore;
341
- for (var si = 0; si < this._stops.length; ++si) {
342
- var stop_1 = this._stops[si];
343
- if (stop_1 <= blockIndex) {
344
- stopBefore = stop_1;
345
- }
346
- else {
347
- break;
348
- }
349
- }
350
- return stopBefore;
351
- };
352
- /** Appends placeholder depending on laziness */
353
- MaskedPattern.prototype._appendPlaceholder = function (toBlockIndex) {
354
- var details = new ChangeDetails();
355
- if (this.lazy && toBlockIndex == null) {
356
- return details;
357
- }
358
- var startBlockIter = this._mapPosToBlock(this.displayValue.length);
359
- if (!startBlockIter) {
360
- return details;
361
- }
362
- var startBlockIndex = startBlockIter.index;
363
- var endBlockIndex = toBlockIndex != null ? toBlockIndex : this._blocks.length;
364
- this._blocks.slice(startBlockIndex, endBlockIndex).forEach(function (b) {
365
- var _a;
366
- if (!b.lazy || toBlockIndex != null) {
367
- details.aggregate(b._appendPlaceholder((_a = b._blocks) === null || _a === void 0 ? void 0 : _a.length));
368
- }
369
- });
370
- return details;
371
- };
372
- /** Finds block in pos */
373
- MaskedPattern.prototype._mapPosToBlock = function (pos) {
374
- var accVal = '';
375
- for (var bi = 0; bi < this._blocks.length; ++bi) {
376
- var block = this._blocks[bi];
377
- var blockStartPos = accVal.length;
378
- accVal += block.displayValue;
379
- if (pos <= accVal.length) {
380
- return {
381
- index: bi,
382
- offset: pos - blockStartPos,
383
- };
384
- }
385
- }
386
- return;
387
- };
388
- MaskedPattern.prototype._blockStartPos = function (blockIndex) {
389
- // eslint-disable-next-line no-param-reassign
390
- return this._blocks.slice(0, blockIndex).reduce(function (pos, b) { return (pos += b.displayValue.length); }, 0);
391
- };
392
- MaskedPattern.prototype._forEachBlocksInRange = function (fromPos,
393
- // eslint-disable-next-line default-param-last
394
- toPos, fn) {
395
- if (toPos === void 0) { toPos = this.displayValue.length; }
396
- var fromBlockIter = this._mapPosToBlock(fromPos);
397
- if (fromBlockIter) {
398
- var toBlockIter = this._mapPosToBlock(toPos);
399
- // process first block
400
- var isSameBlock = toBlockIter && fromBlockIter.index === toBlockIter.index;
401
- var fromBlockStartPos = fromBlockIter.offset;
402
- var fromBlockEndPos = toBlockIter && isSameBlock ? toBlockIter.offset : this._blocks[fromBlockIter.index].displayValue.length;
403
- fn(this._blocks[fromBlockIter.index], fromBlockIter.index, fromBlockStartPos, fromBlockEndPos);
404
- if (toBlockIter && !isSameBlock) {
405
- // process intermediate blocks
406
- for (var bi = fromBlockIter.index + 1; bi < toBlockIter.index; ++bi) {
407
- fn(this._blocks[bi], bi, 0, this._blocks[bi].displayValue.length);
408
- }
409
- // process last block
410
- fn(this._blocks[toBlockIter.index], toBlockIter.index, 0, toBlockIter.offset);
411
- }
412
- }
413
- };
414
- MaskedPattern.prototype.remove = function (fromPos, toPos) {
415
- if (fromPos === void 0) { fromPos = 0; }
416
- if (toPos === void 0) { toPos = this.displayValue.length; }
417
- var removeDetails = _super.prototype.remove.call(this, fromPos, toPos);
418
- this._forEachBlocksInRange(fromPos, toPos, function (b, _, bFromPos, bToPos) {
419
- removeDetails.aggregate(b.remove(bFromPos, bToPos));
420
- });
421
- return removeDetails;
422
- };
423
- MaskedPattern.prototype.nearestInputPos = function (cursorPos, direction) {
424
- if (direction === void 0) { direction = DIRECTION.NONE; }
425
- if (!this._blocks.length) {
426
- return 0;
427
- }
428
- var cursor = new PatternCursor(this, cursorPos);
429
- if (direction === DIRECTION.NONE) {
430
- // -------------------------------------------------
431
- // NONE should only go out from fixed to the right!
432
- // -------------------------------------------------
433
- if (cursor.pushRightBeforeInput()) {
434
- return cursor.pos;
435
- }
436
- cursor.popState();
437
- if (cursor.pushLeftBeforeInput()) {
438
- return cursor.pos;
439
- }
440
- return this.displayValue.length;
441
- }
442
- // FORCE is only about a|* otherwise is 0
443
- if (direction === DIRECTION.LEFT || direction === DIRECTION.FORCE_LEFT) {
444
- // try to break fast when *|a
445
- if (direction === DIRECTION.LEFT) {
446
- cursor.pushRightBeforeFilled();
447
- if (cursor.ok && cursor.pos === cursorPos) {
448
- return cursorPos;
449
- }
450
- cursor.popState();
451
- }
452
- // forward flow
453
- cursor.pushLeftBeforeInput();
454
- cursor.pushLeftBeforeRequired();
455
- cursor.pushLeftBeforeFilled();
456
- // backward flow
457
- if (direction === DIRECTION.LEFT) {
458
- cursor.pushRightBeforeInput();
459
- cursor.pushRightBeforeRequired();
460
- if (cursor.ok && cursor.pos <= cursorPos) {
461
- return cursor.pos;
462
- }
463
- cursor.popState();
464
- if (cursor.ok && cursor.pos <= cursorPos) {
465
- return cursor.pos;
466
- }
467
- cursor.popState();
468
- }
469
- if (cursor.ok) {
470
- return cursor.pos;
471
- }
472
- if (direction === DIRECTION.FORCE_LEFT) {
473
- return 0;
474
- }
475
- cursor.popState();
476
- if (cursor.ok) {
477
- return cursor.pos;
478
- }
479
- cursor.popState();
480
- if (cursor.ok) {
481
- return cursor.pos;
482
- }
483
- return 0;
484
- }
485
- if (direction === DIRECTION.RIGHT || direction === DIRECTION.FORCE_RIGHT) {
486
- // forward flow
487
- cursor.pushRightBeforeInput();
488
- cursor.pushRightBeforeRequired();
489
- if (cursor.pushRightBeforeFilled()) {
490
- return cursor.pos;
491
- }
492
- if (direction === DIRECTION.FORCE_RIGHT) {
493
- return this.displayValue.length;
494
- }
495
- // backward flow
496
- cursor.popState();
497
- if (cursor.ok) {
498
- return cursor.pos;
499
- }
500
- cursor.popState();
501
- if (cursor.ok) {
502
- return cursor.pos;
503
- }
504
- return this.nearestInputPos(cursorPos, DIRECTION.LEFT);
505
- }
506
- return cursorPos;
507
- };
508
- MaskedPattern.prototype.totalInputPositions = function (fromPos, toPos) {
509
- if (fromPos === void 0) { fromPos = 0; }
510
- if (toPos === void 0) { toPos = this.displayValue.length; }
511
- var total = 0;
512
- this._forEachBlocksInRange(fromPos, toPos, function (b, _, bFromPos, bToPos) {
513
- total += b.totalInputPositions(bFromPos, bToPos);
514
- });
515
- return total;
516
- };
517
- /** Get block by name */
518
- MaskedPattern.prototype.maskedBlock = function (name) {
519
- return this.maskedBlocks(name)[0];
520
- };
521
- /** Get all blocks by name */
522
- MaskedPattern.prototype.maskedBlocks = function (name) {
523
- var _this = this;
524
- var indices = this._maskedBlocks[name];
525
- if (!indices) {
526
- return [];
527
- }
528
- return indices.map(function (gi) { return _this._blocks[gi]; });
529
- };
530
- MaskedPattern.prototype.pad = function (flags) {
531
- var details = new ChangeDetails();
532
- this._forEachBlocksInRange(0, this.displayValue.length, function (b) { return details.aggregate(b.pad(flags)); });
533
- return details;
534
- };
535
- MaskedPattern.DEFAULTS = __assign(__assign({}, Masked.DEFAULTS), { lazy: true, placeholderChar: '_' });
536
- MaskedPattern.STOP_CHAR = '`';
537
- MaskedPattern.ESCAPE_CHAR = '\\';
538
- MaskedPattern.InputDefinition = PatternInputDefinition;
539
- MaskedPattern.FixedDefinition = PatternFixedDefinition;
540
- return MaskedPattern;
541
- }(Masked));
542
- export { MaskedPattern };
543
- //# sourceMappingURL=pattern.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pattern.js","sourceRoot":"","sources":["pattern.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable eqeqeq */\nimport { ChangeDetails } from '../core/change-details.js';\nimport { type TailDetails } from '../core/tail-details.js';\nimport { DIRECTION, type Direction } from '../core/utils.js';\nimport { Masked, type AppendFlags, type ExtractFlags, type MaskedOptions, type MaskedState } from './base.js';\nimport {\n createMask,\n normalizeOpts,\n type FactoryArg,\n type ExtendFactoryArgOptions,\n type NormalizedOpts,\n} from './factory.js';\nimport type { PatternBlock } from './patterns/block.js';\nimport { ChunksTailDetails } from './patterns/chunk-tail-details.js';\nimport { PatternCursor } from './patterns/cursor.js';\nimport { PatternFixedDefinition } from './patterns/fixed-definition.js';\nimport { PatternInputDefinition } from './patterns/input-definition.js';\nimport './regexp.js'; // support for default definitions which are regexp's\n\nexport type MaskedPatternOptions<\n Value = string,\n M extends MaskedPattern<Value> = MaskedPattern<Value>,\n Props extends keyof M = never,\n> = MaskedOptions<M, 'definitions' | 'blocks' | 'placeholderChar' | 'displayChar' | 'lazy' | Props>;\n\nexport interface Definitions {\n [k: string]: FactoryArg;\n}\n\nexport type MaskedPatternState = MaskedState & {\n _blocks: MaskedState[];\n};\n\nexport interface BlockPosData {\n index: number;\n offset: number;\n}\n\nexport interface BlockExtraOptions {\n expose?: boolean;\n}\n\n/** Pattern mask */\nexport class MaskedPattern<Value = string> extends Masked<Value> {\n static DEFAULTS = {\n ...Masked.DEFAULTS,\n lazy: true,\n placeholderChar: '_',\n };\n static STOP_CHAR = '`';\n static ESCAPE_CHAR = '\\\\';\n static InputDefinition = PatternInputDefinition;\n static FixedDefinition = PatternFixedDefinition;\n\n mask!: string;\n /** */\n blocks!: { [key: string]: ExtendFactoryArgOptions<BlockExtraOptions> };\n /** */\n definitions!: Definitions;\n /** Single char for empty input */\n placeholderChar!: string;\n /** Single char for filled input */\n displayChar!: string;\n /** Show placeholder only when needed */\n lazy!: boolean;\n /** Enable characters overwriting */\n overwrite?: boolean | 'shift' | undefined;\n /** */\n eager?: boolean | 'remove' | 'append' | undefined;\n /** */\n skipInvalid?: boolean | undefined;\n /** */\n autofix?: boolean | 'pad' | undefined;\n\n _blocks!: PatternBlock[];\n _maskedBlocks!: { [key: string]: number[] };\n _stops!: number[];\n exposeBlock?: Masked;\n\n constructor(opts: MaskedPatternOptions<Value>) {\n super({\n ...MaskedPattern.DEFAULTS,\n ...opts,\n definitions: Object.assign({}, PatternInputDefinition.DEFAULT_DEFINITIONS, opts?.definitions),\n } as MaskedOptions);\n }\n\n override updateOptions(opts: Partial<MaskedPatternOptions<Value>>): void {\n super.updateOptions(opts);\n }\n\n override _update(opts: Partial<MaskedPatternOptions<Value>>): void {\n opts.definitions = Object.assign({}, this.definitions, opts.definitions);\n super._update(opts);\n this._rebuildMask();\n }\n\n _rebuildMask(): void {\n const defs = this.definitions;\n this._blocks = [];\n this.exposeBlock = undefined;\n this._stops = [];\n this._maskedBlocks = {};\n\n const pattern = this.mask;\n if (!pattern || !defs) {\n return;\n }\n\n let unmaskingBlock = false;\n let optionalBlock = false;\n\n for (let i = 0; i < pattern.length; ++i) {\n if (this.blocks) {\n const p = pattern.slice(i);\n const bNames = Object.keys(this.blocks).filter((bName) => p.indexOf(bName) === 0);\n // order by key length\n bNames.sort((a, b) => b.length - a.length);\n // use block name with max length\n const bName = bNames[0];\n if (bName) {\n const { expose, ...bOpts } = normalizeOpts(this.blocks[bName]) as NormalizedOpts<FactoryArg> &\n BlockExtraOptions; // TODO type Opts<Arg & Extra>\n const blockOpts = {\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n overwrite: this.overwrite,\n autofix: this.autofix,\n ...bOpts,\n parent: this,\n };\n const maskedBlock = createMask(blockOpts);\n\n if (maskedBlock) {\n this._blocks.push(maskedBlock);\n if (expose) {\n this.exposeBlock = maskedBlock;\n }\n\n // store block index\n if (!this._maskedBlocks[bName]) {\n this._maskedBlocks[bName] = [];\n }\n this._maskedBlocks[bName].push(this._blocks.length - 1);\n }\n\n i += bName.length - 1;\n continue;\n }\n }\n\n let char = pattern[i];\n let isInput = char in defs;\n\n if (char === MaskedPattern.STOP_CHAR) {\n this._stops.push(this._blocks.length);\n continue;\n }\n\n if (char === '{' || char === '}') {\n unmaskingBlock = !unmaskingBlock;\n continue;\n }\n\n if (char === '[' || char === ']') {\n optionalBlock = !optionalBlock;\n continue;\n }\n\n if (char === MaskedPattern.ESCAPE_CHAR) {\n ++i;\n char = pattern[i];\n if (!char) {\n break;\n }\n isInput = false;\n }\n\n const def = isInput\n ? (new PatternInputDefinition({\n isOptional: optionalBlock,\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n ...normalizeOpts(defs[char]),\n parent: this,\n }) as PatternBlock)\n : new PatternFixedDefinition({\n char,\n eager: this.eager,\n isUnmasking: unmaskingBlock,\n });\n\n this._blocks.push(def);\n }\n }\n\n override get state(): MaskedPatternState {\n return {\n // @ts-expect-error - super.state is protected\n ...super.state,\n _blocks: this._blocks.map((b) => b.state),\n };\n }\n\n override set state(state: MaskedPatternState) {\n if (!state) {\n this.reset();\n return;\n }\n\n const { _blocks, ...maskedState } = state;\n this._blocks.forEach((b, bi) => (b.state = _blocks[bi]));\n // @ts-expect-error - super.state is protected\n super.state = maskedState;\n }\n\n override reset(): void {\n super.reset();\n this._blocks.forEach((b) => b.reset());\n }\n\n override get isComplete(): boolean {\n return this.exposeBlock ? this.exposeBlock.isComplete : this._blocks.every((b) => b.isComplete);\n }\n\n override get isFilled(): boolean {\n return this._blocks.every((b) => b.isFilled);\n }\n\n get isFixed(): boolean {\n return this._blocks.every((b) => b.isFixed);\n }\n\n get isOptional(): boolean {\n return this._blocks.every((b) => b.isOptional);\n }\n\n override doCommit(): void {\n this._blocks.forEach((b) => b.doCommit());\n super.doCommit();\n }\n\n override get unmaskedValue(): string {\n return this.exposeBlock\n ? this.exposeBlock.unmaskedValue\n : // eslint-disable-next-line no-param-reassign\n this._blocks.reduce((str, b) => (str += b.unmaskedValue), '');\n }\n\n override set unmaskedValue(unmaskedValue: string) {\n if (this.exposeBlock) {\n const tail = this.extractTail(\n this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length,\n );\n this.exposeBlock.unmaskedValue = unmaskedValue;\n this.appendTail(tail);\n this.doCommit();\n } else {\n // @ts-expect-error - super.unmaskedValue is protected\n super.unmaskedValue = unmaskedValue;\n }\n }\n\n override get value(): string {\n return this.exposeBlock\n ? this.exposeBlock.value\n : // TODO return _value when not in change?\n // eslint-disable-next-line no-param-reassign\n this._blocks.reduce((str, b) => (str += b.value), '');\n }\n\n override set value(value: string) {\n if (this.exposeBlock) {\n const tail = this.extractTail(\n this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length,\n );\n this.exposeBlock.value = value;\n this.appendTail(tail);\n this.doCommit();\n } else {\n // @ts-expect-error - super.value is protected\n super.value = value;\n }\n }\n\n override get typedValue(): Value {\n // @ts-expect-error - super.typedValue is protected\n return this.exposeBlock ? this.exposeBlock.typedValue : super.typedValue;\n }\n\n override set typedValue(value: Value) {\n if (this.exposeBlock) {\n const tail = this.extractTail(\n this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length,\n );\n this.exposeBlock.typedValue = value;\n this.appendTail(tail);\n this.doCommit();\n } else {\n // @ts-expect-error - super.typedValue is protected\n super.typedValue = value;\n }\n }\n\n override get displayValue(): string {\n // eslint-disable-next-line no-param-reassign\n return this._blocks.reduce((str, b) => (str += b.displayValue), '');\n }\n\n override appendTail(tail: string | TailDetails): ChangeDetails {\n return super.appendTail(tail).aggregate(this._appendPlaceholder());\n }\n\n override _appendEager(): ChangeDetails {\n const details = new ChangeDetails();\n\n let startBlockIndex = this._mapPosToBlock(this.displayValue.length)?.index;\n if (startBlockIndex == null) {\n return details;\n }\n\n // TODO test if it works for nested pattern masks\n if (this._blocks[startBlockIndex].isFilled) {\n ++startBlockIndex;\n }\n\n for (let bi = startBlockIndex; bi < this._blocks.length; ++bi) {\n const d = this._blocks[bi]._appendEager();\n if (!d.inserted) {\n break;\n }\n\n details.aggregate(d);\n }\n\n return details;\n }\n\n override _appendCharRaw(ch: string, flags: AppendFlags<MaskedPatternState> = {}): ChangeDetails {\n const blockIter = this._mapPosToBlock(this.displayValue.length);\n const details = new ChangeDetails();\n if (!blockIter) {\n return details;\n }\n\n for (let bi = blockIter.index, block; (block = this._blocks[bi]); ++bi) {\n const blockDetails = block._appendChar(ch, { ...flags, _beforeTailState: flags._beforeTailState?._blocks?.[bi] });\n\n details.aggregate(blockDetails);\n\n if (blockDetails.consumed) {\n break;\n } // go next char\n }\n\n return details;\n }\n\n override extractTail(fromPos: number = 0, toPos: number = this.displayValue.length): TailDetails {\n const chunkTail = new ChunksTailDetails();\n if (fromPos === toPos) {\n return chunkTail;\n }\n\n this._forEachBlocksInRange(fromPos, toPos, (b, bi, bFromPos, bToPos) => {\n const blockChunk = b.extractTail(bFromPos, bToPos);\n blockChunk.stop = this._findStopBefore(bi);\n blockChunk.from = this._blockStartPos(bi);\n if (blockChunk instanceof ChunksTailDetails) {\n blockChunk.blockIndex = bi;\n }\n\n chunkTail.extend(blockChunk);\n });\n\n return chunkTail;\n }\n\n override extractInput(\n fromPos: number = 0,\n toPos: number = this.displayValue.length,\n flags: ExtractFlags = {},\n ): string {\n if (fromPos === toPos) {\n return '';\n }\n\n let input = '';\n\n this._forEachBlocksInRange(fromPos, toPos, (b, _, fromPos, toPos) => {\n input += b.extractInput(fromPos, toPos, flags);\n });\n\n return input;\n }\n\n _findStopBefore(blockIndex: number): number | undefined {\n let stopBefore;\n for (let si = 0; si < this._stops.length; ++si) {\n const stop = this._stops[si];\n if (stop <= blockIndex) {\n stopBefore = stop;\n } else {\n break;\n }\n }\n return stopBefore;\n }\n\n /** Appends placeholder depending on laziness */\n override _appendPlaceholder(toBlockIndex?: number): ChangeDetails {\n const details = new ChangeDetails();\n if (this.lazy && toBlockIndex == null) {\n return details;\n }\n\n const startBlockIter = this._mapPosToBlock(this.displayValue.length);\n if (!startBlockIter) {\n return details;\n }\n\n const startBlockIndex = startBlockIter.index;\n const endBlockIndex = toBlockIndex != null ? toBlockIndex : this._blocks.length;\n\n this._blocks.slice(startBlockIndex, endBlockIndex).forEach((b) => {\n if (!b.lazy || toBlockIndex != null) {\n details.aggregate(b._appendPlaceholder((b as MaskedPattern)._blocks?.length));\n }\n });\n\n return details;\n }\n\n /** Finds block in pos */\n _mapPosToBlock(pos: number): BlockPosData | undefined {\n let accVal = '';\n for (let bi = 0; bi < this._blocks.length; ++bi) {\n const block = this._blocks[bi];\n const blockStartPos = accVal.length;\n\n accVal += block.displayValue;\n\n if (pos <= accVal.length) {\n return {\n index: bi,\n offset: pos - blockStartPos,\n };\n }\n }\n return;\n }\n\n _blockStartPos(blockIndex: number): number {\n // eslint-disable-next-line no-param-reassign\n return this._blocks.slice(0, blockIndex).reduce((pos, b) => (pos += b.displayValue.length), 0);\n }\n\n _forEachBlocksInRange(\n fromPos: number,\n // eslint-disable-next-line default-param-last\n toPos: number = this.displayValue.length,\n fn: (block: PatternBlock, blockIndex: number, fromPos: number, toPos: number) => void,\n ): void {\n const fromBlockIter = this._mapPosToBlock(fromPos);\n\n if (fromBlockIter) {\n const toBlockIter = this._mapPosToBlock(toPos);\n // process first block\n const isSameBlock = toBlockIter && fromBlockIter.index === toBlockIter.index;\n const fromBlockStartPos = fromBlockIter.offset;\n const fromBlockEndPos =\n toBlockIter && isSameBlock ? toBlockIter.offset : this._blocks[fromBlockIter.index].displayValue.length;\n fn(this._blocks[fromBlockIter.index], fromBlockIter.index, fromBlockStartPos, fromBlockEndPos);\n\n if (toBlockIter && !isSameBlock) {\n // process intermediate blocks\n for (let bi = fromBlockIter.index + 1; bi < toBlockIter.index; ++bi) {\n fn(this._blocks[bi], bi, 0, this._blocks[bi].displayValue.length);\n }\n\n // process last block\n fn(this._blocks[toBlockIter.index], toBlockIter.index, 0, toBlockIter.offset);\n }\n }\n }\n\n override remove(fromPos: number = 0, toPos: number = this.displayValue.length): ChangeDetails {\n const removeDetails = super.remove(fromPos, toPos);\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n removeDetails.aggregate(b.remove(bFromPos, bToPos));\n });\n return removeDetails;\n }\n\n override nearestInputPos(cursorPos: number, direction: Direction = DIRECTION.NONE): number {\n if (!this._blocks.length) {\n return 0;\n }\n const cursor = new PatternCursor(this, cursorPos);\n\n if (direction === DIRECTION.NONE) {\n // -------------------------------------------------\n // NONE should only go out from fixed to the right!\n // -------------------------------------------------\n if (cursor.pushRightBeforeInput()) {\n return cursor.pos;\n }\n cursor.popState();\n if (cursor.pushLeftBeforeInput()) {\n return cursor.pos;\n }\n return this.displayValue.length;\n }\n\n // FORCE is only about a|* otherwise is 0\n if (direction === DIRECTION.LEFT || direction === DIRECTION.FORCE_LEFT) {\n // try to break fast when *|a\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeFilled();\n if (cursor.ok && cursor.pos === cursorPos) {\n return cursorPos;\n }\n cursor.popState();\n }\n\n // forward flow\n cursor.pushLeftBeforeInput();\n cursor.pushLeftBeforeRequired();\n cursor.pushLeftBeforeFilled();\n\n // backward flow\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.ok && cursor.pos <= cursorPos) {\n return cursor.pos;\n }\n cursor.popState();\n if (cursor.ok && cursor.pos <= cursorPos) {\n return cursor.pos;\n }\n cursor.popState();\n }\n if (cursor.ok) {\n return cursor.pos;\n }\n if (direction === DIRECTION.FORCE_LEFT) {\n return 0;\n }\n\n cursor.popState();\n if (cursor.ok) {\n return cursor.pos;\n }\n\n cursor.popState();\n if (cursor.ok) {\n return cursor.pos;\n }\n\n return 0;\n }\n\n if (direction === DIRECTION.RIGHT || direction === DIRECTION.FORCE_RIGHT) {\n // forward flow\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n\n if (cursor.pushRightBeforeFilled()) {\n return cursor.pos;\n }\n if (direction === DIRECTION.FORCE_RIGHT) {\n return this.displayValue.length;\n }\n\n // backward flow\n cursor.popState();\n if (cursor.ok) {\n return cursor.pos;\n }\n\n cursor.popState();\n if (cursor.ok) {\n return cursor.pos;\n }\n\n return this.nearestInputPos(cursorPos, DIRECTION.LEFT);\n }\n\n return cursorPos;\n }\n\n override totalInputPositions(fromPos: number = 0, toPos: number = this.displayValue.length): number {\n let total = 0;\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n total += b.totalInputPositions(bFromPos, bToPos);\n });\n return total;\n }\n\n /** Get block by name */\n maskedBlock(name: string): PatternBlock | undefined {\n return this.maskedBlocks(name)[0];\n }\n\n /** Get all blocks by name */\n maskedBlocks(name: string): PatternBlock[] {\n const indices = this._maskedBlocks[name];\n if (!indices) {\n return [];\n }\n return indices.map((gi) => this._blocks[gi]);\n }\n\n override pad(flags?: AppendFlags): ChangeDetails {\n const details = new ChangeDetails();\n this._forEachBlocksInRange(0, this.displayValue.length, (b) => details.aggregate(b.pad(flags)));\n return details;\n }\n}\n"]}
@@ -1,30 +0,0 @@
1
- import type { ChangeDetails } from '../../core/change-details.js';
2
- import { type TailDetails } from '../../core/tail-details.js';
3
- import { type Direction } from '../../core/utils.js';
4
- import { type ExtractFlags, type AppendFlags, type MaskedState } from '../base.js';
5
- /** Subset of {@link Masked} attributes used with pattern */
6
- export interface PatternBlock<State = MaskedState> {
7
- readonly value: string;
8
- readonly unmaskedValue: string;
9
- readonly displayValue: string;
10
- readonly isComplete: boolean;
11
- readonly lazy?: boolean;
12
- readonly eager?: boolean | 'remove' | 'append' | undefined;
13
- readonly isFilled: boolean;
14
- readonly isOptional?: boolean;
15
- readonly isFixed?: boolean;
16
- state: any;
17
- reset(): void;
18
- remove(fromPos?: number, toPos?: number): ChangeDetails;
19
- extractInput(fromPos?: number, toPos?: number, flags?: ExtractFlags): string;
20
- extractTail(fromPos?: number, toPos?: number): TailDetails;
21
- append(str: string, flags?: AppendFlags<State>, tail?: TailDetails): ChangeDetails;
22
- appendTail(tail: string | TailDetails): ChangeDetails;
23
- _appendChar(str: string, flags: AppendFlags<State>): ChangeDetails;
24
- _appendPlaceholder(toBlockIndex?: number): ChangeDetails;
25
- _appendEager(): ChangeDetails;
26
- doCommit(): void;
27
- nearestInputPos(cursorPos: number, direction: Direction): number;
28
- totalInputPositions(fromPos?: number, toPos?: number): number;
29
- pad(flags?: AppendFlags): ChangeDetails;
30
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=block.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"block.js","sourceRoot":"","sources":["block.ts"],"names":[],"mappings":"","sourcesContent":["import type { ChangeDetails } from '../../core/change-details.js';\nimport { type TailDetails } from '../../core/tail-details.js';\nimport { type Direction } from '../../core/utils.js';\nimport { type ExtractFlags, type AppendFlags, type MaskedState } from '../base.js';\n\n/** Subset of {@link Masked} attributes used with pattern */\nexport interface PatternBlock<State = MaskedState> {\n readonly value: string;\n readonly unmaskedValue: string;\n readonly displayValue: string;\n readonly isComplete: boolean;\n readonly lazy?: boolean;\n readonly eager?: boolean | 'remove' | 'append' | undefined;\n readonly isFilled: boolean;\n readonly isOptional?: boolean;\n readonly isFixed?: boolean;\n state: any;\n\n reset(): void;\n remove(fromPos?: number, toPos?: number): ChangeDetails;\n extractInput(fromPos?: number, toPos?: number, flags?: ExtractFlags): string;\n extractTail(fromPos?: number, toPos?: number): TailDetails;\n append(str: string, flags?: AppendFlags<State>, tail?: TailDetails): ChangeDetails;\n appendTail(tail: string | TailDetails): ChangeDetails;\n _appendChar(str: string, flags: AppendFlags<State>): ChangeDetails;\n _appendPlaceholder(toBlockIndex?: number): ChangeDetails;\n _appendEager(): ChangeDetails;\n doCommit(): void;\n nearestInputPos(cursorPos: number, direction: Direction): number;\n totalInputPositions(fromPos?: number, toPos?: number): number;\n pad(flags?: AppendFlags): ChangeDetails;\n}\n"]}