@redneckz/wildless-cms-uni-blocks 0.5.3 → 0.5.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (353) hide show
  1. package/README.md +10 -3
  2. package/bundle/blocks.schema.json +1 -1
  3. package/bundle/bundle.umd.js +235 -77
  4. package/bundle/bundle.umd.min.js +1 -1
  5. package/cosmos-static/icons/MapMarkerClusterIcon.svg +1 -0
  6. package/cosmos-static/icons/MapMarkerSingleIcon.svg +1 -0
  7. package/dist/ProjectSettings.d.ts +2 -0
  8. package/dist/ProjectSettings.js +3 -0
  9. package/dist/ProjectSettings.js.map +1 -1
  10. package/dist/components/Bonus/Bonus.js +1 -1
  11. package/dist/components/Bonus/Bonus.js.map +1 -1
  12. package/dist/components/Calculator/Calculator.js +1 -1
  13. package/dist/components/Calculator/Calculator.js.map +1 -1
  14. package/dist/components/ErrorBlock/ErrorBlock.js +3 -3
  15. package/dist/components/ErrorBlock/ErrorBlock.js.map +1 -1
  16. package/dist/components/ErrorBlock/ErrorBlockContent.d.ts +6 -6
  17. package/dist/components/InsuranceAmountBlock/InsuranceAmountBlockInner.js +2 -2
  18. package/dist/components/InsuranceAmountBlock/InsuranceAmountBlockInner.js.map +1 -1
  19. package/dist/components/Navigation/Navigation.js +1 -1
  20. package/dist/components/Navigation/Navigation.js.map +1 -1
  21. package/dist/components/OfficeServicesBlock/OfficeServicesBlock.js +3 -3
  22. package/dist/components/OfficeServicesBlock/OfficeServicesBlock.js.map +1 -1
  23. package/dist/components/OfficeServicesBlock/OfficeServicesBlockContent.d.ts +2 -1
  24. package/dist/components/SafeDepositRental/RegionsAndBranches.d.ts +2 -2
  25. package/dist/components/SafeDepositRental/SafeBoxCases.d.ts +1 -1
  26. package/dist/components/SafeDepositRental/SafeDepositRental.js +14 -2
  27. package/dist/components/SafeDepositRental/SafeDepositRental.js.map +1 -1
  28. package/dist/components/SafeDepositRental/SafeDepositRentalContent.d.ts +2 -17
  29. package/dist/components/SafeDepositRental/SafeDepositRentalFields.d.ts +9 -0
  30. package/dist/components/SafeDepositRental/SafeDepositRentalFields.js +21 -0
  31. package/dist/components/SafeDepositRental/SafeDepositRentalFields.js.map +1 -0
  32. package/dist/components/SafeDepositRental/SafeDepositRentalForm.d.ts +2 -0
  33. package/dist/components/SafeDepositRental/SafeDepositRentalForm.js +33 -42
  34. package/dist/components/SafeDepositRental/SafeDepositRentalForm.js.map +1 -1
  35. package/dist/components/SafeDepositRental/SafeDepositRentalTotal.d.ts +1 -1
  36. package/dist/components/SafeDepositRental/SafeDepositRentalTotal.js.map +1 -1
  37. package/dist/components/SafeDepositRental/SafeDepositRentalTypes.d.ts +10 -0
  38. package/dist/components/SafeDepositRental/SafeDepositRentalTypes.js +2 -0
  39. package/dist/components/SafeDepositRental/SafeDepositRentalTypes.js.map +1 -0
  40. package/dist/components/SafeDepositRental/WrapperSelect.js +2 -2
  41. package/dist/components/SafeDepositRental/WrapperSelect.js.map +1 -1
  42. package/dist/components/SafeDepositRental/YandexMap.d.ts +5 -0
  43. package/dist/components/SafeDepositRental/YandexMap.js +24 -0
  44. package/dist/components/SafeDepositRental/YandexMap.js.map +1 -0
  45. package/dist/components/SafeDepositRental/renderClusterer.d.ts +1 -0
  46. package/dist/components/SafeDepositRental/renderClusterer.js +37 -0
  47. package/dist/components/SafeDepositRental/renderClusterer.js.map +1 -0
  48. package/dist/components/SafeDepositRental/useGetRegions.js +1 -1
  49. package/dist/components/SafeDepositRental/useGetRegions.js.map +1 -1
  50. package/dist/components/SafeDepositRental/utils.d.ts +3 -0
  51. package/dist/components/SafeDepositRental/utils.js +15 -0
  52. package/dist/components/SafeDepositRental/utils.js.map +1 -0
  53. package/dist/hooks/useFetchSafeBoxes.d.ts +22 -0
  54. package/dist/hooks/useFetchSafeBoxes.js +17 -0
  55. package/dist/hooks/useFetchSafeBoxes.js.map +1 -0
  56. package/dist/hooks/useScript.d.ts +6 -0
  57. package/dist/hooks/useScript.js +75 -0
  58. package/dist/hooks/useScript.js.map +1 -0
  59. package/dist/icons/IconName.d.ts +6 -2
  60. package/dist/icons/IconName.js +4 -0
  61. package/dist/icons/IconName.js.map +1 -1
  62. package/dist/react/setup-fixture.js +6 -0
  63. package/dist/react/setup-fixture.js.map +1 -1
  64. package/dist/ui-kit/BenefitItem/BenefitItem.js +2 -2
  65. package/dist/ui-kit/BenefitItem/BenefitItem.js.map +1 -1
  66. package/dist/ui-kit/Button/LikeButton.js +1 -1
  67. package/dist/ui-kit/Button/LikeButton.js.map +1 -1
  68. package/dist/ui-kit/SearchBar/SearchBarInner.js +1 -1
  69. package/dist/ui-kit/SearchBar/SearchBarInner.js.map +1 -1
  70. package/dist/wlc.json +5 -0
  71. package/lib/ProjectSettings.d.ts +2 -0
  72. package/lib/ProjectSettings.js +3 -0
  73. package/lib/ProjectSettings.js.map +1 -1
  74. package/lib/common.css +1 -1
  75. package/lib/components/Bonus/Bonus.js +1 -1
  76. package/lib/components/Bonus/Bonus.js.map +1 -1
  77. package/lib/components/Calculator/Calculator.js +1 -1
  78. package/lib/components/Calculator/Calculator.js.map +1 -1
  79. package/lib/components/ErrorBlock/ErrorBlock.js +3 -3
  80. package/lib/components/ErrorBlock/ErrorBlock.js.map +1 -1
  81. package/lib/components/ErrorBlock/ErrorBlockContent.d.ts +6 -6
  82. package/lib/components/InsuranceAmountBlock/InsuranceAmountBlockInner.js +2 -2
  83. package/lib/components/InsuranceAmountBlock/InsuranceAmountBlockInner.js.map +1 -1
  84. package/lib/components/Navigation/Navigation.js +1 -1
  85. package/lib/components/Navigation/Navigation.js.map +1 -1
  86. package/lib/components/OfficeServicesBlock/OfficeServicesBlock.js +3 -3
  87. package/lib/components/OfficeServicesBlock/OfficeServicesBlock.js.map +1 -1
  88. package/lib/components/OfficeServicesBlock/OfficeServicesBlockContent.d.ts +2 -1
  89. package/lib/components/SafeDepositRental/RegionsAndBranches.d.ts +2 -2
  90. package/lib/components/SafeDepositRental/SafeBoxCases.d.ts +1 -1
  91. package/lib/components/SafeDepositRental/SafeDepositRental.js +14 -2
  92. package/lib/components/SafeDepositRental/SafeDepositRental.js.map +1 -1
  93. package/lib/components/SafeDepositRental/SafeDepositRentalContent.d.ts +2 -17
  94. package/lib/components/SafeDepositRental/SafeDepositRentalFields.d.ts +9 -0
  95. package/lib/components/SafeDepositRental/SafeDepositRentalFields.js +19 -0
  96. package/lib/components/SafeDepositRental/SafeDepositRentalFields.js.map +1 -0
  97. package/lib/components/SafeDepositRental/SafeDepositRentalForm.d.ts +2 -0
  98. package/lib/components/SafeDepositRental/SafeDepositRentalForm.js +33 -42
  99. package/lib/components/SafeDepositRental/SafeDepositRentalForm.js.map +1 -1
  100. package/lib/components/SafeDepositRental/SafeDepositRentalTotal.d.ts +1 -1
  101. package/lib/components/SafeDepositRental/SafeDepositRentalTotal.js.map +1 -1
  102. package/lib/components/SafeDepositRental/SafeDepositRentalTypes.d.ts +10 -0
  103. package/lib/components/SafeDepositRental/SafeDepositRentalTypes.js +2 -0
  104. package/lib/components/SafeDepositRental/SafeDepositRentalTypes.js.map +1 -0
  105. package/lib/components/SafeDepositRental/WrapperSelect.js +2 -2
  106. package/lib/components/SafeDepositRental/WrapperSelect.js.map +1 -1
  107. package/lib/components/SafeDepositRental/YandexMap.d.ts +5 -0
  108. package/lib/components/SafeDepositRental/YandexMap.js +22 -0
  109. package/lib/components/SafeDepositRental/YandexMap.js.map +1 -0
  110. package/lib/components/SafeDepositRental/renderClusterer.d.ts +1 -0
  111. package/lib/components/SafeDepositRental/renderClusterer.js +34 -0
  112. package/lib/components/SafeDepositRental/renderClusterer.js.map +1 -0
  113. package/lib/components/SafeDepositRental/useGetRegions.js +1 -1
  114. package/lib/components/SafeDepositRental/useGetRegions.js.map +1 -1
  115. package/lib/components/SafeDepositRental/utils.d.ts +3 -0
  116. package/lib/components/SafeDepositRental/utils.js +11 -0
  117. package/lib/components/SafeDepositRental/utils.js.map +1 -0
  118. package/lib/hooks/useFetchSafeBoxes.d.ts +22 -0
  119. package/lib/hooks/useFetchSafeBoxes.js +14 -0
  120. package/lib/hooks/useFetchSafeBoxes.js.map +1 -0
  121. package/lib/hooks/useScript.d.ts +6 -0
  122. package/lib/hooks/useScript.js +72 -0
  123. package/lib/hooks/useScript.js.map +1 -0
  124. package/lib/icons/IconName.d.ts +6 -2
  125. package/lib/icons/IconName.js +4 -0
  126. package/lib/icons/IconName.js.map +1 -1
  127. package/lib/react/setup-fixture.js +3 -0
  128. package/lib/react/setup-fixture.js.map +1 -1
  129. package/lib/ui-kit/BenefitItem/BenefitItem.js +2 -2
  130. package/lib/ui-kit/BenefitItem/BenefitItem.js.map +1 -1
  131. package/lib/ui-kit/Button/LikeButton.js +1 -1
  132. package/lib/ui-kit/Button/LikeButton.js.map +1 -1
  133. package/lib/ui-kit/SearchBar/SearchBarInner.js +1 -1
  134. package/lib/ui-kit/SearchBar/SearchBarInner.js.map +1 -1
  135. package/lib/wlc.json +5 -0
  136. package/mobile/bundle/bundle.umd.js +29 -12
  137. package/mobile/bundle/bundle.umd.min.js +1 -1
  138. package/mobile/dist/ProjectSettings.d.ts +2 -0
  139. package/mobile/dist/ProjectSettings.js +3 -0
  140. package/mobile/dist/ProjectSettings.js.map +1 -1
  141. package/mobile/dist/components/Bonus/Bonus.js +1 -1
  142. package/mobile/dist/components/Bonus/Bonus.js.map +1 -1
  143. package/mobile/dist/components/Calculator/Calculator.js +1 -1
  144. package/mobile/dist/components/Calculator/Calculator.js.map +1 -1
  145. package/mobile/dist/components/ErrorBlock/ErrorBlock.js +3 -3
  146. package/mobile/dist/components/ErrorBlock/ErrorBlock.js.map +1 -1
  147. package/mobile/dist/components/ErrorBlock/ErrorBlockContent.d.ts +6 -6
  148. package/mobile/dist/components/InsuranceAmountBlock/InsuranceAmountBlockInner.js +2 -2
  149. package/mobile/dist/components/InsuranceAmountBlock/InsuranceAmountBlockInner.js.map +1 -1
  150. package/mobile/dist/components/Navigation/Navigation.js +1 -1
  151. package/mobile/dist/components/Navigation/Navigation.js.map +1 -1
  152. package/mobile/dist/components/OfficeServicesBlock/OfficeServicesBlock.js +3 -3
  153. package/mobile/dist/components/OfficeServicesBlock/OfficeServicesBlock.js.map +1 -1
  154. package/mobile/dist/components/OfficeServicesBlock/OfficeServicesBlockContent.d.ts +2 -1
  155. package/mobile/dist/components/SafeDepositRental/RegionsAndBranches.d.ts +2 -2
  156. package/mobile/dist/components/SafeDepositRental/SafeBoxCases.d.ts +1 -1
  157. package/mobile/dist/components/SafeDepositRental/SafeDepositRental.js +14 -2
  158. package/mobile/dist/components/SafeDepositRental/SafeDepositRental.js.map +1 -1
  159. package/mobile/dist/components/SafeDepositRental/SafeDepositRentalContent.d.ts +2 -17
  160. package/mobile/dist/components/SafeDepositRental/SafeDepositRentalFields.d.ts +9 -0
  161. package/mobile/dist/components/SafeDepositRental/SafeDepositRentalFields.js +21 -0
  162. package/mobile/dist/components/SafeDepositRental/SafeDepositRentalFields.js.map +1 -0
  163. package/mobile/dist/components/SafeDepositRental/SafeDepositRentalForm.d.ts +2 -0
  164. package/mobile/dist/components/SafeDepositRental/SafeDepositRentalForm.js +33 -42
  165. package/mobile/dist/components/SafeDepositRental/SafeDepositRentalForm.js.map +1 -1
  166. package/mobile/dist/components/SafeDepositRental/SafeDepositRentalTotal.d.ts +1 -1
  167. package/mobile/dist/components/SafeDepositRental/SafeDepositRentalTotal.js.map +1 -1
  168. package/mobile/dist/components/SafeDepositRental/SafeDepositRentalTypes.d.ts +10 -0
  169. package/mobile/dist/components/SafeDepositRental/SafeDepositRentalTypes.js +2 -0
  170. package/mobile/dist/components/SafeDepositRental/SafeDepositRentalTypes.js.map +1 -0
  171. package/mobile/dist/components/SafeDepositRental/WrapperSelect.js +2 -2
  172. package/mobile/dist/components/SafeDepositRental/WrapperSelect.js.map +1 -1
  173. package/mobile/dist/components/SafeDepositRental/YandexMap.d.ts +5 -0
  174. package/mobile/dist/components/SafeDepositRental/YandexMap.js +24 -0
  175. package/mobile/dist/components/SafeDepositRental/YandexMap.js.map +1 -0
  176. package/mobile/dist/components/SafeDepositRental/renderClusterer.d.ts +1 -0
  177. package/mobile/dist/components/SafeDepositRental/renderClusterer.js +37 -0
  178. package/mobile/dist/components/SafeDepositRental/renderClusterer.js.map +1 -0
  179. package/mobile/dist/components/SafeDepositRental/useGetRegions.js +1 -1
  180. package/mobile/dist/components/SafeDepositRental/useGetRegions.js.map +1 -1
  181. package/mobile/dist/components/SafeDepositRental/utils.d.ts +3 -0
  182. package/mobile/dist/components/SafeDepositRental/utils.js +15 -0
  183. package/mobile/dist/components/SafeDepositRental/utils.js.map +1 -0
  184. package/mobile/dist/hooks/useFetchSafeBoxes.d.ts +22 -0
  185. package/mobile/dist/hooks/useFetchSafeBoxes.js +17 -0
  186. package/mobile/dist/hooks/useFetchSafeBoxes.js.map +1 -0
  187. package/mobile/dist/hooks/useScript.d.ts +6 -0
  188. package/mobile/dist/hooks/useScript.js +75 -0
  189. package/mobile/dist/hooks/useScript.js.map +1 -0
  190. package/mobile/dist/icons/IconName.d.ts +6 -2
  191. package/mobile/dist/icons/IconName.js +4 -0
  192. package/mobile/dist/icons/IconName.js.map +1 -1
  193. package/mobile/dist/react/setup-fixture.js +6 -0
  194. package/mobile/dist/react/setup-fixture.js.map +1 -1
  195. package/mobile/dist/ui-kit/BenefitItem/BenefitItem.js +2 -2
  196. package/mobile/dist/ui-kit/BenefitItem/BenefitItem.js.map +1 -1
  197. package/mobile/dist/ui-kit/Button/LikeButton.js +1 -1
  198. package/mobile/dist/ui-kit/Button/LikeButton.js.map +1 -1
  199. package/mobile/dist/ui-kit/SearchBar/SearchBarInner.js +1 -1
  200. package/mobile/dist/ui-kit/SearchBar/SearchBarInner.js.map +1 -1
  201. package/mobile/dist/wlc.json +5 -0
  202. package/mobile/lib/ProjectSettings.d.ts +2 -0
  203. package/mobile/lib/ProjectSettings.js +3 -0
  204. package/mobile/lib/ProjectSettings.js.map +1 -1
  205. package/mobile/lib/components/Bonus/Bonus.js +1 -1
  206. package/mobile/lib/components/Bonus/Bonus.js.map +1 -1
  207. package/mobile/lib/components/Calculator/Calculator.js +1 -1
  208. package/mobile/lib/components/Calculator/Calculator.js.map +1 -1
  209. package/mobile/lib/components/ErrorBlock/ErrorBlock.js +3 -3
  210. package/mobile/lib/components/ErrorBlock/ErrorBlock.js.map +1 -1
  211. package/mobile/lib/components/ErrorBlock/ErrorBlockContent.d.ts +6 -6
  212. package/mobile/lib/components/InsuranceAmountBlock/InsuranceAmountBlockInner.js +2 -2
  213. package/mobile/lib/components/InsuranceAmountBlock/InsuranceAmountBlockInner.js.map +1 -1
  214. package/mobile/lib/components/Navigation/Navigation.js +1 -1
  215. package/mobile/lib/components/Navigation/Navigation.js.map +1 -1
  216. package/mobile/lib/components/OfficeServicesBlock/OfficeServicesBlock.js +3 -3
  217. package/mobile/lib/components/OfficeServicesBlock/OfficeServicesBlock.js.map +1 -1
  218. package/mobile/lib/components/OfficeServicesBlock/OfficeServicesBlockContent.d.ts +2 -1
  219. package/mobile/lib/components/SafeDepositRental/RegionsAndBranches.d.ts +2 -2
  220. package/mobile/lib/components/SafeDepositRental/SafeBoxCases.d.ts +1 -1
  221. package/mobile/lib/components/SafeDepositRental/SafeDepositRental.js +14 -2
  222. package/mobile/lib/components/SafeDepositRental/SafeDepositRental.js.map +1 -1
  223. package/mobile/lib/components/SafeDepositRental/SafeDepositRentalContent.d.ts +2 -17
  224. package/mobile/lib/components/SafeDepositRental/SafeDepositRentalFields.d.ts +9 -0
  225. package/mobile/lib/components/SafeDepositRental/SafeDepositRentalFields.js +19 -0
  226. package/mobile/lib/components/SafeDepositRental/SafeDepositRentalFields.js.map +1 -0
  227. package/mobile/lib/components/SafeDepositRental/SafeDepositRentalForm.d.ts +2 -0
  228. package/mobile/lib/components/SafeDepositRental/SafeDepositRentalForm.js +33 -42
  229. package/mobile/lib/components/SafeDepositRental/SafeDepositRentalForm.js.map +1 -1
  230. package/mobile/lib/components/SafeDepositRental/SafeDepositRentalTotal.d.ts +1 -1
  231. package/mobile/lib/components/SafeDepositRental/SafeDepositRentalTotal.js.map +1 -1
  232. package/mobile/lib/components/SafeDepositRental/SafeDepositRentalTypes.d.ts +10 -0
  233. package/mobile/lib/components/SafeDepositRental/SafeDepositRentalTypes.js +2 -0
  234. package/mobile/lib/components/SafeDepositRental/SafeDepositRentalTypes.js.map +1 -0
  235. package/mobile/lib/components/SafeDepositRental/WrapperSelect.js +2 -2
  236. package/mobile/lib/components/SafeDepositRental/WrapperSelect.js.map +1 -1
  237. package/mobile/lib/components/SafeDepositRental/YandexMap.d.ts +5 -0
  238. package/mobile/lib/components/SafeDepositRental/YandexMap.js +22 -0
  239. package/mobile/lib/components/SafeDepositRental/YandexMap.js.map +1 -0
  240. package/mobile/lib/components/SafeDepositRental/renderClusterer.d.ts +1 -0
  241. package/mobile/lib/components/SafeDepositRental/renderClusterer.js +34 -0
  242. package/mobile/lib/components/SafeDepositRental/renderClusterer.js.map +1 -0
  243. package/mobile/lib/components/SafeDepositRental/useGetRegions.js +1 -1
  244. package/mobile/lib/components/SafeDepositRental/useGetRegions.js.map +1 -1
  245. package/mobile/lib/components/SafeDepositRental/utils.d.ts +3 -0
  246. package/mobile/lib/components/SafeDepositRental/utils.js +11 -0
  247. package/mobile/lib/components/SafeDepositRental/utils.js.map +1 -0
  248. package/mobile/lib/hooks/useFetchSafeBoxes.d.ts +22 -0
  249. package/mobile/lib/hooks/useFetchSafeBoxes.js +14 -0
  250. package/mobile/lib/hooks/useFetchSafeBoxes.js.map +1 -0
  251. package/mobile/lib/hooks/useScript.d.ts +6 -0
  252. package/mobile/lib/hooks/useScript.js +72 -0
  253. package/mobile/lib/hooks/useScript.js.map +1 -0
  254. package/mobile/lib/icons/IconName.d.ts +6 -2
  255. package/mobile/lib/icons/IconName.js +4 -0
  256. package/mobile/lib/icons/IconName.js.map +1 -1
  257. package/mobile/lib/react/setup-fixture.js +3 -0
  258. package/mobile/lib/react/setup-fixture.js.map +1 -1
  259. package/mobile/lib/ui-kit/BenefitItem/BenefitItem.js +2 -2
  260. package/mobile/lib/ui-kit/BenefitItem/BenefitItem.js.map +1 -1
  261. package/mobile/lib/ui-kit/Button/LikeButton.js +1 -1
  262. package/mobile/lib/ui-kit/Button/LikeButton.js.map +1 -1
  263. package/mobile/lib/ui-kit/SearchBar/SearchBarInner.js +1 -1
  264. package/mobile/lib/ui-kit/SearchBar/SearchBarInner.js.map +1 -1
  265. package/mobile/lib/wlc.json +5 -0
  266. package/mobile/src/ProjectSettings.ts +4 -0
  267. package/mobile/src/components/Bonus/Bonus.tsx +1 -1
  268. package/mobile/src/components/Calculator/Calculator.tsx +1 -1
  269. package/mobile/src/components/ErrorBlock/ErrorBlock.example.json +5 -5
  270. package/mobile/src/components/ErrorBlock/ErrorBlock.tsx +12 -5
  271. package/mobile/src/components/ErrorBlock/ErrorBlockContent.ts +20 -6
  272. package/mobile/src/components/InsuranceAmountBlock/InsuranceAmountBlockInner.tsx +2 -2
  273. package/mobile/src/components/Navigation/Navigation.tsx +1 -1
  274. package/mobile/src/components/OfficeServicesBlock/OfficeServicesBlock.example.json +30 -16
  275. package/mobile/src/components/OfficeServicesBlock/OfficeServicesBlock.tsx +7 -6
  276. package/mobile/src/components/OfficeServicesBlock/OfficeServicesBlockContent.ts +2 -1
  277. package/mobile/src/components/SafeDepositRental/RegionsAndBranches.tsx +2 -2
  278. package/mobile/src/components/SafeDepositRental/SafeBoxCases.tsx +1 -1
  279. package/mobile/src/components/SafeDepositRental/SafeDepositRental.tsx +33 -9
  280. package/mobile/src/components/SafeDepositRental/SafeDepositRentalContent.ts +2 -21
  281. package/mobile/src/components/SafeDepositRental/SafeDepositRentalFields.tsx +77 -0
  282. package/mobile/src/components/SafeDepositRental/SafeDepositRentalForm.tsx +57 -74
  283. package/mobile/src/components/SafeDepositRental/SafeDepositRentalTotal.tsx +1 -1
  284. package/mobile/src/components/SafeDepositRental/SafeDepositRentalTypes.ts +12 -0
  285. package/mobile/src/components/SafeDepositRental/WrapperSelect.tsx +2 -10
  286. package/mobile/src/components/SafeDepositRental/YandexMap.tsx +35 -0
  287. package/mobile/src/components/SafeDepositRental/renderClusterer.ts +45 -0
  288. package/mobile/src/components/SafeDepositRental/useGetRegions.ts +1 -1
  289. package/mobile/src/components/SafeDepositRental/utils.ts +17 -0
  290. package/mobile/src/components/__snapshots__/Blocks.spec.tsx.snap +231 -239
  291. package/mobile/src/hooks/useFetchSafeBoxes.ts +44 -0
  292. package/mobile/src/hooks/useScript.ts +97 -0
  293. package/mobile/src/icons/IconName.ts +4 -4
  294. package/mobile/src/icons/MapMarkerClusterIcon.svg +1 -0
  295. package/mobile/src/icons/MapMarkerSingleIcon.svg +1 -0
  296. package/mobile/src/react/setup-fixture.ts +4 -0
  297. package/mobile/src/ui-kit/BenefitItem/BenefitItem.tsx +2 -2
  298. package/mobile/src/ui-kit/Button/LikeButton.tsx +1 -1
  299. package/mobile/src/ui-kit/SearchBar/SearchBarInner.tsx +1 -1
  300. package/mobile/src/wlc.json +5 -0
  301. package/package.json +3 -2
  302. package/src/ProjectSettings.ts +4 -0
  303. package/src/components/Bonus/Bonus.tsx +1 -1
  304. package/src/components/Calculator/Calculator.tsx +1 -1
  305. package/src/components/ErrorBlock/ErrorBlock.example.json +5 -5
  306. package/src/components/ErrorBlock/ErrorBlock.fixture.tsx +3 -3
  307. package/src/components/ErrorBlock/ErrorBlock.tsx +12 -5
  308. package/src/components/ErrorBlock/ErrorBlockContent.ts +20 -6
  309. package/src/components/InsuranceAmountBlock/InsuranceAmountBlockInner.tsx +2 -2
  310. package/src/components/Navigation/Navigation.tsx +1 -1
  311. package/src/components/OfficeServicesBlock/OfficeServicesBlock.example.json +30 -16
  312. package/src/components/OfficeServicesBlock/OfficeServicesBlock.fixture.tsx +7 -7
  313. package/src/components/OfficeServicesBlock/OfficeServicesBlock.tsx +7 -6
  314. package/src/components/OfficeServicesBlock/OfficeServicesBlockContent.ts +2 -1
  315. package/src/components/SafeDepositRental/RegionsAndBranches.tsx +2 -2
  316. package/src/components/SafeDepositRental/SafeBoxCases.tsx +1 -1
  317. package/src/components/SafeDepositRental/SafeDepositRental.fixture.tsx +6 -1
  318. package/src/components/SafeDepositRental/SafeDepositRental.tsx +33 -9
  319. package/src/components/SafeDepositRental/SafeDepositRentalContent.ts +2 -21
  320. package/src/components/SafeDepositRental/SafeDepositRentalFields.tsx +77 -0
  321. package/src/components/SafeDepositRental/SafeDepositRentalForm.tsx +57 -74
  322. package/src/components/SafeDepositRental/SafeDepositRentalTotal.tsx +1 -1
  323. package/src/components/SafeDepositRental/SafeDepositRentalTypes.ts +12 -0
  324. package/src/components/SafeDepositRental/WrapperSelect.tsx +2 -10
  325. package/src/components/SafeDepositRental/YandexMap.tsx +35 -0
  326. package/src/components/SafeDepositRental/renderClusterer.ts +45 -0
  327. package/src/components/SafeDepositRental/useGetRegions.ts +1 -1
  328. package/src/components/SafeDepositRental/utils.ts +17 -0
  329. package/src/components/__snapshots__/Blocks.spec.tsx.snap +231 -239
  330. package/src/hooks/useFetchSafeBoxes.ts +44 -0
  331. package/src/hooks/useScript.ts +97 -0
  332. package/src/icons/IconName.ts +7 -1
  333. package/src/icons/MapMarkerClusterIcon.svg +1 -0
  334. package/src/icons/MapMarkerSingleIcon.svg +1 -0
  335. package/src/react/setup-fixture.ts +4 -0
  336. package/src/ui-kit/BenefitItem/BenefitItem.tsx +2 -2
  337. package/src/ui-kit/Button/LikeButton.tsx +1 -1
  338. package/src/ui-kit/SearchBar/SearchBarInner.tsx +1 -1
  339. package/src/wlc.json +5 -0
  340. package/dist/components/SafeDepositRental/fetchBranches.d.ts +0 -2
  341. package/dist/components/SafeDepositRental/fetchBranches.js +0 -20
  342. package/dist/components/SafeDepositRental/fetchBranches.js.map +0 -1
  343. package/lib/components/SafeDepositRental/fetchBranches.d.ts +0 -2
  344. package/lib/components/SafeDepositRental/fetchBranches.js +0 -17
  345. package/lib/components/SafeDepositRental/fetchBranches.js.map +0 -1
  346. package/mobile/dist/components/SafeDepositRental/fetchBranches.d.ts +0 -2
  347. package/mobile/dist/components/SafeDepositRental/fetchBranches.js +0 -20
  348. package/mobile/dist/components/SafeDepositRental/fetchBranches.js.map +0 -1
  349. package/mobile/lib/components/SafeDepositRental/fetchBranches.d.ts +0 -2
  350. package/mobile/lib/components/SafeDepositRental/fetchBranches.js +0 -17
  351. package/mobile/lib/components/SafeDepositRental/fetchBranches.js.map +0 -1
  352. package/mobile/src/components/SafeDepositRental/fetchBranches.ts +0 -21
  353. package/src/components/SafeDepositRental/fetchBranches.ts +0 -21
