@redneckz/wildless-cms-uni-blocks 0.14.595 → 0.14.596

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 (335) hide show
  1. package/bundle/EventBus/EventBus.d.ts +17 -4
  2. package/bundle/EventBus/defaultEventBus.d.ts +2 -13
  3. package/bundle/EventBus/useSubject.d.ts +2 -0
  4. package/bundle/EventBus/useSubjectState.d.ts +2 -0
  5. package/bundle/bundle.umd.js +131 -89
  6. package/bundle/bundle.umd.min.js +1 -1
  7. package/bundle/components/CarouselTariffsCard/CardCellsSection.d.ts +9 -0
  8. package/bundle/components/CarouselTariffsCard/carouselTariffsCardEventBus.d.ts +9 -0
  9. package/bundle/hooks/useLocation.d.ts +2 -1
  10. package/bundle/hooks/useReducer.d.ts +4 -0
  11. package/bundle/ui-kit/Foldable/Foldable.d.ts +11 -1
  12. package/bundle/ui-kit/LocationDialog/SelectedLocation.d.ts +5 -0
  13. package/dist/EventBus/EventBus.d.ts +17 -4
  14. package/dist/EventBus/EventBus.js +29 -10
  15. package/dist/EventBus/EventBus.js.map +1 -1
  16. package/dist/EventBus/defaultEventBus.d.ts +2 -13
  17. package/dist/EventBus/defaultEventBus.js.map +1 -1
  18. package/dist/EventBus/useSubject.d.ts +2 -0
  19. package/dist/EventBus/useSubject.js +17 -0
  20. package/dist/EventBus/useSubject.js.map +1 -0
  21. package/dist/EventBus/useSubjectState.d.ts +2 -0
  22. package/dist/EventBus/useSubjectState.js +10 -0
  23. package/dist/EventBus/useSubjectState.js.map +1 -0
  24. package/dist/components/CarouselTariffsCard/CardCellsSection.d.ts +9 -0
  25. package/dist/components/CarouselTariffsCard/CardCellsSection.js +18 -0
  26. package/dist/components/CarouselTariffsCard/CardCellsSection.js.map +1 -0
  27. package/dist/components/CarouselTariffsCard/CarouselTariffsCard.js +11 -25
  28. package/dist/components/CarouselTariffsCard/CarouselTariffsCard.js.map +1 -1
  29. package/dist/components/CarouselTariffsCard/carouselTariffsCardEventBus.d.ts +9 -0
  30. package/dist/components/CarouselTariffsCard/carouselTariffsCardEventBus.js +5 -0
  31. package/dist/components/CarouselTariffsCard/carouselTariffsCardEventBus.js.map +1 -0
  32. package/dist/components/ExchangeRateTile/ExchangeRateTile.js +1 -1
  33. package/dist/components/ExchangeRateTile/ExchangeRateTile.js.map +1 -1
  34. package/dist/components/Header/HeaderSecondaryMenu.js +1 -1
  35. package/dist/components/Header/HeaderSecondaryMenu.js.map +1 -1
  36. package/dist/components/OfficesAtmsMap/AtmsMap.js +1 -1
  37. package/dist/components/OfficesAtmsMap/AtmsMap.js.map +1 -1
  38. package/dist/components/OfficesAtmsMap/OfficesMap.js +1 -1
  39. package/dist/components/OfficesAtmsMap/OfficesMap.js.map +1 -1
  40. package/dist/components/StickyBottomMenu/BurgerMenuDialog.js +1 -1
  41. package/dist/components/StickyBottomMenu/BurgerMenuDialog.js.map +1 -1
  42. package/dist/hooks/useLocation.d.ts +2 -1
  43. package/dist/hooks/useLocation.js +27 -33
  44. package/dist/hooks/useLocation.js.map +1 -1
  45. package/dist/hooks/useReducer.d.ts +4 -0
  46. package/dist/hooks/useReducer.js +12 -0
  47. package/dist/hooks/useReducer.js.map +1 -0
  48. package/dist/hooks/useRegions.js +3 -1
  49. package/dist/hooks/useRegions.js.map +1 -1
  50. package/dist/ui-kit/DialogManager/useDialogManager.js +3 -3
  51. package/dist/ui-kit/DialogManager/useDialogManager.js.map +1 -1
  52. package/dist/ui-kit/DialogManager/useDialogsList.js +1 -1
  53. package/dist/ui-kit/DialogManager/useDialogsList.js.map +1 -1
  54. package/dist/ui-kit/Foldable/Foldable.d.ts +11 -1
  55. package/dist/ui-kit/Foldable/Foldable.js +10 -2
  56. package/dist/ui-kit/Foldable/Foldable.js.map +1 -1
  57. package/dist/ui-kit/FormField/constants.js +1 -0
  58. package/dist/ui-kit/FormField/constants.js.map +1 -1
  59. package/dist/ui-kit/FormField/getValidation.js +1 -0
  60. package/dist/ui-kit/FormField/getValidation.js.map +1 -1
  61. package/dist/ui-kit/LocationDialog/LocationDialog.js +9 -12
  62. package/dist/ui-kit/LocationDialog/LocationDialog.js.map +1 -1
  63. package/dist/ui-kit/LocationDialog/SelectedLocation.d.ts +5 -0
  64. package/dist/ui-kit/LocationDialog/SelectedLocation.js +15 -0
  65. package/dist/ui-kit/LocationDialog/SelectedLocation.js.map +1 -0
  66. package/dist/ui-kit/PopupManager/PopupManager.js +1 -1
  67. package/dist/ui-kit/PopupManager/PopupManager.js.map +1 -1
  68. package/dist/ui-kit/PopupManager/usePopupManager.js +3 -3
  69. package/dist/ui-kit/PopupManager/usePopupManager.js.map +1 -1
  70. package/lib/EventBus/EventBus.d.ts +17 -4
  71. package/lib/EventBus/EventBus.js +29 -10
  72. package/lib/EventBus/EventBus.js.map +1 -1
  73. package/lib/EventBus/defaultEventBus.d.ts +2 -13
  74. package/lib/EventBus/defaultEventBus.js.map +1 -1
  75. package/lib/EventBus/useSubject.d.ts +2 -0
  76. package/lib/EventBus/useSubject.js +14 -0
  77. package/lib/EventBus/useSubject.js.map +1 -0
  78. package/lib/EventBus/useSubjectState.d.ts +2 -0
  79. package/lib/EventBus/useSubjectState.js +7 -0
  80. package/lib/EventBus/useSubjectState.js.map +1 -0
  81. package/lib/common.css +1 -1
  82. package/lib/components/CarouselTariffsCard/CardCellsSection.d.ts +9 -0
  83. package/lib/components/CarouselTariffsCard/CardCellsSection.js +16 -0
  84. package/lib/components/CarouselTariffsCard/CardCellsSection.js.map +1 -0
  85. package/lib/components/CarouselTariffsCard/CarouselTariffsCard.js +12 -26
  86. package/lib/components/CarouselTariffsCard/CarouselTariffsCard.js.map +1 -1
  87. package/lib/components/CarouselTariffsCard/carouselTariffsCardEventBus.d.ts +9 -0
  88. package/lib/components/CarouselTariffsCard/carouselTariffsCardEventBus.js +3 -0
  89. package/lib/components/CarouselTariffsCard/carouselTariffsCardEventBus.js.map +1 -0
  90. package/lib/components/ExchangeRateTile/ExchangeRateTile.js +2 -2
  91. package/lib/components/ExchangeRateTile/ExchangeRateTile.js.map +1 -1
  92. package/lib/components/Header/HeaderSecondaryMenu.js +2 -2
  93. package/lib/components/Header/HeaderSecondaryMenu.js.map +1 -1
  94. package/lib/components/OfficesAtmsMap/AtmsMap.js +2 -2
  95. package/lib/components/OfficesAtmsMap/AtmsMap.js.map +1 -1
  96. package/lib/components/OfficesAtmsMap/OfficesMap.js +2 -2
  97. package/lib/components/OfficesAtmsMap/OfficesMap.js.map +1 -1
  98. package/lib/components/StickyBottomMenu/BurgerMenuDialog.js +2 -2
  99. package/lib/components/StickyBottomMenu/BurgerMenuDialog.js.map +1 -1
  100. package/lib/hooks/useLocation.d.ts +2 -1
  101. package/lib/hooks/useLocation.js +26 -33
  102. package/lib/hooks/useLocation.js.map +1 -1
  103. package/lib/hooks/useReducer.d.ts +4 -0
  104. package/lib/hooks/useReducer.js +9 -0
  105. package/lib/hooks/useReducer.js.map +1 -0
  106. package/lib/hooks/useRegions.js +3 -1
  107. package/lib/hooks/useRegions.js.map +1 -1
  108. package/lib/ui-kit/DialogManager/useDialogManager.js +3 -3
  109. package/lib/ui-kit/DialogManager/useDialogManager.js.map +1 -1
  110. package/lib/ui-kit/DialogManager/useDialogsList.js +1 -1
  111. package/lib/ui-kit/DialogManager/useDialogsList.js.map +1 -1
  112. package/lib/ui-kit/Foldable/Foldable.d.ts +11 -1
  113. package/lib/ui-kit/Foldable/Foldable.js +10 -2
  114. package/lib/ui-kit/Foldable/Foldable.js.map +1 -1
  115. package/lib/ui-kit/FormField/constants.js +1 -0
  116. package/lib/ui-kit/FormField/constants.js.map +1 -1
  117. package/lib/ui-kit/FormField/getValidation.js +1 -0
  118. package/lib/ui-kit/FormField/getValidation.js.map +1 -1
  119. package/lib/ui-kit/LocationDialog/LocationDialog.js +10 -13
  120. package/lib/ui-kit/LocationDialog/LocationDialog.js.map +1 -1
  121. package/lib/ui-kit/LocationDialog/SelectedLocation.d.ts +5 -0
  122. package/lib/ui-kit/LocationDialog/SelectedLocation.js +13 -0
  123. package/lib/ui-kit/LocationDialog/SelectedLocation.js.map +1 -0
  124. package/lib/ui-kit/PopupManager/PopupManager.js +1 -1
  125. package/lib/ui-kit/PopupManager/PopupManager.js.map +1 -1
  126. package/lib/ui-kit/PopupManager/usePopupManager.js +3 -3
  127. package/lib/ui-kit/PopupManager/usePopupManager.js.map +1 -1
  128. package/mobile/bundle/EventBus/EventBus.d.ts +17 -4
  129. package/mobile/bundle/EventBus/defaultEventBus.d.ts +2 -13
  130. package/mobile/bundle/EventBus/useSubject.d.ts +2 -0
  131. package/mobile/bundle/EventBus/useSubjectState.d.ts +2 -0
  132. package/mobile/bundle/bundle.umd.js +131 -89
  133. package/mobile/bundle/bundle.umd.min.js +1 -1
  134. package/mobile/bundle/components/CarouselTariffsCard/CardCellsSection.d.ts +9 -0
  135. package/mobile/bundle/components/CarouselTariffsCard/carouselTariffsCardEventBus.d.ts +9 -0
  136. package/mobile/bundle/hooks/useLocation.d.ts +2 -1
  137. package/mobile/bundle/hooks/useReducer.d.ts +4 -0
  138. package/mobile/bundle/ui-kit/Foldable/Foldable.d.ts +11 -1
  139. package/mobile/bundle/ui-kit/LocationDialog/SelectedLocation.d.ts +5 -0
  140. package/mobile/dist/EventBus/EventBus.d.ts +17 -4
  141. package/mobile/dist/EventBus/EventBus.js +29 -10
  142. package/mobile/dist/EventBus/EventBus.js.map +1 -1
  143. package/mobile/dist/EventBus/defaultEventBus.d.ts +2 -13
  144. package/mobile/dist/EventBus/defaultEventBus.js.map +1 -1
  145. package/mobile/dist/EventBus/useSubject.d.ts +2 -0
  146. package/mobile/dist/EventBus/useSubject.js +17 -0
  147. package/mobile/dist/EventBus/useSubject.js.map +1 -0
  148. package/mobile/dist/EventBus/useSubjectState.d.ts +2 -0
  149. package/mobile/dist/EventBus/useSubjectState.js +10 -0
  150. package/mobile/dist/EventBus/useSubjectState.js.map +1 -0
  151. package/mobile/dist/components/CarouselTariffsCard/CardCellsSection.d.ts +9 -0
  152. package/mobile/dist/components/CarouselTariffsCard/CardCellsSection.js +18 -0
  153. package/mobile/dist/components/CarouselTariffsCard/CardCellsSection.js.map +1 -0
  154. package/mobile/dist/components/CarouselTariffsCard/CarouselTariffsCard.js +11 -25
  155. package/mobile/dist/components/CarouselTariffsCard/CarouselTariffsCard.js.map +1 -1
  156. package/mobile/dist/components/CarouselTariffsCard/carouselTariffsCardEventBus.d.ts +9 -0
  157. package/mobile/dist/components/CarouselTariffsCard/carouselTariffsCardEventBus.js +5 -0
  158. package/mobile/dist/components/CarouselTariffsCard/carouselTariffsCardEventBus.js.map +1 -0
  159. package/mobile/dist/components/ExchangeRateTile/ExchangeRateTile.js +1 -1
  160. package/mobile/dist/components/ExchangeRateTile/ExchangeRateTile.js.map +1 -1
  161. package/mobile/dist/components/Header/HeaderSecondaryMenu.js +1 -1
  162. package/mobile/dist/components/Header/HeaderSecondaryMenu.js.map +1 -1
  163. package/mobile/dist/components/OfficesAtmsMap/AtmsMap.js +1 -1
  164. package/mobile/dist/components/OfficesAtmsMap/AtmsMap.js.map +1 -1
  165. package/mobile/dist/components/OfficesAtmsMap/OfficesMap.js +1 -1
  166. package/mobile/dist/components/OfficesAtmsMap/OfficesMap.js.map +1 -1
  167. package/mobile/dist/components/StickyBottomMenu/BurgerMenuDialog.js +1 -1
  168. package/mobile/dist/components/StickyBottomMenu/BurgerMenuDialog.js.map +1 -1
  169. package/mobile/dist/hooks/useLocation.d.ts +2 -1
  170. package/mobile/dist/hooks/useLocation.js +27 -33
  171. package/mobile/dist/hooks/useLocation.js.map +1 -1
  172. package/mobile/dist/hooks/useReducer.d.ts +4 -0
  173. package/mobile/dist/hooks/useReducer.js +12 -0
  174. package/mobile/dist/hooks/useReducer.js.map +1 -0
  175. package/mobile/dist/hooks/useRegions.js +3 -1
  176. package/mobile/dist/hooks/useRegions.js.map +1 -1
  177. package/mobile/dist/ui-kit/DialogManager/useDialogManager.js +3 -3
  178. package/mobile/dist/ui-kit/DialogManager/useDialogManager.js.map +1 -1
  179. package/mobile/dist/ui-kit/DialogManager/useDialogsList.js +1 -1
  180. package/mobile/dist/ui-kit/DialogManager/useDialogsList.js.map +1 -1
  181. package/mobile/dist/ui-kit/Foldable/Foldable.d.ts +11 -1
  182. package/mobile/dist/ui-kit/Foldable/Foldable.js +10 -2
  183. package/mobile/dist/ui-kit/Foldable/Foldable.js.map +1 -1
  184. package/mobile/dist/ui-kit/FormField/constants.js +1 -0
  185. package/mobile/dist/ui-kit/FormField/constants.js.map +1 -1
  186. package/mobile/dist/ui-kit/FormField/getValidation.js +1 -0
  187. package/mobile/dist/ui-kit/FormField/getValidation.js.map +1 -1
  188. package/mobile/dist/ui-kit/LocationDialog/LocationDialog.js +9 -12
  189. package/mobile/dist/ui-kit/LocationDialog/LocationDialog.js.map +1 -1
  190. package/mobile/dist/ui-kit/LocationDialog/SelectedLocation.d.ts +5 -0
  191. package/mobile/dist/ui-kit/LocationDialog/SelectedLocation.js +15 -0
  192. package/mobile/dist/ui-kit/LocationDialog/SelectedLocation.js.map +1 -0
  193. package/mobile/dist/ui-kit/PopupManager/PopupManager.js +1 -1
  194. package/mobile/dist/ui-kit/PopupManager/PopupManager.js.map +1 -1
  195. package/mobile/dist/ui-kit/PopupManager/usePopupManager.js +3 -3
  196. package/mobile/dist/ui-kit/PopupManager/usePopupManager.js.map +1 -1
  197. package/mobile/lib/EventBus/EventBus.d.ts +17 -4
  198. package/mobile/lib/EventBus/EventBus.js +29 -10
  199. package/mobile/lib/EventBus/EventBus.js.map +1 -1
  200. package/mobile/lib/EventBus/defaultEventBus.d.ts +2 -13
  201. package/mobile/lib/EventBus/defaultEventBus.js.map +1 -1
  202. package/mobile/lib/EventBus/useSubject.d.ts +2 -0
  203. package/mobile/lib/EventBus/useSubject.js +14 -0
  204. package/mobile/lib/EventBus/useSubject.js.map +1 -0
  205. package/mobile/lib/EventBus/useSubjectState.d.ts +2 -0
  206. package/mobile/lib/EventBus/useSubjectState.js +7 -0
  207. package/mobile/lib/EventBus/useSubjectState.js.map +1 -0
  208. package/mobile/lib/common.css +1 -1
  209. package/mobile/lib/components/CarouselTariffsCard/CardCellsSection.d.ts +9 -0
  210. package/mobile/lib/components/CarouselTariffsCard/CardCellsSection.js +16 -0
  211. package/mobile/lib/components/CarouselTariffsCard/CardCellsSection.js.map +1 -0
  212. package/mobile/lib/components/CarouselTariffsCard/CarouselTariffsCard.js +12 -26
  213. package/mobile/lib/components/CarouselTariffsCard/CarouselTariffsCard.js.map +1 -1
  214. package/mobile/lib/components/CarouselTariffsCard/carouselTariffsCardEventBus.d.ts +9 -0
  215. package/mobile/lib/components/CarouselTariffsCard/carouselTariffsCardEventBus.js +3 -0
  216. package/mobile/lib/components/CarouselTariffsCard/carouselTariffsCardEventBus.js.map +1 -0
  217. package/mobile/lib/components/ExchangeRateTile/ExchangeRateTile.js +2 -2
  218. package/mobile/lib/components/ExchangeRateTile/ExchangeRateTile.js.map +1 -1
  219. package/mobile/lib/components/Header/HeaderSecondaryMenu.js +2 -2
  220. package/mobile/lib/components/Header/HeaderSecondaryMenu.js.map +1 -1
  221. package/mobile/lib/components/OfficesAtmsMap/AtmsMap.js +2 -2
  222. package/mobile/lib/components/OfficesAtmsMap/AtmsMap.js.map +1 -1
  223. package/mobile/lib/components/OfficesAtmsMap/OfficesMap.js +2 -2
  224. package/mobile/lib/components/OfficesAtmsMap/OfficesMap.js.map +1 -1
  225. package/mobile/lib/components/StickyBottomMenu/BurgerMenuDialog.js +2 -2
  226. package/mobile/lib/components/StickyBottomMenu/BurgerMenuDialog.js.map +1 -1
  227. package/mobile/lib/hooks/useLocation.d.ts +2 -1
  228. package/mobile/lib/hooks/useLocation.js +26 -33
  229. package/mobile/lib/hooks/useLocation.js.map +1 -1
  230. package/mobile/lib/hooks/useReducer.d.ts +4 -0
  231. package/mobile/lib/hooks/useReducer.js +9 -0
  232. package/mobile/lib/hooks/useReducer.js.map +1 -0
  233. package/mobile/lib/hooks/useRegions.js +3 -1
  234. package/mobile/lib/hooks/useRegions.js.map +1 -1
  235. package/mobile/lib/ui-kit/DialogManager/useDialogManager.js +3 -3
  236. package/mobile/lib/ui-kit/DialogManager/useDialogManager.js.map +1 -1
  237. package/mobile/lib/ui-kit/DialogManager/useDialogsList.js +1 -1
  238. package/mobile/lib/ui-kit/DialogManager/useDialogsList.js.map +1 -1
  239. package/mobile/lib/ui-kit/Foldable/Foldable.d.ts +11 -1
  240. package/mobile/lib/ui-kit/Foldable/Foldable.js +10 -2
  241. package/mobile/lib/ui-kit/Foldable/Foldable.js.map +1 -1
  242. package/mobile/lib/ui-kit/FormField/constants.js +1 -0
  243. package/mobile/lib/ui-kit/FormField/constants.js.map +1 -1
  244. package/mobile/lib/ui-kit/FormField/getValidation.js +1 -0
  245. package/mobile/lib/ui-kit/FormField/getValidation.js.map +1 -1
  246. package/mobile/lib/ui-kit/LocationDialog/LocationDialog.js +10 -13
  247. package/mobile/lib/ui-kit/LocationDialog/LocationDialog.js.map +1 -1
  248. package/mobile/lib/ui-kit/LocationDialog/SelectedLocation.d.ts +5 -0
  249. package/mobile/lib/ui-kit/LocationDialog/SelectedLocation.js +13 -0
  250. package/mobile/lib/ui-kit/LocationDialog/SelectedLocation.js.map +1 -0
  251. package/mobile/lib/ui-kit/PopupManager/PopupManager.js +1 -1
  252. package/mobile/lib/ui-kit/PopupManager/PopupManager.js.map +1 -1
  253. package/mobile/lib/ui-kit/PopupManager/usePopupManager.js +3 -3
  254. package/mobile/lib/ui-kit/PopupManager/usePopupManager.js.map +1 -1
  255. package/mobile/src/EventBus/EventBus.ts +51 -15
  256. package/mobile/src/EventBus/defaultEventBus.ts +2 -14
  257. package/mobile/src/EventBus/useSubject.ts +19 -0
  258. package/mobile/src/EventBus/useSubjectState.ts +13 -0
  259. package/mobile/src/components/CarouselTariffsCard/CardCellsSection.tsx +54 -0
  260. package/mobile/src/components/CarouselTariffsCard/CarouselTariffsCard.tsx +23 -66
  261. package/mobile/src/components/CarouselTariffsCard/carouselTariffsCardEventBus.ts +11 -0
  262. package/mobile/src/components/ExchangeRateTile/ExchangeRateTile.tsx +2 -2
  263. package/mobile/src/components/Header/HeaderSecondaryMenu.tsx +2 -2
  264. package/mobile/src/components/OfficesAtmsMap/AtmsMap.tsx +2 -3
  265. package/mobile/src/components/OfficesAtmsMap/OfficesMap.tsx +2 -2
  266. package/mobile/src/components/StickyBottomMenu/BurgerMenuDialog.tsx +2 -2
  267. package/mobile/src/hooks/useLocation.ts +30 -44
  268. package/mobile/src/hooks/useReducer.ts +21 -0
  269. package/mobile/src/hooks/useRegions.ts +4 -1
  270. package/mobile/src/ui-kit/DialogManager/useDialogManager.ts +3 -3
  271. package/mobile/src/ui-kit/DialogManager/useDialogsList.ts +1 -1
  272. package/mobile/src/ui-kit/Foldable/Foldable.tsx +21 -5
  273. package/mobile/src/ui-kit/FormField/constants.tsx +1 -0
  274. package/mobile/src/ui-kit/FormField/getValidation.tsx +1 -0
  275. package/mobile/src/ui-kit/LocationDialog/LocationDialog.tsx +13 -25
  276. package/mobile/src/ui-kit/LocationDialog/SelectedLocation.tsx +27 -0
  277. package/mobile/src/ui-kit/PopupManager/PopupManager.tsx +1 -1
  278. package/mobile/src/ui-kit/PopupManager/usePopupManager.tsx +3 -3
  279. package/package.json +1 -1
  280. package/src/EventBus/EventBus.ts +51 -15
  281. package/src/EventBus/defaultEventBus.ts +2 -14
  282. package/src/EventBus/useSubject.ts +19 -0
  283. package/src/EventBus/useSubjectState.ts +13 -0
  284. package/src/components/CarouselTariffsCard/CardCellsSection.tsx +54 -0
  285. package/src/components/CarouselTariffsCard/CarouselTariffsCard.tsx +23 -66
  286. package/src/components/CarouselTariffsCard/carouselTariffsCardEventBus.ts +11 -0
  287. package/src/components/ExchangeRateTile/ExchangeRateTile.tsx +2 -2
  288. package/src/components/Header/HeaderSecondaryMenu.tsx +2 -2
  289. package/src/components/OfficesAtmsMap/AtmsMap.tsx +2 -3
  290. package/src/components/OfficesAtmsMap/OfficesMap.tsx +2 -2
  291. package/src/components/StickyBottomMenu/BurgerMenuDialog.tsx +2 -2
  292. package/src/hooks/useLocation.ts +30 -44
  293. package/src/hooks/useReducer.ts +21 -0
  294. package/src/hooks/useRegions.ts +4 -1
  295. package/src/ui-kit/DialogManager/useDialogManager.ts +3 -3
  296. package/src/ui-kit/DialogManager/useDialogsList.ts +1 -1
  297. package/src/ui-kit/Foldable/Foldable.tsx +21 -5
  298. package/src/ui-kit/FormField/constants.tsx +1 -0
  299. package/src/ui-kit/FormField/getValidation.tsx +1 -0
  300. package/src/ui-kit/LocationDialog/LocationDialog.tsx +13 -25
  301. package/src/ui-kit/LocationDialog/SelectedLocation.tsx +27 -0
  302. package/src/ui-kit/PopupManager/PopupManager.tsx +1 -1
  303. package/src/ui-kit/PopupManager/usePopupManager.tsx +3 -3
  304. package/bundle/EventBus/useLatestEvent.d.ts +0 -2
  305. package/bundle/components/CarouselTariffsCard/CarouselTariffsCardAction.d.ts +0 -6
  306. package/dist/EventBus/useLatestEvent.d.ts +0 -2
  307. package/dist/EventBus/useLatestEvent.js +0 -11
  308. package/dist/EventBus/useLatestEvent.js.map +0 -1
  309. package/dist/components/CarouselTariffsCard/CarouselTariffsCardAction.d.ts +0 -6
  310. package/dist/components/CarouselTariffsCard/CarouselTariffsCardAction.js +0 -2
  311. package/dist/components/CarouselTariffsCard/CarouselTariffsCardAction.js.map +0 -1
  312. package/lib/EventBus/useLatestEvent.d.ts +0 -2
  313. package/lib/EventBus/useLatestEvent.js +0 -8
  314. package/lib/EventBus/useLatestEvent.js.map +0 -1
  315. package/lib/components/CarouselTariffsCard/CarouselTariffsCardAction.d.ts +0 -6
  316. package/lib/components/CarouselTariffsCard/CarouselTariffsCardAction.js +0 -2
  317. package/lib/components/CarouselTariffsCard/CarouselTariffsCardAction.js.map +0 -1
  318. package/mobile/bundle/EventBus/useLatestEvent.d.ts +0 -2
  319. package/mobile/bundle/components/CarouselTariffsCard/CarouselTariffsCardAction.d.ts +0 -6
  320. package/mobile/dist/EventBus/useLatestEvent.d.ts +0 -2
  321. package/mobile/dist/EventBus/useLatestEvent.js +0 -11
  322. package/mobile/dist/EventBus/useLatestEvent.js.map +0 -1
  323. package/mobile/dist/components/CarouselTariffsCard/CarouselTariffsCardAction.d.ts +0 -6
  324. package/mobile/dist/components/CarouselTariffsCard/CarouselTariffsCardAction.js +0 -2
  325. package/mobile/dist/components/CarouselTariffsCard/CarouselTariffsCardAction.js.map +0 -1
  326. package/mobile/lib/EventBus/useLatestEvent.d.ts +0 -2
  327. package/mobile/lib/EventBus/useLatestEvent.js +0 -8
  328. package/mobile/lib/EventBus/useLatestEvent.js.map +0 -1
  329. package/mobile/lib/components/CarouselTariffsCard/CarouselTariffsCardAction.d.ts +0 -6
  330. package/mobile/lib/components/CarouselTariffsCard/CarouselTariffsCardAction.js +0 -2
  331. package/mobile/lib/components/CarouselTariffsCard/CarouselTariffsCardAction.js.map +0 -1
  332. package/mobile/src/EventBus/useLatestEvent.ts +0 -16
  333. package/mobile/src/components/CarouselTariffsCard/CarouselTariffsCardAction.ts +0 -6
  334. package/src/EventBus/useLatestEvent.ts +0 -16
  335. package/src/components/CarouselTariffsCard/CarouselTariffsCardAction.ts +0 -6
