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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/components/CurrencyInput/CurrencyHelper.d.ts +1 -2
  3. package/components/CurrencyInput/CurrencyHelper.js +32 -28
  4. package/components/CurrencyInput/CurrencyHelper.js.map +1 -1
  5. package/components/CurrencyInput/CurrencyInputHelper.js +1 -1
  6. package/components/CurrencyInput/CurrencyInputHelper.js.map +1 -1
  7. package/components/DateInput/DateInput.js +4 -1
  8. package/components/DateInput/DateInput.js.map +1 -1
  9. package/components/FileUploader/FileUploaderFile.d.ts +1 -1
  10. package/components/FileUploader/FileUploaderFile.js +1 -1
  11. package/components/FileUploader/FileUploaderFile.js.map +1 -1
  12. package/components/FxInput/FxInput.d.ts +1 -1
  13. package/components/FxInput/FxInput.js.map +1 -1
  14. package/components/MaskedInput/MaskedInput.d.ts +2 -6
  15. package/components/MaskedInput/MaskedInput.js +126 -10
  16. package/components/MaskedInput/MaskedInput.js.map +1 -1
  17. package/components/MaskedInput/index.d.ts +0 -1
  18. package/components/MaskedInput/index.js +0 -1
  19. package/components/MaskedInput/index.js.map +1 -1
  20. package/components/MiniModal/MiniModal.d.ts +0 -9
  21. package/components/MiniModal/MiniModal.js +0 -9
  22. package/components/MiniModal/MiniModal.js.map +1 -1
  23. package/components/Modal/Modal.d.ts +0 -5
  24. package/components/Modal/Modal.js +0 -5
  25. package/components/Modal/Modal.js.map +1 -1
  26. package/components/Select/Select.d.ts +1 -0
  27. package/components/Select/Select.js +12 -2
  28. package/components/Select/Select.js.map +1 -1
  29. package/components/Switcher/Switcher.d.ts +3 -3
  30. package/components/Switcher/Switcher.js +1 -1
  31. package/components/Switcher/Switcher.js.map +1 -1
  32. package/components/Tabs/Tab.d.ts +4 -5
  33. package/components/Tabs/Tab.js +0 -1
  34. package/components/Tabs/Tab.js.map +1 -1
  35. package/components/Tabs/Tabs.d.ts +2 -2
  36. package/components/Tabs/Tabs.js +1 -1
  37. package/components/Tabs/Tabs.js.map +1 -1
  38. package/components/Token/Token.d.ts +1 -1
  39. package/components/Token/Token.js +1 -1
  40. package/components/Token/Token.js.map +1 -1
  41. package/components/TokenInput/TokenInput.d.ts +1 -1
  42. package/components/TokenInput/TokenInput.js +1 -1
  43. package/components/TokenInput/TokenInput.js.map +1 -1
  44. package/internal/Menu/Menu.d.ts +5 -0
  45. package/internal/Menu/Menu.js +21 -0
  46. package/internal/Menu/Menu.js.map +1 -1
  47. package/lib/events/keyboard/KeyboardEventCodes.d.ts +0 -2
  48. package/lib/events/keyboard/KeyboardEventCodes.js +0 -2
  49. package/lib/events/keyboard/KeyboardEventCodes.js.map +1 -1
  50. package/lib/events/keyboard/KeyboardMapKeys.js +0 -2
  51. package/lib/events/keyboard/KeyboardMapKeys.js.map +1 -1
  52. package/lib/events/keyboard/identifiers.d.ts +0 -2
  53. package/lib/events/keyboard/identifiers.js +0 -6
  54. package/lib/events/keyboard/identifiers.js.map +1 -1
  55. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +0 -1
  56. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +0 -1
  57. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
  58. package/package.json +1 -4
  59. package/components/MaskedInput/MaskedInputLegacy.d.ts +0 -3
  60. package/components/MaskedInput/MaskedInputLegacy.js +0 -142
  61. package/components/MaskedInput/MaskedInputLegacy.js.map +0 -1
  62. package/components/MaskedInputV2/MaskedInputV2.d.ts +0 -62
  63. package/components/MaskedInputV2/MaskedInputV2.helpers.d.ts +0 -9
  64. package/components/MaskedInputV2/MaskedInputV2.helpers.js +0 -17
  65. package/components/MaskedInputV2/MaskedInputV2.helpers.js.map +0 -1
  66. package/components/MaskedInputV2/MaskedInputV2.js +0 -307
  67. package/components/MaskedInputV2/MaskedInputV2.js.map +0 -1
  68. package/components/MaskedInputV2/MaskedInputV2.phone.d.ts +0 -28
  69. package/components/MaskedInputV2/MaskedInputV2.phone.js +0 -38
  70. package/components/MaskedInputV2/MaskedInputV2.phone.js.map +0 -1
  71. package/components/MaskedInputV2/MaskedInputV2.styles.d.ts +0 -7
  72. package/components/MaskedInputV2/MaskedInputV2.styles.js +0 -19
  73. package/components/MaskedInputV2/MaskedInputV2.styles.js.map +0 -1
  74. package/components/MaskedInputV2/index.d.ts +0 -2
  75. package/components/MaskedInputV2/index.js +0 -3
  76. package/components/MaskedInputV2/index.js.map +0 -1
  77. package/components/MaskedInputV2/internal/MaskOverlay.d.ts +0 -19
  78. package/components/MaskedInputV2/internal/MaskOverlay.js +0 -54
  79. package/components/MaskedInputV2/internal/MaskOverlay.js.map +0 -1
  80. package/components/MaskedInputV2/internal/MaskedCore.d.ts +0 -8
  81. package/components/MaskedInputV2/internal/MaskedCore.js +0 -186
  82. package/components/MaskedInputV2/internal/MaskedCore.js.map +0 -1
  83. package/components/MaskedInputV2/internal/MaskedCore.types.d.ts +0 -37
  84. package/components/MaskedInputV2/internal/MaskedCore.types.js +0 -2
  85. package/components/MaskedInputV2/internal/MaskedCore.types.js.map +0 -1
  86. package/components/MaskedInputV2/internal/MaskedInternal.styles.d.ts +0 -15
  87. package/components/MaskedInputV2/internal/MaskedInternal.styles.js +0 -34
  88. package/components/MaskedInputV2/internal/MaskedInternal.styles.js.map +0 -1
  89. package/components/MaskedInputV2/internal/buildSlotMap.d.ts +0 -11
  90. package/components/MaskedInputV2/internal/buildSlotMap.js +0 -37
  91. package/components/MaskedInputV2/internal/buildSlotMap.js.map +0 -1
  92. package/components/MaskedInputV2/internal/computeMaskAlignPadding.d.ts +0 -6
  93. package/components/MaskedInputV2/internal/computeMaskAlignPadding.js +0 -47
  94. package/components/MaskedInputV2/internal/computeMaskAlignPadding.js.map +0 -1
  95. package/components/MaskedInputV2/internal/computePasteMaskedCursor.d.ts +0 -3
  96. package/components/MaskedInputV2/internal/computePasteMaskedCursor.js +0 -11
  97. package/components/MaskedInputV2/internal/computePasteMaskedCursor.js.map +0 -1
  98. package/components/MaskedInputV2/internal/extractRaw.d.ts +0 -10
  99. package/components/MaskedInputV2/internal/extractRaw.js +0 -16
  100. package/components/MaskedInputV2/internal/extractRaw.js.map +0 -1
  101. package/components/MaskedInputV2/internal/findNearestRawLeft.d.ts +0 -10
  102. package/components/MaskedInputV2/internal/findNearestRawLeft.js +0 -18
  103. package/components/MaskedInputV2/internal/findNearestRawLeft.js.map +0 -1
  104. package/components/MaskedInputV2/internal/helpers.d.ts +0 -8
  105. package/components/MaskedInputV2/internal/helpers.js +0 -9
  106. package/components/MaskedInputV2/internal/helpers.js.map +0 -1
  107. package/components/MaskedInputV2/internal/maskedCoreClipboard.d.ts +0 -37
  108. package/components/MaskedInputV2/internal/maskedCoreClipboard.js +0 -52
  109. package/components/MaskedInputV2/internal/maskedCoreClipboard.js.map +0 -1
  110. package/components/MaskedInputV2/internal/maskedCoreDeletion.d.ts +0 -28
  111. package/components/MaskedInputV2/internal/maskedCoreDeletion.js +0 -70
  112. package/components/MaskedInputV2/internal/maskedCoreDeletion.js.map +0 -1
  113. package/components/MaskedInputV2/internal/maskedCoreInputChange.d.ts +0 -38
  114. package/components/MaskedInputV2/internal/maskedCoreInputChange.js +0 -49
  115. package/components/MaskedInputV2/internal/maskedCoreInputChange.js.map +0 -1
  116. package/components/MaskedInputV2/internal/maskedCoreNavigation.d.ts +0 -13
  117. package/components/MaskedInputV2/internal/maskedCoreNavigation.js +0 -79
  118. package/components/MaskedInputV2/internal/maskedCoreNavigation.js.map +0 -1
  119. package/components/MaskedInputV2/internal/measureInputTextWidth.d.ts +0 -2
  120. package/components/MaskedInputV2/internal/measureInputTextWidth.js +0 -30
  121. package/components/MaskedInputV2/internal/measureInputTextWidth.js.map +0 -1
  122. package/components/MaskedInputV2/internal/setMaskInputSelectionRange.d.ts +0 -2
  123. package/components/MaskedInputV2/internal/setMaskInputSelectionRange.js +0 -25
  124. package/components/MaskedInputV2/internal/setMaskInputSelectionRange.js.map +0 -1
  125. package/components/MaskedInputV2/internal/showOverlay.d.ts +0 -3
  126. package/components/MaskedInputV2/internal/showOverlay.js +0 -16
  127. package/components/MaskedInputV2/internal/showOverlay.js.map +0 -1
  128. package/components/MaskedInputV2/internal/stripMaskChars.d.ts +0 -11
  129. package/components/MaskedInputV2/internal/stripMaskChars.js +0 -20
  130. package/components/MaskedInputV2/internal/stripMaskChars.js.map +0 -1
  131. package/components/MaskedInputV2/internal/types.d.ts +0 -74
  132. package/components/MaskedInputV2/internal/types.js +0 -2
  133. package/components/MaskedInputV2/internal/types.js.map +0 -1
  134. package/components/MaskedInputV2/internal/useInputOverflow.d.ts +0 -4
  135. package/components/MaskedInputV2/internal/useInputOverflow.js +0 -34
  136. package/components/MaskedInputV2/internal/useInputOverflow.js.map +0 -1
  137. package/components/MaskedInputV2/internal/useMaskAlignPadding.d.ts +0 -2
  138. package/components/MaskedInputV2/internal/useMaskAlignPadding.js +0 -33
  139. package/components/MaskedInputV2/internal/useMaskAlignPadding.js.map +0 -1
  140. package/components/MaskedInputV2/internal/useMaskEngine.d.ts +0 -42
  141. package/components/MaskedInputV2/internal/useMaskEngine.js +0 -84
  142. package/components/MaskedInputV2/internal/useMaskEngine.js.map +0 -1
  143. package/components/MaskedInputV2/internal/useMaskedCoreHandlers.d.ts +0 -34
  144. package/components/MaskedInputV2/internal/useMaskedCoreHandlers.js +0 -335
  145. package/components/MaskedInputV2/internal/useMaskedCoreHandlers.js.map +0 -1
  146. package/components/MaskedInputV2/react-imask/imask/controls/html-input-mask-element.d.ts +0 -16
  147. package/components/MaskedInputV2/react-imask/imask/controls/html-input-mask-element.js +0 -59
  148. package/components/MaskedInputV2/react-imask/imask/controls/html-input-mask-element.js.map +0 -1
  149. package/components/MaskedInputV2/react-imask/imask/controls/html-mask-element.d.ts +0 -20
  150. package/components/MaskedInputV2/react-imask/imask/controls/html-mask-element.js +0 -106
  151. package/components/MaskedInputV2/react-imask/imask/controls/html-mask-element.js.map +0 -1
  152. package/components/MaskedInputV2/react-imask/imask/controls/input-history.d.ts +0 -17
  153. package/components/MaskedInputV2/react-imask/imask/controls/input-history.js +0 -49
  154. package/components/MaskedInputV2/react-imask/imask/controls/input-history.js.map +0 -1
  155. package/components/MaskedInputV2/react-imask/imask/controls/input.d.ts +0 -95
  156. package/components/MaskedInputV2/react-imask/imask/controls/input.js +0 -420
  157. package/components/MaskedInputV2/react-imask/imask/controls/input.js.map +0 -1
  158. package/components/MaskedInputV2/react-imask/imask/controls/mask-element.d.ts +0 -30
  159. package/components/MaskedInputV2/react-imask/imask/controls/mask-element.js +0 -59
  160. package/components/MaskedInputV2/react-imask/imask/controls/mask-element.js.map +0 -1
  161. package/components/MaskedInputV2/react-imask/imask/core/action-details.d.ts +0 -30
  162. package/components/MaskedInputV2/react-imask/imask/core/action-details.js +0 -100
  163. package/components/MaskedInputV2/react-imask/imask/core/action-details.js.map +0 -1
  164. package/components/MaskedInputV2/react-imask/imask/core/change-details.d.ts +0 -20
  165. package/components/MaskedInputV2/react-imask/imask/core/change-details.js +0 -46
  166. package/components/MaskedInputV2/react-imask/imask/core/change-details.js.map +0 -1
  167. package/components/MaskedInputV2/react-imask/imask/core/continuous-tail-details.d.ts +0 -21
  168. package/components/MaskedInputV2/react-imask/imask/core/continuous-tail-details.js +0 -52
  169. package/components/MaskedInputV2/react-imask/imask/core/continuous-tail-details.js.map +0 -1
  170. package/components/MaskedInputV2/react-imask/imask/core/holder.d.ts +0 -34
  171. package/components/MaskedInputV2/react-imask/imask/core/holder.js +0 -38
  172. package/components/MaskedInputV2/react-imask/imask/core/holder.js.map +0 -1
  173. package/components/MaskedInputV2/react-imask/imask/core/tail-details.d.ts +0 -20
  174. package/components/MaskedInputV2/react-imask/imask/core/tail-details.js +0 -2
  175. package/components/MaskedInputV2/react-imask/imask/core/tail-details.js.map +0 -1
  176. package/components/MaskedInputV2/react-imask/imask/core/utils.d.ts +0 -24
  177. package/components/MaskedInputV2/react-imask/imask/core/utils.js +0 -100
  178. package/components/MaskedInputV2/react-imask/imask/core/utils.js.map +0 -1
  179. package/components/MaskedInputV2/react-imask/imask/imask.d.ts +0 -5
  180. package/components/MaskedInputV2/react-imask/imask/imask.js +0 -7
  181. package/components/MaskedInputV2/react-imask/imask/imask.js.map +0 -1
  182. package/components/MaskedInputV2/react-imask/imask/index.d.ts +0 -17
  183. package/components/MaskedInputV2/react-imask/imask/index.js +0 -16
  184. package/components/MaskedInputV2/react-imask/imask/index.js.map +0 -1
  185. package/components/MaskedInputV2/react-imask/imask/masked/base.d.ts +0 -114
  186. package/components/MaskedInputV2/react-imask/imask/masked/base.js +0 -411
  187. package/components/MaskedInputV2/react-imask/imask/masked/base.js.map +0 -1
  188. package/components/MaskedInputV2/react-imask/imask/masked/create.d.ts +0 -14
  189. package/components/MaskedInputV2/react-imask/imask/masked/create.js +0 -11
  190. package/components/MaskedInputV2/react-imask/imask/masked/create.js.map +0 -1
  191. package/components/MaskedInputV2/react-imask/imask/masked/factory.d.ts +0 -62
  192. package/components/MaskedInputV2/react-imask/imask/masked/factory.js +0 -107
  193. package/components/MaskedInputV2/react-imask/imask/masked/factory.js.map +0 -1
  194. package/components/MaskedInputV2/react-imask/imask/masked/pattern.d.ts +0 -101
  195. package/components/MaskedInputV2/react-imask/imask/masked/pattern.js +0 -549
  196. package/components/MaskedInputV2/react-imask/imask/masked/pattern.js.map +0 -1
  197. package/components/MaskedInputV2/react-imask/imask/masked/patterns/block.d.ts +0 -30
  198. package/components/MaskedInputV2/react-imask/imask/masked/patterns/block.js +0 -2
  199. package/components/MaskedInputV2/react-imask/imask/masked/patterns/block.js.map +0 -1
  200. package/components/MaskedInputV2/react-imask/imask/masked/patterns/chunk-tail-details.d.ts +0 -20
  201. package/components/MaskedInputV2/react-imask/imask/masked/patterns/chunk-tail-details.js +0 -182
  202. package/components/MaskedInputV2/react-imask/imask/masked/patterns/chunk-tail-details.js.map +0 -1
  203. package/components/MaskedInputV2/react-imask/imask/masked/patterns/cursor.d.ts +0 -31
  204. package/components/MaskedInputV2/react-imask/imask/masked/patterns/cursor.js +0 -163
  205. package/components/MaskedInputV2/react-imask/imask/masked/patterns/cursor.js.map +0 -1
  206. package/components/MaskedInputV2/react-imask/imask/masked/patterns/fixed-definition.d.ts +0 -42
  207. package/components/MaskedInputV2/react-imask/imask/masked/patterns/fixed-definition.js +0 -158
  208. package/components/MaskedInputV2/react-imask/imask/masked/patterns/fixed-definition.js.map +0 -1
  209. package/components/MaskedInputV2/react-imask/imask/masked/patterns/input-definition.d.ts +0 -56
  210. package/components/MaskedInputV2/react-imask/imask/masked/patterns/input-definition.js +0 -185
  211. package/components/MaskedInputV2/react-imask/imask/masked/patterns/input-definition.js.map +0 -1
  212. package/components/MaskedInputV2/react-imask/imask/masked/regexp.d.ts +0 -17
  213. package/components/MaskedInputV2/react-imask/imask/masked/regexp.js +0 -36
  214. package/components/MaskedInputV2/react-imask/imask/masked/regexp.js.map +0 -1
  215. package/components/MaskedInputV2/react-imask/index.d.ts +0 -3
  216. package/components/MaskedInputV2/react-imask/index.js +0 -4
  217. package/components/MaskedInputV2/react-imask/index.js.map +0 -1
  218. package/components/MaskedInputV2/react-imask/input.d.ts +0 -8
  219. package/components/MaskedInputV2/react-imask/input.js +0 -35
  220. package/components/MaskedInputV2/react-imask/input.js.map +0 -1
  221. package/components/MaskedInputV2/react-imask/mixin.d.ts +0 -31
  222. package/components/MaskedInputV2/react-imask/mixin.js +0 -246
  223. package/components/MaskedInputV2/react-imask/mixin.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Tab.js","sourceRoot":"","sources":["Tab.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,SAAS,MAAM,WAAW,CAAC;AAElC,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,4BAA4B,EAAE,MAAM,oEAAoE,CAAC;AAClH,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AACpG,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAE7E,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACnG,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAWxE,MAAM,CAAC,IAAM,WAAW,GAAG;IACzB,IAAI,EAAE,WAAW;CACT,CAAC;AAyCX;;;;GAIG;AAGH;IAAoD,uBAAsC;IA8BxF,aAAY,KAAkB;QAC5B,YAAA,MAAK,YAAC,KAAK,CAAC,SAAC;QA1BR,aAAO,GAAoB,KAAI,CAAC,OAAO,CAAC;QAOvC,cAAQ,GAAG,iBAAiB,CAAC,KAAG,CAAC,YAAY,CAAC,CAAC;QAEhD,WAAK,GAAa;YACvB,iBAAiB,EAAE,KAAK;SACzB,CAAC;QASM,kBAAY,GAAyC,IAAI,CAAC;QAoI1D,WAAK,GAAG,cAAM,OAAA,KAAI,CAAC,KAAK,CAAC,EAAE,IAAI,KAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,EAArC,CAAqC,CAAC;QAEpD,qBAAe,GAAG,UAAC,QAAiC;YAC1D,KAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;QAC/B,CAAC,CAAC;QAEM,oBAAc,GAAG,cAAM,OAAA,KAAI,EAAJ,CAAI,CAAC;QAE5B,eAAS,GAAG,UAAC,KAAoC;YACvD,IAAI,KAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACxB,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,OAAO;YACT,CAAC;YACK,IAAA,KAAsB,KAAI,CAAC,QAAQ,EAAE,EAAnC,IAAI,UAAA,EAAE,SAAS,eAAoB,CAAC;YAE5C,IAAM,EAAE,GAAG,KAAI,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC;YACjC,IAAI,KAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACvB,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC1B,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;oBAC3B,OAAO;gBACT,CAAC;YACH,CAAC;YACD,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;gBAC3B,KAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAC7B,CAAC;YACD,IAAI,SAAS,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC/B,KAAK,CAAC,cAAc,EAAE,CAAC;YACzB,CAAC;QACH,CAAC,CAAC;QAEM,mBAAa,GAAG,UAAC,CAAmC;YAC1D,IAAI,KAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACxB,OAAO;YACT,CAAC;YAED,IAAI,KAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;gBACzB,KAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACxB,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;oBACvB,OAAO;gBACT,CAAC;YACH,CAAC;YACD,IAAM,EAAE,GAAG,KAAI,CAAC,KAAK,EAAE,CAAC;YACxB,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;gBAC3B,OAAO;YACT,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YACD,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAM,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,KAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACrC,CAAC,CAAC;QAEM,iBAAW,GAAG;;YACpB,IAAI,KAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACxB,OAAO;YACT,CAAC;YAED,iDAAiD;YACjD,kDAAkD;YAClD,MAAA,MAAA,KAAI,CAAC,YAAY,EAAC,qBAAqB,mDAAG;gBACxC,IAAI,KAAI,CAAC,WAAW,CAAC,YAAY,IAAI,KAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;oBACrE,KAAI,CAAC,QAAQ,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEM,gBAAU,GAAG;YACnB,IAAI,KAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACxB,OAAO;YACT,CAAC;YAED,KAAI,CAAC,QAAQ,CAAC,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9C,CAAC,CAAC;QAtMA,SAAS,CAAC,KAAI,CAAC,OAAO,KAAK,uBAAuB,EAAE,4CAA4C,CAAC,CAAC;;IACpG,CAAC;YAjCU,GAAG;IAmCP,+BAAiB,GAAxB;QACE,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACtD,IAAM,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAEM,gCAAkB,GAAzB;QACE,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;YAC7C,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IAEM,kCAAoB,GAA3B;QACE,IAAM,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAEM,oBAAM,GAAb;QAAA,iBAaC;QAZC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,gBAAgB,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1D,IAAI,CAAC,cAAc,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEtD,OAAO,CACL,oBAAC,YAAY,CAAC,QAAQ,QACnB,UAAC,KAAK;YACL,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,OAAO,KAAI,CAAC,UAAU,EAAE,CAAC;QAC3B,CAAC,CACqB,CACzB,CAAC;IACJ,CAAC;IAEM,2BAAa,GAApB;QACE,OAAO;YACL,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YAChC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YACpC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YACpC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YACpC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;SACvC,CAAC;IACJ,CAAC;IAEM,+BAAiB,GAAxB;QACE,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAEO,wBAAU,GAAlB;;QACQ,IAAA,KASF,IAAI,CAAC,KAAK,EARZ,QAAQ,cAAA,EACR,QAAQ,cAAA,EACR,KAAK,WAAA,EACL,OAAO,aAAA,EACP,OAAO,aAAA,EACP,OAAO,aAAA,EACa,eAAe,yBAAA,EACrB,SAAS,mBACX,CAAC;QACT,IAAA,KAAiC,IAAI,CAAC,QAAQ,EAAE,EAAnC,SAAS,eAAA,EAAE,IAAI,UAAoB,CAAC;QAEvD,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,UAAU,GAAG,KAAK,CAAC;QAEvB,IAAM,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC3B,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;YACnD,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QACrC,CAAC;QACD,IAAM,iBAAiB,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAEnF,OAAO,CACL,oBAAC,aAAa,aACZ,WAAW,EAAE,IAAI,CAAC,WAAW,IACzB,4BAA4B,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,UAAA,EAAE,CAAC,EAC5D,IAAI,CAAC,KAAK;YAEd,oBAAC,SAAS,gBACE,WAAW,CAAC,IAAI,EAC1B,SAAS,EAAE,IAAI,CAAC,EAAE;oBAChB,GAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAG,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO;oBAClE,GAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAG,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ;oBACpE,GAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAG,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO;oBAClE,GAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAG,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO;oBACtF,GAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAG,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ;oBACxF,GAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAG,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO;oBACtF,GAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAG,CAAC,CAAC,OAAO;oBAClD,GAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAG,CAAC,CAAC,OAAO;oBAClD,GAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAG,CAAC,CAAC,OAAO;oBAClD,GAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAG,CAAC,CAAC,KAAK;oBAC9C,GAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAG,CAAC,CAAC,QAAQ;oBAClC,GAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAG,CAAC,CAAC,QAAQ;oBAClD,GAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAG,CAAC,CAAC,QAAQ;oBAC9C,GAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAG,CAAC,CAAC,QAAQ;wBAC1C,EACF,MAAM,EAAE,IAAI,CAAC,UAAU,EACvB,OAAO,EAAE,IAAI,CAAC,SAAS,EACvB,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,SAAS,EAAE,IAAI,CAAC,aAAa,EAC7B,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC3B,GAAG,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,EACnE,IAAI,EAAE,IAAI,sBACQ,eAAe,gBACrB,SAAS;gBAErB,oBAAC,cAAc,IAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,IAAG,QAAQ,CAAkB;gBAC/E,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAC/B,6BACE,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK;wBACpC,GAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAG,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO;wBACnE,GAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAG,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ;wBACrE,GAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAG,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO;4BACnE,GACF,CACH,CACS,CACE,CACjB,CAAC;IACJ,CAAC;;IA1Ja,uBAAmB,GAAG,KAAK,AAAR,CAAS;IAC5B,eAAW,GAAG,KAAK,AAAR,CAAS;IAEpB,eAAW,GAAG,WAAW,AAAd,CAAe;IAG1B,gBAAY,GAAiB;QACzC,SAAS,EAAE,GAAG;QACd,IAAI,EAAE,EAAE;KACT,AAHyB,CAGxB;IAVS,GAAG;QAFf,qBAAqB;QACrB,QAAQ;OACI,GAAG,CAuOf;IAAD,UAAC;CAAA,AAvOD,CAAoD,KAAK,CAAC,SAAS,GAuOlE;SAvOY,GAAG","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport invariant from 'invariant';\nimport type { AriaAttributes } from 'react';\nimport React from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes.js';\nimport { ResizeDetector } from '../../internal/ResizeDetector/index.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { isKeyArrow, isKeyArrowLeft, isKeyArrowUp } from '../../lib/events/keyboard/identifiers.js';\nimport { KeyListener } from '../../lib/events/keyListener.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { isFunctionalComponent } from '../../lib/utils.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport { getHorizontalStyles, getStyles, getVerticalStyles, globalClasses } from './Tab.styles.js';\nimport { TabsContext, TabsContextDefaultValue } from './TabsContext.js';\nimport type { TabsContextType } from './TabsContext.js';\n\nexport interface TabIndicators {\n error: boolean;\n warning: boolean;\n success: boolean;\n primary: boolean;\n disabled: boolean;\n}\n\nexport const TabDataTids = {\n root: 'Tab__root',\n} as const;\n\nexport interface TabProps<T extends string = string>\n extends Pick<AriaAttributes, 'aria-label' | 'aria-describedby'>, CommonProps {\n /** Компонент или тег для рендера корневого элемента. */\n component?: React.ComponentType<any> | string;\n\n /** HTML-атрибут `href`. */\n href?: string;\n\n /** Уникальный идентификатор таба. По нему компонент `<Tabs />` определяет выбранный таб. */\n id?: T;\n\n /**`HTML`-событие `onclick`. */\n onClick?: (event: React.MouseEvent<HTMLElement>) => void;\n\n /** `HTML`-событие `onkeydown`. */\n onKeyDown?: (event: React.KeyboardEvent<HTMLElement>) => void;\n\n /** Делает таб недоступным. */\n disabled?: boolean;\n\n /** Переводит таб в состояние валидации \"Ошибка\". */\n error?: boolean;\n\n /** Переводит таб в состояние валидации \"Предупреждение\". */\n warning?: boolean;\n\n /** Переводит таб в состояние валидации \"Успех\". */\n success?: boolean;\n\n /** Задаёт визульное состояние главного элемента. */\n primary?: boolean;\n}\n\nexport interface TabState {\n focusedByKeyboard: boolean;\n}\n\ntype DefaultProps = Required<Pick<TabProps, 'component' | 'href'>>;\n\n/**\n * Табы группируют контент и помогают в навигации.\n *\n * Для создания группы табов используйте специальный контейнер - компонент [Tabs](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_display-data-tabs-tabs--docs).\n */\n@withRenderEnvironment\n@rootNode\nexport class Tab<T extends string = string> extends React.Component<TabProps<T>, TabState> {\n public static __KONTUR_REACT_UI__ = 'Tab';\n public static displayName = 'Tab';\n\n public static contextType = TabsContext;\n public context: TabsContextType = this.context;\n\n public static defaultProps: DefaultProps = {\n component: 'a',\n href: '',\n };\n\n private getProps = createPropsGetter(Tab.defaultProps);\n\n public state: TabState = {\n focusedByKeyboard: false,\n };\n\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private horizontalStyles!: ReturnType<typeof getHorizontalStyles>;\n private verticalStyles!: ReturnType<typeof getVerticalStyles>;\n private theme!: Theme;\n private tabComponent: Nullable<React.ReactElement<Tab<T>>> = null;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private keyListener!: KeyListener;\n\n constructor(props: TabProps<T>) {\n super(props);\n invariant(this.context !== TabsContextDefaultValue, 'Tab should be placed inside Tabs component');\n }\n\n public componentDidMount() {\n this.keyListener = new KeyListener(this.globalObject);\n const id = this.getId();\n if (typeof id === 'string') {\n this.context.addTab(id, this.getTabInstance);\n }\n }\n\n public componentDidUpdate() {\n if (this.context.activeTab === this.props.id) {\n this.context.notifyUpdate();\n }\n }\n\n public componentWillUnmount() {\n const id = this.getId();\n if (typeof id === 'string') {\n this.context.removeTab(id);\n }\n }\n\n public render(): React.JSX.Element {\n this.styles = getStyles(this.emotion);\n this.horizontalStyles = getHorizontalStyles(this.emotion);\n this.verticalStyles = getVerticalStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public getIndicators(): TabIndicators {\n return {\n error: Boolean(this.props.error),\n warning: Boolean(this.props.warning),\n success: Boolean(this.props.success),\n primary: Boolean(this.props.primary),\n disabled: Boolean(this.props.disabled),\n };\n }\n\n public getUnderlyingNode(): Nullable<React.ReactElement<Tab<T>>> {\n return this.tabComponent;\n }\n\n private renderMain() {\n const {\n children,\n disabled,\n error,\n warning,\n success,\n primary,\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n } = this.props;\n const { component: Component, href } = this.getProps();\n\n let isActive = false;\n let isVertical = false;\n\n const id = this.getId();\n if (typeof id === 'string') {\n isActive = this.context.activeTab === this.getId();\n isVertical = this.context.vertical;\n }\n const orientationStyles = isVertical ? this.verticalStyles : this.horizontalStyles;\n\n return (\n <CommonWrapper\n rootNodeRef={this.setRootNode}\n {...getVisualStateDataAttributes({ active: isActive, disabled })}\n {...this.props}\n >\n <Component\n data-tid={TabDataTids.root}\n className={this.cx({\n [this.styles.rootSmall(this.theme)]: this.context.size === 'small',\n [this.styles.rootMedium(this.theme)]: this.context.size === 'medium',\n [this.styles.rootLarge(this.theme)]: this.context.size === 'large',\n [this.styles.verticalSmall(this.theme)]: !!isVertical && this.context.size === 'small',\n [this.styles.verticalMedium(this.theme)]: !!isVertical && this.context.size === 'medium',\n [this.styles.verticalLarge(this.theme)]: !!isVertical && this.context.size === 'large',\n [orientationStyles.primary(this.theme)]: !!primary,\n [orientationStyles.success(this.theme)]: !!success,\n [orientationStyles.warning(this.theme)]: !!warning,\n [orientationStyles.error(this.theme)]: !!error,\n [this.styles.active()]: !!isActive,\n [orientationStyles.active(this.theme)]: !!isActive,\n [this.styles.disabled(this.theme)]: !!disabled,\n [orientationStyles.disabled()]: !!disabled,\n })}\n onBlur={this.handleBlur}\n onClick={this.switchTab}\n onFocus={this.handleFocus}\n onKeyDown={this.handleKeyDown}\n tabIndex={disabled ? -1 : 0}\n ref={isFunctionalComponent(Component) ? null : this.refTabComponent}\n href={href}\n aria-describedby={ariaDescribedby}\n aria-label={ariaLabel}\n >\n <ResizeDetector onResize={this.context.notifyUpdate}>{children}</ResizeDetector>\n {this.state.focusedByKeyboard && (\n <div\n className={this.cx(globalClasses.focus, {\n [this.styles.focusSmall(this.theme)]: this.context.size === 'small',\n [this.styles.focusMedium(this.theme)]: this.context.size === 'medium',\n [this.styles.focusLarge(this.theme)]: this.context.size === 'large',\n })}\n />\n )}\n </Component>\n </CommonWrapper>\n );\n }\n\n private getId = () => this.props.id || this.getProps().href;\n\n private refTabComponent = (instance: React.ReactElement<any>) => {\n this.tabComponent = instance;\n };\n\n private getTabInstance = () => this;\n\n private switchTab = (event: React.MouseEvent<HTMLElement>) => {\n if (this.props.disabled) {\n event.preventDefault();\n return;\n }\n const { href, component } = this.getProps();\n\n const id = this.props.id || href;\n if (this.props.onClick) {\n this.props.onClick(event);\n if (event.defaultPrevented) {\n return;\n }\n }\n if (typeof id === 'string') {\n this.context.switchTab(id);\n }\n if (component === 'a' && !href) {\n event.preventDefault();\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (this.props.disabled) {\n return;\n }\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n if (e.defaultPrevented) {\n return;\n }\n }\n const id = this.getId();\n if (typeof id !== 'string') {\n return;\n }\n if (!isKeyArrow(e)) {\n return;\n }\n e.preventDefault();\n const delta = isKeyArrowLeft(e) || isKeyArrowUp(e) ? -1 : 1;\n this.context.shiftFocus(id, delta);\n };\n\n private handleFocus = () => {\n if (this.props.disabled) {\n return;\n }\n\n // focus event fires before keyDown eventlistener\n // so we should check focusKeyPressed in async way\n this.globalObject.requestAnimationFrame?.(() => {\n if (this.keyListener.isTabPressed || this.keyListener.isArrowPressed) {\n this.setState({ focusedByKeyboard: true });\n }\n });\n };\n\n private handleBlur = () => {\n if (this.props.disabled) {\n return;\n }\n\n this.setState({ focusedByKeyboard: false });\n };\n}\n"]}
1
+ {"version":3,"file":"Tab.js","sourceRoot":"","sources":["Tab.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport invariant from 'invariant';\nimport type { AriaAttributes } from 'react';\nimport React from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes.js';\nimport { ResizeDetector } from '../../internal/ResizeDetector/index.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { isKeyArrow, isKeyArrowLeft, isKeyArrowUp } from '../../lib/events/keyboard/identifiers.js';\nimport { KeyListener } from '../../lib/events/keyListener.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { isFunctionalComponent } from '../../lib/utils.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport { getHorizontalStyles, getStyles, getVerticalStyles, globalClasses } from './Tab.styles.js';\nimport { TabsContext, TabsContextDefaultValue } from './TabsContext.js';\nimport type { TabsContextType } from './TabsContext.js';\n\nexport interface TabIndicators {\n error: boolean;\n warning: boolean;\n success: boolean;\n primary: boolean;\n disabled: boolean;\n}\n\nexport const TabDataTids = {\n root: 'Tab__root',\n} as const;\n\nexport interface TabProps<T extends string = string>\n extends Pick<AriaAttributes, 'aria-label' | 'aria-describedby'>, CommonProps {\n /** Компонент или тег для рендера корневого элемента. */\n component?: React.ComponentType<any> | string;\n\n /** HTML-атрибут `href`. */\n href?: string;\n\n /** Уникальный идентификатор таба. По нему компонент `<Tabs />` определяет выбранный таб. */\n id?: T;\n\n /**`HTML`-событие `onclick`. */\n onClick?: (event: React.MouseEvent<HTMLElement>) => void;\n\n /** `HTML`-событие `onkeydown`. */\n onKeyDown?: (event: React.KeyboardEvent<HTMLElement>) => void;\n\n /** Делает таб недоступным. */\n disabled?: boolean;\n\n /** Переводит таб в состояние ошибки. */\n error?: boolean;\n\n /** Переводит таб в состояние предупреждения. */\n warning?: boolean;\n\n /** Переводит таб в состояние успеха. */\n success?: boolean;\n\n /** Визульное состояние главного элемента. */\n primary?: boolean;\n}\n\nexport interface TabState {\n focusedByKeyboard: boolean;\n}\n\ntype DefaultProps = Required<Pick<TabProps, 'component' | 'href'>>;\n\n/**\n * Табы группируют контент и помогают в навигации.\n *\n */\n@withRenderEnvironment\n@rootNode\nexport class Tab<T extends string = string> extends React.Component<TabProps<T>, TabState> {\n public static __KONTUR_REACT_UI__ = 'Tab';\n public static displayName = 'Tab';\n\n public static contextType = TabsContext;\n public context: TabsContextType = this.context;\n\n public static defaultProps: DefaultProps = {\n component: 'a',\n href: '',\n };\n\n private getProps = createPropsGetter(Tab.defaultProps);\n\n public state: TabState = {\n focusedByKeyboard: false,\n };\n\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private horizontalStyles!: ReturnType<typeof getHorizontalStyles>;\n private verticalStyles!: ReturnType<typeof getVerticalStyles>;\n private theme!: Theme;\n private tabComponent: Nullable<React.ReactElement<Tab<T>>> = null;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private keyListener!: KeyListener;\n\n constructor(props: TabProps<T>) {\n super(props);\n invariant(this.context !== TabsContextDefaultValue, 'Tab should be placed inside Tabs component');\n }\n\n public componentDidMount() {\n this.keyListener = new KeyListener(this.globalObject);\n const id = this.getId();\n if (typeof id === 'string') {\n this.context.addTab(id, this.getTabInstance);\n }\n }\n\n public componentDidUpdate() {\n if (this.context.activeTab === this.props.id) {\n this.context.notifyUpdate();\n }\n }\n\n public componentWillUnmount() {\n const id = this.getId();\n if (typeof id === 'string') {\n this.context.removeTab(id);\n }\n }\n\n public render(): React.JSX.Element {\n this.styles = getStyles(this.emotion);\n this.horizontalStyles = getHorizontalStyles(this.emotion);\n this.verticalStyles = getVerticalStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public getIndicators(): TabIndicators {\n return {\n error: Boolean(this.props.error),\n warning: Boolean(this.props.warning),\n success: Boolean(this.props.success),\n primary: Boolean(this.props.primary),\n disabled: Boolean(this.props.disabled),\n };\n }\n\n public getUnderlyingNode(): Nullable<React.ReactElement<Tab<T>>> {\n return this.tabComponent;\n }\n\n private renderMain() {\n const {\n children,\n disabled,\n error,\n warning,\n success,\n primary,\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n } = this.props;\n const { component: Component, href } = this.getProps();\n\n let isActive = false;\n let isVertical = false;\n\n const id = this.getId();\n if (typeof id === 'string') {\n isActive = this.context.activeTab === this.getId();\n isVertical = this.context.vertical;\n }\n const orientationStyles = isVertical ? this.verticalStyles : this.horizontalStyles;\n\n return (\n <CommonWrapper\n rootNodeRef={this.setRootNode}\n {...getVisualStateDataAttributes({ active: isActive, disabled })}\n {...this.props}\n >\n <Component\n data-tid={TabDataTids.root}\n className={this.cx({\n [this.styles.rootSmall(this.theme)]: this.context.size === 'small',\n [this.styles.rootMedium(this.theme)]: this.context.size === 'medium',\n [this.styles.rootLarge(this.theme)]: this.context.size === 'large',\n [this.styles.verticalSmall(this.theme)]: !!isVertical && this.context.size === 'small',\n [this.styles.verticalMedium(this.theme)]: !!isVertical && this.context.size === 'medium',\n [this.styles.verticalLarge(this.theme)]: !!isVertical && this.context.size === 'large',\n [orientationStyles.primary(this.theme)]: !!primary,\n [orientationStyles.success(this.theme)]: !!success,\n [orientationStyles.warning(this.theme)]: !!warning,\n [orientationStyles.error(this.theme)]: !!error,\n [this.styles.active()]: !!isActive,\n [orientationStyles.active(this.theme)]: !!isActive,\n [this.styles.disabled(this.theme)]: !!disabled,\n [orientationStyles.disabled()]: !!disabled,\n })}\n onBlur={this.handleBlur}\n onClick={this.switchTab}\n onFocus={this.handleFocus}\n onKeyDown={this.handleKeyDown}\n tabIndex={disabled ? -1 : 0}\n ref={isFunctionalComponent(Component) ? null : this.refTabComponent}\n href={href}\n aria-describedby={ariaDescribedby}\n aria-label={ariaLabel}\n >\n <ResizeDetector onResize={this.context.notifyUpdate}>{children}</ResizeDetector>\n {this.state.focusedByKeyboard && (\n <div\n className={this.cx(globalClasses.focus, {\n [this.styles.focusSmall(this.theme)]: this.context.size === 'small',\n [this.styles.focusMedium(this.theme)]: this.context.size === 'medium',\n [this.styles.focusLarge(this.theme)]: this.context.size === 'large',\n })}\n />\n )}\n </Component>\n </CommonWrapper>\n );\n }\n\n private getId = () => this.props.id || this.getProps().href;\n\n private refTabComponent = (instance: React.ReactElement<any>) => {\n this.tabComponent = instance;\n };\n\n private getTabInstance = () => this;\n\n private switchTab = (event: React.MouseEvent<HTMLElement>) => {\n if (this.props.disabled) {\n event.preventDefault();\n return;\n }\n const { href, component } = this.getProps();\n\n const id = this.props.id || href;\n if (this.props.onClick) {\n this.props.onClick(event);\n if (event.defaultPrevented) {\n return;\n }\n }\n if (typeof id === 'string') {\n this.context.switchTab(id);\n }\n if (component === 'a' && !href) {\n event.preventDefault();\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (this.props.disabled) {\n return;\n }\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n if (e.defaultPrevented) {\n return;\n }\n }\n const id = this.getId();\n if (typeof id !== 'string') {\n return;\n }\n if (!isKeyArrow(e)) {\n return;\n }\n e.preventDefault();\n const delta = isKeyArrowLeft(e) || isKeyArrowUp(e) ? -1 : 1;\n this.context.shiftFocus(id, delta);\n };\n\n private handleFocus = () => {\n if (this.props.disabled) {\n return;\n }\n\n // focus event fires before keyDown eventlistener\n // so we should check focusKeyPressed in async way\n this.globalObject.requestAnimationFrame?.(() => {\n if (this.keyListener.isTabPressed || this.keyListener.isArrowPressed) {\n this.setState({ focusedByKeyboard: true });\n }\n });\n };\n\n private handleBlur = () => {\n if (this.props.disabled) {\n return;\n }\n\n this.setState({ focusedByKeyboard: false });\n };\n}\n"]}
@@ -12,7 +12,7 @@ export interface TabsProps<T extends ValueBaseType = string> extends CommonProps
12
12
  size?: SizeProp;
13
13
  /** Идентификатор активного таба. Совпадает с `id` выбранного `<Tab />`. */
14
14
  value: T;
15
- /** Вызывается при смене активного таба. */
15
+ /** Событие смены активного таба. */
16
16
  onValueChange?: (value: T) => void;
17
17
  /** Располагает табы вертикально.
18
18
  * @default false */
@@ -28,7 +28,7 @@ export declare const TabsDataTids: {
28
28
  };
29
29
  type DefaultProps = Required<Pick<TabsProps, 'vertical' | 'size'>>;
30
30
  /**
31
- * Контейнер для компонента [Tab](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_display-data-tabs-tab--doc). Группирует табы и позволяет управлять их состоянием.
31
+ * Табы группируют контент и помогают в навигации.
32
32
  */
33
33
  export declare class Tabs<T extends string = string> extends React.Component<TabsProps<T>> {
34
34
  static __KONTUR_REACT_UI__: string;
@@ -47,7 +47,7 @@ export var TabsDataTids = {
47
47
  indicatorRoot: 'Indicator__root',
48
48
  };
49
49
  /**
50
- * Контейнер для компонента [Tab](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_display-data-tabs-tab--doc). Группирует табы и позволяет управлять их состоянием.
50
+ * Табы группируют контент и помогают в навигации.
51
51
  */
52
52
  var Tabs = /** @class */ (function (_super) {
53
53
  __extends(Tabs, _super);
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.js","sourceRoot":"","sources":["Tabs.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport type { AriaAttributes, JSX } from 'react';\nimport React from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { isInstanceOf } from '../../lib/isInstanceOf.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport { getRootNode } from '../../lib/rootNode/getRootNode.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport type { emptyHandler } from '../../lib/utils.js';\nimport { Indicator } from './Indicator.js';\nimport { Tab } from './Tab.js';\nimport { getStyles } from './Tabs.styles.js';\nimport { TabsContext } from './TabsContext.js';\nimport type { TabsContextType } from './TabsContext.js';\n\ntype ValueBaseType = string;\ninterface TabType<T extends ValueBaseType> {\n getNode: () => Tab<T> | null;\n id: T;\n}\n\nexport interface TabsProps<T extends ValueBaseType = string> extends CommonProps {\n /** Кастомный класс для индикатора (подчёркивания) активного таба. */\n indicatorClassName?: string;\n\n /** Размер табов. */\n size?: SizeProp;\n\n /** Идентификатор активного таба. Совпадает с `id` выбранного `<Tab />`. */\n value: T;\n\n /** Вызывается при смене активного таба. */\n onValueChange?: (value: T) => void;\n\n /** Располагает табы вертикально.\n * @default false */\n vertical?: boolean;\n\n /** Ширина компонента. */\n width?: number | string;\n\n /** @ignore */\n 'aria-describedby'?: AriaAttributes['aria-describedby'];\n}\n\nexport const TabsDataTids = {\n root: 'Tabs__root',\n indicatorRoot: 'Indicator__root',\n} as const;\n\ntype DefaultProps = Required<Pick<TabsProps, 'vertical' | 'size'>>;\n\n/**\n * Контейнер для компонента [Tab](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_display-data-tabs-tab--doc). Группирует табы и позволяет управлять их состоянием.\n */\n@withRenderEnvironment\n@rootNode\nexport class Tabs<T extends string = string> extends React.Component<TabsProps<T>> {\n public static __KONTUR_REACT_UI__ = 'Tabs';\n public static displayName = 'Tabs';\n\n public static defaultProps: DefaultProps = {\n vertical: false,\n size: 'large',\n };\n\n private getProps = createPropsGetter(Tabs.defaultProps);\n\n public static Tab = Tab;\n\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n\n private tabs: Array<TabType<T>> = [];\n\n private tabUpdates = {\n on: (cb: () => void) => {\n const index = this.listeners.push(cb);\n return () => {\n this.listeners.splice(index, 1);\n };\n },\n };\n\n private listeners: Array<typeof emptyHandler> = [];\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public render(): JSX.Element {\n const { value, width, children, indicatorClassName, 'aria-describedby': ariaDescribedby } = this.props;\n const { vertical, size } = this.getProps();\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n data-tid={TabsDataTids.root}\n className={this.cx({\n [this.styles.rootSmall(this.theme)]: size === 'small',\n [this.styles.rootMedium(this.theme)]: size === 'medium',\n [this.styles.rootLarge(this.theme)]: size === 'large',\n [this.styles.vertical()]: vertical,\n })}\n style={{ width }}\n aria-describedby={ariaDescribedby}\n >\n <TabsContext.Provider\n value={{\n vertical,\n activeTab: value,\n size,\n getTab: this.getTab,\n addTab: this.addTab,\n removeTab: this.removeTab,\n notifyUpdate: this.notifyUpdate,\n shiftFocus: this.shiftFocus,\n switchTab: this.switchTab,\n }}\n >\n {children}\n <Indicator\n className={indicatorClassName}\n tabUpdates={this.tabUpdates}\n vertical={this.getProps().vertical}\n />\n </TabsContext.Provider>\n </div>\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private shiftFocus: TabsContextType<T>['shiftFocus'] = (fromTab, delta) => {\n const { tabs } = this;\n const index = tabs.findIndex((x) => x.id === fromTab);\n const newIndex = Math.max(0, Math.min(index + delta, tabs.length - 1));\n const tab = tabs[newIndex];\n\n const tabNode = tab.getNode();\n const htmlNode = getRootNode(tabNode);\n\n if (isInstanceOf(htmlNode, this.globalObject.HTMLElement) && typeof htmlNode.focus === 'function') {\n htmlNode.focus();\n }\n };\n\n private notifyUpdate: TabsContextType<T>['notifyUpdate'] = () => {\n this.listeners.forEach((cb) => cb());\n };\n\n private switchTab: TabsContextType<T>['switchTab'] = (id) => {\n const { onValueChange, value } = this.props;\n if (id !== value && onValueChange) {\n onValueChange(id);\n }\n };\n\n private getTab: TabsContextType<T>['getTab'] = (id) => {\n const { getNode = null } = this.tabs.find((x) => x.id === id) || {};\n return getNode && getNode();\n };\n\n private addTab: TabsContextType<T>['addTab'] = (id, getNode) => {\n this.tabs = this.tabs.concat({ id, getNode });\n };\n\n private removeTab: TabsContextType<T>['removeTab'] = (id) => {\n this.tabs = this.tabs.filter((tab) => tab.id !== id);\n };\n}\n"]}
1
+ {"version":3,"file":"Tabs.js","sourceRoot":"","sources":["Tabs.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAEhE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAGjE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAiC/C,MAAM,CAAC,IAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,YAAY;IAClB,aAAa,EAAE,iBAAiB;CACxB,CAAC;AAIX;;GAEG;AAGH;IAAqD,wBAA6B;IAAlF;;QASU,cAAQ,GAAG,iBAAiB,CAAC,MAAI,CAAC,YAAY,CAAC,CAAC;QAUhD,UAAI,GAAsB,EAAE,CAAC;QAE7B,gBAAU,GAAG;YACnB,EAAE,EAAE,UAAC,EAAc;gBACjB,IAAM,KAAK,GAAG,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACtC,OAAO;oBACL,KAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAClC,CAAC,CAAC;YACJ,CAAC;SACF,CAAC;QAEM,eAAS,GAA+B,EAAE,CAAC;QAsD3C,gBAAU,GAAqC,UAAC,OAAO,EAAE,KAAK;YAC5D,IAAA,IAAI,GAAK,KAAI,KAAT,CAAU;YACtB,IAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,EAAE,KAAK,OAAO,EAAhB,CAAgB,CAAC,CAAC;YACtD,IAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YACvE,IAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YAE3B,IAAM,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;YAC9B,IAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;YAEtC,IAAI,YAAY,CAAC,QAAQ,EAAE,KAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,OAAO,QAAQ,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;gBAClG,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,CAAC;QACH,CAAC,CAAC;QAEM,kBAAY,GAAuC;YACzD,KAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAC,EAAE,IAAK,OAAA,EAAE,EAAE,EAAJ,CAAI,CAAC,CAAC;QACvC,CAAC,CAAC;QAEM,eAAS,GAAoC,UAAC,EAAE;YAChD,IAAA,KAA2B,KAAI,CAAC,KAAK,EAAnC,aAAa,mBAAA,EAAE,KAAK,WAAe,CAAC;YAC5C,IAAI,EAAE,KAAK,KAAK,IAAI,aAAa,EAAE,CAAC;gBAClC,aAAa,CAAC,EAAE,CAAC,CAAC;YACpB,CAAC;QACH,CAAC,CAAC;QAEM,YAAM,GAAiC,UAAC,EAAE;YACxC,IAAA,KAAmB,CAAA,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,EAAE,KAAK,EAAE,EAAX,CAAW,CAAC,IAAI,EAAE,CAAA,QAA7C,EAAd,OAAO,mBAAG,IAAI,KAAA,CAA8C;YACpE,OAAO,OAAO,IAAI,OAAO,EAAE,CAAC;QAC9B,CAAC,CAAC;QAEM,YAAM,GAAiC,UAAC,EAAE,EAAE,OAAO;YACzD,KAAI,CAAC,IAAI,GAAG,KAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAA,EAAE,OAAO,SAAA,EAAE,CAAC,CAAC;QAChD,CAAC,CAAC;QAEM,eAAS,GAAoC,UAAC,EAAE;YACtD,KAAI,CAAC,IAAI,GAAG,KAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,EAAE,KAAK,EAAE,EAAb,CAAa,CAAC,CAAC;QACvD,CAAC,CAAC;;IACJ,CAAC;aAzHY,IAAI;IAkCR,qBAAM,GAAb;QAAA,iBAgDC;QA/CO,IAAA,KAAsF,IAAI,CAAC,KAAK,EAA9F,KAAK,WAAA,EAAE,KAAK,WAAA,EAAE,QAAQ,cAAA,EAAE,kBAAkB,wBAAA,EAAsB,eAAe,yBAAe,CAAC;QACjG,IAAA,KAAqB,IAAI,CAAC,QAAQ,EAAE,EAAlC,QAAQ,cAAA,EAAE,IAAI,UAAoB,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEtC,OAAO,CACL,oBAAC,YAAY,CAAC,QAAQ,QACnB,UAAC,KAAK;;YACL,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,OAAO,CACL,oBAAC,aAAa,aAAC,WAAW,EAAE,KAAI,CAAC,WAAW,IAAM,KAAI,CAAC,KAAK;gBAC1D,yCACY,YAAY,CAAC,IAAI,EAC3B,SAAS,EAAE,KAAI,CAAC,EAAE;wBAChB,GAAC,KAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,IAAI,KAAK,OAAO;wBACrD,GAAC,KAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,IAAI,KAAK,QAAQ;wBACvD,GAAC,KAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,IAAI,KAAK,OAAO;wBACrD,GAAC,KAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAG,QAAQ;4BAClC,EACF,KAAK,EAAE,EAAE,KAAK,OAAA,EAAE,sBACE,eAAe;oBAEjC,oBAAC,WAAW,CAAC,QAAQ,IACnB,KAAK,EAAE;4BACL,QAAQ,UAAA;4BACR,SAAS,EAAE,KAAK;4BAChB,IAAI,MAAA;4BACJ,MAAM,EAAE,KAAI,CAAC,MAAM;4BACnB,MAAM,EAAE,KAAI,CAAC,MAAM;4BACnB,SAAS,EAAE,KAAI,CAAC,SAAS;4BACzB,YAAY,EAAE,KAAI,CAAC,YAAY;4BAC/B,UAAU,EAAE,KAAI,CAAC,UAAU;4BAC3B,SAAS,EAAE,KAAI,CAAC,SAAS;yBAC1B;wBAEA,QAAQ;wBACT,oBAAC,SAAS,IACR,SAAS,EAAE,kBAAkB,EAC7B,UAAU,EAAE,KAAI,CAAC,UAAU,EAC3B,QAAQ,EAAE,KAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,GAClC,CACmB,CACnB,CACQ,CACjB,CAAC;QACJ,CAAC,CACqB,CACzB,CAAC;IACJ,CAAC;;IAjFa,wBAAmB,GAAG,MAAM,AAAT,CAAU;IAC7B,gBAAW,GAAG,MAAM,AAAT,CAAU;IAErB,iBAAY,GAAiB;QACzC,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,OAAO;KACd,AAHyB,CAGxB;IAIY,QAAG,GAAG,GAAG,AAAN,CAAO;IAXb,IAAI;QAFhB,qBAAqB;QACrB,QAAQ;OACI,IAAI,CAyHhB;IAAD,WAAC;CAAA,AAzHD,CAAqD,KAAK,CAAC,SAAS,GAyHnE;SAzHY,IAAI","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport type { AriaAttributes, JSX } from 'react';\nimport React from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { isInstanceOf } from '../../lib/isInstanceOf.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport { getRootNode } from '../../lib/rootNode/getRootNode.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport type { emptyHandler } from '../../lib/utils.js';\nimport { Indicator } from './Indicator.js';\nimport { Tab } from './Tab.js';\nimport { getStyles } from './Tabs.styles.js';\nimport { TabsContext } from './TabsContext.js';\nimport type { TabsContextType } from './TabsContext.js';\n\ntype ValueBaseType = string;\ninterface TabType<T extends ValueBaseType> {\n getNode: () => Tab<T> | null;\n id: T;\n}\n\nexport interface TabsProps<T extends ValueBaseType = string> extends CommonProps {\n /** Кастомный класс для индикатора (подчёркивания) активного таба. */\n indicatorClassName?: string;\n\n /** Размер табов. */\n size?: SizeProp;\n\n /** Идентификатор активного таба. Совпадает с `id` выбранного `<Tab />`. */\n value: T;\n\n /** Событие смены активного таба. */\n onValueChange?: (value: T) => void;\n\n /** Располагает табы вертикально.\n * @default false */\n vertical?: boolean;\n\n /** Ширина компонента. */\n width?: number | string;\n\n /** @ignore */\n 'aria-describedby'?: AriaAttributes['aria-describedby'];\n}\n\nexport const TabsDataTids = {\n root: 'Tabs__root',\n indicatorRoot: 'Indicator__root',\n} as const;\n\ntype DefaultProps = Required<Pick<TabsProps, 'vertical' | 'size'>>;\n\n/**\n * Табы группируют контент и помогают в навигации.\n */\n@withRenderEnvironment\n@rootNode\nexport class Tabs<T extends string = string> extends React.Component<TabsProps<T>> {\n public static __KONTUR_REACT_UI__ = 'Tabs';\n public static displayName = 'Tabs';\n\n public static defaultProps: DefaultProps = {\n vertical: false,\n size: 'large',\n };\n\n private getProps = createPropsGetter(Tabs.defaultProps);\n\n public static Tab = Tab;\n\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n\n private tabs: Array<TabType<T>> = [];\n\n private tabUpdates = {\n on: (cb: () => void) => {\n const index = this.listeners.push(cb);\n return () => {\n this.listeners.splice(index, 1);\n };\n },\n };\n\n private listeners: Array<typeof emptyHandler> = [];\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public render(): JSX.Element {\n const { value, width, children, indicatorClassName, 'aria-describedby': ariaDescribedby } = this.props;\n const { vertical, size } = this.getProps();\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n data-tid={TabsDataTids.root}\n className={this.cx({\n [this.styles.rootSmall(this.theme)]: size === 'small',\n [this.styles.rootMedium(this.theme)]: size === 'medium',\n [this.styles.rootLarge(this.theme)]: size === 'large',\n [this.styles.vertical()]: vertical,\n })}\n style={{ width }}\n aria-describedby={ariaDescribedby}\n >\n <TabsContext.Provider\n value={{\n vertical,\n activeTab: value,\n size,\n getTab: this.getTab,\n addTab: this.addTab,\n removeTab: this.removeTab,\n notifyUpdate: this.notifyUpdate,\n shiftFocus: this.shiftFocus,\n switchTab: this.switchTab,\n }}\n >\n {children}\n <Indicator\n className={indicatorClassName}\n tabUpdates={this.tabUpdates}\n vertical={this.getProps().vertical}\n />\n </TabsContext.Provider>\n </div>\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private shiftFocus: TabsContextType<T>['shiftFocus'] = (fromTab, delta) => {\n const { tabs } = this;\n const index = tabs.findIndex((x) => x.id === fromTab);\n const newIndex = Math.max(0, Math.min(index + delta, tabs.length - 1));\n const tab = tabs[newIndex];\n\n const tabNode = tab.getNode();\n const htmlNode = getRootNode(tabNode);\n\n if (isInstanceOf(htmlNode, this.globalObject.HTMLElement) && typeof htmlNode.focus === 'function') {\n htmlNode.focus();\n }\n };\n\n private notifyUpdate: TabsContextType<T>['notifyUpdate'] = () => {\n this.listeners.forEach((cb) => cb());\n };\n\n private switchTab: TabsContextType<T>['switchTab'] = (id) => {\n const { onValueChange, value } = this.props;\n if (id !== value && onValueChange) {\n onValueChange(id);\n }\n };\n\n private getTab: TabsContextType<T>['getTab'] = (id) => {\n const { getNode = null } = this.tabs.find((x) => x.id === id) || {};\n return getNode && getNode();\n };\n\n private addTab: TabsContextType<T>['addTab'] = (id, getNode) => {\n this.tabs = this.tabs.concat({ id, getNode });\n };\n\n private removeTab: TabsContextType<T>['removeTab'] = (id) => {\n this.tabs = this.tabs.filter((tab) => tab.id !== id);\n };\n}\n"]}
@@ -36,7 +36,7 @@ export declare const TokenDataTids: {
36
36
  };
37
37
  /** Токены — это значение заданного формата внутри поля ввода. Например, номера телефонов, почты, ИНН, СНИЛС, статусы, группы и другие.
38
38
  *
39
- * Используется ак значение внутри [TokenInput](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_input-data-tokeninput-tokeninput--docs).
39
+ * Используется как значение внутри `TokenInput`.
40
40
  */
41
41
  export declare class Token extends React.Component<TokenProps> {
42
42
  static __KONTUR_REACT_UI__: string;
@@ -49,7 +49,7 @@ export var TokenDataTids = {
49
49
  };
50
50
  /** Токены — это значение заданного формата внутри поля ввода. Например, номера телефонов, почты, ИНН, СНИЛС, статусы, группы и другие.
51
51
  *
52
- * Используется ак значение внутри [TokenInput](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_input-data-tokeninput-tokeninput--docs).
52
+ * Используется как значение внутри `TokenInput`.
53
53
  */
54
54
  var Token = /** @class */ (function (_super) {
55
55
  __extends(Token, _super);
@@ -1 +1 @@
1
- {"version":3,"file":"Token.js","sourceRoot":"","sources":["Token.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport type { AriaAttributes } from 'react';\nimport React from 'react';\n\nimport { CloseButtonIcon } from '../../internal/CloseButtonIcon/CloseButtonIcon.js';\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes.js';\nimport { locale } from '../../lib/locale/decorators.js';\nimport { reactGetTextContent } from '../../lib/reactGetTextContent.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport { emptyHandler } from '../../lib/utils.js';\nimport type { TokenLocale } from './locale/index.js';\nimport { TokenLocaleHelper } from './locale/index.js';\nimport { getStyles } from './Token.styles.js';\nimport { TokenView } from './TokenView.js';\n\nexport type TokenSize = SizeProp;\n\nexport interface TokenProps extends Pick<AriaAttributes, 'aria-describedby'>, CommonProps {\n /** Делает токен активным. */\n isActive?: boolean;\n /** Меняет визуальное отображение токена на состояние «ошибка». Может быть полезен при разработке собственной валидации, если вы не используете пакет [React UI Validations](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui-validations_displaying-getting-started--docs). */\n error?: boolean;\n /** Меняет визуальное отображение токена на состояние «предупреждение». Может быть полезен при разработке собственной валидации, если вы не используете пакет [React UI Validations](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui-validations_displaying-getting-started--docs). */\n warning?: boolean;\n /** Блокирует токен. */\n disabled?: boolean;\n /** Размер токена. */\n size?: TokenSize;\n /** Задаёт функцию, которая вызывается при клике на токен. */\n onClick?: React.MouseEventHandler<HTMLDivElement>;\n /** Задаёт функцию, которая вызывается при двойном клике на токен. */\n onDoubleClick?: React.MouseEventHandler<HTMLDivElement>;\n /** Задаёт функцию, которая вызывается, когда токен удаляется. */\n onRemove?: React.MouseEventHandler<HTMLElement>;\n /** Задаёт функцию, которая вызывается при наведении мышкой (событие `onmouseenter`). */\n onMouseEnter?: React.MouseEventHandler<HTMLDivElement>;\n /** Задаёт функцию, которая вызывается при уходе мышки с объекта (событие `onmouseleave`). */\n onMouseLeave?: React.MouseEventHandler<HTMLDivElement>;\n /** Задаёт функцию, которая вызывается, когда токен получает фокус. */\n onFocus?: React.FocusEventHandler<HTMLDivElement>;\n /** Задаёт функцию, которая вызывается, когда токен теряет фокус. */\n onBlur?: React.FocusEventHandler<HTMLDivElement>;\n}\n\nexport const TokenDataTids = {\n root: 'Token__root',\n removeIcon: 'Token__removeIcon',\n} as const;\n\n/** Токены — это значение заданного формата внутри поля ввода. Например, номера телефонов, почты, ИНН, СНИЛС, статусы, группы и другие.\n *\n * Используется ак значение внутри [TokenInput](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_input-data-tokeninput-tokeninput--docs).\n */\n@withRenderEnvironment\n@rootNode\n@locale('Token', TokenLocaleHelper)\nexport class Token extends React.Component<TokenProps> {\n public static __KONTUR_REACT_UI__ = 'Token';\n public static displayName = 'Token';\n\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private readonly locale!: TokenLocale;\n\n public render(): React.JSX.Element {\n this.styles = getStyles(this.emotion);\n\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 const {\n size,\n children,\n isActive,\n error,\n warning,\n disabled,\n 'aria-describedby': ariaDescribedby,\n onClick = emptyHandler,\n onDoubleClick = emptyHandler,\n onMouseEnter = emptyHandler,\n onMouseLeave = emptyHandler,\n onFocus = emptyHandler,\n onBlur = emptyHandler,\n } = this.props;\n\n const theme = this.theme;\n\n const removeButtonAriaLabel = this.locale.removeButtonAriaLabel + ' ' + reactGetTextContent(children);\n\n const icon = (\n <CloseButtonIcon\n side={16}\n color=\"inherit\"\n colorHover=\"inherit\"\n aria-label={removeButtonAriaLabel}\n tabbable={false}\n />\n );\n\n const classNames = this.cx(\n this.styles.tokenIdle(theme),\n !isActive && !warning && !error && !disabled && this.styles.tokenHover(theme),\n isActive && this.styles.tokenActive(theme),\n warning && this.styles.tokenWarning(theme),\n error && this.styles.tokenError(theme),\n disabled && this.styles.tokenDisabled(theme),\n );\n\n const textholder = <span className={this.styles.text()}>{children}</span>;\n\n const closeButton = (\n <span onClick={this.onRemoveClick} data-tid={TokenDataTids.removeIcon}>\n {icon}\n </span>\n );\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props} {...getVisualStateDataAttributes({ disabled })}>\n <TokenView\n className={classNames}\n size={size}\n closeButton={closeButton}\n data-tid={TokenDataTids.root}\n aria-describedby={ariaDescribedby}\n onClick={onClick}\n onDoubleClick={onDoubleClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onFocus={onFocus}\n onBlur={onBlur}\n >\n {textholder}\n </TokenView>\n </CommonWrapper>\n );\n }\n\n private onRemoveClick = (event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n const { disabled, onRemove = emptyHandler } = this.props;\n\n if (disabled) {\n event.preventDefault();\n return;\n }\n\n onRemove(event);\n };\n}\n"]}
1
+ {"version":3,"file":"Token.js","sourceRoot":"","sources":["Token.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport type { AriaAttributes } from 'react';\nimport React from 'react';\n\nimport { CloseButtonIcon } from '../../internal/CloseButtonIcon/CloseButtonIcon.js';\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes.js';\nimport { locale } from '../../lib/locale/decorators.js';\nimport { reactGetTextContent } from '../../lib/reactGetTextContent.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport { emptyHandler } from '../../lib/utils.js';\nimport type { TokenLocale } from './locale/index.js';\nimport { TokenLocaleHelper } from './locale/index.js';\nimport { getStyles } from './Token.styles.js';\nimport { TokenView } from './TokenView.js';\n\nexport type TokenSize = SizeProp;\n\nexport interface TokenProps extends Pick<AriaAttributes, 'aria-describedby'>, CommonProps {\n /** Делает токен активным. */\n isActive?: boolean;\n /** Меняет визуальное отображение токена на состояние «ошибка». Может быть полезен при разработке собственной валидации, если вы не используете пакет [React UI Validations](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui-validations_displaying-getting-started--docs). */\n error?: boolean;\n /** Меняет визуальное отображение токена на состояние «предупреждение». Может быть полезен при разработке собственной валидации, если вы не используете пакет [React UI Validations](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui-validations_displaying-getting-started--docs). */\n warning?: boolean;\n /** Блокирует токен. */\n disabled?: boolean;\n /** Размер токена. */\n size?: TokenSize;\n /** Задаёт функцию, которая вызывается при клике на токен. */\n onClick?: React.MouseEventHandler<HTMLDivElement>;\n /** Задаёт функцию, которая вызывается при двойном клике на токен. */\n onDoubleClick?: React.MouseEventHandler<HTMLDivElement>;\n /** Задаёт функцию, которая вызывается, когда токен удаляется. */\n onRemove?: React.MouseEventHandler<HTMLElement>;\n /** Задаёт функцию, которая вызывается при наведении мышкой (событие `onmouseenter`). */\n onMouseEnter?: React.MouseEventHandler<HTMLDivElement>;\n /** Задаёт функцию, которая вызывается при уходе мышки с объекта (событие `onmouseleave`). */\n onMouseLeave?: React.MouseEventHandler<HTMLDivElement>;\n /** Задаёт функцию, которая вызывается, когда токен получает фокус. */\n onFocus?: React.FocusEventHandler<HTMLDivElement>;\n /** Задаёт функцию, которая вызывается, когда токен теряет фокус. */\n onBlur?: React.FocusEventHandler<HTMLDivElement>;\n}\n\nexport const TokenDataTids = {\n root: 'Token__root',\n removeIcon: 'Token__removeIcon',\n} as const;\n\n/** Токены — это значение заданного формата внутри поля ввода. Например, номера телефонов, почты, ИНН, СНИЛС, статусы, группы и другие.\n *\n * Используется как значение внутри `TokenInput`.\n */\n@withRenderEnvironment\n@rootNode\n@locale('Token', TokenLocaleHelper)\nexport class Token extends React.Component<TokenProps> {\n public static __KONTUR_REACT_UI__ = 'Token';\n public static displayName = 'Token';\n\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private readonly locale!: TokenLocale;\n\n public render(): React.JSX.Element {\n this.styles = getStyles(this.emotion);\n\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 const {\n size,\n children,\n isActive,\n error,\n warning,\n disabled,\n 'aria-describedby': ariaDescribedby,\n onClick = emptyHandler,\n onDoubleClick = emptyHandler,\n onMouseEnter = emptyHandler,\n onMouseLeave = emptyHandler,\n onFocus = emptyHandler,\n onBlur = emptyHandler,\n } = this.props;\n\n const theme = this.theme;\n\n const removeButtonAriaLabel = this.locale.removeButtonAriaLabel + ' ' + reactGetTextContent(children);\n\n const icon = (\n <CloseButtonIcon\n side={16}\n color=\"inherit\"\n colorHover=\"inherit\"\n aria-label={removeButtonAriaLabel}\n tabbable={false}\n />\n );\n\n const classNames = this.cx(\n this.styles.tokenIdle(theme),\n !isActive && !warning && !error && !disabled && this.styles.tokenHover(theme),\n isActive && this.styles.tokenActive(theme),\n warning && this.styles.tokenWarning(theme),\n error && this.styles.tokenError(theme),\n disabled && this.styles.tokenDisabled(theme),\n );\n\n const textholder = <span className={this.styles.text()}>{children}</span>;\n\n const closeButton = (\n <span onClick={this.onRemoveClick} data-tid={TokenDataTids.removeIcon}>\n {icon}\n </span>\n );\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props} {...getVisualStateDataAttributes({ disabled })}>\n <TokenView\n className={classNames}\n size={size}\n closeButton={closeButton}\n data-tid={TokenDataTids.root}\n aria-describedby={ariaDescribedby}\n onClick={onClick}\n onDoubleClick={onDoubleClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onFocus={onFocus}\n onBlur={onBlur}\n >\n {textholder}\n </TokenView>\n </CommonWrapper>\n );\n }\n\n private onRemoveClick = (event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n const { disabled, onRemove = emptyHandler } = this.props;\n\n if (disabled) {\n event.preventDefault();\n return;\n }\n\n onRemove(event);\n };\n}\n"]}
@@ -138,7 +138,7 @@ export declare const TokenInputDataTids: {
138
138
  readonly label: "TokenInput__label";
139
139
  };
140
140
  type DefaultProps<T> = Required<Pick<TokenInputProps<T>, 'selectedItems' | 'delimiters' | 'renderItem' | 'renderValue' | 'valueToString' | 'valueToItem' | 'itemToId' | 'onValueChange' | 'width' | 'onBlur' | 'onFocus' | 'onMouseEnter' | 'onMouseLeave' | 'menuWidth' | 'menuAlign'>>;
141
- /** Поле с токенами — это поле ввода со списком подсказок. Значения в поле отображаются в виде отдельных токенов — компонент [Token](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_input-data-tokeninput-token--docs).
141
+ /** Поле с токенами — это поле ввода со списком подсказок. Значения в поле отображаются в виде отдельных токенов.
142
142
  */
143
143
  export declare class TokenInput<T = string> extends React.PureComponent<TokenInputProps<T>, TokenInputState<T>> {
144
144
  static __KONTUR_REACT_UI__: string;
@@ -132,7 +132,7 @@ var defaultRenderToken = function (item, _a) {
132
132
  var isActive = _a.isActive, onClick = _a.onClick, onDoubleClick = _a.onDoubleClick, onRemove = _a.onRemove, disabled = _a.disabled, size = _a.size;
133
133
  return (React.createElement(Token, { key: item.toString(), isActive: isActive, onClick: onClick, onDoubleClick: onDoubleClick, onRemove: onRemove, disabled: disabled, size: size }, item.toString()));
134
134
  };
135
- /** Поле с токенами — это поле ввода со списком подсказок. Значения в поле отображаются в виде отдельных токенов — компонент [Token](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_input-data-tokeninput-token--docs).
135
+ /** Поле с токенами — это поле ввода со списком подсказок. Значения в поле отображаются в виде отдельных токенов.
136
136
  */
137
137
  var TokenInput = /** @class */ (function (_super) {
138
138
  __extends(TokenInput, _super);