@skbkontur/react-ui 1.6.9 → 1.6.11

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 (343) hide show
  1. package/README.md +135 -135
  2. package/components/Autocomplete/Autocomplete.adapter.js.flow +4 -4
  3. package/components/Autocomplete/Autocomplete.js.flow +37 -37
  4. package/components/Autocomplete/README.md +7 -7
  5. package/components/Autocomplete/index.js.flow +2 -2
  6. package/components/Button/Button.adapter.js.flow +4 -4
  7. package/components/Button/Button.js.flow +58 -58
  8. package/components/Button/Corners.js.flow +12 -12
  9. package/components/Button/README.md +85 -85
  10. package/components/Button/index.js.flow +2 -2
  11. package/components/Calendar/Animation.js.flow +7 -7
  12. package/components/Calendar/Calendar.js.flow +33 -33
  13. package/components/Calendar/CalendarDateShape.js.flow +26 -26
  14. package/components/Calendar/CalendarScrollEvents.js.flow +15 -15
  15. package/components/Calendar/CalendarUtils.js.flow +35 -35
  16. package/components/Calendar/DayCellView.js.flow +16 -16
  17. package/components/Calendar/DayCellViewModel.js.flow +9 -9
  18. package/components/Calendar/Month.js.flow +23 -23
  19. package/components/Calendar/MonthView.js.flow +24 -24
  20. package/components/Calendar/MonthViewModel.js.flow +16 -16
  21. package/components/Calendar/config.js.flow +11 -11
  22. package/components/Calendar/index.js.flow +2 -2
  23. package/components/Calendar/presets.js.flow +21 -21
  24. package/components/Calendar/stepper.js.flow +2 -2
  25. package/components/Calendar/utils.js.flow +2 -2
  26. package/components/Center/Center.js.flow +15 -15
  27. package/components/Center/README.md +5 -5
  28. package/components/Center/index.js.flow +2 -2
  29. package/components/Checkbox/Checkbox.adapter.js.flow +4 -4
  30. package/components/Checkbox/Checkbox.js.flow +27 -27
  31. package/components/Checkbox/README.md +61 -61
  32. package/components/Checkbox/index.js.flow +2 -2
  33. package/components/ComboBox/ComboBox.js.flow +58 -58
  34. package/components/ComboBox/README.md +423 -423
  35. package/components/ComboBox/__mocks__/getCities.js.map +1 -1
  36. package/components/ComboBox/__mocks__/kladr.json +20002 -20002
  37. package/components/ComboBox/index.js.flow +2 -2
  38. package/components/ComboBoxOld/ComboBoxOld.adapter.js.map +1 -1
  39. package/components/ComboBoxOld/ComboBoxOld.d.ts +120 -120
  40. package/components/ComboBoxOld/ComboBoxOld.js +45 -45
  41. package/components/ComboBoxOld/ComboBoxOld.js.map +1 -1
  42. package/components/ComboBoxOld/ComboBoxRenderer.js.map +1 -1
  43. package/components/ComboBoxOld/README.md +83 -83
  44. package/components/ComboBoxOld/index.d.ts +1 -1
  45. package/components/ComboBoxOld/index.js.map +1 -1
  46. package/components/CurrencyInput/CurrencyHelper.js.flow +44 -44
  47. package/components/CurrencyInput/CurrencyInput.js.flow +30 -30
  48. package/components/CurrencyInput/CurrencyInputHelper.js.flow +38 -38
  49. package/components/CurrencyInput/CurrencyInputKeyboardActions.js.flow +19 -19
  50. package/components/CurrencyInput/CursorHelper.js.flow +15 -15
  51. package/components/CurrencyInput/README.md +19 -19
  52. package/components/CurrencyInput/SelectionHelper.js.flow +16 -16
  53. package/components/CurrencyInput/index.js.flow +2 -2
  54. package/components/CurrencyLabel/CurrencyLabel.js.flow +10 -10
  55. package/components/CurrencyLabel/README.md +23 -23
  56. package/components/CurrencyLabel/index.js.flow +2 -2
  57. package/components/CustomComboBox/ComboBoxMenu.js.flow +22 -22
  58. package/components/CustomComboBox/ComboBoxView.js.flow +52 -52
  59. package/components/CustomComboBox/CustomComboBox.js.flow +130 -130
  60. package/components/CustomComboBox/index.js.flow +2 -2
  61. package/components/DateInput/DateInput.js.flow +60 -60
  62. package/components/DateInput/README.md +104 -104
  63. package/components/DateInput/helpers/DateInputKeyboardActions.js.flow +17 -17
  64. package/components/DateInput/helpers/SelectionHelpers.js.flow +3 -3
  65. package/components/DateInput/helpers/inputNumber.js.flow +4 -4
  66. package/components/DateInput/index.js.flow +2 -2
  67. package/components/DatePicker/DatePicker.js.flow +45 -45
  68. package/components/DatePicker/DatePickerHelpers.js.flow +7 -7
  69. package/components/DatePicker/DateShape.js.flow +11 -11
  70. package/components/DatePicker/Picker.js.flow +23 -23
  71. package/components/DatePicker/README.md +307 -307
  72. package/components/DatePicker/index.js.flow +2 -2
  73. package/components/DatePickerOld/Calendar.js.map +1 -1
  74. package/components/DatePickerOld/CalendarCell.js.map +1 -1
  75. package/components/DatePickerOld/DateInput.js +2 -2
  76. package/components/DatePickerOld/DateInput.js.map +1 -1
  77. package/components/DatePickerOld/DatePicker.adapter.js.map +1 -1
  78. package/components/DatePickerOld/DatePickerOld.d.ts +35 -35
  79. package/components/DatePickerOld/DatePickerOld.js +16 -16
  80. package/components/DatePickerOld/DatePickerOld.js.map +1 -1
  81. package/components/DatePickerOld/Picker.js.map +1 -1
  82. package/components/DatePickerOld/README.md +7 -7
  83. package/components/DatePickerOld/dateParser.js.map +1 -1
  84. package/components/DatePickerOld/index.d.ts +1 -1
  85. package/components/DatePickerOld/index.js.map +1 -1
  86. package/components/DateSelect/DateSelect.js.flow +30 -30
  87. package/components/DateSelect/index.js.flow +2 -2
  88. package/components/Dropdown/Dropdown.js.flow +41 -41
  89. package/components/Dropdown/README.md +14 -14
  90. package/components/Dropdown/index.js.flow +2 -2
  91. package/components/DropdownContainer/DropdownContainer.js.flow +29 -29
  92. package/components/DropdownMenu/DropdownMenu.js.flow +20 -20
  93. package/components/DropdownMenu/README.md +66 -66
  94. package/components/DropdownMenu/index.js.flow +2 -2
  95. package/components/Fias/Fias.js.flow +37 -37
  96. package/components/Fias/FiasModal.js.flow +12 -12
  97. package/components/Fias/FiasSearch/FiasSearch.js.flow +32 -32
  98. package/components/Fias/FiasSearch/README.md +78 -78
  99. package/components/Fias/Form/FiasComboBox.js.flow +25 -25
  100. package/components/Fias/Form/FiasForm.js.flow +21 -21
  101. package/components/Fias/README.md +436 -436
  102. package/components/Fias/api/APIResultFactory.js.flow +7 -7
  103. package/components/Fias/api/FiasAPI.js.flow +13 -13
  104. package/components/Fias/api/MockAPI.js.flow +13 -13
  105. package/components/Fias/api/data.json +285 -285
  106. package/components/Fias/constants/abbreviations.js.flow +7 -7
  107. package/components/Fias/index.js.flow +5 -5
  108. package/components/Fias/locale/types.js.flow +71 -71
  109. package/components/Fias/logger/Logger.js.flow +13 -13
  110. package/components/Fias/models/Address.js.flow +57 -57
  111. package/components/Fias/models/AddressElement.js.flow +15 -15
  112. package/components/Fias/models/FiasData.js.flow +10 -10
  113. package/components/Fias/types.js.flow +133 -133
  114. package/components/FxInput/FxInput.adapter.js.flow +4 -4
  115. package/components/FxInput/FxInput.js.flow +24 -24
  116. package/components/FxInput/README.md +13 -13
  117. package/components/FxInput/index.js.flow +2 -2
  118. package/components/Gapped/Gapped.js.flow +13 -13
  119. package/components/Gapped/README.md +6 -6
  120. package/components/Gapped/index.js.flow +2 -2
  121. package/components/Group/Group.js.flow +14 -14
  122. package/components/Group/README.md +27 -27
  123. package/components/Group/index.js.flow +2 -2
  124. package/components/HideBodyVerticalScroll/HideBodyVerticalScroll.js.flow +7 -7
  125. package/components/HideBodyVerticalScroll/index.js.flow +2 -2
  126. package/components/Hint/Hint.js.flow +37 -37
  127. package/components/Hint/README.md +3 -3
  128. package/components/Hint/index.js.flow +2 -2
  129. package/components/Icon/20px/Icon.js.flow +27 -27
  130. package/components/Icon/20px/index.js.flow +2 -2
  131. package/components/Icon/README.md +64 -64
  132. package/components/IgnoreLayerClick/IgnoreLayerClick.js.flow +12 -12
  133. package/components/IgnoreLayerClick/index.js.flow +2 -2
  134. package/components/Input/Input.adapter.js.flow +9 -9
  135. package/components/Input/Input.js.flow +55 -55
  136. package/components/Input/README.md +13 -13
  137. package/components/Input/index.js.flow +2 -2
  138. package/components/Kebab/Kebab.js.flow +23 -23
  139. package/components/Kebab/README.md +44 -44
  140. package/components/Kebab/index.js.flow +2 -2
  141. package/components/Kladr/AddressModal.d.ts +39 -39
  142. package/components/Kladr/AddressModal.js.flow +20 -20
  143. package/components/Kladr/AddressModal.js.map +1 -1
  144. package/components/Kladr/Kladr.d.ts +39 -39
  145. package/components/Kladr/Kladr.js +2 -2
  146. package/components/Kladr/Kladr.js.flow +27 -27
  147. package/components/Kladr/Kladr.js.map +1 -1
  148. package/components/Kladr/KladrAPI.d.ts +8 -8
  149. package/components/Kladr/KladrAPI.js +7 -2
  150. package/components/Kladr/KladrAPI.js.flow +8 -8
  151. package/components/Kladr/KladrAPI.js.map +1 -1
  152. package/components/Kladr/README.md +3 -3
  153. package/components/Kladr/Types.d.ts +40 -40
  154. package/components/Kladr/Types.js.flow +39 -39
  155. package/components/Kladr/index.d.ts +1 -1
  156. package/components/Kladr/index.js.flow +2 -2
  157. package/components/Kladr/index.js.map +1 -1
  158. package/components/Kladr/util.js.map +1 -1
  159. package/components/Kladr/utils.d.ts +4 -4
  160. package/components/Kladr/utils.js.flow +4 -4
  161. package/components/Link/Link.adapter.js.flow +4 -4
  162. package/components/Link/Link.js.flow +25 -25
  163. package/components/Link/README.md +11 -11
  164. package/components/Link/index.js.flow +2 -2
  165. package/components/Loader/Loader.js.flow +20 -20
  166. package/components/Loader/README.md +25 -25
  167. package/components/Loader/index.js.flow +2 -2
  168. package/components/Logotype/Logotype.js.flow +21 -21
  169. package/components/Logotype/ProductWidget.js.flow +7 -7
  170. package/components/Logotype/README.md +32 -32
  171. package/components/Logotype/index.js.flow +2 -2
  172. package/components/Menu/Menu.js.flow +24 -24
  173. package/components/Menu/isActiveElement.js.flow +7 -7
  174. package/components/MenuHeader/MenuHeader.js.flow +11 -11
  175. package/components/MenuHeader/index.js.flow +2 -2
  176. package/components/MenuItem/MenuItem.js.flow +33 -33
  177. package/components/MenuItem/README.md +5 -5
  178. package/components/MenuItem/index.js.flow +2 -2
  179. package/components/MenuSeparator/MenuSeparator.js.flow +7 -7
  180. package/components/MenuSeparator/index.js.flow +2 -2
  181. package/components/Modal/Modal.adapter.js.flow +4 -4
  182. package/components/Modal/Modal.js.flow +30 -30
  183. package/components/Modal/Modal.js.map +1 -1
  184. package/components/Modal/ModalBody.js.flow +7 -7
  185. package/components/Modal/ModalClose.js.flow +6 -6
  186. package/components/Modal/ModalContext.js.flow +15 -15
  187. package/components/Modal/ModalFooter.js.flow +11 -11
  188. package/components/Modal/ModalHeader.js.flow +11 -11
  189. package/components/Modal/README.md +38 -38
  190. package/components/Modal/index.js.flow +2 -2
  191. package/components/ModalStack/ModalStack.d.ts +4 -2
  192. package/components/ModalStack/ModalStack.js +13 -2
  193. package/components/ModalStack/ModalStack.js.flow +10 -10
  194. package/components/ModalStack/ModalStack.js.map +1 -1
  195. package/components/ModalStack/index.js.flow +2 -2
  196. package/components/Paging/NavigationHelper.js.flow +13 -13
  197. package/components/Paging/Paging.js.flow +38 -38
  198. package/components/Paging/PagingHelper.js.flow +10 -10
  199. package/components/Paging/README.md +43 -43
  200. package/components/Paging/index.js.flow +2 -2
  201. package/components/PasswordInput/PasswordInput.js.flow +26 -26
  202. package/components/PasswordInput/PasswordInputFallback.js.flow +13 -13
  203. package/components/PasswordInput/getCharHelper.js.flow +4 -4
  204. package/components/PasswordInput/index.js.flow +2 -2
  205. package/components/PhoneInput/PhoneInput.js +2 -2
  206. package/components/PhoneInput/PhoneInput.js.map +1 -1
  207. package/components/PhoneInput/index.js.map +1 -1
  208. package/components/Popup/Popup.js.flow +60 -60
  209. package/components/Popup/PopupHelper.js.flow +29 -29
  210. package/components/Popup/PopupPin.js.flow +15 -15
  211. package/components/Popup/index.js.flow +2 -2
  212. package/components/Radio/README.md +14 -14
  213. package/components/Radio/Radio.js.flow +33 -33
  214. package/components/Radio/index.js.flow +2 -2
  215. package/components/RadioGroup/Prevent.js.flow +9 -9
  216. package/components/RadioGroup/README.md +44 -44
  217. package/components/RadioGroup/RadioGroup.adapter.js.flow +4 -4
  218. package/components/RadioGroup/RadioGroup.js +1 -1
  219. package/components/RadioGroup/RadioGroup.js.flow +42 -42
  220. package/components/RadioGroup/RadioGroup.js.map +1 -1
  221. package/components/RadioGroup/index.js.flow +2 -2
  222. package/components/RenderContainer/RenderContainer.js.flow +11 -11
  223. package/components/RenderContainer/index.js.flow +2 -2
  224. package/components/RenderLayer/RenderLayer.js.flow +12 -12
  225. package/components/RenderLayer/index.js.flow +2 -2
  226. package/components/ScrollContainer/README.md +60 -60
  227. package/components/ScrollContainer/ScrollContainer.js.flow +24 -24
  228. package/components/ScrollContainer/index.js.flow +2 -2
  229. package/components/Select/Item.js.flow +7 -7
  230. package/components/Select/README.md +23 -23
  231. package/components/Select/Select.adapter.js.flow +4 -4
  232. package/components/Select/Select.js.flow +81 -81
  233. package/components/Select/index.js.flow +2 -2
  234. package/components/SidePage/README.md +46 -46
  235. package/components/SidePage/SidePage.js.flow +34 -34
  236. package/components/SidePage/SidePage.js.map +1 -1
  237. package/components/SidePage/SidePageBody.js.flow +13 -13
  238. package/components/SidePage/SidePageContainer.js.flow +9 -9
  239. package/components/SidePage/SidePageContext.js.flow +15 -15
  240. package/components/SidePage/SidePageFooter.js.flow +16 -16
  241. package/components/SidePage/SidePageHeader.js.flow +11 -11
  242. package/components/SidePage/index.js.flow +2 -2
  243. package/components/Spinner/README.md +33 -33
  244. package/components/Spinner/Spinner.js.flow +20 -20
  245. package/components/Spinner/SpinnerFallback.js.flow +15 -15
  246. package/components/Spinner/index.js.flow +2 -2
  247. package/components/Spinner/settings.js.flow +48 -48
  248. package/components/Sticky/README.md +27 -27
  249. package/components/Sticky/Sticky.js.flow +22 -22
  250. package/components/Sticky/index.js.flow +2 -2
  251. package/components/Switcher/README.md +10 -10
  252. package/components/Switcher/Switcher.js.flow +26 -26
  253. package/components/Switcher/index.js.flow +2 -2
  254. package/components/Tabs/Indicator.js.flow +21 -21
  255. package/components/Tabs/README.md +28 -28
  256. package/components/Tabs/Tab.js.flow +48 -48
  257. package/components/Tabs/Tabs.js.flow +28 -28
  258. package/components/Tabs/index.js.flow +2 -2
  259. package/components/Textarea/README.md +9 -9
  260. package/components/Textarea/Textarea.adapter.js.flow +11 -11
  261. package/components/Textarea/Textarea.js.flow +33 -33
  262. package/components/Textarea/TextareaHelpers.js.flow +6 -6
  263. package/components/Textarea/index.js.flow +2 -2
  264. package/components/ThemeProvider/Playground/README.md +7 -7
  265. package/components/ThemeProvider/README.md +172 -172
  266. package/components/ThemeShowcase/README.md +13 -13
  267. package/components/Toast/README.md +39 -39
  268. package/components/Toast/Toast.js.flow +29 -29
  269. package/components/Toast/ToastStatic.js.flow +10 -10
  270. package/components/Toast/ToastView.js.flow +16 -16
  271. package/components/Toast/index.js.flow +2 -2
  272. package/components/Toggle/README.md +9 -9
  273. package/components/Toggle/Toggle.js.flow +28 -28
  274. package/components/Toggle/index.js.flow +2 -2
  275. package/components/Token/README.md +109 -109
  276. package/components/Token/Token.js.flow +25 -25
  277. package/components/Token/TokenRemoveIcon.js.flow +11 -11
  278. package/components/Token/index.js.flow +2 -2
  279. package/components/TokenInput/README.md +82 -82
  280. package/components/TokenInput/TextWidthHelper.js.flow +10 -10
  281. package/components/TokenInput/TokenInput.js.flow +39 -39
  282. package/components/TokenInput/TokenInputMenu.js.flow +17 -17
  283. package/components/TokenInput/TokenInputReducer.js.flow +63 -63
  284. package/components/TokenInput/index.js.flow +2 -2
  285. package/components/Tooltip/README.md +207 -207
  286. package/components/Tooltip/Tooltip.js.flow +33 -33
  287. package/components/Tooltip/index.js.flow +2 -2
  288. package/components/TooltipMenu/README.md +106 -106
  289. package/components/TooltipMenu/TooltipMenu.js.flow +19 -19
  290. package/components/TooltipMenu/index.js.flow +2 -2
  291. package/components/TopBar/ButtonItem.js.flow +22 -22
  292. package/components/TopBar/Divider.js.flow +5 -5
  293. package/components/TopBar/Item.js.flow +19 -19
  294. package/components/TopBar/Organizations.js.flow +16 -16
  295. package/components/TopBar/README.md +112 -112
  296. package/components/TopBar/TopBar.js.flow +53 -53
  297. package/components/TopBar/TopBarDropdown.js.flow +23 -23
  298. package/components/TopBar/TopBarEnd.js.flow +4 -4
  299. package/components/TopBar/TopBarLogout.js.flow +6 -6
  300. package/components/TopBar/TopBarStart.js.flow +4 -4
  301. package/components/TopBar/User.js.flow +9 -9
  302. package/components/TopBar/index.js.flow +2 -2
  303. package/components/ZIndex/ZIndex.js.flow +11 -11
  304. package/components/ZIndex/index.js.flow +2 -2
  305. package/components/__mocks__/react-addons-css-transition-group.js.map +1 -1
  306. package/components/all.js.flow +36 -36
  307. package/components/ensureOldIEClassName.js.flow +6 -6
  308. package/components/eventHandlers.js.flow +9 -9
  309. package/components/index.js.flow +2 -2
  310. package/components/internal/InputLikeText/InputLikeText.js.flow +24 -24
  311. package/components/internal/InputLikeText/index.js.flow +2 -2
  312. package/components/internal/InternalMenu/InternalMenu.js.flow +23 -23
  313. package/components/internal/InternalMenu/isActiveElement.js.flow +7 -7
  314. package/components/internal/MaskedInput/MaskedInput.js.flow +24 -24
  315. package/components/internal/MaskedInput/index.js.flow +2 -2
  316. package/components/internal/MockDate.js.flow +9 -9
  317. package/components/internal/PopupMenu/PopupMenu.js.flow +40 -40
  318. package/components/internal/PopupMenu/PopupMenuPositions.js.flow +4 -4
  319. package/components/internal/PopupMenu/index.js.flow +2 -2
  320. package/components/internal/PopupMenu/validatePositions.js.flow +4 -4
  321. package/components/internal/ResizeDetector/ResizeDetector.js.flow +8 -8
  322. package/components/internal/ResizeDetector/index.js.flow +2 -2
  323. package/components/internal/createPropsGetter.js.flow +8 -8
  324. package/components/internal/cross.js.flow +4 -4
  325. package/components/internal/currentEnvironment.js.flow +4 -4
  326. package/components/internal/extractKeyboardAction.js.flow +12 -12
  327. package/components/polyfillPlaceholder.js.flow +4 -4
  328. package/package.json +1 -4
  329. package/typings/console.d.ts +3 -3
  330. package/typings/event-types.d.ts +4 -4
  331. package/typings/fbjs.d.ts +4 -4
  332. package/typings/global.d.ts +6 -6
  333. package/typings/images.d.ts +1 -1
  334. package/typings/less.d.ts +4 -4
  335. package/typings/mocha/index.d.ts +2 -2
  336. package/typings/mockdate.d.ts +1 -1
  337. package/typings/normalize-wheel.d.ts +1 -1
  338. package/typings/raf.d.ts +1 -1
  339. package/typings/react-addons-css-transition-group.d.ts +1 -1
  340. package/typings/react-testing/index.d.ts +4 -4
  341. package/typings/react-testing/window.d.ts +5 -5
  342. package/typings/react.d.ts +8 -8
  343. package/typings/utility-types.d.ts +17 -17