@@ -81,6 +81,9 @@
81
81
  get CDN() {
82
82
  return this._.CDN;
83
83
  }
84
+ get YANDEX_MAP_API_KEY() {
85
+ return this._.YANDEX_MAP_API_KEY;
86
+ }
84
87
  })();
85
88
 
86
89
  const AUTH_PREFIX = 'guest';
@@ -342,6 +345,8 @@
342
345
  IconMap["JCBIcon"] = "JCBIcon";
343
346
  IconMap["LogoIcon"] = "LogoIcon";
344
347
  IconMap["LoupeIcon"] = "LoupeIcon";
348
+ IconMap["MapMarkerClusterIcon"] = "MapMarkerClusterIcon";
349
+ IconMap["MapMarkerSingleIcon"] = "MapMarkerSingleIcon";
345
350
  IconMap["MasterCardIcon"] = "MasterCardIcon";
346
351
  IconMap["MinusIcon"] = "MinusIcon";
347
352
  IconMap["MirIcon"] = "MirIcon";
@@ -428,6 +433,8 @@
428
433
  IconTitleMap["JCBIcon"] = "JCB";
429
434
  IconTitleMap["LogoIcon"] = "Logo";
430
435
  IconTitleMap["LoupeIcon"] = "\u041B\u0443\u043F\u0430";