@@ -1,8 +1,21 @@
1
- export declare class EventBus<EM extends Record<string, any>> {
2
- private subscribers;
1
+ export declare type Subscriber<Event> = (ev: Event) => void;
2
+ declare type Cleanup = () => void;
3
+ export interface EventBusObservable<EM extends Record<string, any>> {
4
+ subscribe<K extends keyof EM>(type: K, listener: Subscriber<EM[K]>): Cleanup;
5
+ }
6
+ export interface EventBusEmitter<EM extends Record<string, any>> {
7
+ fire<K extends keyof EM>(type: K, event: EM[K]): void;
8
+ subject<K extends keyof EM>(type: K, event: EM[K]): Cleanup;
9
+ }
10
+ export declare class EventBus<EM extends Record<string, any>> implements EventBusObservable<EM>, EventBusEmitter<EM> {
11
+ private subscribersMap;
3
12
  private subjectsStateMap;
4
- subscribe<K extends keyof EM>(type: K, listener: (event: EM[K]) => void): () => void;
13
+ readonly emitter: EventBusEmitter<EM>;
14
+ readonly observable: EventBusObservable<EM>;
15
+ subscribe<K extends keyof EM>(type: K, listener: Subscriber<EM[K]>): Cleanup;
5
16
  private unsubscribe;
6
17
  fire<K extends keyof EM>(type: K, event: EM[K]): void;
7
- subject<K extends keyof EM>(type: K, event: EM[K]): void;
18
+ subject<K extends keyof EM>(type: K, event: EM[K]): Cleanup;
19
+ private fireSubscribers;
8
20
  }
21
+ export {};
@@ -1,20 +1,9 @@
1
- import { type CarouselTariffsCardAction } from '../components/CarouselTariffsCard/CarouselTariffsCardAction';
2
- import { type Tab } from '../components/TabsLayout/TabsLayoutContent';
3
1
  import { type Region } from '../hooks/useRegions';
4
2
  import { type DialogAction } from '../ui-kit/DialogManager/DialogAction';
5
3
  import { type PopupAction } from '../ui-kit/PopupManager/PopupAction';
6
4
  import { EventBus } from './EventBus';
7
- interface TabActivationEvent {
8
- type?: Tab['type'];
9
- groupName?: string;
10
- label?: string;
11
- }
12
- interface GlobalEventMap {
5
+ export declare const defaultEventBus: EventBus<{
13
6
  location: Region;
14
7
  dialog: DialogAction;
15
8
  popup: PopupAction;
16
- tab: TabActivationEvent;
17
- fold: CarouselTariffsCardAction;
18
- }
19
- export declare const defaultEventBus: EventBus<GlobalEventMap>;
20
- export {};
9
+ }>;
@@ -0,0 +1,2 @@
1
+ import type { EventBusEmitter } from './EventBus';
2
+ export declare function useSubject<EM extends Record<string, any>, K extends keyof EM>(eventBus: EventBusEmitter<EM>, type: K, initialState: EM[K] | (() => EM[K] | Promise<EM[K]>)): (_: EM[K]) => void;
@@ -0,0 +1,2 @@
1
+ import { type EventBusObservable } from './EventBus';
2
+ export declare const useSubjectState: <EM extends Record<string, any>, K extends keyof EM>(eventBus: EventBusObservable<EM>, type: K, initialState: EM[K]) => EM[K];
@@ -403,39 +403,58 @@
403
403
  ].join(' ');
