@skbkontur/react-ui 0.0.0-1b188ff0e7 → 0.0.0-1c6f0751ba

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 (194) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/cjs/components/Button/getInnerLinkTheme.js +2 -3
  3. package/cjs/components/Button/getInnerLinkTheme.js.map +1 -1
  4. package/cjs/components/Checkbox/Checkbox.js +4 -5
  5. package/cjs/components/Checkbox/Checkbox.js.map +1 -1
  6. package/cjs/components/CurrencyInput/CurrencyHelper.d.ts +2 -0
  7. package/cjs/components/CurrencyInput/CurrencyHelper.js +21 -6
  8. package/cjs/components/CurrencyInput/CurrencyHelper.js.map +1 -1
  9. package/cjs/components/CurrencyInput/CurrencyInputKeyboardActions.d.ts +1 -1
  10. package/cjs/components/DateInput/DateFragmentsView.js +1 -2
  11. package/cjs/components/DateInput/DateFragmentsView.js.map +1 -1
  12. package/cjs/components/DateInput/helpers/SelectionHelpers.js +7 -9
  13. package/cjs/components/DateInput/helpers/SelectionHelpers.js.map +1 -1
  14. package/cjs/components/FileUploader/FileUploader.js +1 -2
  15. package/cjs/components/FileUploader/FileUploader.js.map +1 -1
  16. package/cjs/components/Input/Input.js +1 -2
  17. package/cjs/components/Input/Input.js.map +1 -1
  18. package/cjs/components/Input/InputLayout/InputLayoutAside.js +1 -1
  19. package/cjs/components/Input/InputLayout/InputLayoutAside.js.map +1 -1
  20. package/cjs/components/Input/InputLayout/InputLayoutAsideIcon.js +4 -4
  21. package/cjs/components/Input/InputLayout/InputLayoutAsideIcon.js.map +1 -1
  22. package/cjs/components/Link/Link.js +4 -2
  23. package/cjs/components/Link/Link.js.map +1 -1
  24. package/cjs/components/Link/Link.mixins.d.ts +1 -2
  25. package/cjs/components/Link/Link.mixins.js +5 -16
  26. package/cjs/components/Link/Link.mixins.js.map +1 -1
  27. package/cjs/components/Link/Link.styles.d.ts +2 -0
  28. package/cjs/components/Link/Link.styles.js +58 -38
  29. package/cjs/components/Link/Link.styles.js.map +1 -1
  30. package/cjs/components/Loader/Loader.js +1 -2
  31. package/cjs/components/Loader/Loader.js.map +1 -1
  32. package/cjs/components/Paging/Paging.js +2 -3
  33. package/cjs/components/Paging/Paging.js.map +1 -1
  34. package/cjs/components/PasswordInput/PasswordInput.js +2 -3
  35. package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
  36. package/cjs/components/ScrollContainer/ScrollBar.js +1 -2
  37. package/cjs/components/ScrollContainer/ScrollBar.js.map +1 -1
  38. package/cjs/components/SidePage/SidePage.js +1 -2
  39. package/cjs/components/SidePage/SidePage.js.map +1 -1
  40. package/cjs/components/Sticky/Sticky.js +2 -3
  41. package/cjs/components/Sticky/Sticky.js.map +1 -1
  42. package/cjs/components/Textarea/Textarea.js +1 -2
  43. package/cjs/components/Textarea/Textarea.js.map +1 -1
  44. package/cjs/components/Toast/ToastStatic.js +2 -3
  45. package/cjs/components/Toast/ToastStatic.js.map +1 -1
  46. package/cjs/components/TokenInput/TokenInput.js +2 -3
  47. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  48. package/cjs/internal/CustomComboBox/CustomComboBox.js +6 -6
  49. package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
  50. package/cjs/internal/DropdownContainer/DropdownContainer.js +4 -5
  51. package/cjs/internal/DropdownContainer/DropdownContainer.js.map +1 -1
  52. package/cjs/internal/FocusTrap/FocusTrap.js +4 -5
  53. package/cjs/internal/FocusTrap/FocusTrap.js.map +1 -1
  54. package/cjs/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.js +4 -5
  55. package/cjs/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.js.map +1 -1
  56. package/cjs/internal/InputLikeText/InputLikeText.d.ts +1 -0
  57. package/cjs/internal/InputLikeText/InputLikeText.js +19 -9
  58. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  59. package/cjs/internal/Popup/PopupHelper.js +2 -3
  60. package/cjs/internal/Popup/PopupHelper.js.map +1 -1
  61. package/cjs/internal/PopupMenu/PopupMenu.js +2 -3
  62. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  63. package/cjs/internal/RenderContainer/RenderContainer.js +3 -4
  64. package/cjs/internal/RenderContainer/RenderContainer.js.map +1 -1
  65. package/cjs/internal/RenderLayer/RenderLayer.js +2 -3
  66. package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
  67. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  68. package/cjs/internal/ZIndex/ZIndex.js +1 -2
  69. package/cjs/internal/ZIndex/ZIndex.js.map +1 -1
  70. package/cjs/internal/themes/DefaultTheme.d.ts +4 -15
  71. package/cjs/internal/themes/DefaultTheme.js +10 -45
  72. package/cjs/internal/themes/DefaultTheme.js.map +1 -1
  73. package/cjs/internal/themes/Theme2022.d.ts +0 -3
  74. package/cjs/internal/themes/Theme2022.js +1 -10
  75. package/cjs/internal/themes/Theme2022.js.map +1 -1
  76. package/cjs/lib/SSRSafe.d.ts +0 -1
  77. package/cjs/lib/SSRSafe.js +3 -6
  78. package/cjs/lib/SSRSafe.js.map +1 -1
  79. package/cjs/lib/Upgrades.d.ts +0 -2
  80. package/cjs/lib/Upgrades.js +0 -14
  81. package/cjs/lib/Upgrades.js.map +1 -1
  82. package/cjs/lib/client.js +3 -5
  83. package/cjs/lib/client.js.map +1 -1
  84. package/cjs/lib/dom/getScrollWidth.js +3 -4
  85. package/cjs/lib/dom/getScrollWidth.js.map +1 -1
  86. package/cjs/lib/dom/tabbableHelpers.js +1 -3
  87. package/cjs/lib/dom/tabbableHelpers.js.map +1 -1
  88. package/cjs/lib/events/MouseDrag.js +3 -4
  89. package/cjs/lib/events/MouseDrag.js.map +1 -1
  90. package/cjs/lib/events/fixClickFocusIE.js +1 -2
  91. package/cjs/lib/events/fixClickFocusIE.js.map +1 -1
  92. package/cjs/lib/listenFocusOutside.js +5 -6
  93. package/cjs/lib/listenFocusOutside.js.map +1 -1
  94. package/cjs/lib/needsPolyfillPlaceholder.js +2 -3
  95. package/cjs/lib/needsPolyfillPlaceholder.js.map +1 -1
  96. package/cjs/lib/theming/Emotion.js +1 -3
  97. package/cjs/lib/theming/Emotion.js.map +1 -1
  98. package/components/Button/getInnerLinkTheme/getInnerLinkTheme.js +2 -3
  99. package/components/Button/getInnerLinkTheme/getInnerLinkTheme.js.map +1 -1
  100. package/components/Checkbox/Checkbox/Checkbox.js +4 -5
  101. package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
  102. package/components/CurrencyInput/CurrencyHelper/CurrencyHelper.js +32 -4
  103. package/components/CurrencyInput/CurrencyHelper/CurrencyHelper.js.map +1 -1
  104. package/components/CurrencyInput/CurrencyHelper.d.ts +2 -0
  105. package/components/CurrencyInput/CurrencyInputKeyboardActions.d.ts +1 -1
  106. package/components/DateInput/DateFragmentsView/DateFragmentsView.js +1 -2
  107. package/components/DateInput/DateFragmentsView/DateFragmentsView.js.map +1 -1
  108. package/components/DateInput/helpers/SelectionHelpers/SelectionHelpers.js +6 -7
  109. package/components/DateInput/helpers/SelectionHelpers/SelectionHelpers.js.map +1 -1
  110. package/components/FileUploader/FileUploader/FileUploader.js +1 -2
  111. package/components/FileUploader/FileUploader/FileUploader.js.map +1 -1
  112. package/components/Input/Input/Input.js +1 -2
  113. package/components/Input/Input/Input.js.map +1 -1
  114. package/components/Input/InputLayout/InputLayoutAside/InputLayoutAside.js +1 -2
  115. package/components/Input/InputLayout/InputLayoutAside/InputLayoutAside.js.map +1 -1
  116. package/components/Input/InputLayout/InputLayoutAsideIcon/InputLayoutAsideIcon.js +7 -5
  117. package/components/Input/InputLayout/InputLayoutAsideIcon/InputLayoutAsideIcon.js.map +1 -1
  118. package/components/Link/Link/Link.js +4 -4
  119. package/components/Link/Link/Link.js.map +1 -1
  120. package/components/Link/Link.mixins/Link.mixins.js +2 -5
  121. package/components/Link/Link.mixins/Link.mixins.js.map +1 -1
  122. package/components/Link/Link.mixins.d.ts +1 -2
  123. package/components/Link/Link.styles/Link.styles.js +29 -21
  124. package/components/Link/Link.styles/Link.styles.js.map +1 -1
  125. package/components/Link/Link.styles.d.ts +2 -0
  126. package/components/Loader/Loader/Loader.js +1 -2
  127. package/components/Loader/Loader/Loader.js.map +1 -1
  128. package/components/Paging/Paging/Paging.js +2 -3
  129. package/components/Paging/Paging/Paging.js.map +1 -1
  130. package/components/PasswordInput/PasswordInput/PasswordInput.js +2 -3
  131. package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
  132. package/components/ScrollContainer/ScrollBar/ScrollBar.js +1 -2
  133. package/components/ScrollContainer/ScrollBar/ScrollBar.js.map +1 -1
  134. package/components/SidePage/SidePage/SidePage.js +1 -2
  135. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  136. package/components/Sticky/Sticky/Sticky.js +3 -3
  137. package/components/Sticky/Sticky/Sticky.js.map +1 -1
  138. package/components/Textarea/Textarea/Textarea.js +1 -2
  139. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  140. package/components/Toast/ToastStatic/ToastStatic.js +3 -3
  141. package/components/Toast/ToastStatic/ToastStatic.js.map +1 -1
  142. package/components/TokenInput/TokenInput/TokenInput.js +3 -4
  143. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  144. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +8 -6
  145. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
  146. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js +8 -7
  147. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js.map +1 -1
  148. package/internal/FocusTrap/FocusTrap/FocusTrap.js +2 -3
  149. package/internal/FocusTrap/FocusTrap/FocusTrap.js.map +1 -1
  150. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll/HideBodyVerticalScroll.js +5 -4
  151. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll/HideBodyVerticalScroll.js.map +1 -1
  152. package/internal/InputLikeText/InputLikeText/InputLikeText.js +27 -16
  153. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  154. package/internal/InputLikeText/InputLikeText.d.ts +1 -0
  155. package/internal/Popup/PopupHelper/PopupHelper.js +1 -2
  156. package/internal/Popup/PopupHelper/PopupHelper.js.map +1 -1
  157. package/internal/PopupMenu/PopupMenu/PopupMenu.js +2 -3
  158. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  159. package/internal/RenderContainer/RenderContainer/RenderContainer.js +3 -4
  160. package/internal/RenderContainer/RenderContainer/RenderContainer.js.map +1 -1
  161. package/internal/RenderLayer/RenderLayer/RenderLayer.js +2 -3
  162. package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
  163. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  164. package/internal/ZIndex/ZIndex/ZIndex.js +1 -2
  165. package/internal/ZIndex/ZIndex/ZIndex.js.map +1 -1
  166. package/internal/themes/DefaultTheme/DefaultTheme.js +7 -66
  167. package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
  168. package/internal/themes/DefaultTheme.d.ts +4 -15
  169. package/internal/themes/Theme2022/Theme2022.js +0 -15
  170. package/internal/themes/Theme2022/Theme2022.js.map +1 -1
  171. package/internal/themes/Theme2022.d.ts +0 -3
  172. package/lib/SSRSafe/SSRSafe.js +1 -3
  173. package/lib/SSRSafe/SSRSafe.js.map +1 -1
  174. package/lib/SSRSafe.d.ts +0 -1
  175. package/lib/Upgrades/Upgrades.js +1 -14
  176. package/lib/Upgrades/Upgrades.js.map +1 -1
  177. package/lib/Upgrades.d.ts +0 -2
  178. package/lib/client/client.js +2 -3
  179. package/lib/client/client.js.map +1 -1
  180. package/lib/dom/getScrollWidth/getScrollWidth.js +3 -3
  181. package/lib/dom/getScrollWidth/getScrollWidth.js.map +1 -1
  182. package/lib/dom/tabbableHelpers/tabbableHelpers.js +1 -2
  183. package/lib/dom/tabbableHelpers/tabbableHelpers.js.map +1 -1
  184. package/lib/events/MouseDrag/MouseDrag.js +2 -3
  185. package/lib/events/MouseDrag/MouseDrag.js.map +1 -1
  186. package/lib/events/fixClickFocusIE/fixClickFocusIE.js +1 -2
  187. package/lib/events/fixClickFocusIE/fixClickFocusIE.js.map +1 -1
  188. package/lib/listenFocusOutside/listenFocusOutside.js +4 -5
  189. package/lib/listenFocusOutside/listenFocusOutside.js.map +1 -1
  190. package/lib/needsPolyfillPlaceholder/needsPolyfillPlaceholder.js +1 -2
  191. package/lib/needsPolyfillPlaceholder/needsPolyfillPlaceholder.js.map +1 -1
  192. package/lib/theming/Emotion/Emotion.js +1 -3
  193. package/lib/theming/Emotion/Emotion.js.map +1 -1
  194. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -3,6 +3,75 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [4.15.6](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@4.15.5...@skbkontur/react-ui@4.15.6) (2023-08-02)