436
+ IconTitleMap["MapMarkerClusterIcon"] = "\u041C\u0430\u0440\u043A\u0435\u0440 \u043A\u0430\u0440\u0442\u044B";
437
+ IconTitleMap["MapMarkerSingleIcon"] = "\u041C\u0430\u0440\u043A\u0435\u0440 \u043A\u0430\u0440\u0442\u044B \u0420\u0421\u0425\u0411";
431
438
  IconTitleMap["MasterCardIcon"] = "MasterCard";
432
439
  IconTitleMap["MinusIcon"] = "\u041C\u0438\u043D\u0443\u0441";
433
440
  IconTitleMap["MirIcon"] = "\u041C\u0418\u0420";
@@ -650,7 +657,7 @@
650
657
  const { className = '', icon, label, description, version = 'primary', benefitsVersion = 'normal', } = props;
651
658
  const isIconWhite = benefitsVersion === 'white' || version === 'secondary';
652
659
  const listItemAlign = description ? 'items-start' : 'items-center';
653
- return (jsxs("div", { className: `flex gap-5 ${listItemAlign} ${className}`, children: [icon ? (jsx("div", { className: renderBenefitIconBgStyle(version, benefitsVersion), children: jsx(Img, { className: "w-[24px] h-[24px]", image: { ...icon, iconVersion: isIconWhite ? 'white' : 'normal' }, asSVG: true }) })) : null, jsxs("div", { className: "gap-0.5", children: [label ? jsx("div", { className: `text-h6 ${titleStyleMap[version]}`, children: label }) : null, description ? (jsx("div", { className: `text-m-light ${descStyleMap[version]}`, children: description })) : null] })] }));
660
+ return (jsxs("div", { className: `flex gap-5 ${listItemAlign} ${className}`, children: [icon ? (jsx("div", { className: renderBenefitIconBgStyle(version, benefitsVersion), children: jsx(Img, { className: "w-6 h-6", image: { ...icon, iconVersion: isIconWhite ? 'white' : 'normal' }, asSVG: true }) })) : null, jsxs("div", { className: "gap-0.5", children: [label ? jsx("div", { className: `text-h6 ${titleStyleMap[version]}`, children: label }) : null, description ? (jsx("div", { className: `text-m-light ${descStyleMap[version]}`, children: description })) : null] })] }));
654
661
  });