404
404
 
405
405
  class EventBus {
406
- subscribers = {};
406
+ subscribersMap = {};
407
407
  subjectsStateMap = {};
408
+ emitter = this;
409
+ observable = this;
408
410
  subscribe(type, listener) {
409
- this.subscribers[type] = (this.subscribers[type] || []).concat(listener);
410
- const latestEvent = this.subjectsStateMap[type];
411
- if (latestEvent) {
412
- listener(latestEvent);
413
- }
411
+ this.subscribersMap[type] ||= [];
412
+ this.subscribersMap[type]?.push(listener);
413
+ this.fireSubscribers([listener], this.subjectsStateMap[type]);
414
414
  return () => {
415
415
  this.unsubscribe(type, listener);
416
416
  };
417
417
  }
418
418
  unsubscribe(type, listener) {
419
- this.subscribers[type] = this.subscribers[type]?.filter((s) => s !== listener);
419
+ const index = this.subscribersMap[type]?.indexOf(listener);
420
+ if (index && index !== -1) {
421
+ this.subscribersMap[type]?.splice(index, 1);
422
+ }
420
423
  }
421
424
  fire(type, event) {
422
425
  const isSubjectDeclared = type in this.subjectsStateMap;
423
426
  if (isSubjectDeclared) {
424
- this.subjectsStateMap[type] = event;
427
+ this.subject(type, event);
428
+ }
429
+ else {
430
+ this.fireSubscribers(this.subscribersMap[type], event);
425
431
  }
426
- this.subscribers[type]?.forEach((s) => s(event));
427
432
  }
428
433
  subject(type, event) {
429
- this.subjectsStateMap[type] = event;
434
+ if (this.subjectsStateMap[type] !== event) {
435
+ this.subjectsStateMap[type] = event;
436
+ this.fireSubscribers(this.subscribersMap[type], event);
437
+ }
438
+ return () => {
439
+ delete this.subjectsStateMap[type];
440
+ };
441
+ }
442
+ fireSubscribers(subscribers, event) {
443
+ if (!subscribers || !event) {
444
+ return;
445
+ }
446
+ for (const _ of subscribers) {
447
+ _(event);
448
+ }
430
449
  }
431
450
  }