7
+
8
+ **Note:** Version bump only for package @skbkontur/react-ui
9
+
10
+
11
+
12
+
13
+
14
+ ## [4.15.5](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@4.15.4...@skbkontur/react-ui@4.15.5) (2023-08-02)
15
+
16
+
17
+ ### Bug Fixes
18
+
19
+ * **InputLikeText:** use debounce to control async content selection ([#3226](https://github.com/skbkontur/retail-ui/issues/3226)) ([18e5947](https://github.com/skbkontur/retail-ui/commit/18e5947086f0a6b161b4fc0d40412a600131337f))
20
+
21
+
22
+
23
+
24
+
25
+ ## [4.15.4](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@4.15.3...@skbkontur/react-ui@4.15.4) (2023-07-24)
26
+
27
+
28
+ ### Bug Fixes
29
+
30
+ * a correct republish of the previous release
31
+
32
+
33
+
34
+
35
+
36
+ ## [4.15.3](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@4.15.2...@skbkontur/react-ui@4.15.3) (2023-07-21)
37
+
38
+
39
+ ### Bug Fixes
40
+
41
+ * **ComboBox,InputLikeText:** use `flushSync` only in React 18 ([#3206](https://github.com/skbkontur/retail-ui/issues/3206)) ([ee55374](https://github.com/skbkontur/retail-ui/commit/ee55374df69f797f1257d99250366770b513a096))
42
+
43
+
44
+
45
+
46
+
47
+ ## [4.15.2](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@4.15.1...@skbkontur/react-ui@4.15.2) (2023-07-17)
48
+
49
+
50
+ ### Bug Fixes
51
+
52
+ * **ComboBox:** use `flushSync` only in React@18 ([#3202](https://github.com/skbkontur/retail-ui/issues/3202)) ([9795006](https://github.com/skbkontur/retail-ui/commit/9795006c799b7266fd88bb9dcf5760148c3ad12d))
53
+ * **CurrencyInput:** allow to work with very small or large values ([#3200](https://github.com/skbkontur/retail-ui/issues/3200)) ([ffc234f](https://github.com/skbkontur/retail-ui/commit/ffc234f726479c9a26b3da5c1b768b061dbf52d1))
54
+ * **Link, Button:** add theme variables for border-bottom ([#3203](https://github.com/skbkontur/retail-ui/issues/3203)) ([d418758](https://github.com/skbkontur/retail-ui/commit/d4187586f24d943716b24ac2cfc437e69becf53e))
55
+
56
+
57
+
58
+
59
+
60
+ ## [4.15.1](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@4.15.0...@skbkontur/react-ui@4.15.1) (2023-07-04)
61
+
62
+
63
+ ### Bug Fixes
64
+
65
+ * allow use inherit as a linkColor ([#3185](https://github.com/skbkontur/retail-ui/issues/3185)) ([09218bb](https://github.com/skbkontur/retail-ui/commit/09218bb9bce9746e25b1894b9c3631e0a0b44785))
66
+ * **ComboBox:** flushSync throws an error into console ([#3189](https://github.com/skbkontur/retail-ui/issues/3189)) ([8e0d2d2](https://github.com/skbkontur/retail-ui/commit/8e0d2d20f2bd5e5f034841a8057ce4a06012d23b))
67
+ * **html:** get rid of type duplication ([#3188](https://github.com/skbkontur/retail-ui/issues/3188)) ([5de46a4](https://github.com/skbkontur/retail-ui/commit/5de46a4aef7728239f417c225235f9a97ec23cac))
68
+ * **Modal.Header, Modal.Footer:** passing common props ([#3187](https://github.com/skbkontur/retail-ui/issues/3187)) ([4aa327b](https://github.com/skbkontur/retail-ui/commit/4aa327b9b457912591c57b83342e722ae0802506))
69
+ * **theme:** add missing units to values ([#3184](https://github.com/skbkontur/retail-ui/issues/3184)) ([885a372](https://github.com/skbkontur/retail-ui/commit/885a372d8d6b5e3df3894cfee8f59ed685b0c056))
70
+
71
+
72
+
73
+
74
+
6
75
  # [4.15.0](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@4.14.2...@skbkontur/react-ui@4.15.0) (2023-06-13)
7
76
 
8
77
 
@@ -4,11 +4,10 @@
4
4
  var getInnerLinkTheme = function getInnerLinkTheme(theme) {
5
5
  return _ThemeFactory.ThemeFactory.create(
6
6
  {
7
- linkLineBorderBottomColor: theme.btnLinkLineBorderBottomColor,
8
7
  linkLineBorderBottomStyle: theme.btnLinkLineBorderBottomStyle,
8
+ linkLineHoverBorderBottomStyle: theme.btnLinkHoverLineBorderBottomStyle,
9
+ linkLineBorderBottomOpacity: theme.btnLinkLineBorderBottomOpacity,
9
10
  linkLineBorderBottomWidth: theme.btnLinkLineBorderBottomWidth,
10
- linkLineHoverBorderBottomColor: theme.btnLinkLineHoverBorderBottomColor,
11
- linkLineActiveBorderBottomColor: theme.btnLinkLineActiveBorderBottomColor,
12
11
  linkDisabledColor: theme.btnLinkDisabledColor },
13
12
 
14
13
  theme);
@@ -1 +1 @@
1
- {"version":3,"sources":["getInnerLinkTheme.ts"],"names":["getInnerLinkTheme","theme","ThemeFactory","create","linkLineBorderBottomColor","btnLinkLineBorderBottomColor","linkLineBorderBottomStyle","btnLinkLineBorderBottomStyle","linkLineBorderBottomWidth","btnLinkLineBorderBottomWidth","linkLineHoverBorderBottomColor","btnLinkLineHoverBorderBottomColor","linkLineActiveBorderBottomColor","btnLinkLineActiveBorderBottomColor","linkDisabledColor","btnLinkDisabledColor"],"mappings":"0EAAA;;;AAGO,IAAMA,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,KAAD,EAAyB;AACxD,SAAOC,2BAAaC,MAAb;AACL;AACEC,IAAAA,yBAAyB,EAAEH,KAAK,CAACI,4BADnC;AAEEC,IAAAA,yBAAyB,EAAEL,KAAK,CAACM,4BAFnC;AAGEC,IAAAA,yBAAyB,EAAEP,KAAK,CAACQ,4BAHnC;AAIEC,IAAAA,8BAA8B,EAAET,KAAK,CAACU,iCAJxC;AAKEC,IAAAA,+BAA+B,EAAEX,KAAK,CAACY,kCALzC;AAMEC,IAAAA,iBAAiB,EAAEb,KAAK,CAACc,oBAN3B,EADK;;AASLd,EAAAA,KATK,CAAP;;AAWD,CAZM,C","sourcesContent":["import { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const getInnerLinkTheme = (theme: Theme): Theme => {\n return ThemeFactory.create(\n {\n linkLineBorderBottomColor: theme.btnLinkLineBorderBottomColor,\n linkLineBorderBottomStyle: theme.btnLinkLineBorderBottomStyle,\n linkLineBorderBottomWidth: theme.btnLinkLineBorderBottomWidth,\n linkLineHoverBorderBottomColor: theme.btnLinkLineHoverBorderBottomColor,\n linkLineActiveBorderBottomColor: theme.btnLinkLineActiveBorderBottomColor,\n linkDisabledColor: theme.btnLinkDisabledColor,\n },\n theme,\n );\n};\n"]}
1
+ {"version":3,"sources":["getInnerLinkTheme.ts"],"names":["getInnerLinkTheme","theme","ThemeFactory","create","linkLineBorderBottomStyle","btnLinkLineBorderBottomStyle","linkLineHoverBorderBottomStyle","btnLinkHoverLineBorderBottomStyle","linkLineBorderBottomOpacity","btnLinkLineBorderBottomOpacity","linkLineBorderBottomWidth","btnLinkLineBorderBottomWidth","linkDisabledColor","btnLinkDisabledColor"],"mappings":"0EAAA;;;AAGO,IAAMA,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,KAAD,EAAyB;AACxD,SAAOC,2BAAaC,MAAb;AACL;AACEC,IAAAA,yBAAyB,EAAEH,KAAK,CAACI,4BADnC;AAEEC,IAAAA,8BAA8B,EAAEL,KAAK,CAACM,iCAFxC;AAGEC,IAAAA,2BAA2B,EAAEP,KAAK,CAACQ,8BAHrC;AAIEC,IAAAA,yBAAyB,EAAET,KAAK,CAACU,4BAJnC;AAKEC,IAAAA,iBAAiB,EAAEX,KAAK,CAACY,oBAL3B,EADK;;AAQLZ,EAAAA,KARK,CAAP;;AAUD,CAXM,C","sourcesContent":["import { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const getInnerLinkTheme = (theme: Theme): Theme => {\n return ThemeFactory.create(\n {\n linkLineBorderBottomStyle: theme.btnLinkLineBorderBottomStyle,\n linkLineHoverBorderBottomStyle: theme.btnLinkHoverLineBorderBottomStyle,\n linkLineBorderBottomOpacity: theme.btnLinkLineBorderBottomOpacity,\n linkLineBorderBottomWidth: theme.btnLinkLineBorderBottomWidth,\n linkDisabledColor: theme.btnLinkDisabledColor,\n },\n theme,\n );\n};\n"]}
@@ -14,7 +14,6 @@ var _Emotion = require("../../lib/theming/Emotion");
14
14
  var _rootNode = require("../../lib/rootNode");
15
15
  var _fixFirefoxModifiedClickOnLabel = require("../../lib/events/fixFirefoxModifiedClickOnLabel");
16
16
  var _ThemeHelpers = require("../../lib/theming/ThemeHelpers");
17
- var _SSRSafe = require("../../lib/SSRSafe");
18
17
 
19
18
  var _Checkbox = require("./Checkbox.styles");
20
19
  var _CheckedIcon = require("./CheckedIcon");
@@ -124,13 +123,13 @@ Checkbox = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/func
124
123
  _this.input.current.indeterminate = true;
125
124
  }
126
125
 
127
- _SSRSafe.renderTarget.addEventListener('keydown', _this.handleShiftPress);
128
- _SSRSafe.renderTarget.addEventListener('keyup', _this.handleShiftRelease);
126
+ document.addEventListener('keydown', _this.handleShiftPress);
127
+ document.addEventListener('keyup', _this.handleShiftRelease);
129
128
  };_this.
130
129
 
131
130
  componentWillUnmount = function () {
132
- _SSRSafe.renderTarget.removeEventListener('keydown', _this.handleShiftPress);
133
- _SSRSafe.renderTarget.removeEventListener('keyup', _this.handleShiftRelease);
131
+ document.removeEventListener('keydown', _this.handleShiftPress);
132
+ document.removeEventListener('keyup', _this.handleShiftRelease);
134
133
  };_this.
135
134
 
136
135
 
@@ -1 +1 @@
1
- {"version":3,"sources":["Checkbox.tsx"],"names":["CheckboxDataTids","root","Checkbox","rootNode","state","focusedByTab","indeterminate","props","initialIndeterminate","isShiftPressed","input","React","createRef","handleShiftPress","e","key","setState","handleShiftRelease","componentDidMount","current","renderTarget","addEventListener","componentWillUnmount","removeEventListener","setIndeterminate","resetIndeterminate","renderMain","error","warning","onMouseEnter","onMouseLeave","onMouseOver","onValueChange","type","ariaDescribedby","rest","isIndeterminate","_isTheme2022","theme","iconClass","styles","icon","iconFixPosition","checked","iconUnchecked","IconCheck","parseInt","checkboxBoxSize","IconSquare","rootClass","rootFallback","isIE11","isEdge","rootChecked","rootDisableTextSelect","disabled","Boolean","inputProps","className","onChange","handleChange","onFocus","handleFocus","onBlur","handleBlur","onClick","handleClick","ref","caption","children","captionClass","captionIE11","box","boxWrapper","globalClasses","boxChecked","boxFocus","boxError","boxWarning","boxDisabled","requestAnimationFrame","keyListener","isTabPressed","event","currentTarget","undefined","componentDidUpdate","prevProps","render","setRootNode","focus","blur","PureComponent","__KONTUR_REACT_UI__","propTypes","PropTypes","bool","func"],"mappings":"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","sourcesContent":["// TODO: Enable this rule in functional components.\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport React, { AriaAttributes } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Override } from '../../typings/utility-types';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { OkIcon, SquareIcon } from '../../internal/icons/16px';\nimport { isEdge, isIE11 } from '../../lib/client';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { fixFirefoxModifiedClickOnLabel } from '../../lib/events/fixFirefoxModifiedClickOnLabel';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { renderTarget } from '../../lib/SSRSafe';\n\nimport { styles, globalClasses } from './Checkbox.styles';\nimport { CheckedIcon } from './CheckedIcon';\nimport { IndeterminateIcon } from './IndeterminateIcon';\n\nexport interface CheckboxProps\n extends CommonProps,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /**\n * Контент `label`\n */\n children?: React.ReactNode;\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n /**\n * HTML-событие `mouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `mouseover`.\n */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * Функция, вызываемая при изменении `value`.\n */\n onValueChange?: (value: boolean) => void;\n /**\n * HTML-событие `onblur`.\n */\n onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;\n /**\n * [Неопределённое состояние](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#attr-indeterminate) чекбокса из HTML.\n */\n initialIndeterminate?: boolean;\n /**\n * Атрибут для указания id элемента(-ов), описывающих его\n */\n 'aria-describedby'?: AriaAttributes['aria-describedby'];\n }\n > {}\n\nexport interface CheckboxState {\n focusedByTab: boolean;\n indeterminate: boolean;\n isShiftPressed: boolean;\n}\n\nexport const CheckboxDataTids = {\n root: 'Checkbox__root',\n} as const;\n\n@rootNode\nexport class Checkbox extends React.PureComponent<CheckboxProps, CheckboxState> {\n public static __KONTUR_REACT_UI__ = 'Checkbox';\n\n public static propTypes = {\n checked: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n warning: PropTypes.bool,\n onValueChange: PropTypes.func,\n onBlur: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOver: PropTypes.func,\n };\n\n public state = {\n focusedByTab: false,\n indeterminate: this.props.initialIndeterminate || false,\n isShiftPressed: false,\n };\n\n private theme!: Theme;\n private input = React.createRef<HTMLInputElement>();\n\n private handleShiftPress = (e: KeyboardEvent) => {\n if (e.key === 'Shift') {\n this.setState(() => ({\n isShiftPressed: true,\n }));\n }\n };\n\n private handleShiftRelease = (e: KeyboardEvent) => {\n if (e.key === 'Shift') {\n this.setState({\n isShiftPressed: false,\n });\n }\n };\n\n public componentDidMount = () => {\n if (this.state.indeterminate && this.input.current) {\n this.input.current.indeterminate = true;\n }\n\n renderTarget.addEventListener('keydown', this.handleShiftPress);\n renderTarget.addEventListener('keyup', this.handleShiftRelease);\n };\n\n public componentWillUnmount = () => {\n renderTarget.removeEventListener('keydown', this.handleShiftPress);\n renderTarget.removeEventListener('keyup', this.handleShiftRelease);\n };\n\n private setRootNode!: TSetRootNode;\n\n public componentDidUpdate(prevProps: CheckboxProps) {\n if (prevProps.checked !== this.props.checked) {\n this.resetIndeterminate();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * Программная установка фокуса чекбоксу.\n * @public\n */\n public focus() {\n keyListener.isTabPressed = true;\n this.input.current?.focus();\n }\n\n /**\n * Программное снятие фокуса с чекбокса.\n * @public\n */\n public blur() {\n this.input.current?.blur();\n }\n\n /**\n * Устанавливает чекбокс в HTML-состояние `indeterminate`.\n * @public\n */\n public setIndeterminate = () => {\n this.setState({\n indeterminate: true,\n });\n if (this.input.current) {\n this.input.current.indeterminate = true;\n }\n };\n\n /**\n * Снимает с чекбокса HTML-состояние `indeterminate`.\n * @public\n */\n public resetIndeterminate = () => {\n this.setState({\n indeterminate: false,\n });\n if (this.input.current) {\n this.input.current.indeterminate = false;\n }\n };\n\n private renderMain = (props: CommonWrapperRestProps<CheckboxProps>) => {\n const {\n error,\n warning,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onValueChange,\n type,\n initialIndeterminate,\n 'aria-describedby': ariaDescribedby,\n ...rest\n } = props;\n const isIndeterminate = this.state.indeterminate;\n\n const _isTheme2022 = isTheme2022(this.theme);\n\n const iconClass = cx(\n styles.icon(),\n !_isTheme2022 && styles.iconFixPosition(),\n !props.checked && !isIndeterminate && styles.iconUnchecked(),\n );\n\n const IconCheck = _isTheme2022 ? (\n <span className={iconClass}>\n <CheckedIcon size={parseInt(this.theme.checkboxBoxSize)} />\n </span>\n ) : (\n <OkIcon className={iconClass} />\n );\n const IconSquare = _isTheme2022 ? (\n <span className={iconClass}>\n <IndeterminateIcon size={parseInt(this.theme.checkboxBoxSize)} />\n </span>\n ) : (\n <SquareIcon className={iconClass} />\n );\n\n const rootClass = cx({\n [styles.root(this.theme)]: true,\n [styles.rootFallback()]: isIE11 || isEdge,\n [styles.rootChecked(this.theme)]: props.checked || isIndeterminate,\n [styles.rootDisableTextSelect()]: this.state.isShiftPressed,\n [styles.disabled(this.theme)]: Boolean(props.disabled),\n });\n\n const inputProps = {\n ...rest,\n type: 'checkbox',\n className: styles.input(),\n onChange: this.handleChange,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onClick: this.handleClick,\n ref: this.input,\n };\n\n let caption = null;\n if (this.props.children) {\n const captionClass = cx({\n [styles.caption(this.theme)]: true,\n [styles.captionIE11()]: isIE11 || isEdge,\n [styles.disabled(this.theme)]: Boolean(props.disabled),\n });\n caption = <span className={captionClass}>{this.props.children}</span>;\n }\n\n const box = (\n <div className={cx(styles.boxWrapper(this.theme))}>\n <div\n className={cx(styles.box(this.theme), globalClasses.box, {\n [styles.boxChecked(this.theme)]: props.checked || isIndeterminate,\n [styles.boxFocus(this.theme)]: this.state.focusedByTab,\n [styles.boxError(this.theme)]: props.error,\n [styles.boxWarning(this.theme)]: props.warning,\n [styles.boxDisabled(this.theme)]: props.disabled,\n })}\n >\n {(isIndeterminate && IconSquare) || IconCheck}\n </div>\n </div>\n );\n\n return (\n <label\n data-tid={CheckboxDataTids.root}\n className={rootClass}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onMouseOver={onMouseOver}\n onClick={fixFirefoxModifiedClickOnLabel(this.input)}\n >\n <input {...inputProps} aria-describedby={ariaDescribedby} />\n {box}\n {caption}\n </label>\n );\n };\n\n private handleFocus = (e: React.FocusEvent<any>) => {\n if (!this.props.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n this.props.onBlur?.(e);\n this.setState({ focusedByTab: false });\n };\n\n private handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const checked = event.currentTarget.checked;\n this.props.onValueChange?.(checked);\n\n this.resetIndeterminate();\n\n this.props.onChange?.(event);\n };\n\n private handleClick = (e: React.MouseEvent<HTMLInputElement>) => {\n this.props.onClick?.(e);\n // support IE11's and old Edge's special behavior\n // https://github.com/jquery/jquery/issues/1698\n if (this.state.indeterminate && (isIE11 || isEdge)) {\n this.resetIndeterminate();\n // simulate correct behavior only if onValueChange is used\n // because we cant simulate real native onChange event\n if (this.props.onValueChange && this.input.current) {\n const checked = !this.input.current.checked;\n\n if (this.props.checked === undefined) {\n // in case of uncontrolled mode\n this.input.current.checked = checked;\n }\n\n this.props.onValueChange(checked);\n }\n }\n };\n}\n"]}
1
+ {"version":3,"sources":["Checkbox.tsx"],"names":["CheckboxDataTids","root","Checkbox","rootNode","state","focusedByTab","indeterminate","props","initialIndeterminate","isShiftPressed","input","React","createRef","handleShiftPress","e","key","setState","handleShiftRelease","componentDidMount","current","document","addEventListener","componentWillUnmount","removeEventListener","setIndeterminate","resetIndeterminate","renderMain","error","warning","onMouseEnter","onMouseLeave","onMouseOver","onValueChange","type","ariaDescribedby","rest","isIndeterminate","_isTheme2022","theme","iconClass","styles","icon","iconFixPosition","checked","iconUnchecked","IconCheck","parseInt","checkboxBoxSize","IconSquare","rootClass","rootFallback","isIE11","isEdge","rootChecked","rootDisableTextSelect","disabled","Boolean","inputProps","className","onChange","handleChange","onFocus","handleFocus","onBlur","handleBlur","onClick","handleClick","ref","caption","children","captionClass","captionIE11","box","boxWrapper","globalClasses","boxChecked","boxFocus","boxError","boxWarning","boxDisabled","requestAnimationFrame","keyListener","isTabPressed","event","currentTarget","undefined","componentDidUpdate","prevProps","render","setRootNode","focus","blur","PureComponent","__KONTUR_REACT_UI__","propTypes","PropTypes","bool","func"],"mappings":";;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDO,IAAMA,gBAAgB,GAAG;AAC9BC,EAAAA,IAAI,EAAE,gBADwB,EAAzB,C;;;;AAKMC,Q,OADZC,kB;;;;;;;;;;;;;;;AAgBQC,IAAAA,K,GAAQ;AACbC,MAAAA,YAAY,EAAE,KADD;AAEbC,MAAAA,aAAa,EAAE,MAAKC,KAAL,CAAWC,oBAAX,IAAmC,KAFrC;AAGbC,MAAAA,cAAc,EAAE,KAHH,E;;;;AAOPC,IAAAA,K,gBAAQC,eAAMC,SAAN,E;;AAERC,IAAAA,gB,GAAmB,UAACC,CAAD,EAAsB;AAC/C,UAAIA,CAAC,CAACC,GAAF,KAAU,OAAd,EAAuB;AACrB,cAAKC,QAAL,CAAc,oBAAO;AACnBP,YAAAA,cAAc,EAAE,IADG,EAAP,EAAd;;AAGD;AACF,K;;AAEOQ,IAAAA,kB,GAAqB,UAACH,CAAD,EAAsB;AACjD,UAAIA,CAAC,CAACC,GAAF,KAAU,OAAd,EAAuB;AACrB,cAAKC,QAAL,CAAc;AACZP,UAAAA,cAAc,EAAE,KADJ,EAAd;;AAGD;AACF,K;;AAEMS,IAAAA,iB,GAAoB,YAAM;AAC/B,UAAI,MAAKd,KAAL,CAAWE,aAAX,IAA4B,MAAKI,KAAL,CAAWS,OAA3C,EAAoD;AAClD,cAAKT,KAAL,CAAWS,OAAX,CAAmBb,aAAnB,GAAmC,IAAnC;AACD;;AAEDc,MAAAA,QAAQ,CAACC,gBAAT,CAA0B,SAA1B,EAAqC,MAAKR,gBAA1C;AACAO,MAAAA,QAAQ,CAACC,gBAAT,CAA0B,OAA1B,EAAmC,MAAKJ,kBAAxC;AACD,K;;AAEMK,IAAAA,oB,GAAuB,YAAM;AAClCF,MAAAA,QAAQ,CAACG,mBAAT,CAA6B,SAA7B,EAAwC,MAAKV,gBAA7C;AACAO,MAAAA,QAAQ,CAACG,mBAAT,CAA6B,OAA7B,EAAsC,MAAKN,kBAA3C;AACD,K;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CMO,IAAAA,gB,GAAmB,YAAM;AAC9B,YAAKR,QAAL,CAAc;AACZV,QAAAA,aAAa,EAAE,IADH,EAAd;;AAGA,UAAI,MAAKI,KAAL,CAAWS,OAAf,EAAwB;AACtB,cAAKT,KAAL,CAAWS,OAAX,CAAmBb,aAAnB,GAAmC,IAAnC;AACD;AACF,K;;;;;;AAMMmB,IAAAA,kB,GAAqB,YAAM;AAChC,YAAKT,QAAL,CAAc;AACZV,QAAAA,aAAa,EAAE,KADH,EAAd;;AAGA,UAAI,MAAKI,KAAL,CAAWS,OAAf,EAAwB;AACtB,cAAKT,KAAL,CAAWS,OAAX,CAAmBb,aAAnB,GAAmC,KAAnC;AACD;AACF,K;;AAEOoB,IAAAA,U,GAAa,UAACnB,KAAD,EAAkD;AACrE;AACEoB,MAAAA,KADF;;;;;;;;;;AAWIpB,MAAAA,KAXJ,CACEoB,KADF,CAEEC,OAFF,GAWIrB,KAXJ,CAEEqB,OAFF,CAGEC,YAHF,GAWItB,KAXJ,CAGEsB,YAHF,CAIEC,YAJF,GAWIvB,KAXJ,CAIEuB,YAJF,CAKEC,WALF,GAWIxB,KAXJ,CAKEwB,WALF,CAMEC,aANF,GAWIzB,KAXJ,CAMEyB,aANF,CAOEC,IAPF,GAWI1B,KAXJ,CAOE0B,IAPF,CAQEzB,oBARF,GAWID,KAXJ,CAQEC,oBARF,CASsB0B,eATtB,GAWI3B,KAXJ,CASE,kBATF,EAUK4B,IAVL,+CAWI5B,KAXJ;AAYA,UAAM6B,eAAe,GAAG,MAAKhC,KAAL,CAAWE,aAAnC;;AAEA,UAAM+B,YAAY,GAAG,+BAAY,MAAKC,KAAjB,CAArB;;AAEA,UAAMC,SAAS,GAAG;AAChBC,uBAAOC,IAAP,EADgB;AAEhB,OAACJ,YAAD,IAAiBG,iBAAOE,eAAP,EAFD;AAGhB,OAACnC,KAAK,CAACoC,OAAP,IAAkB,CAACP,eAAnB,IAAsCI,iBAAOI,aAAP,EAHtB,CAAlB;;;AAMA,UAAMC,SAAS,GAAGR,YAAY;AAC5B,6CAAM,SAAS,EAAEE,SAAjB;AACE,mCAAC,wBAAD,IAAa,IAAI,EAAEO,QAAQ,CAAC,MAAKR,KAAL,CAAWS,eAAZ,CAA3B,GADF,CAD4B;;;AAK5B,mCAAC,UAAD,IAAQ,SAAS,EAAER,SAAnB,GALF;;AAOA,UAAMS,UAAU,GAAGX,YAAY;AAC7B,6CAAM,SAAS,EAAEE,SAAjB;AACE,mCAAC,oCAAD,IAAmB,IAAI,EAAEO,QAAQ,CAAC,MAAKR,KAAL,CAAWS,eAAZ,CAAjC,GADF,CAD6B;;;AAK7B,mCAAC,cAAD,IAAY,SAAS,EAAER,SAAvB,GALF;;;AAQA,UAAMU,SAAS,GAAG;AACfT,uBAAOvC,IAAP,CAAY,MAAKqC,KAAjB,CADe,IACW,IADX;AAEfE,uBAAOU,YAAP,EAFe,IAESC,kBAAUC,cAFnB;AAGfZ,uBAAOa,WAAP,CAAmB,MAAKf,KAAxB,CAHe,IAGkB/B,KAAK,CAACoC,OAAN,IAAiBP,eAHnC;AAIfI,uBAAOc,qBAAP,EAJe,IAIkB,MAAKlD,KAAL,CAAWK,cAJ7B;AAKf+B,uBAAOe,QAAP,CAAgB,MAAKjB,KAArB,CALe,IAKekB,OAAO,CAACjD,KAAK,CAACgD,QAAP,CALtB,OAAlB;;;AAQA,UAAME,UAAU;AACXtB,MAAAA,IADW;AAEdF,QAAAA,IAAI,EAAE,UAFQ;AAGdyB,QAAAA,SAAS,EAAElB,iBAAO9B,KAAP,EAHG;AAIdiD,QAAAA,QAAQ,EAAE,MAAKC,YAJD;AAKdC,QAAAA,OAAO,EAAE,MAAKC,WALA;AAMdC,QAAAA,MAAM,EAAE,MAAKC,UANC;AAOdC,QAAAA,OAAO,EAAE,MAAKC,WAPA;AAQdC,QAAAA,GAAG,EAAE,MAAKzD,KARI,GAAhB;;;AAWA,UAAI0D,OAAO,GAAG,IAAd;AACA,UAAI,MAAK7D,KAAL,CAAW8D,QAAf,EAAyB;AACvB,YAAMC,YAAY,GAAG;AAClB9B,yBAAO4B,OAAP,CAAe,MAAK9B,KAApB,CADkB,IACW,IADX;AAElBE,yBAAO+B,WAAP,EAFkB,IAEKpB,kBAAUC,cAFf;AAGlBZ,yBAAOe,QAAP,CAAgB,MAAKjB,KAArB,CAHkB,IAGYkB,OAAO,CAACjD,KAAK,CAACgD,QAAP,CAHnB,QAArB;;AAKAa,QAAAA,OAAO,gBAAG,uCAAM,SAAS,EAAEE,YAAjB,IAAgC,MAAK/D,KAAL,CAAW8D,QAA3C,CAAV;AACD;;AAED,UAAMG,GAAG;AACP,4CAAK,SAAS,EAAE,iBAAGhC,iBAAOiC,UAAP,CAAkB,MAAKnC,KAAvB,CAAH,CAAhB;AACE;AACE,QAAA,SAAS,EAAE,iBAAGE,iBAAOgC,GAAP,CAAW,MAAKlC,KAAhB,CAAH,EAA2BoC,wBAAcF,GAAzC;AACRhC,yBAAOmC,UAAP,CAAkB,MAAKrC,KAAvB,CADQ,IACwB/B,KAAK,CAACoC,OAAN,IAAiBP,eADzC;AAERI,yBAAOoC,QAAP,CAAgB,MAAKtC,KAArB,CAFQ,IAEsB,MAAKlC,KAAL,CAAWC,YAFjC;AAGRmC,yBAAOqC,QAAP,CAAgB,MAAKvC,KAArB,CAHQ,IAGsB/B,KAAK,CAACoB,KAH5B;AAIRa,yBAAOsC,UAAP,CAAkB,MAAKxC,KAAvB,CAJQ,IAIwB/B,KAAK,CAACqB,OAJ9B;AAKRY,yBAAOuC,WAAP,CAAmB,MAAKzC,KAAxB,CALQ,IAKyB/B,KAAK,CAACgD,QAL/B,QADb;;;AASInB,MAAAA,eAAe,IAAIY,UAApB,IAAmCH,SATtC,CADF,CADF;;;;;AAgBA;AACE;AACE,sBAAU7C,gBAAgB,CAACC,IAD7B;AAEE,UAAA,SAAS,EAAEgD,SAFb;AAGE,UAAA,YAAY,EAAEpB,YAHhB;AAIE,UAAA,YAAY,EAAEC,YAJhB;AAKE,UAAA,WAAW,EAAEC,WALf;AAME,UAAA,OAAO,EAAE,oEAA+B,MAAKrB,KAApC,CANX;;AAQE,yEAAW+C,UAAX,IAAuB,oBAAkBvB,eAAzC,IARF;AASGsC,QAAAA,GATH;AAUGJ,QAAAA,OAVH,CADF;;;AAcD,K;;AAEON,IAAAA,W,GAAc,UAAChD,CAAD,EAA8B;AAClD,UAAI,CAAC,MAAKP,KAAL,CAAWgD,QAAhB,EAA0B;AACxB;AACA;AACAyB,QAAAA,qBAAqB,CAAC,YAAM;AAC1B,cAAIC,yBAAYC,YAAhB,EAA8B;AAC5B,kBAAKlE,QAAL,CAAc,EAAEX,YAAY,EAAE,IAAhB,EAAd;AACD;AACF,SAJoB,CAArB;;AAMA,YAAI,MAAKE,KAAL,CAAWsD,OAAf,EAAwB;AACtB,gBAAKtD,KAAL,CAAWsD,OAAX,CAAmB/C,CAAnB;AACD;AACF;AACF,K;;AAEOkD,IAAAA,U,GAAa,UAAClD,CAAD,EAA2C;AAC9D,YAAKP,KAAL,CAAWwD,MAAX,0BAAKxD,KAAL,CAAWwD,MAAX,CAAoBjD,CAApB;AACA,YAAKE,QAAL,CAAc,EAAEX,YAAY,EAAE,KAAhB,EAAd;AACD,K;;AAEOuD,IAAAA,Y,GAAe,UAACuB,KAAD,EAAgD;AACrE,UAAMxC,OAAO,GAAGwC,KAAK,CAACC,aAAN,CAAoBzC,OAApC;AACA,YAAKpC,KAAL,CAAWyB,aAAX,0BAAKzB,KAAL,CAAWyB,aAAX,CAA2BW,OAA3B;;AAEA,YAAKlB,kBAAL;;AAEA,YAAKlB,KAAL,CAAWoD,QAAX,0BAAKpD,KAAL,CAAWoD,QAAX,CAAsBwB,KAAtB;AACD,K;;AAEOjB,IAAAA,W,GAAc,UAACpD,CAAD,EAA2C;AAC/D,YAAKP,KAAL,CAAW0D,OAAX,0BAAK1D,KAAL,CAAW0D,OAAX,CAAqBnD,CAArB;AACA;AACA;AACA,UAAI,MAAKV,KAAL,CAAWE,aAAX,KAA6B6C,kBAAUC,cAAvC,CAAJ,EAAoD;AAClD,cAAK3B,kBAAL;AACA;AACA;AACA,YAAI,MAAKlB,KAAL,CAAWyB,aAAX,IAA4B,MAAKtB,KAAL,CAAWS,OAA3C,EAAoD;AAClD,cAAMwB,OAAO,GAAG,CAAC,MAAKjC,KAAL,CAAWS,OAAX,CAAmBwB,OAApC;;AAEA,cAAI,MAAKpC,KAAL,CAAWoC,OAAX,KAAuB0C,SAA3B,EAAsC;AACpC;AACA,kBAAK3E,KAAL,CAAWS,OAAX,CAAmBwB,OAAnB,GAA6BA,OAA7B;AACD;;AAED,gBAAKpC,KAAL,CAAWyB,aAAX,CAAyBW,OAAzB;AACD;AACF;AACF,K,sDApNM2C,kB,GAAP,4BAA0BC,SAA1B,EAAoD,CAClD,IAAIA,SAAS,CAAC5C,OAAV,KAAsB,KAAKpC,KAAL,CAAWoC,OAArC,EAA8C,CAC5C,KAAKlB,kBAAL,GACD,CACF,C,QAEM+D,M,GAAP,kBAAgB,mBACd,oBACE,6BAAC,0BAAD,CAAc,QAAd,QACG,UAAClD,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,oBACE,6BAAC,4BAAD,2BAAe,WAAW,EAAE,MAAI,CAACmD,WAAjC,IAAkD,MAAI,CAAClF,KAAvD,GACG,MAAI,CAACmB,UADR,CADF,CAKD,CARH,CADF,CAYD,C,CAED;AACF;AACA;AACA,K,QACSgE,K,GAAP,iBAAe,yBACbT,yBAAYC,YAAZ,GAA2B,IAA3B,CACA,4BAAKxE,KAAL,CAAWS,OAAX,yCAAoBuE,KAApB,GACD,C,CAED;AACF;AACA;AACA,K,QACSC,I,GAAP,gBAAc,0BACZ,6BAAKjF,KAAL,CAAWS,OAAX,0CAAoBwE,IAApB,GACD,C,CAED;AACF;AACA;AACA,K,mBAjG8BhF,eAAMiF,a,WACpBC,mB,GAAsB,U,UAEtBC,S,GAAY,EACxBnD,OAAO,EAAEoD,mBAAUC,IADK,EAExBzC,QAAQ,EAAEwC,mBAAUC,IAFI,EAGxBrE,KAAK,EAAEoE,mBAAUC,IAHO,EAIxBpE,OAAO,EAAEmE,mBAAUC,IAJK,EAKxBhE,aAAa,EAAE+D,mBAAUE,IALD,EAMxBlC,MAAM,EAAEgC,mBAAUE,IANM,EAOxBpE,YAAY,EAAEkE,mBAAUE,IAPA,EAQxBnE,YAAY,EAAEiE,mBAAUE,IARA,EASxBlE,WAAW,EAAEgE,mBAAUE,IATC,E","sourcesContent":["// TODO: Enable this rule in functional components.\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport React, { AriaAttributes } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Override } from '../../typings/utility-types';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { OkIcon, SquareIcon } from '../../internal/icons/16px';\nimport { isEdge, isIE11 } from '../../lib/client';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { fixFirefoxModifiedClickOnLabel } from '../../lib/events/fixFirefoxModifiedClickOnLabel';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\n\nimport { styles, globalClasses } from './Checkbox.styles';\nimport { CheckedIcon } from './CheckedIcon';\nimport { IndeterminateIcon } from './IndeterminateIcon';\n\nexport interface CheckboxProps\n extends CommonProps,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /**\n * Контент `label`\n */\n children?: React.ReactNode;\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n /**\n * HTML-событие `mouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `mouseover`.\n */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * Функция, вызываемая при изменении `value`.\n */\n onValueChange?: (value: boolean) => void;\n /**\n * HTML-событие `onblur`.\n */\n onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;\n /**\n * [Неопределённое состояние](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#attr-indeterminate) чекбокса из HTML.\n */\n initialIndeterminate?: boolean;\n /**\n * Атрибут для указания id элемента(-ов), описывающих его\n */\n 'aria-describedby'?: AriaAttributes['aria-describedby'];\n }\n > {}\n\nexport interface CheckboxState {\n focusedByTab: boolean;\n indeterminate: boolean;\n isShiftPressed: boolean;\n}\n\nexport const CheckboxDataTids = {\n root: 'Checkbox__root',\n} as const;\n\n@rootNode\nexport class Checkbox extends React.PureComponent<CheckboxProps, CheckboxState> {\n public static __KONTUR_REACT_UI__ = 'Checkbox';\n\n public static propTypes = {\n checked: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n warning: PropTypes.bool,\n onValueChange: PropTypes.func,\n onBlur: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOver: PropTypes.func,\n };\n\n public state = {\n focusedByTab: false,\n indeterminate: this.props.initialIndeterminate || false,\n isShiftPressed: false,\n };\n\n private theme!: Theme;\n private input = React.createRef<HTMLInputElement>();\n\n private handleShiftPress = (e: KeyboardEvent) => {\n if (e.key === 'Shift') {\n this.setState(() => ({\n isShiftPressed: true,\n }));\n }\n };\n\n private handleShiftRelease = (e: KeyboardEvent) => {\n if (e.key === 'Shift') {\n this.setState({\n isShiftPressed: false,\n });\n }\n };\n\n public componentDidMount = () => {\n if (this.state.indeterminate && this.input.current) {\n this.input.current.indeterminate = true;\n }\n\n document.addEventListener('keydown', this.handleShiftPress);\n document.addEventListener('keyup', this.handleShiftRelease);\n };\n\n public componentWillUnmount = () => {\n document.removeEventListener('keydown', this.handleShiftPress);\n document.removeEventListener('keyup', this.handleShiftRelease);\n };\n\n private setRootNode!: TSetRootNode;\n\n public componentDidUpdate(prevProps: CheckboxProps) {\n if (prevProps.checked !== this.props.checked) {\n this.resetIndeterminate();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * Программная установка фокуса чекбоксу.\n * @public\n */\n public focus() {\n keyListener.isTabPressed = true;\n this.input.current?.focus();\n }\n\n /**\n * Программное снятие фокуса с чекбокса.\n * @public\n */\n public blur() {\n this.input.current?.blur();\n }\n\n /**\n * Устанавливает чекбокс в HTML-состояние `indeterminate`.\n * @public\n */\n public setIndeterminate = () => {\n this.setState({\n indeterminate: true,\n });\n if (this.input.current) {\n this.input.current.indeterminate = true;\n }\n };\n\n /**\n * Снимает с чекбокса HTML-состояние `indeterminate`.\n * @public\n */\n public resetIndeterminate = () => {\n this.setState({\n indeterminate: false,\n });\n if (this.input.current) {\n this.input.current.indeterminate = false;\n }\n };\n\n private renderMain = (props: CommonWrapperRestProps<CheckboxProps>) => {\n const {\n error,\n warning,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onValueChange,\n type,\n initialIndeterminate,\n 'aria-describedby': ariaDescribedby,\n ...rest\n } = props;\n const isIndeterminate = this.state.indeterminate;\n\n const _isTheme2022 = isTheme2022(this.theme);\n\n const iconClass = cx(\n styles.icon(),\n !_isTheme2022 && styles.iconFixPosition(),\n !props.checked && !isIndeterminate && styles.iconUnchecked(),\n );\n\n const IconCheck = _isTheme2022 ? (\n <span className={iconClass}>\n <CheckedIcon size={parseInt(this.theme.checkboxBoxSize)} />\n </span>\n ) : (\n <OkIcon className={iconClass} />\n );\n const IconSquare = _isTheme2022 ? (\n <span className={iconClass}>\n <IndeterminateIcon size={parseInt(this.theme.checkboxBoxSize)} />\n </span>\n ) : (\n <SquareIcon className={iconClass} />\n );\n\n const rootClass = cx({\n [styles.root(this.theme)]: true,\n [styles.rootFallback()]: isIE11 || isEdge,\n [styles.rootChecked(this.theme)]: props.checked || isIndeterminate,\n [styles.rootDisableTextSelect()]: this.state.isShiftPressed,\n [styles.disabled(this.theme)]: Boolean(props.disabled),\n });\n\n const inputProps = {\n ...rest,\n type: 'checkbox',\n className: styles.input(),\n onChange: this.handleChange,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onClick: this.handleClick,\n ref: this.input,\n };\n\n let caption = null;\n if (this.props.children) {\n const captionClass = cx({\n [styles.caption(this.theme)]: true,\n [styles.captionIE11()]: isIE11 || isEdge,\n [styles.disabled(this.theme)]: Boolean(props.disabled),\n });\n caption = <span className={captionClass}>{this.props.children}</span>;\n }\n\n const box = (\n <div className={cx(styles.boxWrapper(this.theme))}>\n <div\n className={cx(styles.box(this.theme), globalClasses.box, {\n [styles.boxChecked(this.theme)]: props.checked || isIndeterminate,\n [styles.boxFocus(this.theme)]: this.state.focusedByTab,\n [styles.boxError(this.theme)]: props.error,\n [styles.boxWarning(this.theme)]: props.warning,\n [styles.boxDisabled(this.theme)]: props.disabled,\n })}\n >\n {(isIndeterminate && IconSquare) || IconCheck}\n </div>\n </div>\n );\n\n return (\n <label\n data-tid={CheckboxDataTids.root}\n className={rootClass}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onMouseOver={onMouseOver}\n onClick={fixFirefoxModifiedClickOnLabel(this.input)}\n >\n <input {...inputProps} aria-describedby={ariaDescribedby} />\n {box}\n {caption}\n </label>\n );\n };\n\n private handleFocus = (e: React.FocusEvent<any>) => {\n if (!this.props.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n this.props.onBlur?.(e);\n this.setState({ focusedByTab: false });\n };\n\n private handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const checked = event.currentTarget.checked;\n this.props.onValueChange?.(checked);\n\n this.resetIndeterminate();\n\n this.props.onChange?.(event);\n };\n\n private handleClick = (e: React.MouseEvent<HTMLInputElement>) => {\n this.props.onClick?.(e);\n // support IE11's and old Edge's special behavior\n // https://github.com/jquery/jquery/issues/1698\n if (this.state.indeterminate && (isIE11 || isEdge)) {\n this.resetIndeterminate();\n // simulate correct behavior only if onValueChange is used\n // because we cant simulate real native onChange event\n if (this.props.onValueChange && this.input.current) {\n const checked = !this.input.current.checked;\n\n if (this.props.checked === undefined) {\n // in case of uncontrolled mode\n this.input.current.checked = checked;\n }\n\n this.props.onValueChange(checked);\n }\n }\n };\n}\n"]}
@@ -30,6 +30,8 @@ export declare class CurrencyHelper {
30
30
  integer: string;
31
31
  delimiter: string;
32
32
  fraction: string;
33
+ exponent: string;
33
34
  } | null;
35
+ private static toDecimalString;
34
36
  }
35
37
  export {};
@@ -69,8 +69,7 @@ CurrencyHelper = /*#__PURE__*/function () {function CurrencyHelper() {}CurrencyH
69
69
  if ((0, _utils.isNullable)(value)) {
70
70
  return '';
71
71
  }
72
-
73
- return CurrencyHelper.formatString(value.toString(), options);
72
+ return CurrencyHelper.formatString(this.toDecimalString(value), options);
74
73
  };CurrencyHelper.
75
74
 
76
75
  parse = function parse(value) {
@@ -202,10 +201,26 @@ CurrencyHelper = /*#__PURE__*/function () {function CurrencyHelper() {}CurrencyH
202
201
  };CurrencyHelper.
203
202
 
204
203
  destructString = function destructString(value) {
205
- var match = /^(-)?(\d*)?(\.)?(\d*)?$/.exec(value);
204
+ var match = /^(-)?(\d*)?(\.)?(\d*)?(e)?([-+]?\d+)?$/.exec(value);
206
205
  if (!match) {
207
206
  return null;
208
207
  }
209
- var _match$ = match[1],sign = _match$ === void 0 ? '' : _match$,_match$2 = match[2],integer = _match$2 === void 0 ? '' : _match$2,_match$3 = match[3],delimiter = _match$3 === void 0 ? '' : _match$3,_match$4 = match[4],fraction = _match$4 === void 0 ? '' : _match$4;
210
- return { sign: sign, integer: integer, delimiter: delimiter, fraction: fraction };
211
- };return CurrencyHelper;}();exports.CurrencyHelper = CurrencyHelper;CurrencyHelper.defaultOptions = { fractionDigits: null, hideTrailingZeros: false, thousandsDelimiter: _client.isSafari ? _constants.SPACE : _constants.THIN_SPACE, minusSign: _constants.MINUS_SIGN };
208
+ var _match$ = match[1],sign = _match$ === void 0 ? '' : _match$,_match$2 = match[2],integer = _match$2 === void 0 ? '' : _match$2,_match$3 = match[3],delimiter = _match$3 === void 0 ? '' : _match$3,_match$4 = match[4],fraction = _match$4 === void 0 ? '' : _match$4,_match$5 = match[6],exponent = _match$5 === void 0 ? '' : _match$5;
209
+ return { sign: sign, integer: integer, delimiter: delimiter, fraction: fraction, exponent: exponent };
210
+ };return CurrencyHelper;}();exports.CurrencyHelper = CurrencyHelper;CurrencyHelper.defaultOptions = { fractionDigits: null, hideTrailingZeros: false, thousandsDelimiter: _client.isSafari ? _constants.SPACE : _constants.THIN_SPACE, minusSign: _constants.MINUS_SIGN };CurrencyHelper.
211
+
212
+ toDecimalString = function (number) {
213
+ if (!number.toString().includes('e')) {
214
+ return number.toString();
215
+ }
216
+ var destructed = CurrencyHelper.destructString(number.toExponential());
217
+ if (destructed === null) {
218
+ return '';
219
+ }
220
+ var _destructed$sign = destructed.sign,sign = _destructed$sign === void 0 ? '' : _destructed$sign,integer = destructed.integer,fraction = destructed.fraction,exponent = destructed.exponent;
221
+ var intExponent = parseInt(exponent || '0');
222
+ if (intExponent > 0) {
223
+ return [sign, integer, fraction, '0'.repeat(intExponent - fraction.length)].join('');
224
+ }
225
+ return [sign, '0.', ' 0'.repeat(-intExponent - 1), integer, fraction].join('');
226
+ };
@@ -1 +1 @@
1
- {"version":3,"sources":["CurrencyHelper.tsx"],"names":["CurrencyHelper","getOptions","options","defaultOptions","getInfo","value","raw","unformatString","formatted","formatString","cursorMap","getCursorMap","formattingOptions","regexp","RegExp","thousandsDelimiter","index","length","cursor","skip","ignoredSymbol","exec","format","toString","parse","cleaned","destructed","destructString","result","sign","integer","delimiter","fraction","parseFloat","replace","formatForClipboard","unformattedValue","fractionDigits","hideTrailingZeros","parts","blockSize","start","i","push","substring","Math","max","join","padEnd","min","MAX_SAFE_DIGITS","minusSign","isValidString","unsigned","integerDigits","extractValid","match","token","substr","MAX_ALLOWED_CHARS","isSafari","SPACE","THIN_SPACE","MINUS_SIGN"],"mappings":"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","sourcesContent":["import { isNonNullable, isNullable } from '../../lib/utils';\nimport { Nullable } from '../../typings/utility-types';\nimport { isSafari } from '../../lib/client';\n\nimport { DecimalOptions } from './CurrencyInputHelper';\nimport { CursorMap } from './CursorHelper';\nimport { MAX_ALLOWED_CHARS, MAX_SAFE_DIGITS, MINUS_SIGN, SPACE, THIN_SPACE } from './constants';\n\nexport interface DecimalFormattingOptions {\n fractionDigits?: Nullable<number>;\n hideTrailingZeros?: boolean;\n thousandsDelimiter?: string;\n minusSign?: string;\n}\n\ntype DecimalFormattingOptionsInternal = Required<DecimalFormattingOptions>;\n\nexport interface FormattingInfo {\n raw: string;\n formatted: string;\n cursorMap: CursorMap;\n}\n\nexport class CurrencyHelper {\n public static defaultOptions: DecimalFormattingOptionsInternal = {\n fractionDigits: null,\n hideTrailingZeros: false,\n thousandsDelimiter: isSafari ? SPACE : THIN_SPACE,\n minusSign: MINUS_SIGN,\n };\n\n public static getOptions(options?: Nullable<DecimalFormattingOptions>): DecimalFormattingOptionsInternal {\n return { ...CurrencyHelper.defaultOptions, ...options };\n }\n\n public static getInfo(value: string, options?: Nullable<DecimalFormattingOptions>): FormattingInfo {\n const raw = CurrencyHelper.unformatString(value);\n const formatted = CurrencyHelper.formatString(value, options);\n const cursorMap = CurrencyHelper.getCursorMap(formatted, options);\n\n return { raw, formatted, cursorMap };\n }\n\n public static getCursorMap(formatted: string, formattingOptions?: Nullable<DecimalFormattingOptions>): CursorMap {\n const options = CurrencyHelper.getOptions(formattingOptions);\n const regexp = new RegExp(options.thousandsDelimiter);\n const cursorMap: CursorMap = [];\n\n let index = formatted.length;\n let cursor = formatted.length;\n let skip = 0;\n\n while (index >= 0) {\n cursorMap[index] = cursor;\n\n const ignoredSymbol = regexp.exec(formatted[index - 1]);\n if (ignoredSymbol) {\n ++skip;\n } else {\n cursor = cursor - skip - 1;\n skip = 0;\n }\n --index;\n }\n return cursorMap;\n }\n\n public static format(value: Nullable<number>, options?: Nullable<DecimalFormattingOptions>): string {\n if (isNullable(value)) {\n return '';\n }\n\n return CurrencyHelper.formatString(value.toString(), options);\n }\n\n public static parse(value: string): Nullable<number> {\n const cleaned = CurrencyHelper.unformatString(value);\n if (!cleaned) {\n return null;\n }\n\n const destructed = CurrencyHelper.destructString(cleaned);\n if (!destructed) {\n return null;\n }\n\n const result =\n destructed.sign + (destructed.integer || '0') + (destructed.delimiter || '.') + (destructed.fraction || '0');\n\n return parseFloat(result);\n }\n\n public static unformatString(value: string): string {\n return value\n .replace(/\\s/g, '')\n .replace(',', '.')\n .replace(/[\\u2212\\u002D\\uFE63\\uFF0D\\u2012\\u2013\\u2014\\u2015]/g, '-');\n }\n\n public static formatForClipboard(value: string): string {\n return CurrencyHelper.unformatString(value).replace('.', ',');\n }\n\n public static formatString(value: string, formattingOptions?: Nullable<DecimalFormattingOptions>): string {\n const unformattedValue = CurrencyHelper.unformatString(value);\n const destructed = CurrencyHelper.destructString(unformattedValue) || {\n sign: '',\n integer: '',\n delimiter: '',\n fraction: '',\n };\n\n const { sign, integer, delimiter } = destructed;\n let fraction = destructed.fraction;\n let fractionDigits = fraction.length;\n\n const options = CurrencyHelper.getOptions(formattingOptions);\n if (options.hideTrailingZeros) {\n fraction = fraction.replace(/0+$/, '');\n fractionDigits = fraction.length;\n } else if (options.fractionDigits !== null) {\n fractionDigits = options.fractionDigits;\n }\n\n const parts = [];\n\n const blockSize = 3;\n const start = ((integer.length - 1) % blockSize) - blockSize + 1;\n for (let i = start; i < integer.length; i += blockSize) {\n parts.push(integer.substring(Math.max(i, 0), i + blockSize));\n }\n\n let result = parts.join(options.thousandsDelimiter);\n\n if (delimiter || fractionDigits) {\n result += ',';\n result += fraction.padEnd(Math.min(fractionDigits, MAX_SAFE_DIGITS), '0');\n }\n\n if (sign) {\n result = options.minusSign + result;\n }\n\n return result;\n }\n\n public static isValidString(value: string, options: DecimalOptions) {\n const unformattedValue = CurrencyHelper.unformatString(value);\n const destructed = CurrencyHelper.destructString(unformattedValue);\n\n if (!destructed) {\n return false;\n }\n\n const { sign, integer, delimiter, fraction } = destructed;\n\n if (options.unsigned && sign) {\n return false;\n }\n\n if (options.fractionDigits === 0 && delimiter) {\n return false;\n }\n\n const integerDigits = integer === '0' ? 0 : integer.length;\n const fractionDigits = fraction.length;\n\n if (isNonNullable(options.integerDigits) && integerDigits > options.integerDigits) {\n return false;\n }\n\n if (isNullable(options.integerDigits) && integerDigits > MAX_SAFE_DIGITS - (options.fractionDigits || 0)) {\n return false;\n }\n\n if (isNonNullable(options.fractionDigits) && fractionDigits > options.fractionDigits) {\n return false;\n }\n\n return integerDigits + fractionDigits <= MAX_SAFE_DIGITS;\n }\n\n public static extractValid(value: string, options: DecimalOptions): string {\n const unformattedValue = CurrencyHelper.unformatString(value);\n\n const match = /[-.\\d]+/.exec(unformattedValue);\n\n if (!match) {\n return '';\n }\n\n const token = match[0].substr(0, MAX_ALLOWED_CHARS);\n\n for (let i = token.length; i >= 0; --i) {\n const result = token.substr(0, i);\n if (CurrencyHelper.isValidString(result, options)) {\n return result;\n }\n }\n\n return '';\n }\n\n public static destructString(value: string) {\n const match = /^(-)?(\\d*)?(\\.)?(\\d*)?$/.exec(value);\n if (!match) {\n return null;\n }\n const [, sign = '', integer = '', delimiter = '', fraction = ''] = match;\n return { sign, integer, delimiter, fraction };\n }\n}\n"]}
1
+ {"version":3,"sources":["CurrencyHelper.tsx"],"names":["CurrencyHelper","getOptions","options","defaultOptions","getInfo","value","raw","unformatString","formatted","formatString","cursorMap","getCursorMap","formattingOptions","regexp","RegExp","thousandsDelimiter","index","length","cursor","skip","ignoredSymbol","exec","format","toDecimalString","parse","cleaned","destructed","destructString","result","sign","integer","delimiter","fraction","parseFloat","replace","formatForClipboard","unformattedValue","fractionDigits","hideTrailingZeros","parts","blockSize","start","i","push","substring","Math","max","join","padEnd","min","MAX_SAFE_DIGITS","minusSign","isValidString","unsigned","integerDigits","extractValid","match","token","substr","MAX_ALLOWED_CHARS","exponent","isSafari","SPACE","THIN_SPACE","MINUS_SIGN","number","toString","includes","toExponential","intExponent","parseInt","repeat"],"mappings":"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","sourcesContent":["import { isNonNullable, isNullable } from '../../lib/utils';\nimport { Nullable } from '../../typings/utility-types';\nimport { isSafari } from '../../lib/client';\n\nimport { DecimalOptions } from './CurrencyInputHelper';\nimport { CursorMap } from './CursorHelper';\nimport { MAX_ALLOWED_CHARS, MAX_SAFE_DIGITS, MINUS_SIGN, SPACE, THIN_SPACE } from './constants';\n\nexport interface DecimalFormattingOptions {\n fractionDigits?: Nullable<number>;\n hideTrailingZeros?: boolean;\n thousandsDelimiter?: string;\n minusSign?: string;\n}\n\ntype DecimalFormattingOptionsInternal = Required<DecimalFormattingOptions>;\n\nexport interface FormattingInfo {\n raw: string;\n formatted: string;\n cursorMap: CursorMap;\n}\n\nexport class CurrencyHelper {\n public static defaultOptions: DecimalFormattingOptionsInternal = {\n fractionDigits: null,\n hideTrailingZeros: false,\n thousandsDelimiter: isSafari ? SPACE : THIN_SPACE,\n minusSign: MINUS_SIGN,\n };\n\n public static getOptions(options?: Nullable<DecimalFormattingOptions>): DecimalFormattingOptionsInternal {\n return { ...CurrencyHelper.defaultOptions, ...options };\n }\n\n public static getInfo(value: string, options?: Nullable<DecimalFormattingOptions>): FormattingInfo {\n const raw = CurrencyHelper.unformatString(value);\n const formatted = CurrencyHelper.formatString(value, options);\n const cursorMap = CurrencyHelper.getCursorMap(formatted, options);\n\n return { raw, formatted, cursorMap };\n }\n\n public static getCursorMap(formatted: string, formattingOptions?: Nullable<DecimalFormattingOptions>): CursorMap {\n const options = CurrencyHelper.getOptions(formattingOptions);\n const regexp = new RegExp(options.thousandsDelimiter);\n const cursorMap: CursorMap = [];\n\n let index = formatted.length;\n let cursor = formatted.length;\n let skip = 0;\n\n while (index >= 0) {\n cursorMap[index] = cursor;\n\n const ignoredSymbol = regexp.exec(formatted[index - 1]);\n if (ignoredSymbol) {\n ++skip;\n } else {\n cursor = cursor - skip - 1;\n skip = 0;\n }\n --index;\n }\n return cursorMap;\n }\n\n public static format(value: Nullable<number>, options?: Nullable<DecimalFormattingOptions>): string {\n if (isNullable(value)) {\n return '';\n }\n return CurrencyHelper.formatString(this.toDecimalString(value), options);\n }\n\n public static parse(value: string): Nullable<number> {\n const cleaned = CurrencyHelper.unformatString(value);\n if (!cleaned) {\n return null;\n }\n\n const destructed = CurrencyHelper.destructString(cleaned);\n if (!destructed) {\n return null;\n }\n\n const result =\n destructed.sign + (destructed.integer || '0') + (destructed.delimiter || '.') + (destructed.fraction || '0');\n\n return parseFloat(result);\n }\n\n public static unformatString(value: string): string {\n return value\n .replace(/\\s/g, '')\n .replace(',', '.')\n .replace(/[\\u2212\\u002D\\uFE63\\uFF0D\\u2012\\u2013\\u2014\\u2015]/g, '-');\n }\n\n public static formatForClipboard(value: string): string {\n return CurrencyHelper.unformatString(value).replace('.', ',');\n }\n\n public static formatString(value: string, formattingOptions?: Nullable<DecimalFormattingOptions>): string {\n const unformattedValue = CurrencyHelper.unformatString(value);\n const destructed = CurrencyHelper.destructString(unformattedValue) || {\n sign: '',\n integer: '',\n delimiter: '',\n fraction: '',\n };\n\n const { sign, integer, delimiter } = destructed;\n let fraction = destructed.fraction;\n let fractionDigits = fraction.length;\n\n const options = CurrencyHelper.getOptions(formattingOptions);\n if (options.hideTrailingZeros) {\n fraction = fraction.replace(/0+$/, '');\n fractionDigits = fraction.length;\n } else if (options.fractionDigits !== null) {\n fractionDigits = options.fractionDigits;\n }\n\n const parts = [];\n\n const blockSize = 3;\n const start = ((integer.length - 1) % blockSize) - blockSize + 1;\n for (let i = start; i < integer.length; i += blockSize) {\n parts.push(integer.substring(Math.max(i, 0), i + blockSize));\n }\n\n let result = parts.join(options.thousandsDelimiter);\n\n if (delimiter || fractionDigits) {\n result += ',';\n result += fraction.padEnd(Math.min(fractionDigits, MAX_SAFE_DIGITS), '0');\n }\n\n if (sign) {\n result = options.minusSign + result;\n }\n\n return result;\n }\n\n public static isValidString(value: string, options: DecimalOptions) {\n const unformattedValue = CurrencyHelper.unformatString(value);\n const destructed = CurrencyHelper.destructString(unformattedValue);\n\n if (!destructed) {\n return false;\n }\n\n const { sign, integer, delimiter, fraction } = destructed;\n\n if (options.unsigned && sign) {\n return false;\n }\n\n if (options.fractionDigits === 0 && delimiter) {\n return false;\n }\n\n const integerDigits = integer === '0' ? 0 : integer.length;\n const fractionDigits = fraction.length;\n\n if (isNonNullable(options.integerDigits) && integerDigits > options.integerDigits) {\n return false;\n }\n\n if (isNullable(options.integerDigits) && integerDigits > MAX_SAFE_DIGITS - (options.fractionDigits || 0)) {\n return false;\n }\n\n if (isNonNullable(options.fractionDigits) && fractionDigits > options.fractionDigits) {\n return false;\n }\n\n return integerDigits + fractionDigits <= MAX_SAFE_DIGITS;\n }\n\n public static extractValid(value: string, options: DecimalOptions): string {\n const unformattedValue = CurrencyHelper.unformatString(value);\n\n const match = /[-.\\d]+/.exec(unformattedValue);\n\n if (!match) {\n return '';\n }\n\n const token = match[0].substr(0, MAX_ALLOWED_CHARS);\n\n for (let i = token.length; i >= 0; --i) {\n const result = token.substr(0, i);\n if (CurrencyHelper.isValidString(result, options)) {\n return result;\n }\n }\n\n return '';\n }\n\n public static destructString(value: string) {\n const match = /^(-)?(\\d*)?(\\.)?(\\d*)?(e)?([-+]?\\d+)?$/.exec(value);\n if (!match) {\n return null;\n }\n const [, sign = '', integer = '', delimiter = '', fraction = '', , exponent = ''] = match;\n return { sign, integer, delimiter, fraction, exponent };\n }\n\n private static toDecimalString = (number: number) => {\n if (!number.toString().includes('e')) {\n return number.toString();\n }\n const destructed = this.destructString(number.toExponential());\n if (destructed === null) {\n return '';\n }\n const { sign = '', integer, fraction, exponent } = destructed;\n const intExponent = parseInt(exponent || '0');\n if (intExponent > 0) {\n return [sign, integer, fraction, '0'.repeat(intExponent - fraction.length)].join('');\n }\n return [sign, '0.', ' 0'.repeat(-intExponent - 1), integer, fraction].join('');\n };\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- export declare const commaAliases: ((e: KeyboardEvent | import("react").KeyboardEvent<HTMLElement>) => boolean)[];
2
+ export declare const commaAliases: ((e: import("react").KeyboardEvent<HTMLElement> | KeyboardEvent) => boolean)[];
3
3
  export declare const CURRENCY_INPUT_ACTIONS: {
4
4
  Unknown: number;
5
5
  Ignore: number;
@@ -6,7 +6,6 @@ var _types = require("../../lib/date/types");
6
6
 
7
7
  var _ThemeContext = require("../../lib/theming/ThemeContext");
8
8
  var _Emotion = require("../../lib/theming/Emotion");
9
- var _SSRSafe = require("../../lib/SSRSafe");
10
9
 
11
10
  var _DateFragmentsView = require("./DateFragmentsView.styles");var
12
11
 
@@ -108,4 +107,4 @@ DateFragmentsView = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose
108
107
 
109
108
  rootRef = function (el) {
110
109
  _this.rootNode = el;
111
- };return _this;}var _proto = DateFragmentsView.prototype;_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return _this2.renderMain();});};_proto.renderMain = function renderMain() {var _this3 = this;return /*#__PURE__*/_react.default.createElement("span", { ref: this.rootRef, className: _DateFragmentsView.styles.root(this.theme) }, this.props.fragments.map(function (fragment, index) {return fragment.type === _types.InternalDateComponentType.Separator ? _this3.renderSeparator(fragment, index) : _this3.renderDateComponent(fragment, index);}));};_proto.renderSeparator = function renderSeparator(fragment, index) {var _cx;var separatorClassName = (0, _Emotion.cx)((_cx = {}, _cx[_DateFragmentsView.styles.mask(this.theme)] = true, _cx[_DateFragmentsView.styles.delimiterFilled()] = this.props.fragments[index + 1].value !== null, _cx));return /*#__PURE__*/_react.default.createElement("span", { key: index, className: separatorClassName }, fragment.value);};_proto.renderDateComponent = function renderDateComponent(fragment, index) {var _this$props = this.props,inputMode = _this$props.inputMode,onSelectDateComponent = _this$props.onSelectDateComponent,selected = _this$props.selected;var type = fragment.type,value = fragment.value,length = fragment.length,valueWithPad = fragment.valueWithPad;var getValueMask = function getValueMask() {if (value === null || selected === type && inputMode) {return value;}return valueWithPad || value;};var valueMask = getValueMask();var lengthMask = _InternalDateValidator.InternalDateValidator.testParseToNumber(valueMask) ? Math.max(length - valueMask.toString().length, 0) : length;var handleMouseUp = function handleMouseUp(e) {if (_SSRSafe.renderTarget.activeElement && _SSRSafe.renderTarget.activeElement.contains(e.currentTarget)) {onSelectDateComponent(type, e);}};return /*#__PURE__*/_react.default.createElement("span", { key: index, "data-fragment": "", onMouseUp: handleMouseUp }, valueMask, /*#__PURE__*/_react.default.createElement("span", { "data-tid": "DateFragmentsView__placeholder", className: _DateFragmentsView.styles.mask(this.theme) }, Array(lengthMask).fill('').map(function (_, i) {return /*#__PURE__*/_react.default.createElement(_MaskCharLowLine.MaskCharLowLine, { key: i });})));};return DateFragmentsView;}(_react.default.Component);exports.DateFragmentsView = DateFragmentsView;
110
+ };return _this;}var _proto = DateFragmentsView.prototype;_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return _this2.renderMain();});};_proto.renderMain = function renderMain() {var _this3 = this;return /*#__PURE__*/_react.default.createElement("span", { ref: this.rootRef, className: _DateFragmentsView.styles.root(this.theme) }, this.props.fragments.map(function (fragment, index) {return fragment.type === _types.InternalDateComponentType.Separator ? _this3.renderSeparator(fragment, index) : _this3.renderDateComponent(fragment, index);}));};_proto.renderSeparator = function renderSeparator(fragment, index) {var _cx;var separatorClassName = (0, _Emotion.cx)((_cx = {}, _cx[_DateFragmentsView.styles.mask(this.theme)] = true, _cx[_DateFragmentsView.styles.delimiterFilled()] = this.props.fragments[index + 1].value !== null, _cx));return /*#__PURE__*/_react.default.createElement("span", { key: index, className: separatorClassName }, fragment.value);};_proto.renderDateComponent = function renderDateComponent(fragment, index) {var _this$props = this.props,inputMode = _this$props.inputMode,onSelectDateComponent = _this$props.onSelectDateComponent,selected = _this$props.selected;var type = fragment.type,value = fragment.value,length = fragment.length,valueWithPad = fragment.valueWithPad;var getValueMask = function getValueMask() {if (value === null || selected === type && inputMode) {return value;}return valueWithPad || value;};var valueMask = getValueMask();var lengthMask = _InternalDateValidator.InternalDateValidator.testParseToNumber(valueMask) ? Math.max(length - valueMask.toString().length, 0) : length;var handleMouseUp = function handleMouseUp(e) {if (document.activeElement && document.activeElement.contains(e.currentTarget)) {onSelectDateComponent(type, e);}};return /*#__PURE__*/_react.default.createElement("span", { key: index, "data-fragment": "", onMouseUp: handleMouseUp }, valueMask, /*#__PURE__*/_react.default.createElement("span", { "data-tid": "DateFragmentsView__placeholder", className: _DateFragmentsView.styles.mask(this.theme) }, Array(lengthMask).fill('').map(function (_, i) {return /*#__PURE__*/_react.default.createElement(_MaskCharLowLine.MaskCharLowLine, { key: i });})));};return DateFragmentsView;}(_react.default.Component);exports.DateFragmentsView = DateFragmentsView;
@@ -1 +1 @@
1
- {"version":3,"sources":["DateFragmentsView.tsx"],"names":["DateFragmentsView","rootNode","isFragment","el","fragments","Array","from","querySelectorAll","some","fragment","contains","getRootNode","rootRef","render","theme","renderMain","styles","root","props","map","index","type","InternalDateComponentType","Separator","renderSeparator","renderDateComponent","separatorClassName","mask","delimiterFilled","value","inputMode","onSelectDateComponent","selected","length","valueWithPad","getValueMask","valueMask","lengthMask","InternalDateValidator","testParseToNumber","Math","max","toString","handleMouseUp","e","renderTarget","activeElement","currentTarget","fill","_","i","React","Component"],"mappings":"6PAAA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,+D;;;;;;;;;AASaA,iB;;AAEHC,IAAAA,Q,GAAmC,I;;AAEpCC,IAAAA,U,GAAa,UAACC,EAAD,EAA4C;AAC9D,UAAI,MAAKF,QAAT,EAAmB;AACjB;AACA,YAAMG,SAA4B,GAAGC,KAAK,CAACC,IAAN,CAAW,MAAKL,QAAL,CAAcM,gBAAd,CAA+B,iBAA/B,CAAX,CAArC;AACA,eAAOH,SAAS,CAACI,IAAV,CAAe,UAACC,QAAD,UAAcA,QAAQ,KAAKN,EAAb,IAAmBM,QAAQ,CAACC,QAAT,CAAkBP,EAAlB,CAAjC,EAAf,CAAP;AACD;AACD,aAAO,KAAP;AACD,K;;AAEMQ,IAAAA,W,GAAc,oBAAM,MAAKV,QAAX,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4EbW,IAAAA,O,GAAU,UAACT,EAAD,EAAgC;AAChD,YAAKF,QAAL,GAAgBE,EAAhB;AACD,K,+DA5EMU,M,GAAP,kBAAgB,mBACd,oBACE,6BAAC,0BAAD,CAAc,QAAd,QACG,UAACC,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,OAAO,MAAI,CAACC,UAAL,EAAP,CACD,CAJH,CADF,CAQD,C,QAEOA,U,GAAR,sBAAqB,mBACnB,oBACE,uCAAM,GAAG,EAAE,KAAKH,OAAhB,EAAyB,SAAS,EAAEI,0BAAOC,IAAP,CAAY,KAAKH,KAAjB,CAApC,IACG,KAAKI,KAAL,CAAWd,SAAX,CAAqBe,GAArB,CAAyB,UAACV,QAAD,EAAWW,KAAX,UACxBX,QAAQ,CAACY,IAAT,KAAkBC,iCAA0BC,SAA5C,GACI,MAAI,CAACC,eAAL,CAAqBf,QAArB,EAA+BW,KAA/B,CADJ,GAEI,MAAI,CAACK,mBAAL,CAAyBhB,QAAzB,EAAmCW,KAAnC,CAHoB,EAAzB,CADH,CADF,CASD,C,QAEOI,e,GAAR,yBAAwBf,QAAxB,EAAwDW,KAAxD,EAAoF,SAClF,IAAMM,kBAAkB,GAAG,gCACxBV,0BAAOW,IAAP,CAAY,KAAKb,KAAjB,CADwB,IACE,IADF,MAExBE,0BAAOY,eAAP,EAFwB,IAEG,KAAKV,KAAL,CAAWd,SAAX,CAAqBgB,KAAK,GAAG,CAA7B,EAAgCS,KAAhC,KAA0C,IAF7C,OAA3B,CAKA,oBACE,uCAAM,GAAG,EAAET,KAAX,EAAkB,SAAS,EAAEM,kBAA7B,IACGjB,QAAQ,CAACoB,KADZ,CADF,CAKD,C,QAEOJ,mB,GAAR,6BAA4BhB,QAA5B,EAA4DW,KAA5D,EAAwF,CACtF,kBAAuD,KAAKF,KAA5D,CAAQY,SAAR,eAAQA,SAAR,CAAmBC,qBAAnB,eAAmBA,qBAAnB,CAA0CC,QAA1C,eAA0CA,QAA1C,CACA,IAAQX,IAAR,GAA8CZ,QAA9C,CAAQY,IAAR,CAAcQ,KAAd,GAA8CpB,QAA9C,CAAcoB,KAAd,CAAqBI,MAArB,GAA8CxB,QAA9C,CAAqBwB,MAArB,CAA6BC,YAA7B,GAA8CzB,QAA9C,CAA6ByB,YAA7B,CAEA,IAAMC,YAAY,GAAG,SAAfA,YAAe,GAAM,CACzB,IAAIN,KAAK,KAAK,IAAV,IAAmBG,QAAQ,KAAKX,IAAb,IAAqBS,SAA5C,EAAwD,CACtD,OAAOD,KAAP,CACD,CAED,OAAOK,YAAY,IAAIL,KAAvB,CACD,CAND,CAQA,IAAMO,SAAS,GAAGD,YAAY,EAA9B,CAEA,IAAME,UAAU,GAAGC,6CAAsBC,iBAAtB,CAAwCH,SAAxC,IACfI,IAAI,CAACC,GAAL,CAASR,MAAM,GAAGG,SAAS,CAACM,QAAV,GAAqBT,MAAvC,EAA+C,CAA/C,CADe,GAEfA,MAFJ,CAIA,IAAMU,aAAa,GAAG,SAAhBA,aAAgB,CAACC,CAAD,EAA0C,CAC9D,IAAIC,sBAAaC,aAAb,IAA8BD,sBAAaC,aAAb,CAA2BpC,QAA3B,CAAoCkC,CAAC,CAACG,aAAtC,CAAlC,EAAwF,CACtFhB,qBAAqB,CAACV,IAAD,EAAOuB,CAAP,CAArB,CACD,CACF,CAJD,CAMA,oBACE,uCAAM,GAAG,EAAExB,KAAX,EAAkB,iBAAc,EAAhC,EAAmC,SAAS,EAAEuB,aAA9C,IACGP,SADH,eAEE,uCAAM,YAAS,gCAAf,EAAgD,SAAS,EAAEpB,0BAAOW,IAAP,CAAY,KAAKb,KAAjB,CAA3D,IACGT,KAAK,CAACgC,UAAD,CAAL,CACEW,IADF,CACO,EADP,EAEE7B,GAFF,CAEM,UAAC8B,CAAD,EAAIC,CAAJ,uBACH,6BAAC,gCAAD,IAAiB,GAAG,EAAEA,CAAtB,GADG,EAFN,CADH,CAFF,CADF,CAYD,C,4BAvFoCC,eAAMC,S","sourcesContent":["import React from 'react';\n\nimport { MaskCharLowLine } from '../../internal/MaskCharLowLine';\nimport { InternalDateValidator } from '../../lib/date/InternalDateValidator';\nimport { InternalDateComponentType, InternalDateFragment } from '../../lib/date/types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { cx } from '../../lib/theming/Emotion';\nimport { renderTarget } from '../../lib/SSRSafe';\n\nimport { styles } from './DateFragmentsView.styles';\n\ninterface DateFragmentViewProps {\n selected: InternalDateComponentType | null;\n fragments: InternalDateFragment[];\n inputMode: boolean;\n onSelectDateComponent: (type: InternalDateComponentType, e: React.MouseEvent<HTMLSpanElement>) => void;\n}\n\nexport class DateFragmentsView extends React.Component<DateFragmentViewProps> {\n private theme!: Theme;\n private rootNode: HTMLSpanElement | null = null;\n\n public isFragment = (el: HTMLElement | EventTarget): boolean => {\n if (this.rootNode) {\n // NOTE: NodeList doesn't support method 'forEach' in IE11\n const fragments: HTMLSpanElement[] = Array.from(this.rootNode.querySelectorAll('[data-fragment]'));\n return fragments.some((fragment) => fragment === el || fragment.contains(el as HTMLSpanElement));\n }\n return false;\n };\n\n public getRootNode = () => this.rootNode;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n return (\n <span ref={this.rootRef} className={styles.root(this.theme)}>\n {this.props.fragments.map((fragment, index) =>\n fragment.type === InternalDateComponentType.Separator\n ? this.renderSeparator(fragment, index)\n : this.renderDateComponent(fragment, index),\n )}\n </span>\n );\n }\n\n private renderSeparator(fragment: InternalDateFragment, index: number): JSX.Element {\n const separatorClassName = cx({\n [styles.mask(this.theme)]: true,\n [styles.delimiterFilled()]: this.props.fragments[index + 1].value !== null,\n });\n\n return (\n <span key={index} className={separatorClassName}>\n {fragment.value}\n </span>\n );\n }\n\n private renderDateComponent(fragment: InternalDateFragment, index: number): JSX.Element {\n const { inputMode, onSelectDateComponent, selected } = this.props;\n const { type, value, length, valueWithPad } = fragment;\n\n const getValueMask = () => {\n if (value === null || (selected === type && inputMode)) {\n return value;\n }\n\n return valueWithPad || value;\n };\n\n const valueMask = getValueMask();\n\n const lengthMask = InternalDateValidator.testParseToNumber(valueMask)\n ? Math.max(length - valueMask.toString().length, 0)\n : length;\n\n const handleMouseUp = (e: React.MouseEvent<HTMLSpanElement>) => {\n if (renderTarget.activeElement && renderTarget.activeElement.contains(e.currentTarget)) {\n onSelectDateComponent(type, e);\n }\n };\n\n return (\n <span key={index} data-fragment=\"\" onMouseUp={handleMouseUp}>\n {valueMask}\n <span data-tid=\"DateFragmentsView__placeholder\" className={styles.mask(this.theme)}>\n {Array(lengthMask)\n .fill('')\n .map((_, i) => (\n <MaskCharLowLine key={i} />\n ))}\n </span>\n </span>\n );\n }\n\n private rootRef = (el: HTMLSpanElement | null) => {\n this.rootNode = el;\n };\n}\n"]}
1
+ {"version":3,"sources":["DateFragmentsView.tsx"],"names":["DateFragmentsView","rootNode","isFragment","el","fragments","Array","from","querySelectorAll","some","fragment","contains","getRootNode","rootRef","render","theme","renderMain","styles","root","props","map","index","type","InternalDateComponentType","Separator","renderSeparator","renderDateComponent","separatorClassName","mask","delimiterFilled","value","inputMode","onSelectDateComponent","selected","length","valueWithPad","getValueMask","valueMask","lengthMask","InternalDateValidator","testParseToNumber","Math","max","toString","handleMouseUp","e","document","activeElement","currentTarget","fill","_","i","React","Component"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { MaskCharLowLine } from '../../internal/MaskCharLowLine';\nimport { InternalDateValidator } from '../../lib/date/InternalDateValidator';\nimport { InternalDateComponentType, InternalDateFragment } from '../../lib/date/types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './DateFragmentsView.styles';\n\ninterface DateFragmentViewProps {\n selected: InternalDateComponentType | null;\n fragments: InternalDateFragment[];\n inputMode: boolean;\n onSelectDateComponent: (type: InternalDateComponentType, e: React.MouseEvent<HTMLSpanElement>) => void;\n}\n\nexport class DateFragmentsView extends React.Component<DateFragmentViewProps> {\n private theme!: Theme;\n private rootNode: HTMLSpanElement | null = null;\n\n public isFragment = (el: HTMLElement | EventTarget): boolean => {\n if (this.rootNode) {\n // NOTE: NodeList doesn't support method 'forEach' in IE11\n const fragments: HTMLSpanElement[] = Array.from(this.rootNode.querySelectorAll('[data-fragment]'));\n return fragments.some((fragment) => fragment === el || fragment.contains(el as HTMLSpanElement));\n }\n return false;\n };\n\n public getRootNode = () => this.rootNode;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n return (\n <span ref={this.rootRef} className={styles.root(this.theme)}>\n {this.props.fragments.map((fragment, index) =>\n fragment.type === InternalDateComponentType.Separator\n ? this.renderSeparator(fragment, index)\n : this.renderDateComponent(fragment, index),\n )}\n </span>\n );\n }\n\n private renderSeparator(fragment: InternalDateFragment, index: number): JSX.Element {\n const separatorClassName = cx({\n [styles.mask(this.theme)]: true,\n [styles.delimiterFilled()]: this.props.fragments[index + 1].value !== null,\n });\n\n return (\n <span key={index} className={separatorClassName}>\n {fragment.value}\n </span>\n );\n }\n\n private renderDateComponent(fragment: InternalDateFragment, index: number): JSX.Element {\n const { inputMode, onSelectDateComponent, selected } = this.props;\n const { type, value, length, valueWithPad } = fragment;\n\n const getValueMask = () => {\n if (value === null || (selected === type && inputMode)) {\n return value;\n }\n\n return valueWithPad || value;\n };\n\n const valueMask = getValueMask();\n\n const lengthMask = InternalDateValidator.testParseToNumber(valueMask)\n ? Math.max(length - valueMask.toString().length, 0)\n : length;\n\n const handleMouseUp = (e: React.MouseEvent<HTMLSpanElement>) => {\n if (document.activeElement && document.activeElement.contains(e.currentTarget)) {\n onSelectDateComponent(type, e);\n }\n };\n\n return (\n <span key={index} data-fragment=\"\" onMouseUp={handleMouseUp}>\n {valueMask}\n <span data-tid=\"DateFragmentsView__placeholder\" className={styles.mask(this.theme)}>\n {Array(lengthMask)\n .fill('')\n .map((_, i) => (\n <MaskCharLowLine key={i} />\n ))}\n </span>\n </span>\n );\n }\n\n private rootRef = (el: HTMLSpanElement | null) => {\n this.rootNode = el;\n };\n}\n"]}
@@ -1,13 +1,11 @@
1
- "use strict";exports.__esModule = true;exports.selectNodeContents = exports.removeAllSelections = void 0;var _SSRSafe = require("../../../lib/SSRSafe");
2
-
3
- var selectNodeContents = function selectNodeContents(node, start, end) {
1
+ "use strict";exports.__esModule = true;exports.selectNodeContents = exports.removeAllSelections = void 0;var selectNodeContents = function selectNodeContents(node, start, end) {
4
2
  if (!node) {
5
3
  return;
6
4
  }
7
- if ('createRange' in _SSRSafe.renderTarget) {
5
+ if ('createRange' in document) {
8
6
  try {
9
- var selection = _SSRSafe.globalThat.getSelection();
10
- var range = _SSRSafe.renderTarget.createRange();
7
+ var selection = window.getSelection();
8
+ var range = window.document.createRange();
11
9
  if (start !== undefined && end !== undefined) {
12
10
  range.setStart(node, start);
13
11
  range.setEnd(node, end);
@@ -26,9 +24,9 @@ var selectNodeContents = function selectNodeContents(node, start, end) {
26
24
  }
27
25
 
28
26
  // @ts-expect-error: IE-specific API.
29
- if (typeof _SSRSafe.renderTarget.body.createTextRange === 'function') {
27
+ if (typeof document.body.createTextRange === 'function') {
30
28
  // @ts-expect-error: Read the comment above.
31
- var _range = _SSRSafe.renderTarget.body.createTextRange();
29
+ var _range = document.body.createTextRange();
32
30
  _range.moveToElementText(node);
33
31
  if (typeof _range.select === 'function') {
34
32
  _range.select();
@@ -38,7 +36,7 @@ var selectNodeContents = function selectNodeContents(node, start, end) {
38
36
  };exports.selectNodeContents = selectNodeContents;
39
37
 
40
38
  var removeAllSelections = function removeAllSelections() {
41
- var selection = _SSRSafe.globalThat.getSelection();
39
+ var selection = window.getSelection();
42
40
  if (selection !== null) {
43
41
  try {
44
42
  // Fix IE from issue not working (https://github.com/skbkontur/retail-ui/issues/1205)
@@ -1 +1 @@
1
- {"version":3,"sources":["SelectionHelpers.tsx"],"names":["selectNodeContents","node","start","end","renderTarget","selection","globalThat","getSelection","range","createRange","undefined","setStart","setEnd","removeAllRanges","addRange","e","body","createTextRange","moveToElementText","select","removeAllSelections"],"mappings":"yGAAA;;AAEO,IAAMA,kBAAkB,GAAG,SAArBA,kBAAqB,CAACC,IAAD,EAA2BC,KAA3B,EAA2CC,GAA3C,EAA4D;AAC5F,MAAI,CAACF,IAAL,EAAW;AACT;AACD;AACD,MAAI,iBAAiBG,qBAArB,EAAmC;AACjC,QAAI;AACF,UAAMC,SAAS,GAAGC,oBAAWC,YAAX,EAAlB;AACA,UAAMC,KAAK,GAAGJ,sBAAaK,WAAb,EAAd;AACA,UAAIP,KAAK,KAAKQ,SAAV,IAAuBP,GAAG,KAAKO,SAAnC,EAA8C;AAC5CF,QAAAA,KAAK,CAACG,QAAN,CAAeV,IAAf,EAAqBC,KAArB;AACAM,QAAAA,KAAK,CAACI,MAAN,CAAaX,IAAb,EAAmBE,GAAnB;AACD,OAHD,MAGO;AACLK,QAAAA,KAAK,CAACR,kBAAN,CAAyBC,IAAzB;AACD;AACD,UAAII,SAAS,KAAK,IAAlB,EAAwB;AACtB;AACAA,QAAAA,SAAS,CAACQ,eAAV;AACAR,QAAAA,SAAS,CAACS,QAAV,CAAmBN,KAAnB;AACA;AACD;AACF,KAfD,CAeE,OAAOO,CAAP,EAAU;AACV;AACD;AACF;;AAED;AACA,MAAI,OAAOX,sBAAaY,IAAb,CAAkBC,eAAzB,KAA6C,UAAjD,EAA6D;AAC3D;AACA,QAAMT,MAAK,GAAGJ,sBAAaY,IAAb,CAAkBC,eAAlB,EAAd;AACAT,IAAAA,MAAK,CAACU,iBAAN,CAAwBjB,IAAxB;AACA,QAAI,OAAOO,MAAK,CAACW,MAAb,KAAwB,UAA5B,EAAwC;AACtCX,MAAAA,MAAK,CAACW,MAAN;AACD;AACD;AACD;AACF,CAnCM,C;;AAqCA,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAsB,GAAM;AACvC,MAAMf,SAAS,GAAGC,oBAAWC,YAAX,EAAlB;AACA,MAAIF,SAAS,KAAK,IAAlB,EAAwB;AACtB,QAAI;AACF;AACAA,MAAAA,SAAS,CAACQ,eAAV;AACD,KAHD,CAGE,OAAOE,CAAP,EAAU;AACV;AACD;AACF;AACF,CAVM,C","sourcesContent":["import { globalThat, renderTarget } from '../../../lib/SSRSafe';\n\nexport const selectNodeContents = (node: HTMLElement | null, start?: number, end?: number) => {\n if (!node) {\n return;\n }\n if ('createRange' in renderTarget) {\n try {\n const selection = globalThat.getSelection();\n const range = renderTarget.createRange();\n if (start !== undefined && end !== undefined) {\n range.setStart(node, start);\n range.setEnd(node, end);\n } else {\n range.selectNodeContents(node);\n }\n if (selection !== null) {\n // Fix IE from issue not working (https://github.com/skbkontur/retail-ui/issues/1205)\n selection.removeAllRanges();\n selection.addRange(range);\n return;\n }\n } catch (e) {\n // empty block\n }\n }\n\n // @ts-expect-error: IE-specific API.\n if (typeof renderTarget.body.createTextRange === 'function') {\n // @ts-expect-error: Read the comment above.\n const range = renderTarget.body.createTextRange();\n range.moveToElementText(node);\n if (typeof range.select === 'function') {\n range.select();\n }\n return;\n }\n};\n\nexport const removeAllSelections = () => {\n const selection = globalThat.getSelection();\n if (selection !== null) {\n try {\n // Fix IE from issue not working (https://github.com/skbkontur/retail-ui/issues/1205)\n selection.removeAllRanges();\n } catch (e) {\n // empty block\n }\n }\n};\n"]}
1
+ {"version":3,"sources":["SelectionHelpers.tsx"],"names":["selectNodeContents","node","start","end","document","selection","window","getSelection","range","createRange","undefined","setStart","setEnd","removeAllRanges","addRange","e","body","createTextRange","moveToElementText","select","removeAllSelections"],"mappings":"yGAAO,IAAMA,kBAAkB,GAAG,SAArBA,kBAAqB,CAACC,IAAD,EAA2BC,KAA3B,EAA2CC,GAA3C,EAA4D;AAC5F,MAAI,CAACF,IAAL,EAAW;AACT;AACD;AACD,MAAI,iBAAiBG,QAArB,EAA+B;AAC7B,QAAI;AACF,UAAMC,SAAS,GAAGC,MAAM,CAACC,YAAP,EAAlB;AACA,UAAMC,KAAK,GAAGF,MAAM,CAACF,QAAP,CAAgBK,WAAhB,EAAd;AACA,UAAIP,KAAK,KAAKQ,SAAV,IAAuBP,GAAG,KAAKO,SAAnC,EAA8C;AAC5CF,QAAAA,KAAK,CAACG,QAAN,CAAeV,IAAf,EAAqBC,KAArB;AACAM,QAAAA,KAAK,CAACI,MAAN,CAAaX,IAAb,EAAmBE,GAAnB;AACD,OAHD,MAGO;AACLK,QAAAA,KAAK,CAACR,kBAAN,CAAyBC,IAAzB;AACD;AACD,UAAII,SAAS,KAAK,IAAlB,EAAwB;AACtB;AACAA,QAAAA,SAAS,CAACQ,eAAV;AACAR,QAAAA,SAAS,CAACS,QAAV,CAAmBN,KAAnB;AACA;AACD;AACF,KAfD,CAeE,OAAOO,CAAP,EAAU;AACV;AACD;AACF;;AAED;AACA,MAAI,OAAOX,QAAQ,CAACY,IAAT,CAAcC,eAArB,KAAyC,UAA7C,EAAyD;AACvD;AACA,QAAMT,MAAK,GAAGJ,QAAQ,CAACY,IAAT,CAAcC,eAAd,EAAd;AACAT,IAAAA,MAAK,CAACU,iBAAN,CAAwBjB,IAAxB;AACA,QAAI,OAAOO,MAAK,CAACW,MAAb,KAAwB,UAA5B,EAAwC;AACtCX,MAAAA,MAAK,CAACW,MAAN;AACD;AACD;AACD;AACF,CAnCM,C;;AAqCA,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAsB,GAAM;AACvC,MAAMf,SAAS,GAAGC,MAAM,CAACC,YAAP,EAAlB;AACA,MAAIF,SAAS,KAAK,IAAlB,EAAwB;AACtB,QAAI;AACF;AACAA,MAAAA,SAAS,CAACQ,eAAV;AACD,KAHD,CAGE,OAAOE,CAAP,EAAU;AACV;AACD;AACF;AACF,CAVM,C","sourcesContent":["export const selectNodeContents = (node: HTMLElement | null, start?: number, end?: number) => {\n if (!node) {\n return;\n }\n if ('createRange' in document) {\n try {\n const selection = window.getSelection();\n const range = window.document.createRange();\n if (start !== undefined && end !== undefined) {\n range.setStart(node, start);\n range.setEnd(node, end);\n } else {\n range.selectNodeContents(node);\n }\n if (selection !== null) {\n // Fix IE from issue not working (https://github.com/skbkontur/retail-ui/issues/1205)\n selection.removeAllRanges();\n selection.addRange(range);\n return;\n }\n } catch (e) {\n // empty block\n }\n }\n\n // @ts-expect-error: IE-specific API.\n if (typeof document.body.createTextRange === 'function') {\n // @ts-expect-error: Read the comment above.\n const range = document.body.createTextRange();\n range.moveToElementText(node);\n if (typeof range.select === 'function') {\n range.select();\n }\n return;\n }\n};\n\nexport const removeAllSelections = () => {\n const selection = window.getSelection();\n if (selection !== null) {\n try {\n // Fix IE from issue not working (https://github.com/skbkontur/retail-ui/issues/1205)\n selection.removeAllRanges();\n } catch (e) {\n // empty block\n }\n }\n};\n"]}
@@ -21,7 +21,6 @@ var _CommonWrapper = require("../../internal/CommonWrapper");
21
21
  var _FileUploaderFileValidationResult = require("../../internal/FileUploaderControl/FileUploaderFileValidationResult");
22
22
  var _useFileUploaderSize = require("../../internal/FileUploaderControl/hooks/useFileUploaderSize");
23
23
  var _ThemeHelpers = require("../../lib/theming/ThemeHelpers");
24
- var _SSRSafe = require("../../lib/SSRSafe");
25
24
 
26
25
  var _UploadIcon = require("./UploadIcon");
27
26
  var _FileUploader2 = require("./FileUploader.styles");var _excluded = ["disabled", "error", "warning", "multiple", "width", "hideFiles", "onBlur", "onFocus", "onChange", "request", "validateBeforeUpload", "onRequestSuccess", "onRequestError", "size", "renderFile"];function _getRequireWildcardCache(nodeInterop) {if (typeof WeakMap !== "function") return null;var cacheBabelInterop = new WeakMap();var cacheNodeInterop = new WeakMap();return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {return nodeInterop ? cacheNodeInterop : cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj, nodeInterop) {if (!nodeInterop && obj && obj.__esModule) {return obj;}if (obj === null || typeof obj !== "object" && typeof obj !== "function") {return { default: obj };}var cache = _getRequireWildcardCache(nodeInterop);if (cache && cache.has(obj)) {return cache.get(obj);}var newObj = {};var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;for (var key in obj) {if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;if (desc && (desc.get || desc.set)) {Object.defineProperty(newObj, key, desc);} else {newObj[key] = obj[key];}}}newObj.default = obj;if (cache) {cache.set(obj, newObj);}return newObj;}
@@ -205,7 +204,7 @@ var _FileUploader = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
205
204
  var _useDrop2 = (0, _useDrop3.useDrop)(),isWindowDraggable = _useDrop2.isDraggable,windowRef = _useDrop2.ref;
206
205
 
207
206
  if (_client.isBrowser) {
208
- windowRef.current = _SSRSafe.renderTarget;
207
+ windowRef.current = window.document;
209
208
  }
210
209
 
211
210
  var focus = (0, _react.useCallback)(function () {var _inputRef$current;