intelicoreact 1.6.25 → 1.6.27

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 (275) hide show
  1. package/dist/Atomic/FormElements/ActionAlert/ActionAlert.js +1 -98
  2. package/dist/Atomic/FormElements/AdvancedStatus/AdvancedStatus.js +1 -48
  3. package/dist/Atomic/FormElements/Calendar/Calendar.js +1 -249
  4. package/dist/Atomic/FormElements/Calendar/Calendar.props.js +1 -4
  5. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.js +1 -65
  6. package/dist/Atomic/FormElements/CheckboxesLine/CheckboxesLine.js +1 -52
  7. package/dist/Atomic/FormElements/Datepicker/Datepicker.js +1 -424
  8. package/dist/Atomic/FormElements/Datepicker/Datepicker.props.js +1 -4
  9. package/dist/Atomic/FormElements/Datepicker/components/DatepickerCalendar.js +1 -173
  10. package/dist/Atomic/FormElements/Datepicker/components/DatepickerCalendar.props.js +1 -4
  11. package/dist/Atomic/FormElements/Dropdown/Dropdown.d.ts +5 -0
  12. package/dist/Atomic/FormElements/Dropdown/Dropdown.js +1 -735
  13. package/dist/Atomic/FormElements/Dropdown/Dropdown.js.map +1 -0
  14. package/dist/Atomic/FormElements/Dropdown/components/DropdownLoader.js +1 -20
  15. package/dist/Atomic/FormElements/DropdownLiveSearch/DropdownLiveSearch.js +1 -529
  16. package/dist/Atomic/FormElements/FileLoader/FileLoader.js +1 -94
  17. package/dist/Atomic/FormElements/FileLoader/partial/LoadZone.js +1 -105
  18. package/dist/Atomic/FormElements/FileLoader/partial/LoadedContent.js +1 -67
  19. package/dist/Atomic/FormElements/FileLoaderDescription/FileLoaderDescription.js +1 -247
  20. package/dist/Atomic/FormElements/FileLoaderLocal/FileLoaderLocal.js +1 -160
  21. package/dist/Atomic/FormElements/FileLoaderLocalGroup/FileLoaderLocalGroup.js +1 -193
  22. package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN.js +1 -135
  23. package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN_old.js +1 -116
  24. package/dist/Atomic/FormElements/Input/Input.js +1 -467
  25. package/dist/Atomic/FormElements/InputCalendar/InputCalendar.js +1 -161
  26. package/dist/Atomic/FormElements/InputColor/InputColor.js +1 -64
  27. package/dist/Atomic/FormElements/InputCurrency/InputCurrency.js +1 -200
  28. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.js +1 -354
  29. package/dist/Atomic/FormElements/InputDateRange/components/DateInput.js +1 -71
  30. package/dist/Atomic/FormElements/InputDateRange/components/Datepicker.js +1 -693
  31. package/dist/Atomic/FormElements/InputDateRange/components/OpenedPart.js +1 -254
  32. package/dist/Atomic/FormElements/InputDateRange/components/SelectItem.js +1 -32
  33. package/dist/Atomic/FormElements/InputDateRange/dependencies.js +1 -200
  34. package/dist/Atomic/FormElements/InputLink/InputLink.js +1 -99
  35. package/dist/Atomic/FormElements/InputMask/InputCarretPosition.js +1 -37
  36. package/dist/Atomic/FormElements/InputMask/InputMask.js +1 -1214
  37. package/dist/Atomic/FormElements/InputMask/config.js +1 -15
  38. package/dist/Atomic/FormElements/InputMask/functions.js +1 -58
  39. package/dist/Atomic/FormElements/InputMask2/InputMask2.js +1 -674
  40. package/dist/Atomic/FormElements/InputMask2/config.js +1 -15
  41. package/dist/Atomic/FormElements/InputMask2/functions.js +1 -58
  42. package/dist/Atomic/FormElements/InputMask3/InputMask3.js +1 -766
  43. package/dist/Atomic/FormElements/InputMask3/config.js +1 -15
  44. package/dist/Atomic/FormElements/InputMask3/functions.js +1 -58
  45. package/dist/Atomic/FormElements/InputWithAction/InputWithAction.js +1 -114
  46. package/dist/Atomic/FormElements/InputsRow/InputsRow.js +1 -140
  47. package/dist/Atomic/FormElements/Label/Label.js +1 -87
  48. package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.js +1 -506
  49. package/dist/Atomic/FormElements/MultiSelect/MultiSelect.js +1 -45
  50. package/dist/Atomic/FormElements/NumericInput/NumericInput.js +1 -331
  51. package/dist/Atomic/FormElements/RadioGroup/RadioGroup.js +1 -66
  52. package/dist/Atomic/FormElements/RadioGroupWithInput/RadioGroupWithInput.js +1 -80
  53. package/dist/Atomic/FormElements/RadioInput/RadioInput.js +1 -57
  54. package/dist/Atomic/FormElements/RadioRowSwitcher/RadioRowSwitcher.js +1 -54
  55. package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.js +1 -183
  56. package/dist/Atomic/FormElements/RangeInputs/RangeInputs.js +1 -222
  57. package/dist/Atomic/FormElements/RangeList/RangeList.js +1 -175
  58. package/dist/Atomic/FormElements/RangeList/partial/RangeListRow.js +1 -43
  59. package/dist/Atomic/FormElements/RangeSlider/RangeSlider.js +1 -443
  60. package/dist/Atomic/FormElements/RangeSlider2/RangeSlider2.js +1 -858
  61. package/dist/Atomic/FormElements/SwitchableRow/SwitchableRow.js +1 -39
  62. package/dist/Atomic/FormElements/Switcher/Switcher.js +1 -59
  63. package/dist/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.js +1 -50
  64. package/dist/Atomic/FormElements/SwitcherHide/SwitcherHide.js +1 -44
  65. package/dist/Atomic/FormElements/SwitcherRadio/SwitcherRadio.js +1 -100
  66. package/dist/Atomic/FormElements/SwitcherRange/SwitcherRange.js +1 -52
  67. package/dist/Atomic/FormElements/SwitcherRangeList/SwitcherRangeList.js +1 -64
  68. package/dist/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.js +1 -170
  69. package/dist/Atomic/FormElements/SwitcherTagsDropdown/partial/States.js +1 -202
  70. package/dist/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.js +1 -67
  71. package/dist/Atomic/FormElements/TagListToDropdown/TagListToDropdown.js +1 -115
  72. package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.js +1 -1110
  73. package/dist/Atomic/FormElements/Text/Text.js +1 -125
  74. package/dist/Atomic/FormElements/TextSwitcher/TextSwitcher.js +1 -49
  75. package/dist/Atomic/FormElements/Textarea/Textarea.js +1 -80
  76. package/dist/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.js +1 -176
  77. package/dist/Atomic/FormElements/TieredCheckboxes/partial/AccordionWithCheckbox.js +1 -62
  78. package/dist/Atomic/FormElements/TimeRange/TimeRange.js +1 -119
  79. package/dist/Atomic/FormElements/UserContacts/UserContacts.js +1 -188
  80. package/dist/Atomic/FormElements/VariantsListRadio/VariantsListRadio.js +1 -83
  81. package/dist/Atomic/FormElements/VariantsListRadio/partials/VariantsListRadioItem.js +1 -82
  82. package/dist/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.js +1 -101
  83. package/dist/Atomic/FormElements/WidgetPseudoTable/partial/constructor.js +1 -29
  84. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.js +1 -113
  85. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/partial/constructor.js +1 -30
  86. package/dist/Atomic/Layout/Header/Header.js +1 -85
  87. package/dist/Atomic/Layout/Spinner/Spinner.js +1 -44
  88. package/dist/Atomic/UI/Accordion/Accordion.js +1 -108
  89. package/dist/Atomic/UI/Accordion/AccordionItem.js +1 -176
  90. package/dist/Atomic/UI/AccordionTable/AccordionTable.js +1 -238
  91. package/dist/Atomic/UI/AccordionText/AccordionText.js +1 -69
  92. package/dist/Atomic/UI/AdvancedTag/AdvTag.js +1 -207
  93. package/dist/Atomic/UI/AdvancedTag/AdvancedTags.js +1 -56
  94. package/dist/Atomic/UI/Alert/Alert.js +1 -72
  95. package/dist/Atomic/UI/Arrow/Arrow.js +1 -132
  96. package/dist/Atomic/UI/Box/Box.js +1 -52
  97. package/dist/Atomic/UI/Button/Button.js +1 -47
  98. package/dist/Atomic/UI/ButtonsBar/ButtonsBar.js +1 -72
  99. package/dist/Atomic/UI/Chart/Chart.js +1 -172
  100. package/dist/Atomic/UI/Chart/partial/Chart.constants.js +1 -95
  101. package/dist/Atomic/UI/Chart/partial/ChartTypeSwitcherIcon/ChartTypeSwitcherIcon.js +1 -80
  102. package/dist/Atomic/UI/Chart/partial/datasetSetters.js +1 -188
  103. package/dist/Atomic/UI/Chart/partial/optionsConstructor.js +1 -335
  104. package/dist/Atomic/UI/Chart/partial/optionsSetters.js +1 -43
  105. package/dist/Atomic/UI/Chart/partial/utils.js +1 -60
  106. package/dist/Atomic/UI/CircleProgressBar/CircleProgressBar.js +1 -109
  107. package/dist/Atomic/UI/DateTime/DateTime.js +1 -57
  108. package/dist/Atomic/UI/DebugContainer/DebugContainer.js +1 -44
  109. package/dist/Atomic/UI/DebugContainer/useDebugContainer.js +1 -15
  110. package/dist/Atomic/UI/DoubleString/DoubleString.js +1 -102
  111. package/dist/Atomic/UI/DoubleString/DoubleString.scss +8 -1
  112. package/dist/Atomic/UI/DynamicIcon/DynamicIcon.js +1 -70
  113. package/dist/Atomic/UI/ExampleChartIntegration/ExampleChartIntegration.js +1 -221
  114. package/dist/Atomic/UI/ExampleChartIntegration/partial/utils.js +1 -106
  115. package/dist/Atomic/UI/Hint/Hint.js +1 -256
  116. package/dist/Atomic/UI/Hint/partials/_utils.js +1 -64
  117. package/dist/Atomic/UI/Modal/Modal.js +1 -179
  118. package/dist/Atomic/UI/Modal/ModalHOC.js +1 -97
  119. package/dist/Atomic/UI/Modal/partials/ModalFooter.js +1 -71
  120. package/dist/Atomic/UI/Modal/partials/ModalTitle.js +1 -110
  121. package/dist/Atomic/UI/Modal/partials/useMobileModal.js +1 -192
  122. package/dist/Atomic/UI/MonoAccordion/MonoAccordion._test.js +1 -75
  123. package/dist/Atomic/UI/MonoAccordion/MonoAccordion.js +1 -80
  124. package/dist/Atomic/UI/NavLine/NavLine.js +1 -317
  125. package/dist/Atomic/UI/PageTitle/PageTitle.js +1 -77
  126. package/dist/Atomic/UI/PieChart/PieChart.js +1 -42
  127. package/dist/Atomic/UI/Price/Price.js +1 -31
  128. package/dist/Atomic/UI/PriceRange/PriceRange.js +1 -44
  129. package/dist/Atomic/UI/ProgressLine/ProgressLine.js +1 -98
  130. package/dist/Atomic/UI/Status/Status.js +1 -67
  131. package/dist/Atomic/UI/Table/Partials/TdCell.js +1 -87
  132. package/dist/Atomic/UI/Table/Partials/TdHeader.js +1 -38
  133. package/dist/Atomic/UI/Table/Partials/TdRow.js +1 -99
  134. package/dist/Atomic/UI/Table/Partials/TdTitle.js +1 -52
  135. package/dist/Atomic/UI/Table/Table.js +1 -63
  136. package/dist/Atomic/UI/Table/TdTypes/TdActions.js +1 -80
  137. package/dist/Atomic/UI/Table/TdTypes/TdPriority.js +1 -28
  138. package/dist/Atomic/UI/Table/TdTypes/TdRange.js +1 -13
  139. package/dist/Atomic/UI/Table/TdTypes/TdWeight.js +1 -53
  140. package/dist/Atomic/UI/Tag/Tag.js +1 -167
  141. package/dist/Atomic/UI/TagList/TagList.js +1 -251
  142. package/dist/Atomic/UI/UserBox/UserBox.js +1 -86
  143. package/dist/Atomic/UI/WizardStepper/constructor.js +1 -84
  144. package/dist/Atomic/UI/WizardStepper/index.js +1 -3
  145. package/dist/Atomic/UI/WizardStepper/ui/StateIcon/StateIcon.js +1 -37
  146. package/dist/Atomic/UI/WizardStepper/ui/StateIcon/index.js +1 -3
  147. package/dist/Atomic/UI/WizardStepper/ui/StepRow/StepRow.js +1 -61
  148. package/dist/Atomic/UI/WizardStepper/ui/StepRow/index.js +1 -3
  149. package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/StepWrapper.js +1 -39
  150. package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/index.js +1 -3
  151. package/dist/Atomic/UI/WizardStepper/ui/icons.js +1 -49
  152. package/dist/Atomic/UI/WizardStepper/ui/index.js +1 -3
  153. package/dist/Classes/AbortableFetch.js +1 -454
  154. package/dist/Classes/AnimatedHandler.js +1 -47
  155. package/dist/Classes/RESTAPI/index.js +1 -228
  156. package/dist/Classes/RESTAPI/partials/AbortableFetch.js +1 -457
  157. package/dist/Classes/RESTAPI/partials/ApiBase.js +1 -48
  158. package/dist/Classes/RESTAPI/partials/ApiRequestCreators.js +1 -112
  159. package/dist/Classes/RESTAPI/partials/ApiUtils.js +1 -189
  160. package/dist/Classes/RESTAPI/partials/CredentialsProcessing.js +1 -252
  161. package/dist/Classes/RESTAPI/partials/Utils.js +1 -92
  162. package/dist/Classes/RESTAPI/partials/_outerDependencies.js +1 -3
  163. package/dist/Classes/RESTAPI/partials/_utils.js +1 -197
  164. package/dist/Constants/index.constants.js +1 -78
  165. package/dist/Functions/Portal.js +1 -22
  166. package/dist/Functions/customEventListener.js +1 -96
  167. package/dist/Functions/dateTime.js +1 -149
  168. package/dist/Functions/fieldValueFormatters.js +1 -405
  169. package/dist/Functions/guards/assertions.js +1 -294
  170. package/dist/Functions/guards/safeValue.js +1 -75
  171. package/dist/Functions/guards/typeGuards.js +1 -373
  172. package/dist/Functions/hooks/useFormFieldsChangesManager.js +1 -95
  173. package/dist/Functions/locale/createTranslator.js +1 -32
  174. package/dist/Functions/operations.js +1 -130
  175. package/dist/Functions/presets/inputMaskPresets.js +1 -170
  176. package/dist/Functions/presets/inputPresets.js +1 -60
  177. package/dist/Functions/presets/mobileKeyboardTypesPresets.js +1 -45
  178. package/dist/Functions/schemas.js +1 -31
  179. package/dist/Functions/useBodyScrollLock.js +1 -17
  180. package/dist/Functions/useClickOutside.js +1 -15
  181. package/dist/Functions/useDebounce.js +1 -17
  182. package/dist/Functions/useFieldFocus.js +1 -84
  183. package/dist/Functions/useFormTools/form-drivers/ArrayWithObjects.js +1 -39
  184. package/dist/Functions/useFormTools/form-drivers/ObjectWithIterableObjects.js +1 -159
  185. package/dist/Functions/useFormTools/form-drivers/ObjectWithNamedKeyObjects.js +1 -78
  186. package/dist/Functions/useFormTools/functions/General.js +1 -134
  187. package/dist/Functions/useFormTools/functions/RenderFields.js +1 -111
  188. package/dist/Functions/useFormTools/functions/usePrevious.js +1 -12
  189. package/dist/Functions/useFormTools/index.js +1 -778
  190. package/dist/Functions/useInputHighlightError.js +1 -67
  191. package/dist/Functions/useIsMobile/useIsMobile.js +1 -33
  192. package/dist/Functions/useKeyPress/useHandleKeyPress.js +1 -52
  193. package/dist/Functions/useKeyPress/useKeyPress.js +1 -52
  194. package/dist/Functions/useLocalStorage.js +1 -34
  195. package/dist/Functions/useLocationParams.js +1 -27
  196. package/dist/Functions/useMediaQuery.js +1 -17
  197. package/dist/Functions/useMetaInfo.js +1 -43
  198. package/dist/Functions/useMouseUpOutside.js +1 -16
  199. package/dist/Functions/useOnlineStatus.js +1 -29
  200. package/dist/Functions/usePasswordChecker.js +1 -110
  201. package/dist/Functions/usePrevious.js +1 -12
  202. package/dist/Functions/useResize.js +1 -31
  203. package/dist/Functions/useScrollTo.js +1 -17
  204. package/dist/Functions/useToggle.js +1 -17
  205. package/dist/Functions/utils.js +1 -522
  206. package/dist/Langs.js +1 -168
  207. package/dist/Molecular/CustomIcons/components/AffiliateNetworks.js +1 -21
  208. package/dist/Molecular/CustomIcons/components/AlertCircle.js +1 -23
  209. package/dist/Molecular/CustomIcons/components/AppStore.js +1 -29
  210. package/dist/Molecular/CustomIcons/components/Arrow.js +1 -32
  211. package/dist/Molecular/CustomIcons/components/ArrowDown.js +1 -17
  212. package/dist/Molecular/CustomIcons/components/ArrowLeft.js +1 -22
  213. package/dist/Molecular/CustomIcons/components/ArrowRight.js +1 -22
  214. package/dist/Molecular/CustomIcons/components/ArrowUp.js +1 -17
  215. package/dist/Molecular/CustomIcons/components/Bell.js +1 -15
  216. package/dist/Molecular/CustomIcons/components/Button.js +1 -12
  217. package/dist/Molecular/CustomIcons/components/Campaigns.js +1 -16
  218. package/dist/Molecular/CustomIcons/components/Check.js +1 -14
  219. package/dist/Molecular/CustomIcons/components/Check2.js +1 -12
  220. package/dist/Molecular/CustomIcons/components/ChevronDown.js +1 -12
  221. package/dist/Molecular/CustomIcons/components/ChevronDownDisabled.js +1 -11
  222. package/dist/Molecular/CustomIcons/components/ChevronLeft.js +1 -11
  223. package/dist/Molecular/CustomIcons/components/ChevronRight.js +1 -11
  224. package/dist/Molecular/CustomIcons/components/ChevronUp.js +1 -11
  225. package/dist/Molecular/CustomIcons/components/ChevronUpDown.js +1 -27
  226. package/dist/Molecular/CustomIcons/components/Close.js +1 -14
  227. package/dist/Molecular/CustomIcons/components/ColumnsOrder.js +1 -17
  228. package/dist/Molecular/CustomIcons/components/Delete.js +1 -16
  229. package/dist/Molecular/CustomIcons/components/Edit.js +1 -15
  230. package/dist/Molecular/CustomIcons/components/Email.js +1 -31
  231. package/dist/Molecular/CustomIcons/components/FinturfLogo.js +1 -18
  232. package/dist/Molecular/CustomIcons/components/FinturfLogo2.js +1 -35
  233. package/dist/Molecular/CustomIcons/components/Flows.js +1 -15
  234. package/dist/Molecular/CustomIcons/components/Gift.js +1 -25
  235. package/dist/Molecular/CustomIcons/components/GoogleAuth.js +1 -29
  236. package/dist/Molecular/CustomIcons/components/GooglePlay.js +1 -29
  237. package/dist/Molecular/CustomIcons/components/HelpCircle.js +1 -19
  238. package/dist/Molecular/CustomIcons/components/HelpCircle2.js +1 -20
  239. package/dist/Molecular/CustomIcons/components/HelpCircleFilled.js +1 -19
  240. package/dist/Molecular/CustomIcons/components/Home.js +1 -16
  241. package/dist/Molecular/CustomIcons/components/Home2.js +1 -22
  242. package/dist/Molecular/CustomIcons/components/Key.js +1 -23
  243. package/dist/Molecular/CustomIcons/components/Landers.js +1 -20
  244. package/dist/Molecular/CustomIcons/components/Lock.js +1 -15
  245. package/dist/Molecular/CustomIcons/components/Mail.js +1 -26
  246. package/dist/Molecular/CustomIcons/components/Mastercard.js +1 -73
  247. package/dist/Molecular/CustomIcons/components/Minus.js +1 -25
  248. package/dist/Molecular/CustomIcons/components/Offers.js +1 -16
  249. package/dist/Molecular/CustomIcons/components/Pause.js +1 -28
  250. package/dist/Molecular/CustomIcons/components/PayPal.js +1 -41
  251. package/dist/Molecular/CustomIcons/components/PayPalLightLarge.js +1 -28
  252. package/dist/Molecular/CustomIcons/components/Phone.js +1 -30
  253. package/dist/Molecular/CustomIcons/components/Play.js +1 -25
  254. package/dist/Molecular/CustomIcons/components/Plus.js +1 -25
  255. package/dist/Molecular/CustomIcons/components/Profile.js +1 -16
  256. package/dist/Molecular/CustomIcons/components/QRCode.js +1 -29
  257. package/dist/Molecular/CustomIcons/components/Rectangle.js +1 -12
  258. package/dist/Molecular/CustomIcons/components/Revert.js +1 -13
  259. package/dist/Molecular/CustomIcons/components/Star.js +1 -14
  260. package/dist/Molecular/CustomIcons/components/Star2.js +1 -16
  261. package/dist/Molecular/CustomIcons/components/TrafficSources.js +1 -14
  262. package/dist/Molecular/CustomIcons/components/Trash.js +1 -15
  263. package/dist/Molecular/CustomIcons/components/TrashRed.js +1 -15
  264. package/dist/Molecular/CustomIcons/components/Triggers.js +1 -15
  265. package/dist/Molecular/CustomIcons/components/User.js +1 -25
  266. package/dist/Molecular/CustomIcons/components/Visa.js +1 -31
  267. package/dist/Molecular/CustomIcons/components/X.js +1 -12
  268. package/dist/Molecular/CustomIcons/index.js +1 -61
  269. package/dist/Molecular/FormElement/FormElement.js +1 -54
  270. package/dist/Molecular/FormWithDependOn/FormWithDependOn.js +1 -184
  271. package/dist/Molecular/FormWithDependOn/partials/_utils.js +1 -53
  272. package/dist/Molecular/InputAddress/InputAddress.js +1 -626
  273. package/dist/Molecular/InputPassword/InputPassword.js +1 -48
  274. package/dist/index.js +1 -104
  275. package/package.json +1 -1