432
451
 
433
452
  const defaultEventBus = new EventBus();
434
453
 
435
454
  const useDialogManager = () => ({
436
- open: (dialog, options = {}) => defaultEventBus.fire('dialog', { type: 'open', dialog, ...options }),
437
- close: () => defaultEventBus.fire('dialog', { type: 'close' }),
438
- closeAll: () => defaultEventBus.fire('dialog', { type: 'close', all: true }),
455
+ open: (dialog, options = {}) => defaultEventBus.emitter.fire('dialog', { type: 'open', dialog, ...options }),
456
+ close: () => defaultEventBus.emitter.fire('dialog', { type: 'close' }),
457
+ closeAll: () => defaultEventBus.emitter.fire('dialog', { type: 'close', all: true }),
439
458
  });
440
459
 
441
460
  const adjustBase = (href, basePath = '') => href.replace(basePath, '') || '/';
@@ -1090,6 +1109,7 @@
1090
1109
  { key: 'phone', text: 'Телефонный звонок' },
1091
1110
  { key: 'email', text: 'Электронное сообщение' },
1092
1111
  ];
1112
+ // TODO Тоже надо рефакторить - файлик constants
1093
1113
  const OUT_SERVICE_URL = '/api/v1/outservice/outserviceregions';
1094
1114
 