655
662
  function renderBenefitIconBgStyle(version, benefitsVersion) {
656
663
  let bgColorStyle = 'bg-primary-main text-black';
@@ -660,7 +667,7 @@
660
667
  else if (benefitsVersion === 'normal') {
661
668
  bgColorStyle = 'bg-secondary-light text-primary-main';
662
669
  }
663
- return `w-[50px] h-[50px] min-w-[50px] rounded-full p-[10px] box-border flex items-center justify-center ${bgColorStyle}`;
670
+ return `w-[50px] h-[50px] min-w-[50px] rounded-full p-2.5 box-border flex items-center justify-center ${bgColorStyle}`;
664
671
  }
665
672
 
666
673
  const addSpacesBetweenNumbers = (number) => new Intl.NumberFormat('ru-RU', { maximumSignificantDigits: 3 }).format(number);
@@ -1217,7 +1224,7 @@
1217
1224
  const { context, className = '', title, description, bonusItems, ...rest } = props;
1218
1225
  return (jsx(BlockWrapper, { className: `font-sans bg-white p-[50px] pb-9 ${className}`, context: context, ...rest, children: jsxs("div", { className: "container", children: [jsx(Headline, { context: context, className: "!p-0", title: title, description: description, headlineVersion: "M", align: "center" }), jsx("div", { className: "flex flex-wrap w-full mt-9", children: bonusItems
1219
1226
  ? bonusItems.map((_, i) => {
1220
- return (jsx("div", { className: "flex-grow w-[49%] border border-gray pl-9 pt-9 pr-6 pb-6 mb-[14px] mx-[7px] even:mr-0 odd:ml-0 last:odd:mx-0", children: jsxs("div", { className: "flex justify-between w-full", children: [jsxs("div", { className: "mr-4", children: [jsx("div", { className: "text-h4", children: _.title }), jsx("div", { className: "text-xl-light mt-[14px] max-w-[488px]", children: _.description })] }), _.bonusCount ? (jsxs("div", { className: "relative -bottom-3 h-auto flex items-end mt-14 shrink-0", children: [jsx("span", { className: "font-mohave -tracking-[5px] text-title-extra bg-clip-text text-transparent bg-green-to-yellow -mb-7", children: _.bonusCount }), jsx("span", { className: "text-[44px] bg-clip-text text-transparent bg-green-to-yellow", children: _.bonusName })] })) : null] }) }, String(i)));
1227
+ return (jsx("div", { className: "flex-grow w-[49%] border border-gray pl-9 pt-9 pr-6 pb-6 mb-[14px] mx-[7px] even:mr-0 odd:ml-0 last:odd:mx-0", children: jsxs("div", { className: "flex justify-between w-full", children: [jsxs("div", { className: "mr-4", children: [jsx("div", { className: "text-h4", children: _.title }), jsx("div", { className: "text-xl-light mt-[14px] max-w-[488px]", children: _.description })] }), _.bonusCount ? (jsxs("div", { className: "relative -bottom-3 h-auto flex items-end mt-14 shrink-0", children: [jsx("span", { className: "font-mohave -tracking-[5px] text-title-extra bg-clip-text text-transparent bg-green-to-yellow -mb-7", children: _.bonusCount }), jsx("span", { className: "text-h2 bg-clip-text text-transparent bg-green-to-yellow", children: _.bonusName })] })) : null] }) }, String(i)));
1221
1228
  })
1222
1229
  : null })] }) }));