@@ -1,626 +1 @@
1
- import React, { useEffect, useMemo, useRef, useState } from "react";
2
-
3
- import cn from "classnames";
4
- import { AlertTriangle, X } from "react-feather";
5
-
6
- import Input from "../../Atomic/FormElements/Input/Input";
7
- import Spinner from "../../Atomic/Layout/Spinner/Spinner";
8
- import Hint from "../../Atomic/UI/Hint/Hint";
9
- import useIsMobile from "../../Functions/useIsMobile/useIsMobile";
10
- import { compare, getIsOnlyAnObject } from "../../Functions/utils";
11
-
12
- import "./InputAddress.scss";
13
-
14
- const DEFAULT_HINT_MESSAGE =
15
- "Select the correct address from the list of suggestions (must contains house number and street name)";
16
-
17
- const RC = "input-address";
18
-
19
- // ? Если равны - true
20
- const compareValues = (val1, val2) => {
21
- return (
22
- typeof val1 === typeof val2 &&
23
- (getIsOnlyAnObject(val1) ? compare(val1, val2) : val1 === val2)
24
- );
25
- };
26
-
27
- const throttle = (fn, ms) => {
28
- let id = null;
29
- return (...args) => {
30
- if (id) clearTimeout(id);
31
-
32
- id = setTimeout(() => {
33
- fn(...args);
34
- }, ms);
35
- };
36
- };
37
-
38
- // Отдает true если value валидное НЕ нулевое число
39
- const getIsValidNumber = (value) =>
40
- Boolean(value) && typeof value === "number" && !Number.isNaN(value);
41
-
42
- const InputAddress = ({
43
- label,
44
- className = "",
45
- isClearable = true,
46
- isKeyboardControlled = true,
47
- fieldKey = "",
48
- testId = "",
49
- throttle: throttleTime = 500, // ms
50
- additionalThrottleTimeForListingRequest = 0, // ms
51
- loader = "",
52
- noItemsMessage = "",
53
- error,
54
- value = "",
55
- onChange = () => {},
56
- onChangeValueTransformer,
57
- disabled,
58
- isDisabled,
59
-
60
- getListItems = () => {},
61
- clarifyAddressInfo, // ! Не делать дефолтного значения! Это и метод и флаг
62
-
63
- noValidate = false,
64
-
65
- renderSelectedItem,
66
- renderListItem,
67
- renderHintMessage,
68
-
69
- attributesOfNativeInput,
70
- }) => {
71
- const { isMobile } = useIsMobile();
72
-
73
- const inputRef = useRef(null);
74
- const listRef = useRef(null);
75
- const listOverlayRef = useRef(null);
76
- const listWrapperRef = useRef(null);
77
- const listHeaderRef = useRef(null);
78
- const previousValueRef = useRef(value);
79
-
80
- const [isValueInited, setIsValueInited] = useState(false);
81
-
82
- const [isScrollableList, setIsScrollableList] = useState(null);
83
- const [scrollTop, setScrollTop] = useState(0);
84
- const [scrollHeight, setScrollHeight] = useState(1);
85
-
86
- const [innerValue, setInnerValue] = useState(value);
87
-
88
- const [tempInnerValue, setTempInnerValue] = useState(null);
89
- const [tempValue, setTempValue] = useState(null);
90
-
91
- const [listItems, setListItems] = useState([]);
92
- const [isLoading, setIsLoading] = useState(false);
93
- const [isListLoading, setIsListLoading] = useState(false);
94
-
95
- const [hightlightedIndex, setHightlightedIndex] = useState(null);
96
-
97
- const [isFocused, setIsFocused] = useState(false);
98
- const [isListVisible, setIsListVisible] = useState(false);
99
-
100
- const isWrongAddress = useMemo(() => {
101
- if (noValidate) return false;
102
-
103
- if (innerValue === "") return false;
104
- // eslint-disable-next-line no-prototype-builtins
105
- if (
106
- !innerValue?.hasOwnProperty("streetNumber") ||
107
- !innerValue?.streetNumber
108
- )
109
- return true;
110
-
111
- // eslint-disable-next-line no-prototype-builtins
112
- if (!innerValue?.hasOwnProperty("street") || !innerValue?.street?.fullName)
113
- return true;
114
-
115
- return false;
116
- }, [innerValue]);
117
-
118
- const setItemAsInnerValue = (e, item) => {
119
- if (e instanceof Event) {
120
- e.preventDefault();
121
- e.stopPropagation();
122
- }
123
-
124
- setTimeout(() => {
125
- setInnerValue(item);
126
-
127
- if (isMobile) {
128
- setIsListVisible(false);
129
- }
130
- }, 0);
131
- };
132
-
133
- // ? Базовый метод получения списка вариантов адреса
134
- const getAddressVariants = useMemo(
135
- () => (innerValue) =>
136
- getListItems(innerValue)
137
- ?.then(setListItems)
138
- .finally(() => setIsListLoading(false)),
139
- [getListItems],
140
- );
141
-
142
- // ? Метод получения списка вариантов адреса с тротлингом (основным и, если нужно, дополнительным)
143
- // ? Без useMemo работать НЕ будет (т.к. на каждом перерендере будет создаваться новая ф-я и будет теряться замкнутая переменная id из throttle)
144
- const getAddressVariantsWithThrottling = useMemo(() => {
145
- const execute = getIsValidNumber(additionalThrottleTimeForListingRequest)
146
- ? throttle(getAddressVariants, additionalThrottleTimeForListingRequest)
147
- : getAddressVariants;
148
-
149
- return getIsValidNumber(throttleTime)
150
- ? throttle(execute, throttleTime)
151
- : execute;
152
- }, [
153
- getAddressVariants,
154
- additionalThrottleTimeForListingRequest,
155
- throttleTime,
156
- ]);
157
-
158
- // ? Итоговый "получатель" списка вариантов адресов
159
- const getAddressVariantsList = () => {
160
- if (!innerValue?.length) return null;
161
-
162
- // ? Вообще с учетом надпись "Loading" в списке вариантов включается в этом месте (т.е. сразу при начале набора),
163
- // ? то, наверное, можно было НЕ мутить с дополнительным тротлингом )).
164
- // ? Наверное, можно было увеличить время первичного тротлинга и, наверное, работало бы так же ))
165
- // ? НО, раз уже сделал )) оставлю, может будет в будущем полезно )
166
- setIsListLoading(true);
167
- getAddressVariantsWithThrottling(innerValue);
168
-
169
- return null;
170
- };
171
-
172
- const onClearClick = (e) => {
173
- e.preventDefault();
174
- e.stopPropagation();
175
-
176
- if (!isMobile) {
177
- setIsListVisible(false);
178
- }
179
-
180
- setInnerValue("");
181
-
182
- inputRef?.current?.focus();
183
- setTimeout(() => setIsFocused(true), 0);
184
- };
185
-
186
- const onOverlayClick = (e) => {
187
- if (e.target === listOverlayRef?.current) {
188
- e.stopPropagation();
189
- e.preventDefault();
190
- setIsListVisible(false);
191
- setInnerValue(tempInnerValue);
192
- onChange(
193
- typeof innerValue === "string" ||
194
- !onChangeValueTransformer ||
195
- typeof onChangeValueTransformer !== "function"
196
- ? innerValue
197
- : onChangeValueTransformer(innerValue),
198
- );
199
- }
200
- };
201
-
202
- const onKeyDown = (keyCode) => {
203
- if (!isListVisible || !isKeyboardControlled) return false;
204
-
205
- if (keyCode === 13) {
206
- // Enter Controller
207
- setItemAsInnerValue(null, listItems[hightlightedIndex]);
208
- setHightlightedIndex(null);
209
- inputRef?.current?.blur();
210
- } else {
211
- let newHightlightedIndex = null;
212
- const listItemsElements = document.getElementsByClassName(
213
- "input-address__list--item",
214
- );
215
-
216
- const listHeight = listRef?.current?.getBoundingClientRect()?.height;
217
- const listScrollTop = listRef?.current?.scrollTop || 0;
218
- const lastItemIndex = parseInt(listItems?.length, 10) - 1;
219
-
220
- /** Arrows Controllers **/
221
- if (keyCode === 40) {
222
- // Down Key Controller
223
- if (hightlightedIndex === null || hightlightedIndex === lastItemIndex) {
224
- newHightlightedIndex = 0;
225
- } else if (hightlightedIndex + 1 < listItems?.length) {
226
- newHightlightedIndex = hightlightedIndex + 1;
227
- }
228
- } else if (keyCode === 38) {
229
- // Up Key Controller
230
- if (hightlightedIndex === null || hightlightedIndex === 0) {
231
- newHightlightedIndex = lastItemIndex;
232
- } else if (hightlightedIndex - 1 >= 0) {
233
- newHightlightedIndex = hightlightedIndex - 1;
234
- }
235
- }
236
-
237
- // Scroll to Element
238
- const newHightlightedElement = listItemsElements[newHightlightedIndex];
239
- const newHightlightedElementHeight =
240
- newHightlightedElement?.getBoundingClientRect()?.height;
241
-
242
- const newHightlightedElementTopInList = newHightlightedElement?.offsetTop;
243
-
244
- if (
245
- newHightlightedElementTopInList + newHightlightedElementHeight >
246
- listScrollTop + listHeight
247
- ) {
248
- if (
249
- Math.abs(
250
- newHightlightedElementTopInList +
251
- newHightlightedElementHeight -
252
- (listScrollTop + listHeight),
253
- ) <= newHightlightedElementHeight
254
- ) {
255
- listRef?.current?.scrollTo(
256
- 0,
257
- listScrollTop + newHightlightedElementHeight,
258
- );
259
- } else {
260
- listRef?.current?.scrollTo(0, newHightlightedElementTopInList);
261
- }
262
- } else if (newHightlightedElementTopInList < listScrollTop) {
263
- if (
264
- Math.abs(newHightlightedElementTopInList - listScrollTop) <
265
- newHightlightedElementHeight
266
- ) {
267
- listRef?.current?.scrollTo(
268
- 0,
269
- listScrollTop - newHightlightedElementHeight,
270
- );
271
- } else {
272
- listRef?.current?.scrollTo(0, newHightlightedElementTopInList);
273
- }
274
- }
275
-
276
- if (!isMobile) setHightlightedIndex(newHightlightedIndex);
277
- }
278
- };
279
-
280
- const getHintMessage = () => {
281
- if (!renderHintMessage || typeof renderHintMessage !== "function")
282
- return DEFAULT_HINT_MESSAGE;
283
-
284
- return renderHintMessage(innerValue);
285
- };
286
-
287
- const getSelectedItemLabel = (value = innerValue) => {
288
- if (!value) return "";
289
- if (typeof value === "string") return value;
290
- if (typeof renderSelectedItem === "function") renderSelectedItem(value);
291
-
292
- const label =
293
- `${value?.streetNumber || ""} ${value?.street?.fullName || ""}`.trim();
294
- return !label && isLoading ? previousValueRef.current : label;
295
- };
296
-
297
- const getListItemLabel = (item) => {
298
- if (typeof item === "string") return item;
299
-
300
- if (!renderListItem || typeof renderListItem !== "function")
301
- return item?.fullPrediction;
302
-
303
- return renderListItem(item);
304
- };
305
-
306
- const setListHeight = () => {
307
- if (listWrapperRef?.current && listHeaderRef?.current && listRef.current) {
308
- const listWrapperHeight =
309
- listWrapperRef?.current?.getBoundingClientRect()?.height;
310
- const listWrapperStyles = getComputedStyle(listWrapperRef?.current);
311
-
312
- const listHeaderHeight =
313
- listHeaderRef?.current?.getBoundingClientRect()?.height;
314
-
315
- const listHeight =
316
- listWrapperHeight -
317
- listHeaderHeight -
318
- parseInt(listWrapperStyles.paddingBottom, 10);
319
-
320
- listRef.current.style.maxHeight = `${listHeight}px`;
321
- }
322
- };
323
-
324
- const resetListHeight = () => {
325
- if (listRef.current) {
326
- listRef.current.style.maxHeight = `initial`;
327
- }
328
- };
329
-
330
- // ? Основной блок работы со значениями адреса
331
- // ? Не меняйте вызовы setInnerValue и onChange не разобравшись в логике вызовов
332
- useEffect(() => {
333
- // ? Исключение инициализации - равны только при первом рендере компонента,
334
- // ? т.к. рефка и стейт инициализируются верхним value
335
- if (!compareValues(innerValue, previousValueRef.current)) {
336
- const isObject = getIsOnlyAnObject(innerValue);
337
-
338
- // ? innerValue меняется либо от ручного ввода, либо от выбора из списка
339
- // ? Полная информация или нет - напрямую зависит от ответа getListItems
340
- const isFullInfo =
341
- isObject &&
342
- "streetNumber" in innerValue &&
343
- "street" in innerValue &&
344
- "city" in innerValue &&
345
- "state" in innerValue &&
346
- "country" in innerValue &&
347
- "zipCode" in innerValue;
348
-
349
- // ? Для старого эндпоинта возвращается список с полной информацией, поэтому на проектах ничего не поменяется,
350
- // ? если не менять запросник (getListItems), все будет проходить по этой if-ке или по 3-й (для строчных значений)
351
- if (isFullInfo) {
352
- onChange(innerValue);
353
- setIsLoading(false);
354
- }
355
-
356
- // ? Неполная информация может быть только в том случае, когда метод getListItems использует уже новый эндпоинт гугл-апи.
357
- // ? Предполагается, что при этом в компонент будет прокинута ф-я "уточнятель" (clarifyAddressInfo)
358
- if (isObject && !isFullInfo) {
359
- if (typeof clarifyAddressInfo === "function") {
360
- setIsLoading(true);
361
- // ? Предполагается, что clarifyAddressInfo - асинхронная ф-я, запросник уточнения опции
362
- // ? Никаких await-ов НЕ нужно (тем более что в useEffect и нельзя для нового React),
363
- // ? промис "выплюнется в пустоту", но НЕ будет отчищен до резолва, а useEffect (и итерация рендера в целом) при этом будет закончен(а)
364
- clarifyAddressInfo(innerValue)?.then?.((res) => {
365
- if (res) setInnerValue(res);
366
- else {
367
- setInnerValue(previousValueRef.current);
368
- setTimeout(() => {
369
- inputRef.current.focus();
370
- inputRef.current.setSelectionRange(
371
- previousValueRef.current.length,
372
- previousValueRef.current.length,
373
- );
374
- }, 0);
375
- }
376
-
377
- setIsLoading(false);
378
- return res;
379
- });
380
- }
381
- // ! Если сверху поменяли эндпоинт и он выдает "облегченный листинг" (айтемы с неполной инфой),
382
- // ! и НЕ пробросили clarifyAddressInfo, то на этом кейсе велью инпута будет просто зануляться
383
- // ! (getSelectedItemLabel вернет пустую строку если вкинуть innerValue без всей инфы)
384
- else setInnerValue(getSelectedItemLabel(innerValue));
385
- }
386
-
387
- // ? Кейс для строчных значений
388
- if (!isObject) {
389
- // ? Вызываем верхний onChange если innerValue есть или если нету, но это не после логики уточнения
390
- if (innerValue || !isLoading) onChange(innerValue);
391
- // ? Если innerValue есть и еще не открыт листинг - открываем
392
- if (innerValue && !isListVisible) setIsListVisible(true);
393
- // ? Если инпут сфокусирован и значение есть - запрашиваем список вариантов
394
- if (isFocused && Boolean(innerValue)) getAddressVariantsList();
395
- }
396
- }
397
- }, [innerValue]);
398
-
399
- useEffect(() => {
400
- if (!isFocused && !isMobile) {
401
- setIsListVisible(false);
402
- setHightlightedIndex(null);
403
- }
404
- }, [isFocused]);
405
-
406
- useEffect(() => {
407
- if (!isListVisible) {
408
- setListItems([]);
409
- resetListHeight();
410
- }
411
-
412
- if (isMobile && isListVisible) {
413
- setTempInnerValue(innerValue);
414
- setListHeight();
415
- }
416
- }, [isListVisible]);
417
-
418
- useEffect(() => {
419
- // ? учет изменения value сверху (верхние переназначения велью)
420
- if (!compareValues(value, innerValue)) setInnerValue(value);
421
-
422
- // ? useEffect должен быть последним, т.к. рефка меняется в рамках текущей итерации
423
- previousValueRef.current = value;
424
- }, [value]);
425
-
426
- const renderSearchableInput = () => {
427
- const inputValue = getSelectedItemLabel();
428
-
429
- return (
430
- <div className={cn("input-address__input-wrapper")}>
431
- <Input
432
- ref={inputRef}
433
- testId={`inputAddress--input--key-${testId || fieldKey}`}
434
- className={cn("input-address__input", className)}
435
- value={inputValue}
436
- onChange={setInnerValue}
437
- onFocus={(e) => {
438
- setIsFocused(true);
439
- }}
440
- onBlur={() => setIsFocused(false)}
441
- onKeyDown={onKeyDown}
442
- attributesOfNativeInput={attributesOfNativeInput}
443
- disabled={disabled || isDisabled}
444
- isDisabled={disabled || isDisabled}
445
- />
446
- {isWrongAddress && (
447
- <div
448
- className={cn("input-address__alert", {
449
- "input-address__alert--visible": !isFocused,
450
- })}
451
- >
452
- <Hint
453
- side="left"
454
- hint={getHintMessage()}
455
- icon={<AlertTriangle />}
456
- handleOpenType="hover"
457
- />
458
- </div>
459
- )}
460
- {isClearable && (!isWrongAddress || isFocused) && !(disabled || isDisabled) && (
461
- <div
462
- className={cn("input-address__clear-query", {
463
- "input-address__clear-query--input-focused": isFocused,
464
- })}
465
- >
466
- <X onClick={onClearClick} />
467
- </div>
468
- )}
469
- </div>
470
- );
471
- };
472
-
473
- const renderInput = () => {
474
- const inputValue = getSelectedItemLabel(
475
- isListVisible ? tempInnerValue : innerValue,
476
- );
477
-
478
- return (
479
- <div className={cn("input-address__input-wrapper")}>
480
- <Input
481
- testId={`inputAddress--input--key-${testId || fieldKey}`}
482
- className={cn("input-address__input", className)}
483
- value={inputValue}
484
- onChange={setInnerValue}
485
- onFocus={(e) => {
486
- setIsListVisible(true);
487
- e?.target?.blur();
488
- setTimeout(() => inputRef?.current?.focus(), 200);
489
- }}
490
- disabled={disabled || isDisabled}
491
- isDisabled={disabled || isDisabled}
492
- />
493
- </div>
494
- );
495
- };
496
-
497
- const renderLoader = () => {
498
- return (
499
- <div className="input-address__list--loader">
500
- {loader || "Loading..."}
501
- </div>
502
- );
503
- };
504
-
505
- const renderList = () => {
506
- const renderListItem = (item, i) => {
507
- return (
508
- <div
509
- key={`input-address__list-item${i}`}
510
- className={cn("input-address__list--item", {
511
- "input-address__list--item-hightlighted": i === hightlightedIndex,
512
- })}
513
- onMouseDown={(e) => setItemAsInnerValue(e, item)}
514
- >
515
- {getListItemLabel(item)}
516
- </div>
517
- );
518
- };
519
- const renderListItemCustom = () => {
520
- return (
521
- <div
522
- key={`input-address__list-item--custom`}
523
- className={cn(
524
- "input-address__list--item",
525
- "input-address__list--item-custom",
526
- )}
527
- onMouseDown={(e) => setItemAsInnerValue(e, getSelectedItemLabel())}
528
- >
529
- {getSelectedItemLabel()}
530
- <AlertTriangle />
531
- <span>Choose this only if your address is not listed below</span>
532
- </div>
533
- );
534
- };
535
- const renderNoItems = () => {
536
- return (
537
- <div className="input-address__list--no-items">
538
- {isMobile && !innerValue?.length
539
- ? "Please begin entering your address"
540
- : noItemsMessage || "No Items"}
541
- </div>
542
- );
543
- };
544
-
545
- const renderListDesktop = () => {
546
- return (
547
- <div className="input-address__list-wrapper" ref={listWrapperRef}>
548
- <div className="input-address__list" ref={listRef}>
549
- {isListLoading
550
- ? renderLoader()
551
- : listItems?.length
552
- ? listItems?.map(renderListItem)
553
- : renderNoItems()}
554
- </div>
555
- </div>
556
- );
557
- };
558
- const renderListMobile = () => {
559
- return (
560
- <div
561
- className="input-address__list-overlay"
562
- ref={listOverlayRef}
563
- onClick={onOverlayClick}
564
- >
565
- <div className="input-address__list-wrapper" ref={listWrapperRef}>
566
- {isMobile && (
567
- <div
568
- ref={listHeaderRef}
569
- className={cn(`${RC}__list-header`, {
570
- [`${RC}__list-header-with-shadow`]:
571
- isScrollableList && isMobile,
572
- [`${RC}__list-header-with-shadow-hidden`]: scrollTop === 0,
573
- })}
574
- >
575
- <div className={cn(`${RC}__list-header-row`)}>
576
- <div className={cn(`${RC}__list-label`)}>
577
- {label || "Address"}
578
- </div>
579
- <div
580
- className={cn(`${RC}__list-close-icon`)}
581
- onClick={() => setIsListVisible(false)}
582
- >
583
- <X onClick={() => setIsListVisible(false)} />
584
- </div>
585
- </div>
586
- <div className={cn(`${RC}__list-header-row`)}>
587
- {renderSearchableInput()}
588
- </div>
589
- </div>
590
- )}
591
- <div className="input-address__list" ref={listRef}>
592
- {isListLoading ? (
593
- renderLoader()
594
- ) : (
595
- <>
596
- {getSelectedItemLabel() && renderListItemCustom()}
597
- {listItems?.map(renderListItem)}
598
- {!listItems?.length &&
599
- !getSelectedItemLabel() &&
600
- renderNoItems()}
601
- </>
602
- )}
603
- </div>
604
- </div>
605
- </div>
606
- );
607
- };
608
-
609
- return isMobile ? renderListMobile() : renderListDesktop();
610
- };
611
-
612
- return (
613
- <div
614
- className={cn("input-address", {
615
- "input-address--error": error || (isWrongAddress && !isFocused),
616
- 'input-address--disabled': disabled || isDisabled,
617
- })}
618
- >
619
- {isLoading && <Spinner size="small" />}
620
- {isMobile ? renderInput() : renderSearchableInput()}
621
- {isListVisible && renderList()}
622
- </div>
623
- );
624
- };
625
-
626
- export default InputAddress;
1
+ function n(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=Array(e);t<e;t++)r[t]=n[t];return r}function e(n,e,t){return e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function t(n,e){return function(n){if(Array.isArray(n))return n}(n)||function(n,e){var t,r,i=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=i){var l=[],o=!0,u=!1;try{for(i=i.call(n);!(o=(t=i.next()).done)&&(l.push(t.value),!e||l.length!==e);o=!0);}catch(n){u=!0,r=n}finally{try{o||null==i.return||i.return()}finally{if(u)throw r}}return l}}(n,e)||i(n,e)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function r(n){return n&&"undefined"!=typeof Symbol&&n.constructor===Symbol?"symbol":typeof n}function i(e,t){if(e){if("string"==typeof e)return n(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return n(e,t)}}import{jsx as l,jsxs as o,Fragment as u}from"react/jsx-runtime";import{useEffect as s,useMemo as a,useRef as d,useState as c}from"react";import f from"classnames";import{AlertTriangle as m,X as p}from"react-feather";import v from"../../Atomic/FormElements/Input/Input";import h from"../../Atomic/Layout/Spinner/Spinner";import y from"../../Atomic/UI/Hint/Hint";import g from"../../Functions/useIsMobile/useIsMobile";import{compare as _,getIsOnlyAnObject as b}from"../../Functions/utils";import"./InputAddress.scss";var N="input-address",I=function(n,e){return(void 0===n?"undefined":r(n))===(void 0===e?"undefined":r(e))&&(b(n)?_(n,e):n===e)},w=function(e,t){var r=null;return function(){for(var l=arguments.length,o=Array(l),u=0;u<l;u++)o[u]=arguments[u];r&&clearTimeout(r),r=setTimeout(function(){e.apply(void 0,function(e){if(Array.isArray(e))return n(e)}(o)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(o)||i(o)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())},t)}},C=function(n){return!!n&&"number"==typeof n&&!Number.isNaN(n)};export default function(n){var r,i,_,S,A=n.label,T=n.className,M=void 0===T?"":T,D=n.isClearable,j=void 0===D||D,x=n.isKeyboardControlled,O=void 0===x||x,P=n.fieldKey,B=void 0===P?"":P,F=n.testId,k=void 0===F?"":F,R=n.throttle,E=void 0===R?500:R,H=n.additionalThrottleTimeForListingRequest,L=void 0===H?0:H,q=n.loader,K=void 0===q?"":q,z=n.noItemsMessage,U=void 0===z?"":z,V=n.error,$=n.value,G=void 0===$?"":$,J=n.onChange,Q=void 0===J?function(){}:J,W=n.onChangeValueTransformer,X=n.disabled,Y=n.isDisabled,Z=n.getListItems,nn=void 0===Z?function(){}:Z,ne=n.clarifyAddressInfo,nt=n.noValidate,nr=void 0!==nt&&nt,ni=n.renderSelectedItem,nl=n.renderListItem,no=n.renderHintMessage,nu=n.attributesOfNativeInput,ns=g().isMobile,na=d(null),nd=d(null),nc=d(null),nf=d(null),nm=d(null),np=d(G),nv=t(c(!1),2);nv[0],nv[1];var nh=t(c(null),2),ny=nh[0];nh[1];var ng=t(c(0),2),n_=ng[0];ng[1];var nb=t(c(1),2);nb[0],nb[1];var nN=t(c(G),2),nI=nN[0],nw=nN[1],nC=t(c(null),2),nS=nC[0],nA=nC[1],nT=t(c(null),2);nT[0],nT[1];var nM=t(c([]),2),nD=nM[0],nj=nM[1],nx=t(c(!1),2),nO=nx[0],nP=nx[1],nB=t(c(!1),2),nF=nB[0],nk=nB[1],nR=t(c(null),2),nE=nR[0],nH=nR[1],nL=t(c(!1),2),nq=nL[0],nK=nL[1],nz=t(c(!1),2),nU=nz[0],nV=nz[1],n$=a(function(){var n;return!nr&&""!==nI&&!((null==nI?void 0:nI.hasOwnProperty("streetNumber"))&&(null==nI?void 0:nI.streetNumber)&&(null==nI?void 0:nI.hasOwnProperty("street"))&&(null==nI||null==(n=nI.street)?void 0:n.fullName))},[nI]),nG=function(n,e){var t;(null!=(t=Event)&&"undefined"!=typeof Symbol&&t[Symbol.hasInstance]?!!t[Symbol.hasInstance](n):n instanceof t)&&(n.preventDefault(),n.stopPropagation()),setTimeout(function(){nw(e),ns&&nV(!1)},0)},nJ=a(function(){return function(n){var e;return null==(e=nn(n))?void 0:e.then(nj).finally(function(){return nk(!1)})}},[nn]),nQ=a(function(){var n=C(L)?w(nJ,L):nJ;return C(E)?w(n,E):n},[nJ,L,E]),nW=function(n){var e;n.preventDefault(),n.stopPropagation(),ns||nV(!1),nw(""),null==na||null==(e=na.current)||e.focus(),setTimeout(function(){return nK(!0)},0)},nX=function(n){if(!nU||!O)return!1;if(13===n){var e;nG(null,nD[nE]),nH(null),null==na||null==(e=na.current)||e.blur()}else{var t,r,i,l,o,u,s,a,d=null,c=document.getElementsByClassName("input-address__list--item"),f=null==nd||null==(r=nd.current)||null==(t=r.getBoundingClientRect())?void 0:t.height,m=(null==nd||null==(i=nd.current)?void 0:i.scrollTop)||0,p=parseInt(null==nD?void 0:nD.length,10)-1;40===n?null===nE||nE===p?d=0:nE+1<(null==nD?void 0:nD.length)&&(d=nE+1):38===n&&(null===nE||0===nE?d=p:nE-1>=0&&(d=nE-1));var v=c[d],h=null==v||null==(l=v.getBoundingClientRect())?void 0:l.height,y=null==v?void 0:v.offsetTop;y+h>m+f?Math.abs(y+h-(m+f))<=h?null==nd||null==(o=nd.current)||o.scrollTo(0,m+h):null==nd||null==(u=nd.current)||u.scrollTo(0,y):y<m&&(Math.abs(y-m)<h?null==nd||null==(s=nd.current)||s.scrollTo(0,m-h):null==nd||null==(a=nd.current)||a.scrollTo(0,y)),ns||nH(d)}},nY=function(){var n,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:nI;if(!e)return"";if("string"==typeof e)return e;"function"==typeof ni&&ni(e);var t="".concat((null==e?void 0:e.streetNumber)||""," ").concat((null==e||null==(n=e.street)?void 0:n.fullName)||"").trim();return!t&&nO?np.current:t},nZ=function(){if((null==nf?void 0:nf.current)&&(null==nm?void 0:nm.current)&&nd.current){var n,e,t,r,i=null==nf||null==(e=nf.current)||null==(n=e.getBoundingClientRect())?void 0:n.height,l=getComputedStyle(null==nf?void 0:nf.current),o=i-(null==nm||null==(r=nm.current)||null==(t=r.getBoundingClientRect())?void 0:t.height)-parseInt(l.paddingBottom,10);nd.current.style.maxHeight="".concat(o,"px")}},n0=function(){nd.current&&(nd.current.style.maxHeight="initial")};s(function(){if(!I(nI,np.current)){var n,e,t=b(nI),r=t&&"streetNumber"in nI&&"street"in nI&&"city"in nI&&"state"in nI&&"country"in nI&&"zipCode"in nI;r&&(Q(nI),nP(!1)),t&&!r&&("function"==typeof ne?(nP(!0),null==(e=ne(nI))||null==(n=e.then)||n.call(e,function(n){return n?nw(n):(nw(np.current),setTimeout(function(){na.current.focus(),na.current.setSelectionRange(np.current.length,np.current.length)},0)),nP(!1),n})):nw(nY(nI))),!t&&((nI||!nO)&&Q(nI),nI&&!nU&&nV(!0),nq&&nI&&(null==nI?void 0:nI.length)&&(nk(!0),nQ(nI)))}},[nI]),s(function(){nq||ns||(nV(!1),nH(null))},[nq]),s(function(){nU||(nj([]),n0()),ns&&nU&&(nA(nI),nZ())},[nU]),s(function(){I(G,nI)||nw(G),np.current=G},[G]);var n1=function(){var n=nY();return o("div",{className:f("input-address__input-wrapper"),children:[l(v,{ref:na,testId:"inputAddress--input--key-".concat(k||B),className:f("input-address__input",M),value:n,onChange:nw,onFocus:function(n){nK(!0)},onBlur:function(){return nK(!1)},onKeyDown:nX,attributesOfNativeInput:nu,disabled:X||Y,isDisabled:X||Y}),n$&&l("div",{className:f("input-address__alert",{"input-address__alert--visible":!nq}),children:l(y,{side:"left",hint:no&&"function"==typeof no?no(nI):"Select the correct address from the list of suggestions (must contains house number and street name)",icon:l(m,{}),handleOpenType:"hover"})}),j&&(!n$||nq)&&!(X||Y)&&l("div",{className:f("input-address__clear-query",{"input-address__clear-query--input-focused":nq}),children:l(p,{onClick:nW})})]})},n2=function(){return l("div",{className:"input-address__list--loader",children:K||"Loading..."})};return o("div",{className:f("input-address",{"input-address--error":V||n$&&!nq,"input-address--disabled":X||Y}),children:[nO&&l(h,{size:"small"}),ns?(r=nY(nU?nS:nI),l("div",{className:f("input-address__input-wrapper"),children:l(v,{testId:"inputAddress--input--key-".concat(k||B),className:f("input-address__input",M),value:r,onChange:nw,onFocus:function(n){var e;nV(!0),null==n||null==(e=n.target)||e.blur(),setTimeout(function(){var n;return null==na||null==(n=na.current)?void 0:n.focus()},200)},disabled:X||Y,isDisabled:X||Y})})):n1(),nU&&(i=function(n,e){return l("div",{className:f("input-address__list--item",{"input-address__list--item-hightlighted":e===nE}),onMouseDown:function(e){return nG(e,n)},children:"string"==typeof n?n:nl&&"function"==typeof nl?nl(n):null==n?void 0:n.fullPrediction},"input-address__list-item".concat(e))},_=function(){return l("div",{className:"input-address__list--no-items",children:!ns||(null==nI?void 0:nI.length)?U||"No Items":"Please begin entering your address"})},ns?l("div",{className:"input-address__list-overlay",ref:nc,onClick:function(n){n.target===(null==nc?void 0:nc.current)&&(n.stopPropagation(),n.preventDefault(),nV(!1),nw(nS),Q("string"!=typeof nI&&W&&"function"==typeof W?W(nI):nI))},children:o("div",{className:"input-address__list-wrapper",ref:nf,children:[ns&&o("div",{ref:nm,className:f("".concat(N,"__list-header"),(e(S={},"".concat(N,"__list-header-with-shadow"),ny&&ns),e(S,"".concat(N,"__list-header-with-shadow-hidden"),0===n_),S)),children:[o("div",{className:f("".concat(N,"__list-header-row")),children:[l("div",{className:f("".concat(N,"__list-label")),children:A||"Address"}),l("div",{className:f("".concat(N,"__list-close-icon")),onClick:function(){return nV(!1)},children:l(p,{onClick:function(){return nV(!1)}})})]}),l("div",{className:f("".concat(N,"__list-header-row")),children:n1()})]}),l("div",{className:"input-address__list",ref:nd,children:nF?n2():o(u,{children:[nY()&&o("div",{className:f("input-address__list--item","input-address__list--item-custom"),onMouseDown:function(n){return nG(n,nY())},children:[nY(),l(m,{}),l("span",{children:"Choose this only if your address is not listed below"})]},"input-address__list-item--custom"),null==nD?void 0:nD.map(i),!(null==nD?void 0:nD.length)&&!nY()&&_()]})})]})}):l("div",{className:"input-address__list-wrapper",ref:nf,children:l("div",{className:"input-address__list",ref:nd,children:nF?n2():(null==nD?void 0:nD.length)?null==nD?void 0:nD.map(i):_()})}))]})}