1095
1115
  const getRegionUrl = (typeForm) => typeForm === 'OUTSERVICE' ? OUT_SERVICE_URL : undefined;
@@ -1267,9 +1287,9 @@
1267
1287
  };
1268
1288
 
1269
1289
  const usePopupManager = () => ({
1270
- open: (popup, options) => defaultEventBus.fire('popup', { type: 'open', popup, ...options }),
1271
- update: (popup, options) => defaultEventBus.fire('popup', { type: 'update', popup, ...options }),
1272
- close: () => defaultEventBus.fire('popup', { type: 'close' }),
1290
+ open: (popup, options) => defaultEventBus.emitter.fire('popup', { type: 'open', popup, ...options }),
1291
+ update: (popup, options) => defaultEventBus.emitter.fire('popup', { type: 'update', popup, ...options }),
1292
+ close: () => defaultEventBus.emitter.fire('popup', { type: 'close' }),
1273
1293
  });
1274
1294
 
1275
1295
  const InputPopup = JSX(({ options, onChange }) => (jsx("div", { className: "bg-white text-l max-h-64 overflow-y-auto overflow-x-hidden rounded-md shadow-2xl", role: "list", children: options?.map((item, key) => (jsx("div", { className: "flex px-m py-s cursor-pointer hover:bg-main-divider pr-5xl relative", role: "listitem", onMouseDown: () => onChange(item.processedValue), children: jsx("span", { className: "min-h-6", children: item.processedValue }) }, key.toString()))) })));
@@ -1533,6 +1553,7 @@
1533
1553
  };
1534
1554
  };
1535
1555
 
1556
+ // TODO Зачем это?
1536
1557
  const getValidation = (field, validator, required = false) => required ? withValidator(field, validator) : field;
1537
1558
 