@@ -1 +1 @@
1
- {"version":3,"sources":["ComboBoxRenderer.js"],"names":["INPUT_PASS_PROPS","borderless","error","warning","width","disabled","onMouseEnter","onMouseLeave","onMouseOver","ComboBoxRenderer","element","props","context","el","_focusable","focus","ReactDOM","findDOMNode","menu","_menu","event","value","newInputValue","inputValueChanged","state","searchText","onInputChange","nextState","setState","opened","_debouncedFetchList","_ignoreRecover","onInputKeyDown","defaultPrevented","key","preventDefault","safelyCall","onOpen","up","down","handled","enter","_tryRecover","_handleBlur","_close","_setCurrentSearchText","info","_fetchList","_handleFocus","_handleValueClick","_ignoreBlur","isEditing","onFocus","onAlkoFocus","onBlur","onAlkoBlur","e","endEdit","result","setTimeout","onClose","pattern","expectingId","_fetchingId","source","then","_mounted","reset","setSelectionRange","length","selected","debounceInterval","render","_handleClickOutside","styles","root","renderInput","renderValue","renderMenu","openButton","arrow","_handleArrowClick","_handleArrowMouseDown","inputProps","input","_refFocusable","_handleInputChange","_handleInputKey","placeholder","isNotRecovered","_error","isEmptyResults","values","menuAlign","disablePortal","_refMenu","renderEmptyResults","renderResults","renderTotalCount","mapResult","i","React","isValidElement","cloneElement","onClick","_handleItemClick","renderItem","renderNotFound","isFunction","total","totalCount","componentDidMount","autoFocus","_focus","componentWillUnmount","options","_change","recover","recovered","_setError","_lastError","onError","onChange","target","valueToString","Component","children","fn","args","map","infos"],"mappings":";;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,mE;;;;AAIA,IAAMA,gBAAgB,GAAG;AACvBC,EAAAA,UAAU,EAAE,IADW;AAEvBC,EAAAA,KAAK,EAAE,IAFgB;AAGvBC,EAAAA,OAAO,EAAE,IAHc;AAIvBC,EAAAA,KAAK,EAAE,IAJgB;AAKvBC,EAAAA,QAAQ,EAAE,IALa;AAMvBC,EAAAA,YAAY,EAAE,IANS;AAOvBC,EAAAA,YAAY,EAAE,IAPS;AAQvBC,EAAAA,WAAW,EAAE,IARU,EAAzB,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiFMC,gB;AACJ;;;;;;;AAOA,mBAAcC,OAAd,EAAwE;AACtE,WAAOA,OAAP;AACD,G;;;;;;;;;;;;;;;;;;;;;;AAsBD,4BAAYC,KAAZ,EAA0BC,OAA1B,EAA0C;AACxC,wCAAMD,KAAN,EAAaC,OAAb,UADwC,2DAX/B,KAW+B,+DAV7B,IAU6B,0DAT3B,IAS2B,uEARI,IAQJ,+DAPlB,IAOkB,2DANtB,IAMsB,mEALzB,IAKyB,gEAJ5B,IAI4B,gEAH5B,CAG4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoK1B,cAACC,EAAD,EAAsC;AACpD,YAAKC,UAAL,GAAkBD,EAAE,KAAKA,EAAE,CAACE,KAAH,GAAWF,EAAX,GAAiBG,qBAASC,WAAT,CAAqBJ,EAArB,CAAtB,CAApB;AACD,KAtKyC;;AAwK/B,cAACK,IAAD,EAAiB;AAC1B,YAAKC,KAAL,GAAaD,IAAb;AACD,KA1KyC;;AA4KrB,cAACE,KAAD,EAA+CC,KAA/C,EAAiE;AACpF,UAAIC,aAAa,GAAGD,KAApB;;AAEA,UAAME,iBAAiB,GAAG,MAAKC,KAAL,CAAWC,UAAX,KAA0BH,aAApD;AACA,UAAIC,iBAAiB,IAAI,MAAKZ,KAAL,CAAWe,aAApC,EAAmD;AACjD,YAAIC,SAAS,GAAG,MAAKhB,KAAL,CAAWe,aAAX,CAAyBJ,aAAzB,CAAhB;;AAEA,YAAIK,SAAS,IAAI,IAAb,IAAqB,OAAOA,SAAP,KAAqB,QAA9C,EAAwD;AACtDL,UAAAA,aAAa,GAAG,KAAKK,SAArB;AACD;AACF;;AAED,YAAKC,QAAL,CAAc,oBAAO;AACnBH,UAAAA,UAAU,EAAEH,aADO;AAEnBO,UAAAA,MAAM,EAAE,IAFW,EAAP,EAAd;;AAIA,YAAKC,mBAAL,CAAyBR,aAAzB;AACA,YAAKS,cAAL,GAAsB,KAAtB;AACD,KA9LyC;;AAgMxB,cAACX,KAAD,EAAqC;AACrD,UAAI,OAAO,MAAKT,KAAL,CAAWqB,cAAlB,KAAqC,UAAzC,EAAqD;AACnD,cAAKrB,KAAL,CAAWqB,cAAX,CAA0BZ,KAA1B;AACA,YAAIA,KAAK,CAACa,gBAAV,EAA4B;AAC1B;AACD;AACF;;AAED,cAAQb,KAAK,CAACc,GAAd;AACE,aAAK,SAAL;AACEd,UAAAA,KAAK,CAACe,cAAN;;AAEA,cAAI,CAAC,MAAKX,KAAL,CAAWK,MAAhB,EAAwB;AACtB,kBAAKD,QAAL,CAAc,EAAEC,MAAM,EAAE,IAAV,EAAd;AACAO,YAAAA,UAAU,CAAC,MAAKzB,KAAL,CAAW0B,MAAZ,CAAV;AACD;;AAED,gBAAKlB,KAAL,IAAc,MAAKA,KAAL,CAAWmB,EAAX,EAAd;AACA;AACF,aAAK,WAAL;AACElB,UAAAA,KAAK,CAACe,cAAN;;AAEA,cAAI,CAAC,MAAKX,KAAL,CAAWK,MAAhB,EAAwB;AACtB,kBAAKD,QAAL,CAAc,EAAEC,MAAM,EAAE,IAAV,EAAd;AACAO,YAAAA,UAAU,CAAC,MAAKzB,KAAL,CAAW0B,MAAZ,CAAV;AACD;;AAED,gBAAKlB,KAAL,IAAc,MAAKA,KAAL,CAAWoB,IAAX,EAAd;AACA;AACF,aAAK,OAAL;AACEnB,UAAAA,KAAK,CAACe,cAAN;AACA,cAAMK,OAAO,GAAG,MAAKrB,KAAL,IAAc,MAAKA,KAAL,CAAWsB,KAAX,CAAiBrB,KAAjB,CAA9B;AACA,cAAI,CAACoB,OAAL,EAAc;AACZ,kBAAKE,WAAL;;AAEA;AACA,kBAAKC,WAAL;AACD;AACD;AACF,aAAK,QAAL;AACEvB,UAAAA,KAAK,CAACe,cAAN;AACA,cAAI,CAAC,MAAKX,KAAL,CAAWK,MAAhB,EAAwB;AACtB;AACD;AACD,gBAAKe,MAAL;AACA,gBArCJ;;AAuCD,KA/OyC;;AAiPtB,gBAAM;AACxB,YAAKC,qBAAL,CAA2B,MAAKlC,KAAL,CAAWU,KAAtC,EAA6C,MAAKV,KAAL,CAAWmC,IAAxD;AACA,YAAKC,UAAL,CAAgB,EAAhB;AACA,YAAKC,YAAL;AACD,KArPyC;;;;;;;;;;AA+PlB,cAAC5B,KAAD,EAAkC;AACxDA,MAAAA,KAAK,CAACe,cAAN;AACD,KAjQyC;;AAmQtB,cAACf,KAAD,EAAkC;AACpD,UAAI,CAAC,MAAKI,KAAL,CAAWK,MAAZ,IAAsB,CAAC,MAAKlB,KAAL,CAAWN,QAAtC,EAAgD;AAC9C,cAAK4C,iBAAL;AACD;AACF,KAvQyC;;AAyQ3B,gBAAM;AACnB;AACA,YAAKC,WAAL,GAAmB,KAAnB;;AAEA,YAAKtB,QAAL,CAAc,EAAEuB,SAAS,EAAE,IAAb,EAAmBtB,MAAM,EAAE,IAA3B,EAAd;AACAO,MAAAA,UAAU,CAAC,MAAKzB,KAAL,CAAW0B,MAAZ,CAAV;;AAEA,UAAI,CAACD,UAAU,CAAC,MAAKzB,KAAL,CAAWyC,OAAZ,CAAf,EAAqC;AACnChB,QAAAA,UAAU,CAAC,MAAKzB,KAAL,CAAW0C,WAAZ,CAAV;AACD;AACF,KAnRyC;;AAqR5B,gBAAM;AAClB,UAAI,MAAKH,WAAT,EAAsB;AACpB;AACD;;AAED,YAAKN,MAAL,CAAY,IAAZ;AACA,YAAKF,WAAL;;AAEA,UAAI,CAACN,UAAU,CAAC,MAAKzB,KAAL,CAAW2C,MAAZ,CAAf,EAAoC;AAClClB,QAAAA,UAAU,CAAC,MAAKzB,KAAL,CAAW4C,UAAZ,CAAV;AACD;;AAED;AACA,YAAKL,WAAL,GAAmB,IAAnB;AACD,KAnSyC;;AAqSpB,cAACM,CAAD,EAAc;AAClC,4CAAgBA,CAAhB;AACA,YAAKb,WAAL;AACD,KAxSyC;;AA0SjC,cAACc,OAAD,EAAuB;AAC9B,YAAK7B,QAAL,CAAc,EAAEC,MAAM,EAAE,KAAV,EAAiB6B,MAAM,EAAE,IAAzB,EAAd;AACAC,MAAAA,UAAU,CAAC,oBAAM,MAAK/B,QAAL,CAAc,EAAEuB,SAAS,EAAE,CAACM,OAAd,EAAd,CAAN,EAAD,EAA+C,CAA/C,CAAV;AACArB,MAAAA,UAAU,CAAC,MAAKzB,KAAL,CAAWiD,OAAZ,CAAV;AACD,KA9SyC;;AAgT7B,cAACC,OAAD,EAAqB;AAChC,UAAMC,WAAW,GAAG,EAAE,MAAKC,WAA3B;AACA,YAAKpD,KAAL,CAAWqD,MAAX,CAAkBH,OAAlB,EAA2BI,IAA3B,CAAgC,UAAAP,MAAM,EAAI;AACxC,YAAI,CAAC,MAAKQ,QAAV,EAAoB;AAClB;AACD;;AAED,YAAIJ,WAAW,KAAK,MAAKC,WAArB,IAAoC,MAAKvC,KAAL,CAAWK,MAAnD,EAA2D;AACzD,gBAAKV,KAAL,IAAc,MAAKA,KAAL,CAAWgD,KAAX,EAAd;AACA,gBAAKvC,QAAL,CAAc,oBAAO,EAAE8B,MAAM,EAANA,MAAF,EAAP,EAAd;AACD;AACF,OATD;AAUD,KA5TyC;;AA8TjC,gBAAM;AACb,UAAI,MAAK5C,UAAL,IAAmB,MAAKA,UAAL,CAAgBsD,iBAAvC,EAA0D;AACxD;AACA,cAAKtD,UAAL,CAAgBsD,iBAAhB,CAAkC,CAAlC,EAAqC,MAAK5C,KAAL,CAAWC,UAAX,CAAsB4C,MAA3D;AACD,OAHD,MAGO,IAAI,MAAKvD,UAAT,EAAqB;AAC1B,cAAKA,UAAL,CAAgBC,KAAhB;AACD;AACF,KArUyC,EAGxC,MAAKS,KAAL,GAAa,EACXK,MAAM,EAAE,KADG,EAEXJ,UAAU,EAAE,EAFD,EAGXiC,MAAM,EAAE,IAHG,EAIXP,SAAS,EAAE,KAJA,EAKXmB,QAAQ,EAAE,CAAC,CALA,EAAb,CAHwC,IAWhCC,gBAXgC,GAWX,MAAK5D,KAXM,CAWhC4D,gBAXgC,CAYxC,MAAKzC,mBAAL,GACEyC,gBAAgB,IAAIA,gBAAgB,GAAG,CAAvC,GAA2C,wBAAS,MAAKxB,UAAd,EAA0BwB,gBAA1B,CAA3C,GAAyF,MAAKxB,UADhG,CAZwC,aAczC,C,+CAEDyB,M,GAAA,kBAAS,CACP,OACE,oBAAC,uBAAD,IACE,cAAc,EAAE,KAAK7B,WADvB,EAEE,cAAc,EAAE,KAAK8B,mBAFvB,EAGE,MAAM,EAAE,KAAKjD,KAAL,CAAWK,MAHrB,IAKE,+BAAO,SAAS,EAAE6C,mCAAOC,IAAzB,EAA+B,KAAK,EAAE,EAAEvE,KAAK,EAAE,KAAKO,KAAL,CAAWP,KAApB,EAAtC,IACG,KAAKoB,KAAL,CAAW2B,SAAX,GAAuB,KAAKyB,WAAL,EAAvB,GAA4C,KAAKC,WAAL,EAD/C,EAEG,KAAKrD,KAAL,CAAWK,MAAX,IAAqB,KAAKiD,UAAL,EAFxB,EAGG,KAAKnE,KAAL,CAAWoE,UAAX,IACC,6BAAK,SAAS,EAAEL,mCAAOM,KAAvB,EAA8B,OAAO,EAAE,KAAKC,iBAA5C,EAA+D,WAAW,EAAE,KAAKC,qBAAjF,GAJJ,CALF,CADF,CAeD,C,QAEDN,W,GAAA,uBAAc,CACZ,IAAMO,UAAU,GAAG,6BAAY,KAAKxE,KAAjB,EAAwBX,gBAAxB,CAAnB,CACA,OACE,6BAAK,SAAS,EAAE0E,mCAAOU,KAAvB,IACE,oBAAC,iBAAD,aACE,GAAG,EAAE,KAAKC,aADZ,IAEMF,UAFN,IAGE,KAAK,EAAE,KAAK3D,KAAL,CAAWC,UAHpB,EAIE,SAAS,EAAE,KAAKd,KAAL,CAAWoE,UAAX,IAAyB,iCAJtC,EAKE,QAAQ,EAAE,KAAKO,kBALjB,EAME,SAAS,EAAE,KAAKC,eANlB,IADF,CADF,CAYD,C,QAEDV,W,GAAA,uBAAc,CACZ,IAAMM,UAAU,GAAG,6BAAY,KAAKxE,KAAjB,EAAwBX,gBAAxB,CAAnB,CAEA,IAAMqB,KAAK,GAAG,KAAKV,KAAL,CAAWU,KAAX,GACZ,KAAKV,KAAL,CAAWkE,WAAX,CAAuB,KAAKlE,KAAL,CAAWU,KAAlC,EAAyC,KAAKV,KAAL,CAAWmC,IAApD,CADY,GAGZ,8BAAM,SAAS,EAAE4B,mCAAOc,WAAxB,IAAsC,KAAK7E,KAAL,CAAW6E,WAAjD,CAHF,CAMA,IAAMC,cAAc,GAAG,CAAC,CAAC,KAAKC,MAA9B,CAEA,OACE,oBAAC,yBAAD,aACE,GAAG,EAAE,KAAKL,aADZ,IAEMF,UAFN,IAGE,OAAO,EAAE,KAAKlC,iBAHhB,EAIE,OAAO,EAAE,KAAKA,iBAJhB,EAKE,KAAK,EAAEwC,cAAc,IAAI,KAAK9E,KAAL,CAAWT,KALtC,KAOGuF,cAAc,GAAG,KAAKjE,KAAL,CAAWC,UAAd,GAA2BJ,KAP5C,CADF,CAWD,C,QAEDyD,U,GAAA,sBAAa,uBACHpB,MADG,GACQ,KAAKlC,KADb,CACHkC,MADG,CAEX,IAAI,CAACA,MAAL,EAAa,CACX,OAAO,IAAP,CACD,CAED,IAAMiC,cAAc,GAAGjC,MAAM,CAACkC,MAAP,CAAcvB,MAAd,KAAyB,CAAhD,CAEA,OACE,oBAAC,6BAAD,IACE,SAAS,EAAE,6BAAMrD,qBAASC,WAAT,CAAqB,MAArB,CAAN,EADb,EAEE,KAAK,EAAE,KAAKN,KAAL,CAAWkF,SAFpB,EAGE,aAAa,EAAE,KAAKlF,KAAL,CAAWmF,aAH5B,EAIE,OAAO,EAAE,CAJX,IAME,oBAAC,gBAAD,IAAM,GAAG,EAAE,KAAKC,QAAhB,EAA0B,SAAS,EAAE,GAArC,IACGJ,cAAc,GAAG,KAAKK,kBAAL,EAAH,GAA+B,KAAKC,aAAL,CAAmBvC,MAAnB,CADhD,EAEG,KAAKwC,gBAAL,CAAsBxC,MAAtB,CAFH,CANF,CADF,CAaD,C,QAEDuC,a,GAAA,uBAAcvC,MAAd,EAA4E,mBAC1E,OAAOyC,SAAS,CAACzC,MAAD,EAAS,UAACrC,KAAD,EAAQyB,IAAR,EAAcsD,CAAd,EAAoB,CAC3C,IAAI,OAAO/E,KAAP,KAAiB,UAAjB,IAA+BgF,KAAK,CAACC,cAAN,CAAqBjF,KAArB,CAAnC,EAAgE,CAC9D,IAAMX,OAAO,GAAG,OAAOW,KAAP,KAAiB,UAAjB,GAA8BA,KAAK,EAAnC,GAAwCA,KAAxD,CACA,OAAOgF,KAAK,CAACE,YAAN,CAAmB7F,OAAnB,EAA4B,EACjCwB,GAAG,EAAEkE,CAD4B,EAEjCI,OAAO,EAAE,iBAAApF,KAAK,UAAI,MAAI,CAACqF,gBAAL,CAAsBrF,KAAtB,EAA6BV,OAAO,CAACC,KAArC,CAAJ,EAFmB,EAA5B,CAAP,CAID,CACD,OACE,oBAAC,oBAAD,IACE,GAAG,EAAEyF,CADP,EAEE,OAAO,EAAE,iBAAChF,KAAD,EAA8B,CACrC,MAAI,CAACqF,gBAAL,CAAsBrF,KAAtB,EAA6B,EAAEC,KAAK,EAALA,KAAF,EAASyB,IAAI,EAAJA,IAAT,EAA7B,EACD,CAJH,IAMG,UAAAtB,KAAK,UAAI,MAAI,CAACb,KAAL,CAAW+F,UAAX,CAAsBrF,KAAtB,EAA6ByB,IAA7B,EAAmCtB,KAAnC,CAAJ,EANR,CADF,CAUD,CAlBe,CAAhB,CAmBD,C,QAEDwE,kB,GAAA,8BAAsD,KAC5CW,cAD4C,GACzB,KAAKhG,KADoB,CAC5CgG,cAD4C,CAGpD,IAAI,CAACA,cAAL,EAAqB,CACnB,OAAO,IAAP,CACD,CALmD,IAO5ClF,UAP4C,GAO7B,KAAKD,KAPwB,CAO5CC,UAP4C,CASpD,OACE,oBAAC,oBAAD,IAAU,QAAQ,EAAE,CAACmF,UAAU,CAACD,cAAD,CAA/B,IACGC,UAAU,CAACD,cAAD,CAAV,GAA6BA,cAAc,CAAClF,UAAD,CAA3C,GAA0DkF,cAD7D,CADF,CAKD,C,QAEDT,gB,GAAA,0BAAiBxC,MAAjB,EAAuC,KAC7BwC,gBAD6B,GACR,KAAKvF,KADG,CAC7BuF,gBAD6B,CAGrC,IAAI,CAACA,gBAAD,IAAqB,CAACxC,MAAtB,IAAgC,CAACA,MAAM,CAACkC,MAAxC,IAAkD,CAAClC,MAAM,CAACmD,KAA9D,EAAqE,CACnE,OAAO,IAAP,CACD,CAED,IAAInD,MAAM,CAACkC,MAAP,CAAcvB,MAAd,KAAyBX,MAAM,CAACmD,KAApC,EAA2C,CACzC,OAAO,IAAP,CACD,CAED,OACE,oBAAC,oBAAD,IAAU,QAAQ,MAAlB,IACE,6BAAK,SAAS,EAAEnC,mCAAOoC,UAAvB,IAAoCZ,gBAAgB,CAACxC,MAAM,CAACkC,MAAP,CAAcvB,MAAf,EAAuBX,MAAM,CAACmD,KAA9B,CAApD,CADF,CADF,CAKD,C,QAEDE,iB,GAAA,6BAAoB,CAClB,KAAK7C,QAAL,GAAgB,IAAhB,CACA,IAAI,KAAKvD,KAAL,CAAWqG,SAAf,EAA0B,CACxB,KAAKC,MAAL,GACD,CACF,C,QAEDC,oB,GAAA,gCAAuB,CACrB,KAAKhD,QAAL,GAAgB,KAAhB,CACD,C,QAqFDuC,gB,GAAA,0BAAiBrF,KAAjB,EAA2C+F,OAA3C,EAA0G,CACxG,KAAKvF,QAAL,CAAc,EAAEH,UAAU,EAAE,EAAd,EAAkBI,MAAM,EAAE,KAA1B,EAAiCsB,SAAS,EAAE,KAA5C,EAAd,EACA,KAAKiE,OAAL,CAAaD,OAAO,CAAC9F,KAArB,EAA4B8F,OAAO,CAACrE,IAApC,EAEAV,UAAU,CAAC+E,OAAO,CAACX,OAAT,CAAV,CACA,KAAK7D,WAAL,GACD,C;;AA0EDD,EAAAA,W,GAAA,uBAAc;AACZ,QAAI,KAAKX,cAAT,EAAyB;AACvB;AACD;AACD,SAAKA,cAAL,GAAsB,IAAtB;;AAEA,QAAI,CAAC,KAAKpB,KAAL,CAAW0G,OAAhB,EAAyB;AACvB,WAAKD,OAAL,CAAa,IAAb;AACA,WAAKxF,QAAL,CAAc,EAAEH,UAAU,EAAE,EAAd,EAAd;AACA;AACD;;AAED,QAAMA,UAAU,GAAG,KAAKD,KAAL,CAAWC,UAA9B;AACA,QAAI6F,SAAyB,GAAG,IAAhC;;AAEA,QAAI,OAAO,KAAK3G,KAAL,CAAW0G,OAAlB,KAA8B,UAAlC,EAA8C;AAC5CC,MAAAA,SAAS,GAAG,KAAK3G,KAAL,CAAW0G,OAAX,CAAmB5F,UAAnB,CAAZ;AACD,KAFD,MAEO,IAAI,KAAKd,KAAL,CAAW0G,OAAX,KAAuB,IAA3B,EAAiC;AACtCC,MAAAA,SAAS,GAAG,EAAEjG,KAAK,EAAEI,UAAT,EAAZ;AACD;;AAED,QAAI6F,SAAJ,EAAe;AACb,WAAKF,OAAL,CAAaE,SAAS,CAACjG,KAAvB,EAA8BiG,SAAS,CAACxE,IAAxC;AACD,KAFD,MAEO;AACL,WAAKsE,OAAL,CAAa,IAAb;AACA,WAAKG,SAAL,CAAe,KAAK/F,KAAL,CAAWC,UAAX,GAAwB,eAAxB,GAA0C,IAAzD;AACD;AACF,G;;AAED8F,EAAAA,S,GAAA,mBAAUrH,KAAV,EAA4B;AAC1B,SAAKwF,MAAL,GAAcxF,KAAd;AACA,QAAI,KAAKsH,UAAL,KAAoBtH,KAAxB,EAA+B;AAC7B,WAAKsH,UAAL,GAAkBtH,KAAlB;AACAkC,MAAAA,UAAU,CAAC,KAAKzB,KAAL,CAAW8G,OAAZ,EAAqBvH,KAArB,CAAV;AACD;AACF,G;;AAEDkH,EAAAA,O,GAAA,iBAAQ/F,KAAR,EAAsByB,IAAtB,EAAmC;AACjCV,IAAAA,UAAU,CAAC,KAAKzB,KAAL,CAAW+G,QAAZ,EAAsB,EAAEC,MAAM,EAAE,EAAEtG,KAAK,EAALA,KAAF,EAAV,EAAtB,EAA6CA,KAA7C,EAAoDyB,IAApD,CAAV;AACA,SAAKyE,SAAL,CAAe,IAAf;;AAEA;AACA,SAAKxF,cAAL,GAAsB,IAAtB;AACD,G;;AAEDc,EAAAA,qB,GAAA,+BAAsBxB,KAAtB,EAAoCyB,IAApC,EAAiD;AAC/C,QAAM8E,aAAa,GAAG,KAAKjH,KAAL,CAAWiH,aAAjC;;AAEA,QAAIA,aAAJ,EAAmB;AACjB,UAAMnG,WAAU,GAAGJ,KAAK,GAAGuG,aAAa,CAACvG,KAAD,EAAQyB,IAAR,CAAhB,GAAgC,KAAKtB,KAAL,CAAWC,UAAnE;;AAEA,aAAO,KAAKG,QAAL,CAAc,EAAEH,UAAU,EAAVA,WAAF,EAAd,EAA8B,KAAKwF,MAAnC,CAAP;AACD;;AAED,WAAO,KAAKrF,QAAL,CAAc,EAAEH,UAAU,EAAE,EAAd,EAAd,EAAkC,KAAKwF,MAAvC,CAAP;AACD,G,2BA9Z4BZ,KAAK,CAACwB,S,kBAA/BpH,gB,4MAGF+D,M,GAAA,kBAAS,CACP,OAAO,oBAAC,oBAAD,QAAW,KAAK7D,KAAL,CAAWmH,QAAtB,CAAP,CACD,C,eAH8BzB,KAAK,CAACwB,S,mBAFnCpH,gB,kBAYkB,EACpBiG,UAAU,EAAVA,UADoB,EAEpB7B,WAAW,EAAXA,WAFoB,EAGpBW,WAAW,EAAE,EAHO,EAIpBpF,KAAK,EAAG,GAJY,EAKpByF,SAAS,EAAE,MALS,EAMpBtB,gBAAgB,EAAE,CANE,E;;;AAqZxB,SAASnC,UAAT,CAAoB2F,EAApB,EAAmD;AACjD,MAAIA,EAAJ,EAAQ,mCAD4BC,IAC5B,uEAD4BA,IAC5B;AACND,IAAAA,EAAE,MAAF,SAAMC,IAAN;AACA,WAAO,IAAP;AACD;AACD,SAAO,KAAP;AACD;;AAED,SAAS7B,SAAT,CAAmBzC,MAAnB,EAAyCqE,EAAzC,EAAgG;AAC9F,SAAOrE,MAAM,CAACkC,MAAP,CAAcqC,GAAd,CAAkB,UAAC5G,KAAD,EAAQ+E,CAAR,EAAc;AACrC,QAAMtD,IAAI,GAAGY,MAAM,CAACwE,KAAP,IAAgBxE,MAAM,CAACwE,KAAP,CAAa9B,CAAb,CAA7B;AACA,WAAO2B,EAAE,CAAC1G,KAAD,EAAQyB,IAAR,EAAcsD,CAAd,CAAT;AACD,GAHM,CAAP;AAID;;AAED,SAASvB,WAAT,CAAqBxD,KAArB,EAA+ByB,IAA/B,EAAwC;AACtC,SAAOA,IAAP;AACD;;AAED,SAAS4D,UAAT,CAAoBrF,KAApB,EAA8ByB,IAA9B,EAAuCtB,KAAvC,EAAiD;AAC/C,SAAOsB,IAAP;AACD;;AAED,SAAS8D,UAAT,CAAoBmB,EAApB,EAAwB,sBAAuB;AAC7C,SAAO,OAAOA,EAAP,KAAc,UAArB;AACD,C;;AAEctH,gB","sourcesContent":["// @flow\r\n/* eslint-disable flowtype/no-weak-types */\r\nimport * as React from 'react';\r\nimport ReactDOM from 'react-dom';\r\n\r\nimport filterProps from '../filterProps';\r\n\r\nimport debounce from 'lodash.debounce';\r\n\r\nimport RenderLayer from '../RenderLayer';\r\nimport DropdownContainer from '../DropdownContainer/DropdownContainer';\r\nimport Input from '../Input';\r\nimport InputLikeText from '../internal/InputLikeText/InputLikeText';\r\nimport Menu from '../Menu/Menu';\r\nimport MenuItem from '../MenuItem/MenuItem';\r\nimport type { MenuItemState } from '../MenuItem/MenuItem';\r\nimport { fixClickFocusIE } from '../../lib/events/fixClickFocusIE';\r\n\r\nimport styles from './ComboBoxRenderer.module.less';\r\n\r\nconst INPUT_PASS_PROPS = {\r\n borderless: true,\r\n error: true,\r\n warning: true,\r\n width: true,\r\n disabled: true,\r\n onMouseEnter: true,\r\n onMouseLeave: true,\r\n onMouseOver: true,\r\n};\r\n\r\nexport type Value = any;\r\nexport type Info = any;\r\n\r\ntype SourceResult = {\r\n values: Array<Value | React.Element<any> | (() => React.Element<any>)>,\r\n infos?: Array<Info>,\r\n total?: number,\r\n};\r\n\r\ntype RecoverResult = {\r\n value: Value,\r\n info?: Info,\r\n};\r\n\r\ntype ErrorKind = null | 'not_recovered';\r\n\r\ntype RecoverFunc = (searchString: string) => RecoverResult;\r\n\r\nexport type BaseProps = {\r\n autoFocus?: boolean,\r\n borderless?: boolean,\r\n disabled?: boolean,\r\n error?: boolean,\r\n info?: Info | ((v: Value) => Promise<Info>),\r\n menuAlign: 'left' | 'right',\r\n disablePortal?: boolean,\r\n debounceInterval?: number,\r\n openButton?: boolean,\r\n placeholder: string,\r\n recover?: RecoverFunc | boolean,\r\n renderItem: (value: Value, info: Info, state: MenuItemState) => React.Node,\r\n renderValue: (value: Value, info: ?Info) => React.Element<any>,\r\n renderNotFound?: string | ((searchText: string) => React.Element<any> | string),\r\n renderTotalCount?: (f: number, total: number) => React.Element<any> | string,\r\n source: (searchText: string) => Promise<SourceResult>,\r\n warning?: boolean,\r\n value: Value | null,\r\n valueToString?: (value: Value, info: ?Info) => string,\r\n width: number | string,\r\n\r\n onBlur?: () => void,\r\n onChange?: (event: { target: { value: Value } }, value: Value) => void,\r\n onClose?: () => void,\r\n onError?: (kind: ErrorKind) => void,\r\n onFocus?: () => void,\r\n onOpen?: () => void,\r\n onInputChange?: (value: string) => ?string,\r\n onInputKeyDown?: (e: SyntheticKeyboardEvent<>) => void,\r\n\r\n alkoValueToText?: (value: Value) => string,\r\n onAlkoFocus?: () => void,\r\n onAlkoBlur?: () => void,\r\n\r\n onMouseEnter?: (e: SyntheticMouseEvent<>) => void,\r\n onMouseLeave?: (e: SyntheticMouseEvent<>) => void,\r\n onMouseOver?: (e: SyntheticMouseEvent<>) => void,\r\n};\r\n\r\ntype Props = BaseProps & {\r\n info: Info,\r\n};\r\n\r\ntype State = {\r\n opened: boolean,\r\n searchText: string,\r\n isEditing: boolean,\r\n result: ?SourceResult,\r\n selected: number,\r\n};\r\n\r\nclass ComboBoxRenderer extends React.Component<Props, State> {\r\n // eslint-disable-next-line react/no-multi-comp\r\n static Item = class Item extends React.Component<{ children?: React.Node }> {\r\n render() {\r\n return <MenuItem>{this.props.children}</MenuItem>;\r\n }\r\n };\r\n\r\n static static(element: (() => React.Element<any>) | React.Element<any>) {\r\n return element;\r\n }\r\n\r\n static defaultProps = {\r\n renderItem,\r\n renderValue,\r\n placeholder: '',\r\n width: (250: number | string),\r\n menuAlign: 'left',\r\n debounceInterval: 0,\r\n };\r\n\r\n _mounted = false;\r\n _focusable = null;\r\n _menu: ?Menu = null;\r\n _focusSubscribtion: ?{ remove: () => void } = null;\r\n _lastError: ErrorKind = null;\r\n _error: ErrorKind = null;\r\n _ignoreRecover = true;\r\n _ignoreBlur = true;\r\n _fetchingId = 0;\r\n _debouncedFetchList: Function;\r\n\r\n constructor(props: Props, context: mixed) {\r\n super(props, context);\r\n\r\n this.state = {\r\n opened: false,\r\n searchText: '',\r\n result: null,\r\n isEditing: false,\r\n selected: -1,\r\n };\r\n\r\n const { debounceInterval } = this.props;\r\n this._debouncedFetchList =\r\n debounceInterval && debounceInterval > 0 ? debounce(this._fetchList, debounceInterval) : this._fetchList;\r\n }\r\n\r\n render() {\r\n return (\r\n <RenderLayer\r\n onFocusOutside={this._handleBlur}\r\n onClickOutside={this._handleClickOutside}\r\n active={this.state.opened}\r\n >\r\n <label className={styles.root} style={{ width: this.props.width }}>\r\n {this.state.isEditing ? this.renderInput() : this.renderValue()}\r\n {this.state.opened && this.renderMenu()}\r\n {this.props.openButton && (\r\n <div className={styles.arrow} onClick={this._handleArrowClick} onMouseDown={this._handleArrowMouseDown} />\r\n )}\r\n </label>\r\n </RenderLayer>\r\n );\r\n }\r\n\r\n renderInput() {\r\n const inputProps = filterProps(this.props, INPUT_PASS_PROPS);\r\n return (\r\n <div className={styles.input}>\r\n <Input\r\n ref={this._refFocusable}\r\n {...inputProps}\r\n value={this.state.searchText}\r\n rightIcon={this.props.openButton && <span />}\r\n onChange={this._handleInputChange}\r\n onKeyDown={this._handleInputKey}\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n renderValue() {\r\n const inputProps = filterProps(this.props, INPUT_PASS_PROPS);\r\n\r\n const value = this.props.value ? (\r\n this.props.renderValue(this.props.value, this.props.info)\r\n ) : (\r\n <span className={styles.placeholder}>{this.props.placeholder}</span>\r\n );\r\n\r\n const isNotRecovered = !!this._error;\r\n\r\n return (\r\n <InputLikeText\r\n ref={this._refFocusable}\r\n {...inputProps}\r\n onClick={this._handleValueClick}\r\n onFocus={this._handleValueClick}\r\n error={isNotRecovered || this.props.error}\r\n >\r\n {isNotRecovered ? this.state.searchText : value}\r\n </InputLikeText>\r\n );\r\n }\r\n\r\n renderMenu() {\r\n const { result } = this.state;\r\n if (!result) {\r\n return null;\r\n }\r\n\r\n const isEmptyResults = result.values.length === 0;\r\n\r\n return (\r\n <DropdownContainer\r\n getParent={() => ReactDOM.findDOMNode(this)}\r\n align={this.props.menuAlign}\r\n disablePortal={this.props.disablePortal}\r\n offsetY={1}\r\n >\r\n <Menu ref={this._refMenu} maxHeight={200}>\r\n {isEmptyResults ? this.renderEmptyResults() : this.renderResults(result)}\r\n {this.renderTotalCount(result)}\r\n </Menu>\r\n </DropdownContainer>\r\n );\r\n }\r\n\r\n renderResults(result: SourceResult): Array<?React.Element<Class<MenuItem>>> {\r\n return mapResult(result, (value, info, i) => {\r\n if (typeof value === 'function' || React.isValidElement(value)) {\r\n const element = typeof value === 'function' ? value() : value;\r\n return React.cloneElement(element, {\r\n key: i,\r\n onClick: event => this._handleItemClick(event, element.props),\r\n });\r\n }\r\n return (\r\n <MenuItem\r\n key={i}\r\n onClick={(event: SyntheticEvent<*>) => {\r\n this._handleItemClick(event, { value, info });\r\n }}\r\n >\r\n {state => this.props.renderItem(value, info, state)}\r\n </MenuItem>\r\n );\r\n });\r\n }\r\n\r\n renderEmptyResults(): ?React.Element<typeof MenuItem> {\r\n const { renderNotFound } = this.props;\r\n\r\n if (!renderNotFound) {\r\n return null;\r\n }\r\n\r\n const { searchText } = this.state;\r\n\r\n return (\r\n <MenuItem disabled={!isFunction(renderNotFound)}>\r\n {isFunction(renderNotFound) ? renderNotFound(searchText) : renderNotFound}\r\n </MenuItem>\r\n );\r\n }\r\n\r\n renderTotalCount(result: SourceResult) {\r\n const { renderTotalCount } = this.props;\r\n\r\n if (!renderTotalCount || !result || !result.values || !result.total) {\r\n return null;\r\n }\r\n\r\n if (result.values.length === result.total) {\r\n return null;\r\n }\r\n\r\n return (\r\n <MenuItem disabled>\r\n <div className={styles.totalCount}>{renderTotalCount(result.values.length, result.total)}</div>\r\n </MenuItem>\r\n );\r\n }\r\n\r\n componentDidMount() {\r\n this._mounted = true;\r\n if (this.props.autoFocus) {\r\n this._focus();\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this._mounted = false;\r\n }\r\n\r\n _refFocusable = (el: Input | InputLikeText | null) => {\r\n this._focusable = el && (el.focus ? el : (ReactDOM.findDOMNode(el): any));\r\n };\r\n\r\n _refMenu = (menu: ?Menu) => {\r\n this._menu = menu;\r\n };\r\n\r\n _handleInputChange = (event: SyntheticInputEvent<HTMLInputElement>, value: string) => {\r\n let newInputValue = value;\r\n\r\n const inputValueChanged = this.state.searchText !== newInputValue;\r\n if (inputValueChanged && this.props.onInputChange) {\r\n let nextState = this.props.onInputChange(newInputValue);\r\n\r\n if (nextState != null && typeof nextState !== 'object') {\r\n newInputValue = '' + nextState;\r\n }\r\n }\r\n\r\n this.setState(() => ({\r\n searchText: newInputValue,\r\n opened: true,\r\n }));\r\n this._debouncedFetchList(newInputValue);\r\n this._ignoreRecover = false;\r\n };\r\n\r\n _handleInputKey = (event: SyntheticKeyboardEvent<>) => {\r\n if (typeof this.props.onInputKeyDown === 'function') {\r\n this.props.onInputKeyDown(event);\r\n if (event.defaultPrevented) {\r\n return;\r\n }\r\n }\r\n\r\n switch (event.key) {\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n\r\n if (!this.state.opened) {\r\n this.setState({ opened: true });\r\n safelyCall(this.props.onOpen);\r\n }\r\n\r\n this._menu && this._menu.up();\r\n break;\r\n case 'ArrowDown':\r\n event.preventDefault();\r\n\r\n if (!this.state.opened) {\r\n this.setState({ opened: true });\r\n safelyCall(this.props.onOpen);\r\n }\r\n\r\n this._menu && this._menu.down();\r\n break;\r\n case 'Enter':\r\n event.preventDefault();\r\n const handled = this._menu && this._menu.enter(event);\r\n if (!handled) {\r\n this._tryRecover();\r\n\r\n // Close ComboBox only if Enter wasn't handled by the Menu.\r\n this._handleBlur();\r\n }\r\n break;\r\n case 'Escape':\r\n event.preventDefault();\r\n if (!this.state.opened) {\r\n return;\r\n }\r\n this._close();\r\n break;\r\n }\r\n };\r\n\r\n _handleValueClick = () => {\r\n this._setCurrentSearchText(this.props.value, this.props.info);\r\n this._fetchList('');\r\n this._handleFocus();\r\n };\r\n\r\n _handleItemClick(event: SyntheticEvent<*>, options: { value?: Value, info?: Info, onClick?: () => void }) {\r\n this.setState({ searchText: '', opened: false, isEditing: false });\r\n this._change(options.value, options.info);\r\n\r\n safelyCall(options.onClick);\r\n this._handleBlur();\r\n }\r\n\r\n _handleArrowMouseDown = (event: SyntheticMouseEvent<>) => {\r\n event.preventDefault();\r\n };\r\n\r\n _handleArrowClick = (event: SyntheticMouseEvent<>) => {\r\n if (!this.state.opened && !this.props.disabled) {\r\n this._handleValueClick();\r\n }\r\n };\r\n\r\n _handleFocus = () => {\r\n /* Allow blur happen only if focus occured */\r\n this._ignoreBlur = false;\r\n\r\n this.setState({ isEditing: true, opened: true });\r\n safelyCall(this.props.onOpen);\r\n\r\n if (!safelyCall(this.props.onFocus)) {\r\n safelyCall(this.props.onAlkoFocus);\r\n }\r\n };\r\n\r\n _handleBlur = () => {\r\n if (this._ignoreBlur) {\r\n return;\r\n }\r\n\r\n this._close(true);\r\n this._tryRecover();\r\n\r\n if (!safelyCall(this.props.onBlur)) {\r\n safelyCall(this.props.onAlkoBlur);\r\n }\r\n\r\n /* Blur should occure only once */\r\n this._ignoreBlur = true;\r\n };\r\n\r\n _handleClickOutside = (e: Event) => {\r\n fixClickFocusIE(e);\r\n this._handleBlur();\r\n };\r\n\r\n _close = (endEdit?: boolean) => {\r\n this.setState({ opened: false, result: null });\r\n setTimeout(() => this.setState({ isEditing: !endEdit }), 0);\r\n safelyCall(this.props.onClose);\r\n };\r\n\r\n _fetchList = (pattern: string) => {\r\n const expectingId = ++this._fetchingId;\r\n this.props.source(pattern).then(result => {\r\n if (!this._mounted) {\r\n return;\r\n }\r\n\r\n if (expectingId === this._fetchingId && this.state.opened) {\r\n this._menu && this._menu.reset();\r\n this.setState(() => ({ result }));\r\n }\r\n });\r\n };\r\n\r\n _focus = () => {\r\n if (this._focusable && this._focusable.setSelectionRange) {\r\n // $FlowIgnore\r\n this._focusable.setSelectionRange(0, this.state.searchText.length);\r\n } else if (this._focusable) {\r\n this._focusable.focus();\r\n }\r\n };\r\n\r\n _tryRecover() {\r\n if (this._ignoreRecover) {\r\n return;\r\n }\r\n this._ignoreRecover = true;\r\n\r\n if (!this.props.recover) {\r\n this._change(null);\r\n this.setState({ searchText: '' });\r\n return;\r\n }\r\n\r\n const searchText = this.state.searchText;\r\n let recovered: ?RecoverResult = null;\r\n\r\n if (typeof this.props.recover === 'function') {\r\n recovered = this.props.recover(searchText);\r\n } else if (this.props.recover === true) {\r\n recovered = { value: searchText };\r\n }\r\n\r\n if (recovered) {\r\n this._change(recovered.value, recovered.info);\r\n } else {\r\n this._change(null);\r\n this._setError(this.state.searchText ? 'not_recovered' : null);\r\n }\r\n }\r\n\r\n _setError(error: ErrorKind) {\r\n this._error = error;\r\n if (this._lastError !== error) {\r\n this._lastError = error;\r\n safelyCall(this.props.onError, error);\r\n }\r\n }\r\n\r\n _change(value: Value, info?: Info) {\r\n safelyCall(this.props.onChange, { target: { value } }, value, info);\r\n this._setError(null);\r\n\r\n /* No need in recovers after value changes */\r\n this._ignoreRecover = true;\r\n }\r\n\r\n _setCurrentSearchText(value: Value, info: ?Info) {\r\n const valueToString = this.props.valueToString;\r\n\r\n if (valueToString) {\r\n const searchText = value ? valueToString(value, info) : this.state.searchText;\r\n\r\n return this.setState({ searchText }, this._focus);\r\n }\r\n\r\n return this.setState({ searchText: '' }, this._focus);\r\n }\r\n}\r\n\r\nfunction safelyCall(fn: ?Function, ...args: any[]) {\r\n if (fn) {\r\n fn(...args);\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nfunction mapResult(result: SourceResult, fn: (v: Value, d: Info, i: number) => any): Array<any> {\r\n return result.values.map((value, i) => {\r\n const info = result.infos && result.infos[i];\r\n return fn(value, info, i);\r\n });\r\n}\r\n\r\nfunction renderValue(value: *, info: *) {\r\n return info;\r\n}\r\n\r\nfunction renderItem(value: *, info: *, state: *) {\r\n return info;\r\n}\r\n\r\nfunction isFunction(fn) /*: boolean %checks */ {\r\n return typeof fn === 'function';\r\n}\r\n\r\nexport default ComboBoxRenderer;\r\n"]}
1
+ {"version":3,"sources":["ComboBoxRenderer.js"],"names":["INPUT_PASS_PROPS","borderless","error","warning","width","disabled","onMouseEnter","onMouseLeave","onMouseOver","ComboBoxRenderer","element","props","context","el","_focusable","focus","ReactDOM","findDOMNode","menu","_menu","event","value","newInputValue","inputValueChanged","state","searchText","onInputChange","nextState","setState","opened","_debouncedFetchList","_ignoreRecover","onInputKeyDown","defaultPrevented","key","preventDefault","safelyCall","onOpen","up","down","handled","enter","_tryRecover","_handleBlur","_close","_setCurrentSearchText","info","_fetchList","_handleFocus","_handleValueClick","_ignoreBlur","isEditing","onFocus","onAlkoFocus","onBlur","onAlkoBlur","e","endEdit","result","setTimeout","onClose","pattern","expectingId","_fetchingId","source","then","_mounted","reset","setSelectionRange","length","selected","debounceInterval","render","_handleClickOutside","styles","root","renderInput","renderValue","renderMenu","openButton","arrow","_handleArrowClick","_handleArrowMouseDown","inputProps","input","_refFocusable","_handleInputChange","_handleInputKey","placeholder","isNotRecovered","_error","isEmptyResults","values","menuAlign","disablePortal","_refMenu","renderEmptyResults","renderResults","renderTotalCount","mapResult","i","React","isValidElement","cloneElement","onClick","_handleItemClick","renderItem","renderNotFound","isFunction","total","totalCount","componentDidMount","autoFocus","_focus","componentWillUnmount","options","_change","recover","recovered","_setError","_lastError","onError","onChange","target","valueToString","Component","children","fn","args","map","infos"],"mappings":"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","sourcesContent":["// @flow\n/* eslint-disable flowtype/no-weak-types */\nimport * as React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport filterProps from '../filterProps';\n\nimport debounce from 'lodash.debounce';\n\nimport RenderLayer from '../RenderLayer';\nimport DropdownContainer from '../DropdownContainer/DropdownContainer';\nimport Input from '../Input';\nimport InputLikeText from '../internal/InputLikeText/InputLikeText';\nimport Menu from '../Menu/Menu';\nimport MenuItem from '../MenuItem/MenuItem';\nimport type { MenuItemState } from '../MenuItem/MenuItem';\nimport { fixClickFocusIE } from '../../lib/events/fixClickFocusIE';\n\nimport styles from './ComboBoxRenderer.module.less';\n\nconst INPUT_PASS_PROPS = {\n borderless: true,\n error: true,\n warning: true,\n width: true,\n disabled: true,\n onMouseEnter: true,\n onMouseLeave: true,\n onMouseOver: true,\n};\n\nexport type Value = any;\nexport type Info = any;\n\ntype SourceResult = {\n values: Array<Value | React.Element<any> | (() => React.Element<any>)>,\n infos?: Array<Info>,\n total?: number,\n};\n\ntype RecoverResult = {\n value: Value,\n info?: Info,\n};\n\ntype ErrorKind = null | 'not_recovered';\n\ntype RecoverFunc = (searchString: string) => RecoverResult;\n\nexport type BaseProps = {\n autoFocus?: boolean,\n borderless?: boolean,\n disabled?: boolean,\n error?: boolean,\n info?: Info | ((v: Value) => Promise<Info>),\n menuAlign: 'left' | 'right',\n disablePortal?: boolean,\n debounceInterval?: number,\n openButton?: boolean,\n placeholder: string,\n recover?: RecoverFunc | boolean,\n renderItem: (value: Value, info: Info, state: MenuItemState) => React.Node,\n renderValue: (value: Value, info: ?Info) => React.Element<any>,\n renderNotFound?: string | ((searchText: string) => React.Element<any> | string),\n renderTotalCount?: (f: number, total: number) => React.Element<any> | string,\n source: (searchText: string) => Promise<SourceResult>,\n warning?: boolean,\n value: Value | null,\n valueToString?: (value: Value, info: ?Info) => string,\n width: number | string,\n\n onBlur?: () => void,\n onChange?: (event: { target: { value: Value } }, value: Value) => void,\n onClose?: () => void,\n onError?: (kind: ErrorKind) => void,\n onFocus?: () => void,\n onOpen?: () => void,\n onInputChange?: (value: string) => ?string,\n onInputKeyDown?: (e: SyntheticKeyboardEvent<>) => void,\n\n alkoValueToText?: (value: Value) => string,\n onAlkoFocus?: () => void,\n onAlkoBlur?: () => void,\n\n onMouseEnter?: (e: SyntheticMouseEvent<>) => void,\n onMouseLeave?: (e: SyntheticMouseEvent<>) => void,\n onMouseOver?: (e: SyntheticMouseEvent<>) => void,\n};\n\ntype Props = BaseProps & {\n info: Info,\n};\n\ntype State = {\n opened: boolean,\n searchText: string,\n isEditing: boolean,\n result: ?SourceResult,\n selected: number,\n};\n\nclass ComboBoxRenderer extends React.Component<Props, State> {\n // eslint-disable-next-line react/no-multi-comp\n static Item = class Item extends React.Component<{ children?: React.Node }> {\n render() {\n return <MenuItem>{this.props.children}</MenuItem>;\n }\n };\n\n static static(element: (() => React.Element<any>) | React.Element<any>) {\n return element;\n }\n\n static defaultProps = {\n renderItem,\n renderValue,\n placeholder: '',\n width: (250: number | string),\n menuAlign: 'left',\n debounceInterval: 0,\n };\n\n _mounted = false;\n _focusable = null;\n _menu: ?Menu = null;\n _focusSubscribtion: ?{ remove: () => void } = null;\n _lastError: ErrorKind = null;\n _error: ErrorKind = null;\n _ignoreRecover = true;\n _ignoreBlur = true;\n _fetchingId = 0;\n _debouncedFetchList: Function;\n\n constructor(props: Props, context: mixed) {\n super(props, context);\n\n this.state = {\n opened: false,\n searchText: '',\n result: null,\n isEditing: false,\n selected: -1,\n };\n\n const { debounceInterval } = this.props;\n this._debouncedFetchList =\n debounceInterval && debounceInterval > 0 ? debounce(this._fetchList, debounceInterval) : this._fetchList;\n }\n\n render() {\n return (\n <RenderLayer\n onFocusOutside={this._handleBlur}\n onClickOutside={this._handleClickOutside}\n active={this.state.opened}\n >\n <label className={styles.root} style={{ width: this.props.width }}>\n {this.state.isEditing ? this.renderInput() : this.renderValue()}\n {this.state.opened && this.renderMenu()}\n {this.props.openButton && (\n <div className={styles.arrow} onClick={this._handleArrowClick} onMouseDown={this._handleArrowMouseDown} />\n )}\n </label>\n </RenderLayer>\n );\n }\n\n renderInput() {\n const inputProps = filterProps(this.props, INPUT_PASS_PROPS);\n return (\n <div className={styles.input}>\n <Input\n ref={this._refFocusable}\n {...inputProps}\n value={this.state.searchText}\n rightIcon={this.props.openButton && <span />}\n onChange={this._handleInputChange}\n onKeyDown={this._handleInputKey}\n />\n </div>\n );\n }\n\n renderValue() {\n const inputProps = filterProps(this.props, INPUT_PASS_PROPS);\n\n const value = this.props.value ? (\n this.props.renderValue(this.props.value, this.props.info)\n ) : (\n <span className={styles.placeholder}>{this.props.placeholder}</span>\n );\n\n const isNotRecovered = !!this._error;\n\n return (\n <InputLikeText\n ref={this._refFocusable}\n {...inputProps}\n onClick={this._handleValueClick}\n onFocus={this._handleValueClick}\n error={isNotRecovered || this.props.error}\n >\n {isNotRecovered ? this.state.searchText : value}\n </InputLikeText>\n );\n }\n\n renderMenu() {\n const { result } = this.state;\n if (!result) {\n return null;\n }\n\n const isEmptyResults = result.values.length === 0;\n\n return (\n <DropdownContainer\n getParent={() => ReactDOM.findDOMNode(this)}\n align={this.props.menuAlign}\n disablePortal={this.props.disablePortal}\n offsetY={1}\n >\n <Menu ref={this._refMenu} maxHeight={200}>\n {isEmptyResults ? this.renderEmptyResults() : this.renderResults(result)}\n {this.renderTotalCount(result)}\n </Menu>\n </DropdownContainer>\n );\n }\n\n renderResults(result: SourceResult): Array<?React.Element<Class<MenuItem>>> {\n return mapResult(result, (value, info, i) => {\n if (typeof value === 'function' || React.isValidElement(value)) {\n const element = typeof value === 'function' ? value() : value;\n return React.cloneElement(element, {\n key: i,\n onClick: event => this._handleItemClick(event, element.props),\n });\n }\n return (\n <MenuItem\n key={i}\n onClick={(event: SyntheticEvent<*>) => {\n this._handleItemClick(event, { value, info });\n }}\n >\n {state => this.props.renderItem(value, info, state)}\n </MenuItem>\n );\n });\n }\n\n renderEmptyResults(): ?React.Element<typeof MenuItem> {\n const { renderNotFound } = this.props;\n\n if (!renderNotFound) {\n return null;\n }\n\n const { searchText } = this.state;\n\n return (\n <MenuItem disabled={!isFunction(renderNotFound)}>\n {isFunction(renderNotFound) ? renderNotFound(searchText) : renderNotFound}\n </MenuItem>\n );\n }\n\n renderTotalCount(result: SourceResult) {\n const { renderTotalCount } = this.props;\n\n if (!renderTotalCount || !result || !result.values || !result.total) {\n return null;\n }\n\n if (result.values.length === result.total) {\n return null;\n }\n\n return (\n <MenuItem disabled>\n <div className={styles.totalCount}>{renderTotalCount(result.values.length, result.total)}</div>\n </MenuItem>\n );\n }\n\n componentDidMount() {\n this._mounted = true;\n if (this.props.autoFocus) {\n this._focus();\n }\n }\n\n componentWillUnmount() {\n this._mounted = false;\n }\n\n _refFocusable = (el: Input | InputLikeText | null) => {\n this._focusable = el && (el.focus ? el : (ReactDOM.findDOMNode(el): any));\n };\n\n _refMenu = (menu: ?Menu) => {\n this._menu = menu;\n };\n\n _handleInputChange = (event: SyntheticInputEvent<HTMLInputElement>, value: string) => {\n let newInputValue = value;\n\n const inputValueChanged = this.state.searchText !== newInputValue;\n if (inputValueChanged && this.props.onInputChange) {\n let nextState = this.props.onInputChange(newInputValue);\n\n if (nextState != null && typeof nextState !== 'object') {\n newInputValue = '' + nextState;\n }\n }\n\n this.setState(() => ({\n searchText: newInputValue,\n opened: true,\n }));\n this._debouncedFetchList(newInputValue);\n this._ignoreRecover = false;\n };\n\n _handleInputKey = (event: SyntheticKeyboardEvent<>) => {\n if (typeof this.props.onInputKeyDown === 'function') {\n this.props.onInputKeyDown(event);\n if (event.defaultPrevented) {\n return;\n }\n }\n\n switch (event.key) {\n case 'ArrowUp':\n event.preventDefault();\n\n if (!this.state.opened) {\n this.setState({ opened: true });\n safelyCall(this.props.onOpen);\n }\n\n this._menu && this._menu.up();\n break;\n case 'ArrowDown':\n event.preventDefault();\n\n if (!this.state.opened) {\n this.setState({ opened: true });\n safelyCall(this.props.onOpen);\n }\n\n this._menu && this._menu.down();\n break;\n case 'Enter':\n event.preventDefault();\n const handled = this._menu && this._menu.enter(event);\n if (!handled) {\n this._tryRecover();\n\n // Close ComboBox only if Enter wasn't handled by the Menu.\n this._handleBlur();\n }\n break;\n case 'Escape':\n event.preventDefault();\n if (!this.state.opened) {\n return;\n }\n this._close();\n break;\n }\n };\n\n _handleValueClick = () => {\n this._setCurrentSearchText(this.props.value, this.props.info);\n this._fetchList('');\n this._handleFocus();\n };\n\n _handleItemClick(event: SyntheticEvent<*>, options: { value?: Value, info?: Info, onClick?: () => void }) {\n this.setState({ searchText: '', opened: false, isEditing: false });\n this._change(options.value, options.info);\n\n safelyCall(options.onClick);\n this._handleBlur();\n }\n\n _handleArrowMouseDown = (event: SyntheticMouseEvent<>) => {\n event.preventDefault();\n };\n\n _handleArrowClick = (event: SyntheticMouseEvent<>) => {\n if (!this.state.opened && !this.props.disabled) {\n this._handleValueClick();\n }\n };\n\n _handleFocus = () => {\n /* Allow blur happen only if focus occured */\n this._ignoreBlur = false;\n\n this.setState({ isEditing: true, opened: true });\n safelyCall(this.props.onOpen);\n\n if (!safelyCall(this.props.onFocus)) {\n safelyCall(this.props.onAlkoFocus);\n }\n };\n\n _handleBlur = () => {\n if (this._ignoreBlur) {\n return;\n }\n\n this._close(true);\n this._tryRecover();\n\n if (!safelyCall(this.props.onBlur)) {\n safelyCall(this.props.onAlkoBlur);\n }\n\n /* Blur should occure only once */\n this._ignoreBlur = true;\n };\n\n _handleClickOutside = (e: Event) => {\n fixClickFocusIE(e);\n this._handleBlur();\n };\n\n _close = (endEdit?: boolean) => {\n this.setState({ opened: false, result: null });\n setTimeout(() => this.setState({ isEditing: !endEdit }), 0);\n safelyCall(this.props.onClose);\n };\n\n _fetchList = (pattern: string) => {\n const expectingId = ++this._fetchingId;\n this.props.source(pattern).then(result => {\n if (!this._mounted) {\n return;\n }\n\n if (expectingId === this._fetchingId && this.state.opened) {\n this._menu && this._menu.reset();\n this.setState(() => ({ result }));\n }\n });\n };\n\n _focus = () => {\n if (this._focusable && this._focusable.setSelectionRange) {\n // $FlowIgnore\n this._focusable.setSelectionRange(0, this.state.searchText.length);\n } else if (this._focusable) {\n this._focusable.focus();\n }\n };\n\n _tryRecover() {\n if (this._ignoreRecover) {\n return;\n }\n this._ignoreRecover = true;\n\n if (!this.props.recover) {\n this._change(null);\n this.setState({ searchText: '' });\n return;\n }\n\n const searchText = this.state.searchText;\n let recovered: ?RecoverResult = null;\n\n if (typeof this.props.recover === 'function') {\n recovered = this.props.recover(searchText);\n } else if (this.props.recover === true) {\n recovered = { value: searchText };\n }\n\n if (recovered) {\n this._change(recovered.value, recovered.info);\n } else {\n this._change(null);\n this._setError(this.state.searchText ? 'not_recovered' : null);\n }\n }\n\n _setError(error: ErrorKind) {\n this._error = error;\n if (this._lastError !== error) {\n this._lastError = error;\n safelyCall(this.props.onError, error);\n }\n }\n\n _change(value: Value, info?: Info) {\n safelyCall(this.props.onChange, { target: { value } }, value, info);\n this._setError(null);\n\n /* No need in recovers after value changes */\n this._ignoreRecover = true;\n }\n\n _setCurrentSearchText(value: Value, info: ?Info) {\n const valueToString = this.props.valueToString;\n\n if (valueToString) {\n const searchText = value ? valueToString(value, info) : this.state.searchText;\n\n return this.setState({ searchText }, this._focus);\n }\n\n return this.setState({ searchText: '' }, this._focus);\n }\n}\n\nfunction safelyCall(fn: ?Function, ...args: any[]) {\n if (fn) {\n fn(...args);\n return true;\n }\n return false;\n}\n\nfunction mapResult(result: SourceResult, fn: (v: Value, d: Info, i: number) => any): Array<any> {\n return result.values.map((value, i) => {\n const info = result.infos && result.infos[i];\n return fn(value, info, i);\n });\n}\n\nfunction renderValue(value: *, info: *) {\n return info;\n}\n\nfunction renderItem(value: *, info: *, state: *) {\n return info;\n}\n\nfunction isFunction(fn) /*: boolean %checks */ {\n return typeof fn === 'function';\n}\n\nexport default ComboBoxRenderer;\n"]}
@@ -1,83 +1,83 @@
1
- ```jsx
2
- var items = [
3
- { id: 1, name: 'Kappa' },
4
- { id: 2, name: 'Keepo' },
5
- { id: 3, name: 'ResidentSleeper' },
6
- { id: 4, name: 'Kestrel' },
7
- { id: 5, name: 'Kats' },
8
- { id: 6, name: 'Junior' },
9
- ];
10
-
11
- function info(id) {
12
- return Promise.resolve(items.find(item => item.id === id));
13
- }
14
-
15
- function search(query) {
16
- query = query.toLowerCase();
17
- var results = items.filter(item => item.name.toLowerCase().indexOf(query) !== -1);
18
- return Promise.resolve({
19
- values: results.map(d => d.id).slice(0, 3),
20
- infos: results,
21
- total: results.length,
22
- });
23
- }
24
-
25
- function recover(query) {
26
- var found = items.find(x => x.name.toLowerCase() === query.toLowerCase());
27
- if (found) {
28
- return { value: found.id };
29
- }
30
- return null;
31
- }
32
-
33
- function renderValue(value, info) {
34
- return <span>{info ? info.name : 'Loading'}</span>;
35
- }
36
-
37
- function renderItem(value, info) {
38
- return (
39
- <span>
40
- {value}: {info.name}
41
- </span>
42
- );
43
- }
44
-
45
- function valueToString(id) {
46
- var info = items.find(x => x.id === id);
47
- return info ? info.name : '';
48
- }
49
-
50
- function renderTotalCount(found, total) {
51
- return (
52
- <div style={{ maxWidth: 220 }}>
53
- Displayed {found} from {total}
54
- </div>
55
- );
56
- }
57
-
58
- class Comp extends React.Component {
59
- constructor(props) {
60
- super(props);
61
- this.state = { value: 3 };
62
- }
63
-
64
- render() {
65
- return (
66
- <ComboBoxOld
67
- info={info}
68
- source={search}
69
- value={this.state.value}
70
- recover={recover}
71
- renderValue={renderValue}
72
- renderItem={renderItem}
73
- renderNotFound="Nothing here"
74
- renderTotalCount={renderTotalCount}
75
- valueToString={valueToString}
76
- onChange={e => this.setState({ value: e.target.value })}
77
- />
78
- );
79
- }
80
- }
81
-
82
- <Comp />;
83
- ```
1
+ ```jsx
2
+ var items = [
3
+ { id: 1, name: 'Kappa' },
4
+ { id: 2, name: 'Keepo' },
5
+ { id: 3, name: 'ResidentSleeper' },
6
+ { id: 4, name: 'Kestrel' },
7
+ { id: 5, name: 'Kats' },
8
+ { id: 6, name: 'Junior' },
9
+ ];
10
+
11
+ function info(id) {
12
+ return Promise.resolve(items.find(item => item.id === id));
13
+ }
14
+
15
+ function search(query) {
16
+ query = query.toLowerCase();
17
+ var results = items.filter(item => item.name.toLowerCase().indexOf(query) !== -1);
18
+ return Promise.resolve({
19
+ values: results.map(d => d.id).slice(0, 3),
20
+ infos: results,
21
+ total: results.length,
22
+ });
23
+ }
24
+
25
+ function recover(query) {
26
+ var found = items.find(x => x.name.toLowerCase() === query.toLowerCase());
27
+ if (found) {
28
+ return { value: found.id };
29
+ }
30
+ return null;
31
+ }
32
+
33
+ function renderValue(value, info) {
34
+ return <span>{info ? info.name : 'Loading'}</span>;
35
+ }
36
+
37
+ function renderItem(value, info) {
38
+ return (
39
+ <span>
40
+ {value}: {info.name}
41
+ </span>
42
+ );
43
+ }
44
+
45
+ function valueToString(id) {
46
+ var info = items.find(x => x.id === id);
47
+ return info ? info.name : '';
48
+ }
49
+
50
+ function renderTotalCount(found, total) {
51
+ return (
52
+ <div style={{ maxWidth: 220 }}>
53
+ Displayed {found} from {total}
54
+ </div>
55
+ );
56
+ }
57
+
58
+ class Comp extends React.Component {
59
+ constructor(props) {
60
+ super(props);
61
+ this.state = { value: 3 };
62
+ }
63
+
64
+ render() {
65
+ return (
66
+ <ComboBoxOld
67
+ info={info}
68
+ source={search}
69
+ value={this.state.value}
70
+ recover={recover}
71
+ renderValue={renderValue}
72
+ renderItem={renderItem}
73
+ renderNotFound="Nothing here"
74
+ renderTotalCount={renderTotalCount}
75
+ valueToString={valueToString}
76
+ onChange={e => this.setState({ value: e.target.value })}
77
+ />
78
+ );
79
+ }
80
+ }
81
+
82
+ <Comp />;
83
+ ```
@@ -1 +1 @@
1
- export { default, ComboBoxOldProps, ComboBoxOldState } from './ComboBoxOld';
1
+ export { default, ComboBoxOldProps, ComboBoxOldState } from './ComboBoxOld';
@@ -1 +1 @@
1
- {"version":3,"sources":["index.js"],"names":["ComboBoxOld"],"mappings":"mEAAA,oE;AACeA,uB","sourcesContent":["import ComboBoxOld from './ComboBoxOld';\r\nexport default ComboBoxOld;\r\n"]}
1
+ {"version":3,"sources":["index.js"],"names":["ComboBoxOld"],"mappings":"mEAAA,oE;AACeA,uB","sourcesContent":["import ComboBoxOld from './ComboBoxOld';\nexport default ComboBoxOld;\n"]}
@@ -1,44 +1,44 @@
1
- /* @flow */
2
- import type { CursorMap } from './CursorHelper';
3
-
4
- export type DecimalFormattingOptions = {|
5
- fractionDigits?: ?number,
6
- thousandsDelimiter?: string,
7
- minusSign?: string,
8
- |};
9
-
10
- type DecimalFormattingOptionsInternal = {|
11
- fractionDigits: ?number,
12
- thousandsDelimiter: string,
13
- minusSign: string,
14
- |};
15
-
16
- export type FormattingInfo = {|
17
- raw: string,
18
- formatted: string,
19
- cursorMap: CursorMap,
20
- |};
21
-
22
- declare class CurrencyHelper {
23
- static defaultOptions: DecimalFormattingOptionsInternal;
24
- static getOptions(options?: ?DecimalFormattingOptions): DecimalFormattingOptionsInternal;
25
- static getInfo(value: string, options?: ?DecimalFormattingOptions): FormattingInfo;
26
- static getCursorMap(formatted: string, formattingOptions?: ?DecimalFormattingOptions): CursorMap;
27
- static format(value: ?number, options?: ?DecimalFormattingOptions): string;
28
- static parse(value: string): ?number;
29
- static unformatString(value: string): string;
30
- static formatForClipboard(value: string): string;
31
- static formatString(value: string, formattingOptions?: ?DecimalFormattingOptions): string;
32
- static isValidString(value: string, fractionDigits: ?number, unsigned?: ?boolean): boolean;
33
- static extractValid(value: string, fractionDigits: ?number, unsigned: ?boolean): string;
34
- static destructString(
35
- value: string,
36
- ): {
37
- sign: string,
38
- integer: string,
39
- delimiter: string,
40
- fraction: string,
41
- } | null;
42
- }
43
-
44
- export default CurrencyHelper;
1
+ /* @flow */
2
+ import type { CursorMap } from './CursorHelper';
3
+
4
+ export type DecimalFormattingOptions = {|
5
+ fractionDigits?: ?number,
6
+ thousandsDelimiter?: string,
7
+ minusSign?: string,
8
+ |};
9
+
10
+ type DecimalFormattingOptionsInternal = {|
11
+ fractionDigits: ?number,
12
+ thousandsDelimiter: string,
13
+ minusSign: string,
14
+ |};
15
+
16
+ export type FormattingInfo = {|
17
+ raw: string,
18
+ formatted: string,
19
+ cursorMap: CursorMap,
20
+ |};
21
+
22
+ declare class CurrencyHelper {
23
+ static defaultOptions: DecimalFormattingOptionsInternal;
24
+ static getOptions(options?: ?DecimalFormattingOptions): DecimalFormattingOptionsInternal;
25
+ static getInfo(value: string, options?: ?DecimalFormattingOptions): FormattingInfo;
26
+ static getCursorMap(formatted: string, formattingOptions?: ?DecimalFormattingOptions): CursorMap;
27
+ static format(value: ?number, options?: ?DecimalFormattingOptions): string;
28
+ static parse(value: string): ?number;
29
+ static unformatString(value: string): string;
30
+ static formatForClipboard(value: string): string;
31
+ static formatString(value: string, formattingOptions?: ?DecimalFormattingOptions): string;
32
+ static isValidString(value: string, fractionDigits: ?number, unsigned?: ?boolean): boolean;
33
+ static extractValid(value: string, fractionDigits: ?number, unsigned: ?boolean): string;
34
+ static destructString(
35
+ value: string,
36
+ ): {
37
+ sign: string,
38
+ integer: string,
39
+ delimiter: string,
40
+ fraction: string,
41
+ } | null;
42
+ }
43
+
44
+ export default CurrencyHelper;
@@ -1,30 +1,30 @@
1
- /* @flow */
2
- import type { Selection } from './SelectionHelper';
3
-
4
- export type CurrencyInputProps = {
5
- value: ?number,
6
- fractionDigits?: ?number,
7
- signed?: boolean,
8
- onChange: (
9
- e: {
10
- target: {|
11
- value: ?number,
12
- |},
13
- },
14
- value: ?number,
15
- ) => void,
16
- onSubmit?: () => void,
17
- };
18
-
19
- export type CurrencyInputState = {|
20
- formatted: string,
21
- selection: Selection,
22
- focused: boolean,
23
- |};
24
-
25
- declare class CurrencyInput extends React$Component<CurrencyInputProps, CurrencyInputState> {
26
- focus: () => void;
27
- blur: () => void;
28
- }
29
-
30
- export default CurrencyInput;
1
+ /* @flow */
2
+ import type { Selection } from './SelectionHelper';
3
+
4
+ export type CurrencyInputProps = {
5
+ value: ?number,
6
+ fractionDigits?: ?number,
7
+ signed?: boolean,
8
+ onChange: (
9
+ e: {
10
+ target: {|
11
+ value: ?number,
12
+ |},
13
+ },
14
+ value: ?number,
15
+ ) => void,
16
+ onSubmit?: () => void,
17
+ };
18
+
19
+ export type CurrencyInputState = {|
20
+ formatted: string,
21
+ selection: Selection,
22
+ focused: boolean,
23
+ |};
24
+
25
+ declare class CurrencyInput extends React$Component<CurrencyInputProps, CurrencyInputState> {
26
+ focus: () => void;
27
+ blur: () => void;
28
+ }
29
+
30
+ export default CurrencyInput;
@@ -1,38 +1,38 @@
1
- /* @flow */
2
- import type { Selection } from './SelectionHelper';
3
-
4
- declare class CurrencyInputHelper {
5
- static moveCursor(value: string, selection: Selection, step: number): number;
6
- static extendSelection(value: string, selection: Selection, step: number): Selection;
7
- static normalizeSelection(value: string, selection: Selection): Selection;
8
- static safeInsert(
9
- value: string,
10
- start: number,
11
- end: number,
12
- input: string,
13
- fractionDigits: ?number,
14
- unsigned: ?boolean,
15
- ): {
16
- value: string,
17
- position: number,
18
- } | null;
19
- static getMaximumValidSubstring(
20
- value: string,
21
- start: number,
22
- end: number,
23
- input: string,
24
- fractionDigits: ?number,
25
- unsigned: ?boolean,
26
- ): string | null;
27
- static insert(
28
- value: string,
29
- start: number,
30
- end: number,
31
- input: string,
32
- ): {
33
- value: string,
34
- position: number,
35
- };
36
- }
37
-
38
- export default CurrencyInputHelper;
1
+ /* @flow */
2
+ import type { Selection } from './SelectionHelper';
3
+
4
+ declare class CurrencyInputHelper {
5
+ static moveCursor(value: string, selection: Selection, step: number): number;
6
+ static extendSelection(value: string, selection: Selection, step: number): Selection;
7
+ static normalizeSelection(value: string, selection: Selection): Selection;
8
+ static safeInsert(
9
+ value: string,
10
+ start: number,
11
+ end: number,
12
+ input: string,
13
+ fractionDigits: ?number,
14
+ unsigned: ?boolean,
15
+ ): {
16
+ value: string,
17
+ position: number,
18
+ } | null;
19
+ static getMaximumValidSubstring(
20
+ value: string,
21
+ start: number,
22
+ end: number,
23
+ input: string,
24
+ fractionDigits: ?number,
25
+ unsigned: ?boolean,
26
+ ): string | null;
27
+ static insert(
28
+ value: string,
29
+ start: number,
30
+ end: number,
31
+ input: string,
32
+ ): {
33
+ value: string,
34
+ position: number,
35
+ };
36
+ }
37
+
38
+ export default CurrencyInputHelper;
@@ -1,19 +1,19 @@
1
- /* @flow */
2
- declare export var CURRENCY_INPUT_ACTIONS: {|
3
- Unknown: number,
4
- Ignore: number,
5
- MoveCursorLeft: number,
6
- MoveCursorRight: number,
7
- Home: number,
8
- End: number,
9
- ExtendSelectionLeft: number,
10
- ExtendSelectionRight: number,
11
- FullSelection: number,
12
- ExtendSelectionToStart: number,
13
- ExtendSelectionToEnd: number,
14
- Backspace: number,
15
- Delete: number,
16
- Submit: number,
17
- |};
18
-
19
- declare export var extractAction: (x0: SyntheticKeyboardEvent<HTMLElement>) => number | {};
1
+ /* @flow */
2
+ declare export var CURRENCY_INPUT_ACTIONS: {|
3
+ Unknown: number,
4
+ Ignore: number,
5
+ MoveCursorLeft: number,
6
+ MoveCursorRight: number,
7
+ Home: number,
8
+ End: number,
9
+ ExtendSelectionLeft: number,
10
+ ExtendSelectionRight: number,
11
+ FullSelection: number,
12
+ ExtendSelectionToStart: number,
13
+ ExtendSelectionToEnd: number,
14
+ Backspace: number,
15
+ Delete: number,
16
+ Submit: number,
17
+ |};
18
+
19
+ declare export var extractAction: (x0: SyntheticKeyboardEvent<HTMLElement>) => number | {};
@@ -1,15 +1,15 @@
1
- /* @flow */
2
- import type { Selection } from './SelectionHelper';
3
-
4
- export type CursorMap = number[];
5
-
6
- declare class CursorHelper {
7
- static normalizePosition(map: CursorMap, position: number): number;
8
- static calculatePosition(map: CursorMap, position: number, step: number): number;
9
- static extendSelection(map: CursorMap, selection: Selection, step: number): Selection;
10
- static normalizeSelection(map: CursorMap, selection: Selection): Selection;
11
- static toRawPosition(map: CursorMap, formattedPosition: number): number;
12
- static toFormattedPosition(map: CursorMap, rawPosition: number): number;
13
- }
14
-
15
- export default CursorHelper;
1
+ /* @flow */
2
+ import type { Selection } from './SelectionHelper';
3
+
4
+ export type CursorMap = number[];
5
+
6
+ declare class CursorHelper {
7
+ static normalizePosition(map: CursorMap, position: number): number;
8
+ static calculatePosition(map: CursorMap, position: number, step: number): number;
9
+ static extendSelection(map: CursorMap, selection: Selection, step: number): Selection;
10
+ static normalizeSelection(map: CursorMap, selection: Selection): Selection;
11
+ static toRawPosition(map: CursorMap, formattedPosition: number): number;
12
+ static toFormattedPosition(map: CursorMap, rawPosition: number): number;
13
+ }
14
+
15
+ export default CursorHelper;