1223
1230
  });
@@ -1341,14 +1348,22 @@
1341
1348
  };
1342
1349
 
1343
1350
  const consistentDataMap = new Map();
1344
- function useAsyncData$1(key, fetcher) {
1351
+ function useAsyncData$1(key, fetcher, { fallback } = {}) {
1345
1352
  const args = useMemo(() => keyToArgs(key), [key]);
1346
1353
  const [data, setData] = useState();
1347
1354
  const [error, setError] = useState();
1355
+ const updateData = (_) => {
1356
+ setData(_);
1357
+ setError(undefined);
1358
+ };
1359
+ const updateError = (_) => {
1360
+ setData(undefined);
1361
+ setError(_);
1362
+ };
1348
1363
  const chainToConsistentResult = (_) => {
1349
- _.then(_data => consistentDataMap.get(args) || _data)
1350
- .then(setData)
1351
- .catch(setError);
1364
+ _.then(rawData => consistentDataMap.get(args) || rawData)
1365
+ .then(updateData)
1366
+ .catch(updateError);
1352
1367
  };
1353
1368
  useEffect(() => {
1354
1369
  const isEmptyKey = args.every(_ => _ === null);
@@ -1361,15 +1376,17 @@
1361
1376
  chainToConsistentResult(_);
1362
1377
  }
1363
1378
  else {
1364
- setData(_);
1379
+ updateData(_);
1365
1380
  }
1366
1381
  }
1367
1382
  catch (err) {
1368
- setError(err);
1383
+ updateError(err);
1369
1384
  }
1370
1385
  }, [fetcher, ...args]);
1386
+ const simpleKey = args[0];
1387
+ const fallbackData = fallback && typeof simpleKey === 'string' && fallback[simpleKey];
1371
1388
  return {
1372
- data,
1389
+ data: !data && !error && fallbackData ? fallbackData : data,
1373
1390
  error,
1374
1391
  mutate: () => Promise.resolve(undefined),
1375
1392
  isValidating: false
@@ -1391,7 +1408,7 @@
1391
1408
  }
1392
1409
 
1393
1410
  let impl = useAsyncData$1;
1394
- const useAsyncData = (key, fetcher) => impl(key, fetcher);
1411
+ const useAsyncData = (...args) => impl(...args);
1395
1412
 