1538
1559
  const ACQUIRING_TYPES = [
@@ -2017,9 +2038,11 @@
2017
2038
  const LegalFormField = JSX(({ field, input }) => (jsx(InputControl, { label: "\u041E\u041F\u0424", placeholder: "\u041E\u041E\u041E, \u041F\u0410\u041E \u0438 \u0434\u0440.", ...getValidation(field('legalForm'), validatorObj.legalForm, input?.required), ...input })));
2018
2039
 
2019
2040
  const REGIONS_URL = '/api/v1/regions';
2041
+ const EMPTY_REGIONS = [];
2042
+ // TODO Почему url можно менять? Разве смысл не в инкапсуляции api url. Тоже под рефакторинг попадает
2020
2043
  function useRegions(url = REGIONS_URL) {
2021
2044
  const { data } = useAsyncData(url, fetchJSONUnsafe);
2022
- return Array.isArray(data) ? data : [];
2045
+ return Array.isArray(data) ? data : EMPTY_REGIONS;
2023
2046
  }
2024
2047
 
2025
2048
  const LocalitiesField = JSX(({ field, input }) => {
@@ -2543,6 +2566,14 @@
2543
2566
  return { ...formState, typeForm: { key: typeForm, text: '' } };
2544
2567
  };
2545
2568
 
2569
+ const FoldableWrapper = JSX(({ className, children }) => (jsx("div", { className: className, role: "group", children: children })));
2570
+ /**
2571
+ * Какой то бесполезный компонент. Его можно заменить на useBool
2572
+ * Лучше оставить только обёрточный div с необходимой атрибутикой
2573
+ * и сделать пассивный компонент
2574
+ *
2575
+ * @deprecated
2576
+ */
2546
2577
  const Foldable = JSX(({ className = '', isFoldButtonOnTop = false, unfoldedByDefault = false, renderFoldableSection, renderFoldButton, }) => {
2547
2578
  const [isUnfolded, setIsUnfolded] = useState(unfoldedByDefault);
2548
2579
  const onToggle = useCallback(() => {
@@ -2550,7 +2581,7 @@
2550
2581
  }, []);
2551
2582
  const sectionNode = renderFoldableSection({ isUnfolded, onToggle });
2552
2583
  const buttonNode = renderFoldButton ? renderFoldButton({ isUnfolded, onToggle }) : null;
2553
- return isFoldButtonOnTop ? (jsxs("div", { className: className, role: "group", children: [buttonNode, sectionNode] })) : (jsxs("div", { className: className, role: "group", children: [sectionNode, buttonNode] }));
2584
+ return isFoldButtonOnTop ? (jsxs(FoldableWrapper, { className: className, children: [buttonNode, sectionNode] })) : (jsxs(FoldableWrapper, { className: className, children: [sectionNode, buttonNode] }));
2554
2585
  });
2555
2586
 
2556
2587
  function useResizeObserver(callback, deps) {
@@ -4640,31 +4671,37 @@
4640
4671
  const CarouselRecommendationCard = JSX(({ className, padding, description, additionalDescription, href, icon, isDotted, __html, socialMedia = [], target, title, align = 'text-left', benefits, imageOptions: { directionRight = true, isImageAlwaysOnRight = ImageAlwaysOnRight, isImageSecondary = false, } = {}, data, ...rest }) => (jsx(BlockWrapper, { className: style('relative min-h-28 group-data-gray:bg-main-divider/50', className), defaultPadding: "p-0", ...rest, children: jsx(LinkWrapper, { href: href, target: target, className: "h-full", data: getAspectsWithInclude(data), children: jsxs(BaseTile, { className: "h-full", defaultPadding: "p-2xl", padding: padding, insetTitle: jsx(Headline, { title: title, description: description, headlineVersion: "XS", isEmbedded: true, align: align }), ...leftOrRightImage(isIcon(icon) ? jsx(Img, { image: icon }) : null, directionRight), buttons: socialMedia.length ? (jsx(SocialMedia, { media: socialMedia, stretched: true, showButtonText: true, version: rest?.version })) : null, isImageAlwaysOnRight: isImageAlwaysOnRight, isImageSecondary: isImageSecondary, imageAlign: "center", children: [jsx(BenefitsList, { benefits: benefits }), __html ? jsx(RichText, { __html: __html, isDotted: isDotted, itemSize: "list-s" }) : null, renderAdditionalDescription(additionalDescription, align)] }) }) })));
4641
4672
  const renderAdditionalDescription = (additionalDescription, align) => additionalDescription ? (jsx(Paragraph, { size: "text-m", font: "font-light", color: "text-secondary-text group-data-secondary:text-white/80", align: align, children: additionalDescription })) : null;
4642
4673
 
4674
+ const useSubjectState = (eventBus, type, initialState) => {
4675
+ const [state, setState] = useState(initialState);
4676
+ useEffect(() => eventBus.subscribe(type, setState), [eventBus, type]);
4677
+ return state;
4678
+ };
4679
+
4643
4680
  const renderCardInfo = (cell, i) => {
4644
4681
  const { title, description, buttons } = cell;
4645
4682
  return (jsxs("div", { className: "py-lg border-b border-main-divider", children: [title ? (jsx("div", { className: "opacity-80", children: jsx(Text, { size: "text-m", color: "text-secondary-text", children: title }) })) : null, description ? (jsx("div", { className: "mt-2xs", children: jsx(Text, { size: "text-xl", color: "text-primary-text", children: description }) })) : null, buttons?.length ? (jsx("div", { className: "text-primary-main", children: renderButtonsSection(buttons) })) : null] }, String(i)));
4646
4683
  };
4647
4684
 
4648
- const CarouselTariffsCard = JSX(({ className = '', title, align = 'text-center', icon, button, visibleCellsCount = 1, cardCells = [], options, data, ...rest }) => {
4649
- const cellsNode = cardCells.map(renderCardInfo);
4650
- const [visibleCells, hiddenCells] = visibleCellsCount > 0
4651
- ? [cellsNode.slice(0, visibleCellsCount), cellsNode.slice(visibleCellsCount)]
4652
- : [cellsNode, []];
4653
- const [isVisible, setIsVisible] = useState(false);
4654
- useEffect(() => defaultEventBus.subscribe('fold', (event) => {
4655
- if (options?.parent !== undefined && event.parent === options?.parent) {
4656
- setIsVisible(event.isUnfolded);
4657
- }
4658
- }), [options?.parent]);
4659
- return (jsxs(BlockWrapper, { className: style('flex flex-col', className), defaultPadding: "p-2xl", ...rest, children: [isIcon(icon) ? (jsx("div", { className: "self-center", children: jsx(Img, { image: icon }) })) : null, title ? (jsx(Heading, { className: style('pt-xs', align), headingType: "h5", title: title })) : null, button?.text ? jsx(LinkButton, { className: "w-full mt-m mb-lg", ...button }) : null, hiddenCells.length ? (jsx(Foldable, { renderFoldableSection: () => (jsxs("div", { children: [visibleCells, jsx(FoldableSection, { isUnfolded: isVisible, children: hiddenCells })] })), renderFoldButton: cardCells.length >= visibleCellsCount
4660
- ? renderFoldButton$3(options?.parent, data, isVisible)
4661
- : null })) : (jsx("div", { children: visibleCells }))] }));
4662
- });
4663
- const renderFoldButton$3 = (parent, data, isUnfolded = false) => () => (jsxs("button", { className: "w-full cursor-pointer text-primary-main pt-lg flex justify-between items-center", onClick: () => {
4664
- if (parent !== undefined) {
4665
- defaultEventBus.fire('fold', { type: 'fold', isUnfolded: !isUnfolded, parent });
4666
- }
4667
- }, type: "button", ...(isUnfolded ? getAspectsAttributes(data) : {}), children: [jsx("div", { children: isUnfolded ? 'Скрыть' : 'Подробнее о тарифе' }), jsx(Icon, { className: "text-primary-text", name: isUnfolded ? 'ArrowUpIcon' : 'ArrowDownIcon', width: "16", height: "16" })] }));
4685
+ const CardCellsSection = JSX((props) => {
4686
+ const { cardCells = [], visibleCellsCount = 1, isUnfolded } = props;
4687
+ const [visibleCells, hiddenCells] = visibleCellsCount > 0 && cardCells.length >= visibleCellsCount
4688
+ ? [cardCells.slice(0, visibleCellsCount), cardCells.slice(visibleCellsCount)]
4689
+ : [cardCells, []];
4690
+ return hiddenCells.length ? (jsxs(FoldableWrapper, { children: [jsxs("div", { children: [visibleCells.map(renderCardInfo), jsx(FoldableSection, { isUnfolded: isUnfolded, children: hiddenCells.map(renderCardInfo) })] }), jsx(FoldButton, { ...props })] })) : (jsx("div", { children: visibleCells.map(renderCardInfo) }));
4691
+ });
4692
+ const FoldButton = JSX(({ isUnfolded, data, onToggle }) => (jsxs("button", { type: "button", className: "w-full cursor-pointer text-primary-main pt-lg flex justify-between items-center", ...(isUnfolded ? getAspectsAttributes(data) : {}), onClick: onToggle, children: [jsx("div", { children: isUnfolded ? 'Скрыть' : 'Подробнее о тарифе' }), jsx(Icon, { className: "text-primary-text", name: isUnfolded ? 'ArrowUpIcon' : 'ArrowDownIcon', width: "16", height: "16" })] })));
4693
+
4694
+ const carouselTariffsCardEventBus = new EventBus();
4695
+
4696
+ const CarouselTariffsCard = JSX(({ className, title, align = 'text-center', icon, button, visibleCellsCount = 1, cardCells = [], options, data, ...rest }) => {
4697
+ const { isUnfolded, parent: firedParent } = useSubjectState(carouselTariffsCardEventBus.observable, 'fold', {});
4698
+ const isVisible = isUnfolded && firedParent === options?.parent;
4699
+ const toggle = useCallback(() => carouselTariffsCardEventBus.emitter.fire('fold', {
4700
+ isUnfolded: !isVisible,
4701
+ parent: options?.parent,
4702
+ }), [isVisible, options?.parent]);
4703
+ return (jsxs(BlockWrapper, { className: style('flex flex-col', className), defaultPadding: "p-2xl", ...rest, children: [isIcon(icon) ? (jsx("div", { className: "self-center", children: jsx(Img, { image: icon }) })) : null, title ? (jsx(Heading, { className: style('pt-xs', align), headingType: "h5", title: title })) : null, button?.text ? jsx(LinkButton, { className: "w-full mt-m mb-lg", ...button }) : null, jsx(CardCellsSection, { cardCells: cardCells, visibleCellsCount: visibleCellsCount, isUnfolded: isVisible, data: data, onToggle: toggle })] }));
4704
+ });
4668
4705
 
4669
4706
  const ContactsBlock = JSX(({ className, contacts, info, version = 'secondary', ...rest }) => (jsxs(BlockWrapper, { className: style('flex', className), defaultPadding: "p-6xl", version: version, ...rest, children: [info?.length ? renderBlocks(info) : null, contacts?.length ? renderBlocks(contacts) : null] })));
4670
4707
  const renderBlocks = (info) => (jsx("div", { className: "flex gap-5xl grow basis-0", children: info.map((column, i) => renderBlocksColumn({ column, i })) }));
@@ -4836,47 +4873,46 @@
4836
4873
  };
4837
4874
  const ErrorBlock = JSX(({ className = '', title, description, error, button, ...rest }) => (jsxs(BlockWrapper, { className: style('flex flex-col justify-center items-center', className), defaultPadding: style('p-6xl'), version: "transparent", ...rest, children: [jsx("div", { className: "flex justify-center", children: renderErrorContent(error) }), jsx(Headline, { title: title, description: description, headlineVersion: "XL", isEmbedded: true, className: "mb-2xl last:mb-0" }), button?.text ? (jsx(LinkButton, { version: button?.version, text: button?.text, ...button })) : null] })));
4838
4875
 
4839
- const useLatestEvent = (eventBus, type, initialEvent) => {
4840
- const [latestEvent, setLatestEvent] = useState(initialEvent || null);
4841
- useEffect(() => eventBus.subscribe(type, (_) => setLatestEvent(_)), [eventBus, type]);
4842
- const fireEvent = useCallback((_) => eventBus.fire(type, _), [eventBus, type]);
4843
- return [latestEvent, fireEvent];
4844
- };
4876
+ function useSubject(eventBus, type, initialState) {
4877
+ useEffect(() => {
4878
+ const state = initialState instanceof Function ? initialState() : initialState;
4879
+ if (state instanceof Promise) {
4880
+ state.then((_) => eventBus.subject(type, _), console.warn);
4881
+ }
4882
+ else {
4883
+ eventBus.subject(type, state);
4884
+ }
4885
+ }, [eventBus, type]);
4886
+ return useCallback((_) => eventBus.fire(type, _), [eventBus, type]);
4887
+ }
4845
4888
 
4846
4889
  const REGION_URL = '/api/v1/region';
4847
4890
  const LOCATION_STORAGE_KEY = 'location';
4848
4891
  function useLocation(defaultLocation = 'Москва') {
4849
- const [currentLocation, fireCurrentLocation] = useLatestEvent(defaultEventBus, 'location', restoreLocation() ?? { name: defaultLocation });
4850
- const selectCurrentLocation = useCallback((_) => {
4851
- storeLocation(_);
4852
- fireCurrentLocation(_);
4853
- }, []);
4854
- const { data } = useAsyncData(hasStoredLocation() ? null : REGION_URL, fetchJSONUnsafe);
4855
- useEffect(() => {
4856
- if (data && !hasStoredLocation()) {
4857
- fireCurrentLocation(data);
4892
+ useEffect(() => defaultEventBus.subscribe('location', storeLocation), []);
4893
+ return useSubject(defaultEventBus.emitter, 'location', restoreLocation(defaultLocation));
4894
+ }
4895
+ function useLocationState(defaultLocation = 'Москва') {
4896
+ return useSubjectState(defaultEventBus.observable, 'location', { name: defaultLocation });
4897
+ }
4898
+ function restoreLocation(defaultLocation) {
4899
+ return async () => {
4900
+ if (!globalThis.localStorage?.hasItem(LOCATION_STORAGE_KEY)) {
4901
+ storeLocation(await fetchJSON(REGION_URL));
4902
+ }
4903
+ const storedLocation = globalThis.localStorage?.getItem(LOCATION_STORAGE_KEY);
4904
+ try {
4905
+ return storedLocation && JSON.parse(storedLocation);
4906
+ }
4907
+ catch (ex) {
4908
+ // Do nothing
4858
4909
  }
4859
- }, [data]);
4860
- return [currentLocation ?? { name: defaultLocation }, selectCurrentLocation];
4910
+ return { name: defaultLocation };
4911
+ };
4912
+ }
4913
+ function storeLocation(_) {
4914
+ _ && globalThis.localStorage?.setItem(LOCATION_STORAGE_KEY, JSON.stringify(_));
4861
4915
  }
4862
- const hasStoredLocation = () => Boolean(globalThis.localStorage?.getItem(LOCATION_STORAGE_KEY));
4863
- const restoreLocation = () => {
4864
- try {
4865
- const data = globalThis.localStorage?.getItem(LOCATION_STORAGE_KEY);
4866
- return data && JSON.parse(data);
4867
- }
4868
- catch (ex) {
4869
- return null;
4870
- }
4871
- };
4872
- const storeLocation = (_) => {
4873
- try {
4874
- globalThis.localStorage?.setItem(LOCATION_STORAGE_KEY, JSON.stringify(_));
4875
- }
4876
- catch (ex) {
4877
- // Do nothing
4878
- }
4879
- };
4880
4916
 
4881
4917
  var Currency;
4882
4918
  (function (Currency) {
@@ -5018,7 +5054,7 @@
5018
5054
  }
5019
5055
 
5020
5056
  const ExchangeRateTile = JSX(({ className = '', title = 'Курсы обмена валют', button, ...rest }) => {
5021
- const [currentLocation] = useLocation();
5057
+ const currentLocation = useLocationState();
5022
5058
  const exchangeRates = useFetchExchangeRateData(currentLocation);
5023
5059
  const currencyRates = getCurrencyRates(exchangeRates?.exchangeRate?.currencies);
5024
5060
  const currencyRatesBuy = currencyRates.filter((_) => _.buyExchangeRate);
@@ -5557,27 +5593,33 @@
5557
5593
  return (jsxs("form", { className: `font-sans relative ${className}`, children: [jsx("div", { className: "absolute rounded h-full flex items-center justify-center pl-m max-w-44 gap-s pointer-events-none", children: searchTerm ? null : (jsx("label", { htmlFor: "search-bar-input", className: `text-secondary-text `, children: "\u041F\u043E\u0438\u0441\u043A \u043F\u043E \u0444\u0438\u043B\u0438\u0430\u043B\u0430\u043C" })) }), jsx("input", { id: "search-bar-input", className: style(inputValidStyle, `h-12 pl-m w-full peer text-l text-black rounded-md box-border`), value: searchTerm, onChange: (e) => onSearch(e.target.value.toLowerCase()), type: "text", name: "location-search-bar-input" })] }));
5558
5594
  });
5559
5595
 
5560
- const SEARCH_TERM_MIN_LENGTH = 3;
5561
- const LocationDialog = JSX(({ foreignOffices, branches }) => {
5562
- const [currentLocation, selectCurrentLocation] = useLocation(branches?.default);
5596
+ const SelectedLocation = JSX(({ defaultLocation }) => {
5597
+ const currentLocation = useLocationState(defaultLocation);
5563
5598
  const link = useLink();
5564
5599
  const { href } = link({ href: `/branches/${currentLocation.slug}` });
5600
+ return currentLocation ? (jsx("div", { className: "mb-s", children: jsxs(Paragraph, { size: "text-l", color: "text-primary-text", children: ["\u0421\u0435\u0439\u0447\u0430\u0441 \u0432\u044B\u0431\u0440\u0430\u043D:", jsx(LinkWrapper, { href: href, className: "inline mx-2xs text-primary-main", children: currentLocation.name })] }) })) : null;
5601
+ });
5602
+
5603
+ const SEARCH_TERM_MIN_LENGTH = 3;
5604
+ const LocationDialog = JSX(({ foreignOffices, branches }) => {
5605
+ const selectLocation = useLocation(branches?.default);
5565
5606
  const [query, setQuery] = useState('');
5566
- const regions = cleanUpRegions(useRegions()).sort((a, b) => a.name.localeCompare(b.name));
5567
- const regionsGroupByLetter = groupBy(regions, regionFirstLetter);
5607
+ const rawRegions = useRegions();
5608
+ const regions = useMemo(() => cleanUpRegions(rawRegions).sort((a, b) => (a.name ?? '').localeCompare(b.name ?? '')), [rawRegions]);
5609
+ const regionsGroupByLetter = useMemo(() => groupBy(regions, regionFirstLetter), [regions]);
5568
5610
  const { close } = useDialogManager();
5569
5611
  const handleChangeLocation = useCallback((region) => {
5570
- selectCurrentLocation(region);
5612
+ selectLocation(region);
5571
5613
  close();
5572
5614
  }, []);
5573
- return (jsxs(Dialog, { className: "pb-20", head: jsxs("div", { children: [jsx(Text, { size: "text-h4", color: "text-primary-text", children: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0444\u0438\u043B\u0438\u0430\u043B" }), currentLocation ? (jsx("div", { className: "mb-s", children: jsxs(Paragraph, { size: "text-l", color: "text-primary-text", children: ["\u0421\u0435\u0439\u0447\u0430\u0441 \u0432\u044B\u0431\u0440\u0430\u043D:", jsx(LinkWrapper, { href: href, className: "inline mx-2xs text-primary-main", children: currentLocation.name })] }) })) : null, jsx(SearchBar, { onSearch: setQuery, searchTerm: query })] }), children: [query && query.length >= SEARCH_TERM_MIN_LENGTH ? (jsx("div", { children: regions
5615
+ return (jsxs(Dialog, { className: "pb-20", head: jsxs("div", { children: [jsx(Text, { size: "text-h4", color: "text-primary-text", children: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0444\u0438\u043B\u0438\u0430\u043B" }), jsx(SelectedLocation, { defaultLocation: branches?.default }), jsx(SearchBar, { onSearch: setQuery, searchTerm: query })] }), children: [query && query.length >= SEARCH_TERM_MIN_LENGTH ? (jsx("div", { children: regions
5574
5616
  .filter(({ name }) => name && jaroWinklerDistance(name.toLowerCase())(query.toLowerCase()) >= 0.8)
5575
5617
  .map(renderRegion(branches?.dataSelect, handleChangeLocation)) })) : (jsx("div", { className: "columns-1 sm:columns-3 md:columns-4 lg:columns-5", children: Array.from(regionsGroupByLetter.entries()).map(renderRegionGroup(handleChangeLocation, branches?.dataSelect)) })), renderForeignOffices(foreignOffices)] }));
5576
5618
  });
5577
- const regionFirstLetter = (region) => region.name?.charAt(0) || '';
5619
+ const regionFirstLetter = (region) => region.name?.charAt(0) ?? '';
5578
5620
  const cleanUpRegions = (regions) => regions.map((region) => ({
5579
5621
  ...region,
5580
- name: region.name?.replace(/республика|область|край'/gi, '').trim() || '',
5622
+ name: region.name?.replace(/республика|область|край'/gi, '').trim() ?? '',
5581
5623
  }));
5582
5624
 
5583
5625
  const useLocationDialog = (props) => {
@@ -5605,7 +5647,7 @@
5605
5647
 
5606
5648
  const HeaderSecondaryMenu = JSX(({ className, version, ...rest }) => {
5607
5649
  const iconVersion = version === 'transparent' ? 'white' : 'black';
5608
- const [currentLocation] = useLocation(rest?.branches?.default);
5650
+ const currentLocation = useLocationState(rest?.branches?.default);
5609
5651
  const searchDialog = useSearchDialog(rest);
5610
5652
  const locationDialog = useLocationDialog(rest);
5611
5653
  const openSearchDialog = useCallback(() => searchDialog.open(), [searchDialog]);
@@ -6444,7 +6486,7 @@
6444
6486
  designDisabledPeople: (item) => Boolean(item.designDisabledPeople),
6445
6487
  };
6446
6488
  const AtmsMap = JSX(({ descriptionData, className }) => {
6447
- const [currentLocation] = useLocation();
6489
+ const currentLocation = useLocationState();
6448
6490
  const regionCode = currentLocation?.code ?? '000';
6449
6491
  const { data: officesData, isLoad } = useAtms(regionCode);
6450
6492
  return (jsx(OfficesAtmsMapLayout, { className: className, filterItems: filterItems, data: officesData, isLoad: isLoad, initFilterState: INITIAL_FILTRATION_STATE, renderCard: renderAtmCard, getBalloon: getAtmPoint, title: `Банкоматы филиала ${currentLocation?.name}`, descriptionData: descriptionData }));
@@ -6663,7 +6705,7 @@
6663
6705
  };
6664
6706
 
6665
6707
  const OfficesMap = JSX(({ className }) => {
6666
- const [currentLocation] = useLocation();
6708
+ const currentLocation = useLocationState();
6667
6709
  const regionCode = currentLocation?.code ?? '000';
6668
6710
  const { data, isLoad } = useOffices(regionCode);
6669
6711
  return (jsx(OfficesAtmsMapLayout, { className: className, data: data?.branches, isLoad: isLoad, remoteWorkplaces: data?.remoteWorkplaces, renderCard: renderOfficeCard, renderRemoteWorkplaceCard: renderRemoteWorkplaceCard, getBalloon: getOfficePoint, getBalloonRemoteWorkplaces: getRemoteWorkplacePoint, title: `Офисы филиала ${currentLocation?.name}` }));
@@ -7347,7 +7389,7 @@
7347
7389
  onClose && onClose(dialogs[dialogs.length - 1]);
7348
7390
  pop();
7349
7391
  }, [dialogs, onClose]);
7350
- useEffect(() => defaultEventBus.subscribe('dialog', (action) => {
7392
+ useEffect(() => defaultEventBus.observable.subscribe('dialog', (action) => {
7351
7393
  switch (action.type) {
7352
7394
  case 'open':
7353
7395
  push(action);
@@ -7404,7 +7446,7 @@
7404
7446
  const close = useCallback(() => {
7405
7447
  setPopup(null);
7406
7448
  }, []);
7407
- useEffect(() => defaultEventBus.subscribe('popup', (action) => {
7449
+ useEffect(() => defaultEventBus.observable.subscribe('popup', (action) => {
7408
7450
  switch (action.type) {
7409
7451
  case 'open':
7410
7452
  case 'update':
@@ -7459,7 +7501,7 @@
7459
7501
  slots: () => [HEADER_SLOT, FOOTER_SLOT, STICKY_FOOTER_SLOT],
7460
7502
  });
7461
7503
 
7462
- const packageVersion = "0.14.594";
7504
+ const packageVersion = "0.14.595";
7463
7505
 
7464
7506
  exports.Blocks = Blocks;
7465
7507
  exports.ContentPage = ContentPage;