1396
1413
  async function fetchJSON(url, options) {
1397
1414
  try {
@@ -1681,7 +1698,7 @@
1681
1698
  : `text-m-light text-secondary-text`;
1682
1699
  const iconClassName = isActiveBtn ? '' : `text-primary-main`;
1683
1700
  return (jsxs("button", { type: "button", onClick: onClick, "aria-label": tab?.title, className: `box-border relative border border-main-stroke cursor-pointer text-left border-b-0 flex hover:h-[88px]
1684
- ${btnClassName}`, children: [jsx(Img, { className: `h-[24px] w-[24px] min-w-[24px] min-h-[24px] mr-4 ${iconClassName}`, image: { ...tab?.icon, iconVersion: isActiveBtn ? 'white' : 'normal' }, width: "24", height: "24", asSVG: true }), jsxs("div", { className: "border-0", children: [jsx("div", { className: `${btnTitleClassName}`, children: tab?.title }), jsx("div", { className: `${btnDescClassName}`, children: tab.description })] })] }, String(i)));
1701
+ ${btnClassName}`, children: [jsx(Img, { className: `h-6 w-6 min-w-6 min-h-6 mr-4 ${iconClassName}`, image: { ...tab?.icon, iconVersion: isActiveBtn ? 'white' : 'normal' }, width: "24", height: "24", asSVG: true }), jsxs("div", { className: "border-0", children: [jsx("div", { className: `${btnTitleClassName}`, children: tab?.title }), jsx("div", { className: `${btnDescClassName}`, children: tab.description })] })] }, String(i)));
1685
1702
  }
1686
1703
  function renderTabs({ tabsShift, tabsNav, activeSlideIndex, setActiveSlideIndex }) {
1687
1704
  return (jsxs("div", { children: [jsx("div", { style: { transform: `translateX(-${tabsShift * 388}px)` }, className: "flex flex-col justify-end items-center h-[126px] pt-9 box-border duration-1000", children: jsx("div", { className: "w-full flex flex-nowrap items-end gap-2", children: tabsNav.map((tab, i) => renderNavButton$2({
@@ -2110,7 +2127,7 @@
2110
2127
 
2111
2128
  const SearchBarInner = JSX(({ className, isMobile = false }) => {
2112
2129
  const { term, setTerm } = useSearch();
2113
- const LoupeIconClassName = isMobile ? 'w-[20px] h-[20px]' : 'w-[24px] h-[24px]';
2130
+ const LoupeIconClassName = isMobile ? 'w-5 h-5' : 'w-6 h-6';
2114
2131
  const SearchBarLabelClassName = isMobile ? 'text-s' : 'text-l-light';
2115
2132
  const SearchBarInputClassName = isMobile ? ' placeholder-transparent' : 'h-full';
2116
2133
  const inputPlaceholder = isMobile ? 'some search' : undefined;
@@ -2449,13 +2466,13 @@
2449
2466
  const btnClassName = isActiveBtn
2450
2467
  ? 'shadow-dark-blue/42 border-primary-main'
2451
2468
  : `ease-in duration-300 border-main-stroke`;
2452
- return (jsxs("button", { type: "button", onClick: onClick, className: `p-[30px] min-w-[460px] flex items-center bg-white border-solid border relative ${btnClassName}`, children: [slide?.icon ? (jsx(Img, { className: "p-6 rounded-full bg-secondary-light mr-[30px]", image: slide.icon, width: "108", height: "108" })) : null, jsxs("div", { className: "flex gap-3.5", children: [slide?.sum ? renderValueBlock('страховая сумма', slide.sum) : null, slide?.fee ? renderValueBlock('страховой взнос', slide.fee) : null] }), renderDoneIcon(isActiveBtn)] }, String(i)));
2469
+ return (jsxs("button", { type: "button", onClick: onClick, className: `p-[30px] min-w-[460px] flex items-center bg-white border-solid border relative ${btnClassName}`, children: [slide?.icon ? (jsx(Img, { className: "p-5 rounded-full bg-secondary-light mr-[30px]", image: slide.icon, width: "108", height: "108" })) : null, jsxs("div", { className: "flex gap-3.5", children: [slide?.sum ? renderValueBlock('страховая сумма', slide.sum) : null, slide?.fee ? renderValueBlock('страховой взнос', slide.fee) : null] }), renderDoneIcon(isActiveBtn)] }, String(i)));
2453
2470
  }
2454
2471
  function renderValueBlock(title, sum) {
2455
2472
  return (jsxs("div", { className: "flex flex-col text-left whitespace-pre", children: [jsxs("span", { className: "text-h6", children: [addSpacesBetweenNumbers(sum), " \u20BD"] }), jsx("span", { className: "text-secondary-text text-l mt-1", children: title })] }));
2456
2473
  }
2457
2474
  function renderDoneIcon(isActive) {
2458
- return isActive ? (jsx(Img, { className: `h-[24px] w-[24px] min-w-[24px] min-h-[24px] absolute right-4 top-4`, image: "DoneIcon", width: "24", height: "24" })) : null;
2475
+ return isActive ? (jsx(Img, { className: `h-6 w-6 min-w-6 min-h-6 absolute right-4 top-4`, image: "DoneIcon", width: "24", height: "24" })) : null;
2459
2476
  }
2460
2477
 
2461
2478
  const InsuranceAmountBlock = JSX(({ className = '', context, title, insuranceTabs = [], button, ...rest }) => {
@@ -2506,15 +2523,15 @@
2506
2523
  const router = context.useRouter();
2507
2524
  const { handlerDecorator } = context;
2508
2525
  const activeButton = findActiveSubItem(router)(buttons);
2509
- return (jsxs(BlockWrapper, { context: context, className: `font-sans text-primary-text rounded-[40px] flex items-center justify-between ${className || ''}`, ...rest, children: [jsx("h2", { className: "text-xl font-medium m-0", children: title }), buttons?.length ? (jsx("div", { className: "flex rounded-md overflow-hidden bg-white", children: buttons
2526
+ return (jsxs(BlockWrapper, { context: context, className: `font-sans text-primary-text flex items-center justify-between ${className || ''}`, ...rest, children: [jsx("h2", { className: "text-xl font-medium m-0", children: title }), buttons?.length ? (jsx("div", { className: "flex rounded-md overflow-hidden bg-white", children: buttons
2510
2527
  .filter(({ text }) => text)
2511
2528
  .map((button, i) => (jsx(NavigationItem, { className: "first:rounded-tl-md first:rounded-bl-md last:rounded-tr-md last:rounded-br-md", isActive: button === activeButton, ...useLink({ router, handlerDecorator }, button) }, String(i)))) })) : null] }));
2512
2529
  });
2513
2530
 
2514
- const OfficeServicesBlock = JSX(({ className = '', context, title, servicesList, anchor = '' }) => {
2515
- return (jsxs(BlockWrapper, { context: context, id: anchor, className: `font-sans bg-white p-12 flex flex-col ${className}`, children: [title ? jsx(Heading, { headingType: "h5", className: "mb-2.5", title: title }) : null, servicesList?.length ? servicesList.map(renderListItems) : null] }));
2531
+ const OfficeServicesBlock = JSX(({ className = '', context, title, servicesList, anchor = '', ...rest }) => {
2532
+ return (jsxs(BlockWrapper, { context: context, id: anchor, className: `font-sans bg-white p-8 flex flex-col ${className}`, ...rest, children: [title ? jsx(Heading, { headingType: "h5", className: "mb-5", title: title }) : null, servicesList?.length ? servicesList.map(renderListItems) : null] }));
2516
2533
  });
2517
- const renderListItems = (itemList, i) => (jsxs("li", { className: "flex mb-2.5 list-none", children: [itemList.icon ? (jsx(Img, { className: "mr-[14px] max-w-6 max-h-6", width: "24px", height: "24px", asSVG: true, image: itemList.icon })) : null, itemList.text ? jsx("span", { className: "text-l-light", children: itemList.text }) : null] }, `list_item_${String(i)}`));
2534
+ const renderListItems = (itemList, i) => (jsxs("li", { className: "flex mb-5 last:mb-0 list-none", children: [itemList.icon ? (jsx(Img, { className: "mr-3 max-w-6 max-h-6", width: "24px", height: "24px", asSVG: true, image: itemList.icon })) : null, itemList.label ? jsx("span", { className: "text-l-light", children: itemList.label }) : null] }, `list_item_${String(i)}`));
2518
2535
 
2519
2536
  const foldableBlockClassNames = 'transition-all duration-300 max-h-0 overflow-hidden';
2520
2537
  const useActiveHandler = ({ initialState = false }) => {
@@ -2680,25 +2697,91 @@
2680
2697
  }) }));
2681
2698
  };
2682
2699
 
2683
- const BRANCHES_URL = '/api/v1/safeboxes';
2684
- async function fetchBranches(regionCode) {
2685
- try {
2686
- const response = await fetch(BRANCHES_URL + `?regionCode=${regionCode}`, {
2687
- headers: {
2688
- 'Content-Type': 'application/json',
2689
- },
2690
- });
2691
- const result = await response.json();
2692
- return Promise.resolve(result);
2700
+ const cachedScriptStatuses = {};
2701
+ function getScriptNode(src) {
2702
+ const node = document.querySelector(`script[src="${src}"]`);
2703
+ const status = node?.getAttribute('data-status');
2704
+ return {
2705
+ node,
2706
+ status,
2707
+ };
2708
+ }
2709
+ function getScriptStatus(type) {
2710
+ return type === 'load' ? 'ready' : 'error';
2711
+ }
2712
+ function getInitialValueStatus(src, options) {
2713
+ if (!src || options?.shouldPreventLoad) {
2714
+ return 'idle';
2693
2715
  }
2694
- catch (err) {
2695
- console.error(err);
2696
- return Promise.reject();
2716
+ if (typeof window === 'undefined') {
2717
+ return 'loading';
2697
2718
  }
2719
+ return cachedScriptStatuses[src] ?? 'loading';
2720
+ }
2721
+ function useScript(src, options) {
2722
+ const [status, setStatus] = useState(getInitialValueStatus(src, options));
2723
+ // eslint-disable-next-line complexity
2724
+ useEffect(() => {
2725
+ if (!src || options?.shouldPreventLoad) {
2726
+ return undefined;
2727
+ }
2728
+ const cachedScriptStatus = cachedScriptStatuses[src];
2729
+ if (cachedScriptStatus === 'ready' || cachedScriptStatus === 'error') {
2730
+ setStatus(cachedScriptStatus);
2731
+ return undefined;
2732
+ }
2733
+ const script = getScriptNode(src);
2734
+ let scriptNode = script.node;
2735
+ if (!scriptNode) {
2736
+ scriptNode = document.createElement('script');
2737
+ scriptNode.src = src;
2738
+ scriptNode.async = true;
2739
+ scriptNode.setAttribute('data-status', 'loading');
2740
+ document.body.appendChild(scriptNode);
2741
+ const setAttributeFromEvent = (event) => {
2742
+ const scriptStatus = getScriptStatus(event.type);
2743
+ scriptNode?.setAttribute('data-status', scriptStatus);
2744
+ };
2745
+ scriptNode.addEventListener('load', setAttributeFromEvent);
2746
+ scriptNode.addEventListener('error', setAttributeFromEvent);
2747
+ }
2748
+ else {
2749
+ setStatus(script.status ?? cachedScriptStatus ?? 'loading');
2750
+ }
2751
+ const setStateFromEvent = (event) => {
2752
+ const newStatus = getScriptStatus(event.type);
2753
+ setStatus(newStatus);
2754
+ cachedScriptStatuses[src] = newStatus;
2755
+ };
2756
+ scriptNode.addEventListener('load', setStateFromEvent);
2757
+ scriptNode.addEventListener('error', setStateFromEvent);
2758
+ return () => {
2759
+ if (scriptNode) {
2760
+ scriptNode.removeEventListener('load', setStateFromEvent);
2761
+ scriptNode.removeEventListener('error', setStateFromEvent);
2762
+ }
2763
+ if (scriptNode && options?.removeOnUnmount) {
2764
+ scriptNode.remove();
2765
+ }
2766
+ };
2767
+ }, [src, options?.shouldPreventLoad, options?.removeOnUnmount]);
2768
+ return status;
2698
2769
  }
2699
2770
 
2700
- const WrapperSelect = JSX(({ data, fieldLabel, fieldValue, selected, placeholder = 'Выберите значение', setSelected, label, }) => {
2701
- return (jsxs("div", { children: [jsx("span", { className: "block text-m-light mb-2", children: label }), jsxs(Select, { className: `h-14 border border-gray p-4 rounded-md text-s w-full cursor-pointer ${!selected ? 'text-secondary-text' : ''}`, value: selected, onChange: (_) => setSelected(_), children: [jsx(SelectOption, { value: "", children: placeholder }), data.map((_, i) => (jsx(SelectOption, { value: _?.[fieldValue || fieldLabel], children: _?.[fieldLabel] }, String(i))))] })] }));
2771
+ const SAFEBOXES_URL = '/api/v1/safeboxes';
2772
+ function useFetchSafeBoxes(regionCode) {
2773
+ const { data } = useAsyncData(regionCode ? `${SAFEBOXES_URL}?regionCode=${regionCode}` : null, fetchSafeBoxes);
2774
+ return data || [];
2775
+ }
2776
+ const fetchSafeBoxes = (url) => {
2777
+ if (!url) {
2778
+ return {};
2779
+ }
2780
+ return fetchJSON(url, { method: 'GET' });
2781
+ };
2782
+
2783
+ const WrapperSelect = JSX(({ data, fieldLabel, fieldValue, selected, placeholder, setSelected, label }) => {
2784
+ return (jsxs("div", { children: [jsx("span", { className: "block text-m-light mb-2", children: label }), jsxs(Select, { className: `h-14 border border-gray p-4 rounded-md text-s w-full cursor-pointer ${!selected ? 'text-secondary-text' : ''}`, value: selected, onChange: (_) => setSelected(_), children: [placeholder ? jsx(SelectOption, { value: "", children: placeholder }) : null, data.map((_, i) => (jsx(SelectOption, { value: _?.[fieldValue || fieldLabel], children: _?.[fieldLabel] }, String(i))))] })] }));
2702
2785
  });
2703
2786
 
2704
2787
  const RegionsAndBranches = JSX(({ regions = [], selectedRegion, onSelectedRegion: onSelectedRegion, branches = [], selectedBranch, onSelectedBranch, }) => {
@@ -2722,6 +2805,28 @@
2722
2805
  return (jsxs("div", { className: "flex justify-between mb-6", children: [jsx("div", { className: "mr-4 w-full", children: jsx(WrapperSelect, { data: caseVolumes, fieldLabel: "volume", selected: selectedCaseVolume, setSelected: onSelectedCaseVolume, label: "\u0420\u0430\u0437\u043C\u0435\u0440", placeholder: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0440\u0430\u0437\u043C\u0435\u0440" }) }), jsx("div", { className: "w-full", children: jsx(WrapperSelect, { data: safeBoxCases, fieldLabel: "safeBoxCasesSize", selected: selectedBoxSize, setSelected: onSelectedBoxSize, label: "\u041F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B \u044F\u0447\u0435\u0439\u043A\u0438, \u043C\u043C (\u0412\u0445\u0428\u0445\u0414)", placeholder: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u044F\u0447\u0435\u0439\u043A\u0438" }) })] }));
2723
2806
  });
2724
2807
 
2808
+ const getCoordinates = (data) => {
2809
+ if (Array.isArray(data)) {
2810
+ return data.map((_) => _.gpsLatitude && _.gpsLongitude ? [_.gpsLatitude, _.gpsLongitude] : []);
2811
+ }
2812
+ if (data?.gpsLatitude && data?.gpsLongitude) {
2813
+ return [[data.gpsLatitude, data.gpsLongitude]];
2814
+ }
2815
+ return [];
2816
+ };
2817
+ const getBranch = (branches, selectedBranch) => branches.find((_) => _.branchCode === selectedBranch);
2818
+
2819
+ const SafeDepositRentalFields = JSX(({ regions, selectedRegion, branches, selectedBranch, days, selectedCaseVolume, selectedBoxSize, safeBoxCases, caseVolumes, setPoints, onChange, toggleShowMap, }) => {
2820
+ return (jsxs("div", { className: "flex-1 mr-9", children: [jsx(RegionsAndBranches, { regions: regions, selectedRegion: selectedRegion, onSelectedRegion: (value) => onChange({ selectedRegion: value }), branches: branches, selectedBranch: selectedBranch, onSelectedBranch: onSelectedBranch(onChange, setPoints, branches) }), jsx(RentalPeriod, { days: days, setDays: (value) => onChange({ days: value }) }), jsx(SafeBoxCases, { caseVolumes: caseVolumes, selectedCaseVolume: selectedCaseVolume, onSelectedCaseVolume: onSelectedCaseVolume(onChange), safeBoxCases: safeBoxCases, selectedBoxSize: selectedBoxSize, onSelectedBoxSize: (value) => onChange({ selectedBoxSize: value }) }), jsx("span", { className: "text-secondary-text text-l-light", children: "\u0422\u0438\u043F \u0434\u043E\u0433\u043E\u0432\u043E\u0440\u0430" }), jsxs("div", { className: "flex justify-between items-center mt-5", children: [jsx(RenderRadioButtons, {}), jsx(Button, { text: "\u041E\u0444\u0438\u0441\u044B \u043D\u0430 \u043A\u0430\u0440\u0442\u0435", version: "primary", onClick: toggleShowMap })] })] }));
2821
+ });
2822
+ const onSelectedBranch = (onChange, setPoints, branches) => (value) => {
2823
+ onChange({ selectedBranch: value, selectedCaseVolume: '', selectedBoxSize: '' });
2824
+ setPoints(getCoordinates(value ? getBranch(branches, value) : branches));
2825
+ };
2826
+ const onSelectedCaseVolume = (onChange) => (value) => {
2827
+ onChange({ selectedCaseVolume: value, selectedBoxSize: '' });
2828
+ };
2829
+
2725
2830
  const SafeDepositRentalTotal = JSX(({ days, tariffs = [] }) => {
2726
2831
  const price = calculatePrice(days, tariffs);
2727
2832
  return (jsxs("div", { className: "flex flex-col justify-between", children: [jsxs("div", { className: "flex", children: [renderTotal('Аренда за', days, 'mr-11'), renderTotal('Цена', price + ' ₽')] }), jsxs("div", { className: "bg-primary-main px-10 pt-10 pb-4 text-center", children: [jsx(Img, { image: { icon: 'PackA4Icon' }, width: "290", height: "257", asSVG: true }), jsxs("span", { className: "text-s-light text-white opacity-80 mt-2 inline-block", children: ["\u041D\u0430 \u0440\u0438\u0441\u0443\u043D\u043A\u0438 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0430 \u043F\u0430\u0447\u043A\u0430", jsx("br", {}), " \u043B\u0438\u0441\u0442\u043E\u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0430 \u04104"] })] })] }));
@@ -2751,59 +2856,112 @@
2751
2856
  };
2752
2857
 
2753
2858
  const DEFAULT_DAYS = 26;
2754
- const SafeDepositRentalForm = JSX(({ regions }) => {
2755
- const [selectedRegion, setSelectedRegion] = useState('');
2756
- const [branches, setBranches] = useState([]);
2757
- const [selectedBranch, setSelectedBranch] = useState('');
2758
- const [selectedCaseVolume, setSelectedCaseVolume] = useState('');
2759
- const [selectedBoxSize, setSelectedBoxSize] = useState('');
2760
- const [days, setDays] = useState(DEFAULT_DAYS);
2761
- useEffect(() => {
2762
- setSelectedRegion(getInitialValueSelectedRegion(regions));
2763
- }, [regions]);
2859
+ const SafeDepositRentalForm = JSX((props) => {
2860
+ const [safeDepositState, setStateDepositState] = useState({
2861
+ selectedRegion: '',
2862
+ selectedBranch: '',
2863
+ selectedCaseVolume: '',
2864
+ selectedBoxSize: '',
2865
+ days: DEFAULT_DAYS,
2866
+ branches: [],
2867
+ });
2868
+ const resultBranches = useFetchSafeBoxes(safeDepositState.selectedRegion);
2869
+ const handleChangeSafeDepositState = (state) => setStateDepositState((oldState) => ({ ...oldState, ...state }));
2870
+ useEffect(() => handleChangeSafeDepositState({
2871
+ selectedRegion: getInitialValueSelectedRegion(props.regions),
2872
+ }), [props.regions]);
2764
2873
  useEffect(() => {
2765
- if (selectedRegion) {
2766
- fetchBranches(selectedRegion).then((result) => {
2767
- setBranches(result);
2768
- });
2769
- }
2770
- else {
2771
- setBranches([]);
2874
+ if (Array.isArray(resultBranches) && resultBranches.length) {
2875
+ handleChangeSafeDepositState({ branches: resultBranches });
2876
+ props.setPoints(getCoordinates(resultBranches));
2772
2877
  }
2773
- setSelectedBranch('');
2774
- setSelectedCaseVolume('');
2775
- setSelectedBoxSize('');
2776
- }, [regions, selectedRegion]);
2777
- const onSelectedBranch = (value) => {
2778
- setSelectedBranch(value);
2779
- setSelectedCaseVolume('');
2780
- setSelectedBoxSize('');
2781
- };
2782
- const onSelectedCaseVolume = (value) => {
2783
- setSelectedCaseVolume(value);
2784
- setSelectedBoxSize('');
2785
- };
2786
- const branch = getBranch(branches, selectedBranch);
2878
+ }, [resultBranches]);
2879
+ useEffect(() => {
2880
+ handleChangeSafeDepositState({
2881
+ selectedBranch: '',
2882
+ selectedCaseVolume: '',
2883
+ selectedBoxSize: '',
2884
+ });
2885
+ }, [safeDepositState.selectedRegion]);
2886
+ const branch = getBranch(safeDepositState.branches, safeDepositState.selectedBranch);
2787
2887
  const caseVolumes = getCaseVolumes(branch?.safeBoxCaseVolumes);
2788
- const safeBoxCases = getCaseVolume(branch?.safeBoxCaseVolumes, selectedCaseVolume)?.safeBoxCases;
2789
- const tariffs = getTariffs(safeBoxCases, selectedBoxSize);
2790
- return (jsxs("div", { className: "flex justify-between align-top mb-6", children: [jsxs("div", { className: "flex-1 mr-9", children: [jsx(RegionsAndBranches, { regions: regions, selectedRegion: selectedRegion, onSelectedRegion: setSelectedRegion, branches: branches, selectedBranch: selectedBranch, onSelectedBranch: onSelectedBranch }), jsx(RentalPeriod, { days: days, setDays: setDays }), jsx(SafeBoxCases, { caseVolumes: caseVolumes, selectedCaseVolume: selectedCaseVolume, onSelectedCaseVolume: onSelectedCaseVolume, safeBoxCases: safeBoxCases, selectedBoxSize: selectedBoxSize, onSelectedBoxSize: setSelectedBoxSize }), jsx("span", { className: "text-secondary-text text-l-light", children: "\u0422\u0438\u043F \u0434\u043E\u0433\u043E\u0432\u043E\u0440\u0430" }), jsxs("div", { className: "flex justify-between items-center mt-5", children: [jsx(RenderRadioButtons, {}), jsx(Button, { text: "\u041E\u0444\u0438\u0441\u044B \u043D\u0430 \u043A\u0430\u0440\u0442\u0435", version: "primary" })] })] }), jsx(SafeDepositRentalTotal, { days: days, tariffs: tariffs })] }));
2888
+ const safeBoxCases = getCaseVolume(branch?.safeBoxCaseVolumes, safeDepositState.selectedCaseVolume)?.safeBoxCases;
2889
+ const tariffs = getTariffs(safeBoxCases, safeDepositState.selectedBoxSize);
2890
+ return (jsxs("div", { className: "flex justify-between align-top mb-6", children: [jsx(SafeDepositRentalFields, { ...safeDepositState, ...props, caseVolumes: caseVolumes, safeBoxCases: safeBoxCases, onChange: handleChangeSafeDepositState }), jsx(SafeDepositRentalTotal, { days: safeDepositState.days, tariffs: tariffs })] }));
2791
2891
  });
2792
- const getInitialValueSelectedRegion = (regions) => regions?.find((_) => _.name === 'Москва')?.code || '';
2793
- const getBranch = (branches, selectedBranch) => branches.find((_) => _.branchCode === selectedBranch);
2892
+ const getInitialValueSelectedRegion = (regions) => regions?.length && regions[0]?.code ? regions[0].code : '';
2794
2893
  const getCaseVolumes = (safeBoxCaseVolumes) => safeBoxCaseVolumes?.length ? safeBoxCaseVolumes?.filter((_) => _?.safeBoxCases?.length) : [];
2795
2894
  const getCaseVolume = (caseVolumes, selectedCaseVolume) => caseVolumes?.find((_) => _.volume === selectedCaseVolume);
2796
2895
  const getTariffs = (safeBoxCases, selectedBoxSize) => safeBoxCases?.find((_) => _.safeBoxCasesSize === selectedBoxSize)?.tariffs;
2797
2896
 
2798
- const REGIONS_URL = '/api/v1/admin/regions';
2897
+ const REGIONS_URL = '/api/v1/regions';
2799
2898
  function useGetRegions() {
2800
2899
  const { data } = useAsyncData(REGIONS_URL, fetchJSONUnsafe);
2801
2900
  return data || [];
2802
2901
  }
2803
2902
 
2804
- const SafeDepositRental = JSX(({ title, context, className = '', ...rest }) => {
2903
+ function renderClusterer(Map, points) {
2904
+ Map.geoObjects.removeAll();
2905
+ const pointsList = points;
2906
+ const clusterIconContentLayout = ymaps.templateLayoutFactory.createClass('<div style="margin-top: -3px;">{{properties.geoObjects.length}}</div>');
2907
+ const clusterer = new ymaps.Clusterer({
2908
+ clusterIcons: [
2909
+ {
2910
+ href: 'icons/MapMarkerClusterIcon.svg',
2911
+ size: [78, 84],
2912
+ offset: [-35, -50],
2913
+ },
2914
+ ],
2915
+ clusterIconContentLayout,
2916
+ clusterHideIconOnBalloonOpen: false,
2917
+ geoObjectHideIconOnBalloonOpen: false,
2918
+ });
2919
+ const geoObjects = [];
2920
+ for (let i = 0, len = pointsList.length; i < len; i++) {
2921
+ geoObjects[i] = new ymaps.Placemark(pointsList[i], null, {
2922
+ iconLayout: 'default#image',
2923
+ iconImageHref: 'icons/MapMarkerSingleIcon.svg',
2924
+ iconImageSize: [78, 84],
2925
+ iconImageOffset: [-35, -50],
2926
+ });
2927
+ }
2928
+ clusterer.add(geoObjects);
2929
+ Map.geoObjects.add(clusterer);
2930
+ Map.setBounds(ymaps.util.bounds.fromPoints(pointsList)).then(() => {
2931
+ if (Map.getZoom() > 10) {
2932
+ Map.setZoom(10);
2933
+ }
2934
+ });
2935
+ }
2936
+
2937
+ let Map$1 = null;
2938
+ const YandexMap = JSX(({ points }) => {
2939
+ useEffect(() => {
2940
+ ymaps.ready(() => {
2941
+ Map$1 = new ymaps.Map('map', {
2942
+ center: points[0],
2943
+ zoom: 10,
2944
+ });
2945
+ renderClusterer(Map$1, points);
2946
+ });
2947
+ }, []);
2948
+ if (Map$1 && points) {
2949
+ renderClusterer(Map$1, points);
2950
+ }
2951
+ return (jsxs("div", { className: "pt-12 mt-1 bg-white", children: [jsx(Heading, { title: "\u041E\u0444\u0438\u0441\u044B \u043D\u0430 \u043A\u0430\u0440\u0442\u0435", headingType: "h3", className: "mb-8 text-center" }), jsx("div", { id: "map", className: "h-[640px]" })] }));
2952
+ });
2953
+
2954
+ const SafeDepositRental = JSX(({ title, footnote, context, className = '', ...rest }) => {
2955
+ const [points, setPoints] = useState([]);
2956
+ const [showMap, setShowMap] = useState(false);
2805
2957
  const regions = useGetRegions();
2806
- return (jsxs(BlockWrapper, { context: context, className: `bg-white px-8 py-12 ${className}`, ...rest, children: [title ? (jsx(Heading, { title: title, headingType: "h3", as: "h2", className: "mb-2.5 text-center" })) : null, jsx(SafeDepositRentalForm, { regions: regions }), jsx("p", { className: "text-s-light text-secondary-text", children: "\u0410\u0440\u0435\u043D\u0434\u0430 \u0421\u042F, \u0432 \u0441\u043B\u0443\u0447\u0430\u0435 \u043F\u0440\u043E\u0432\u0435\u0434\u0435\u043D\u0438\u044F \u043F\u0440\u043E\u0446\u0435\u0434\u0443\u0440\u044B \u043A\u0443\u043F\u043B\u0438-\u043F\u0440\u043E\u0434\u0430\u0436\u0438, \u0441 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435\u043C \u043D\u0430\u043B\u0438\u0447\u043D\u044B\u0445 \u0434\u0435\u043D\u0435\u0433 \u0438\u043B\u0438 \u043F\u0440\u043E\u0446\u0435\u0434\u0443\u0440\u044B \u0438\u043F\u043E\u0442\u0435\u0447\u043D\u043E\u0439 \u0441\u0434\u0435\u043B\u043A\u0438" })] }));
2958
+ const statusScript = useScript(`https://api-maps.yandex.ru/2.1/?apikey=${projectSettings.YANDEX_MAP_API_KEY}&lang=ru_RU`, {
2959
+ removeOnUnmount: true,
2960
+ });
2961
+ const toggleShowMap = () => {
2962
+ setShowMap(!showMap);
2963
+ };
2964
+ return (jsxs(BlockWrapper, { context: context, className: className, ...rest, children: [jsxs("div", { className: "bg-white px-8 py-12", children: [title ? (jsx(Heading, { title: title, headingType: "h3", as: "h2", className: "mb-2.5 text-center" })) : null, jsx(SafeDepositRentalForm, { regions: regions, setPoints: setPoints, toggleShowMap: toggleShowMap }), footnote ? jsx("p", { className: "text-s-light text-secondary-text", children: footnote }) : null] }), statusScript === 'ready' && points.length && showMap ? (jsx(YandexMap, { points: points })) : null] }));
2807
2965
  });
2808
2966
 
2809
2967
  const checkIsIconRenderable = (icon) => Boolean(icon?.icon || icon?.src);
@@ -3081,17 +3239,17 @@
3081
3239
 
3082
3240
  const renderErrorContent = (error) => {
3083
3241
  if (error?.errorContentType === 'Image' && error?.image) {
3084
- return jsx(Img, { className: "mb-7", image: error.image });
3242
+ return jsx(Img, { image: error.image });
3085
3243
  }
3086
3244
  if (error?.errorContentType === 'Code' && error.code) {
3087
- return jsx("div", { className: "text-title-extra gradient-color-text", children: error.code });
3245
+ return jsx("div", { className: "font-mohave text-title-extra gradient-color-text", children: error.code });
3088
3246
  }
3089
3247
  return null;
3090
3248
  };
3091
3249
  const ErrorBlock = JSX(({ context, className = '', title, subtitle, error, button }) => {
3092
3250
  const { useRouter, handlerDecorator } = context;
3093
3251
  const router = useRouter();
3094
- return (jsxs("section", { className: `flex flex-col justify-center items-center ${className}`, role: "listitem", children: [jsx("div", { className: "flex justify-center mb-7", children: renderErrorContent(error) }), title ? jsx(Heading, { headingType: "h1", className: "text-left mb-4", title: title }) : null, subtitle ? jsx("div", { className: "text-xl-light text-left mb-7", children: subtitle }) : null, button?.text ? (jsx(Button, { className: "py-4 px-9", version: button?.version, ...useLink({ router, handlerDecorator }, button), children: button.text })) : null] }));
3252
+ return (jsxs("section", { className: `flex flex-col justify-center items-center mt-12 ${className}`, role: "listitem", children: [jsx("div", { className: "flex justify-center py-20", children: renderErrorContent(error) }), title ? jsx(Heading, { headingType: "h1", className: "text-left mb-4", title: title }) : null, subtitle ? (jsx("div", { className: "font-sans text-xl-light text-left mb-7 max-w-[613px] text-center", children: subtitle })) : null, button?.text ? (jsx(Button, { className: "py-4 px-9", version: button?.version, ...useLink({ router, handlerDecorator }, button), children: button.text })) : null] }));
3095
3253
  });
3096
3254
 
3097
3255
  const Blocks = {
@@ -3154,7 +3312,7 @@
3154
3312
  };
3155
3313
  }
3156
3314
 
3157
- const LikeButton = JSX(({ className, onClick, ariaLabel }) => (jsx("button", { type: "button", className: `border-0 w-[36px] bg-inherit cursor-pointer ${className || ''}`, onClick: onClick, "aria-label": ariaLabel, children: renderLikeIcon() })));
3315
+ const LikeButton = JSX(({ className, onClick, ariaLabel }) => (jsx("button", { type: "button", className: `border-0 w-9 bg-inherit cursor-pointer ${className || ''}`, onClick: onClick, "aria-label": ariaLabel, children: renderLikeIcon() })));
3158
3316
  const renderLikeIcon = () => {
3159
3317
  const params = {
3160
3318
  stroke: '#292D32',