ublo-lib 1.24.4 → 1.25.0

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 (330) hide show
  1. package/es/common/components/admin-links/admin-links.js +95 -52
  2. package/es/common/components/admin-links/index.js +1 -1
  3. package/es/common/components/breadcrumb.js +78 -21
  4. package/es/common/components/cross-selling-editor/cross-selling-editor.js +52 -0
  5. package/es/common/components/cross-selling-editor/cross-selling-editor.module.css +6 -0
  6. package/es/common/components/cross-selling-editor/editor.js +98 -0
  7. package/es/common/components/cross-selling-editor/editor.module.css +23 -0
  8. package/es/common/components/cross-selling-editor/hooks/use-custom-offers.js +52 -0
  9. package/es/common/components/cross-selling-editor/hooks/use-tunnel-offers.js +35 -0
  10. package/es/common/components/cross-selling-editor/index.js +2 -0
  11. package/es/common/components/cross-selling-editor/override-trigger-form.js +156 -0
  12. package/es/common/components/cross-selling-editor/override-trigger-form.module.css +58 -0
  13. package/es/common/components/cross-selling-editor/override.js +124 -0
  14. package/es/common/components/cross-selling-editor/override.module.css +65 -0
  15. package/es/common/components/cross-selling-editor/overrides-list.js +111 -0
  16. package/es/common/components/cross-selling-editor/overrides-list.module.css +56 -0
  17. package/es/common/components/cross-selling-editor/rule.js +105 -0
  18. package/es/common/components/cross-selling-editor/rule.module.css +37 -0
  19. package/es/common/components/cross-selling-editor/rules.js +84 -0
  20. package/es/common/components/cross-selling-editor/rules.module.css +39 -0
  21. package/es/common/components/cross-selling-editor/services/api.js +36 -0
  22. package/es/common/components/cross-selling-editor/services/utils.js +199 -0
  23. package/es/common/components/cross-selling-editor/tester-tunnel-offer.js +53 -0
  24. package/es/common/components/cross-selling-editor/tester-tunnel-offer.module.css +18 -0
  25. package/es/common/components/cross-selling-editor/tester.js +188 -0
  26. package/es/common/components/cross-selling-editor/tester.module.css +106 -0
  27. package/es/common/components/cross-selling-editor/types.js +1 -0
  28. package/es/common/components/custom-contact-form/custom-contact-form.js +147 -75
  29. package/es/common/components/date-picker/calendar.js +1 -1
  30. package/es/common/components/gesco-contact-form/gesco-contact-form.js +243 -91
  31. package/es/common/components/gesco-contact-form/hooks/use-params.js +35 -20
  32. package/es/common/components/gesco-contact-form/index.js +1 -1
  33. package/es/common/components/gesco-contact-form/phone-code-select.js +76 -56
  34. package/es/common/components/gesco-contact-form/services/api.js +7 -8
  35. package/es/common/components/gesco-contact-form/services/form.js +39 -25
  36. package/es/common/components/gesco-contact-form/services/messages.js +68 -65
  37. package/es/common/components/gesco-contact-form/services/plausible.js +8 -10
  38. package/es/common/components/gesco-contact-form/types.js +1 -1
  39. package/es/common/components/instant-search/hooks/use-constant.js +8 -6
  40. package/es/common/components/instant-search/hooks/use-debounced-search.js +14 -5
  41. package/es/common/components/instant-search/hooks/use-search.js +10 -6
  42. package/es/common/components/instant-search/index.js +1 -1
  43. package/es/common/components/instant-search/input.js +75 -45
  44. package/es/common/components/instant-search/instant-search.js +124 -73
  45. package/es/common/components/instant-search/links.js +74 -23
  46. package/es/common/components/instant-search/no-product.js +81 -4
  47. package/es/common/components/instant-search/products.js +118 -31
  48. package/es/common/components/instant-search/results.js +121 -32
  49. package/es/common/components/instant-search/services/api.js +12 -10
  50. package/es/common/components/instant-search/services/messages.js +3 -3
  51. package/es/common/components/instant-search/services/utils.js +34 -34
  52. package/es/common/components/msem-preset-editor/components/facet-selector.js +39 -22
  53. package/es/common/components/msem-preset-editor/components/form.js +54 -5
  54. package/es/common/components/msem-preset-editor/components/stay-picker.js +72 -33
  55. package/es/common/components/msem-preset-editor/components/widget-list-item.js +130 -42
  56. package/es/common/components/msem-preset-editor/components/widget-list.js +54 -29
  57. package/es/common/components/msem-preset-editor/editor-dialog.js +68 -21
  58. package/es/common/components/msem-preset-editor/editors/elloha.js +102 -69
  59. package/es/common/components/msem-preset-editor/editors/index.js +6 -6
  60. package/es/common/components/msem-preset-editor/editors/lodgings.js +316 -184
  61. package/es/common/components/msem-preset-editor/editors/ski-passes.js +267 -180
  62. package/es/common/components/msem-preset-editor/editors/standard-products.js +84 -56
  63. package/es/common/components/msem-preset-editor/editors/vakario.js +239 -171
  64. package/es/common/components/msem-preset-editor/msem-preset-editor.js +215 -129
  65. package/es/common/components/msem-preset-editor/services/api.js +69 -42
  66. package/es/common/components/msem-preset-editor/services/offers.js +61 -35
  67. package/es/common/components/msem-preset-editor/services/preset.js +22 -14
  68. package/es/common/components/msem-preset-editor/services/url-params.js +24 -24
  69. package/es/common/components/msem-preset-linker/components/actions.js +52 -40
  70. package/es/common/components/msem-preset-linker/components/overlays.js +57 -41
  71. package/es/common/components/msem-preset-linker/components/resort-selector.js +21 -11
  72. package/es/common/components/msem-preset-linker/hooks/use-msem-presets.js +43 -31
  73. package/es/common/components/msem-preset-linker/index.js +1 -1
  74. package/es/common/components/msem-preset-linker/msem-preset-linker.js +71 -42
  75. package/es/common/components/msem-preset-linker/services/url-params.js +10 -13
  76. package/es/common/components/plausible/hooks/use-plausible.js +22 -18
  77. package/es/common/components/plausible/index.js +1 -1
  78. package/es/common/components/plausible/plausible.js +23 -14
  79. package/es/common/components/plausible/services/callback.js +164 -115
  80. package/es/common/components/plausible/services/load.js +4 -6
  81. package/es/common/components/plausible/services/send-goal.js +6 -3
  82. package/es/common/components/scroll-spy.js +56 -43
  83. package/es/common/components/scrolling-carousel/index.js +1 -1
  84. package/es/common/components/scrolling-carousel/scrolling-carousel.js +94 -55
  85. package/es/common/components/tabbed-zones.js +100 -47
  86. package/es/common/hooks/use-faq.js +37 -36
  87. package/es/common/hooks/use-in-view.js +74 -74
  88. package/es/common/hooks/use-scroll-direction.js +37 -32
  89. package/es/common/hooks/use-stay.js +16 -13
  90. package/es/common/hooks/use-sticky.js +35 -35
  91. package/es/common/hooks/use-tunnel.js +42 -30
  92. package/es/common/hooks/use-update-effect.js +9 -9
  93. package/es/common/hooks/use-window-sizes.js +27 -28
  94. package/es/common/utils/cms.js +15 -17
  95. package/es/common/utils/cookies.js +10 -11
  96. package/es/common/utils/copy.js +11 -11
  97. package/es/common/utils/dates.js +8 -10
  98. package/es/common/utils/elements.js +14 -15
  99. package/es/common/utils/events.js +4 -19
  100. package/es/common/utils/file-manager.js +12 -10
  101. package/es/common/utils/load-js.js +10 -11
  102. package/es/common/utils/msem-widget.js +30 -23
  103. package/es/common/utils/url-parameters.js +11 -7
  104. package/es/esf/components/magic-box/index.js +1 -1
  105. package/es/esf/components/magic-box/magic-box.js +164 -102
  106. package/es/esf/components/parcours-esf/index.js +1 -1
  107. package/es/esf/components/parcours-esf/parcours-esf.js +45 -30
  108. package/es/esf/components/period-picker/period-picker.js +5 -5
  109. package/es/lbm/components/lumiplan/api.js +35 -18
  110. package/es/lbm/components/lumiplan/domain.js +96 -20
  111. package/es/lbm/components/lumiplan/i18n/translations.js +24 -15
  112. package/es/lbm/components/lumiplan/index.js +1 -1
  113. package/es/lbm/components/lumiplan/lumiplan.js +130 -102
  114. package/es/lbm/components/lumiplan/opening.js +116 -38
  115. package/es/lbm/components/lumiplan/pois.js +270 -161
  116. package/es/lbm/components/lumiplan/resort-selector.js +58 -36
  117. package/es/lbm/components/lumiplan/road-condition.js +100 -19
  118. package/es/lbm/components/lumiplan/todays-tips.js +45 -16
  119. package/es/lbm/components/lumiplan/types.js +1 -1
  120. package/es/lbm/components/lumiplan/weather/avalanche-risk.js +33 -8
  121. package/es/lbm/components/lumiplan/weather/index.js +1 -1
  122. package/es/lbm/components/lumiplan/weather/snow-data.js +71 -5
  123. package/es/lbm/components/lumiplan/weather/weather-data.js +126 -7
  124. package/es/lbm/components/lumiplan/weather/weather-days.js +76 -48
  125. package/es/lbm/components/lumiplan/weather/weather-icon.js +23 -20
  126. package/es/lbm/components/lumiplan/weather/weather-zones.js +71 -42
  127. package/es/lbm/components/lumiplan/weather/weather.js +90 -28
  128. package/package.json +4 -10
  129. package/es/common/components/admin-links/admin-links.d.ts +0 -11
  130. package/es/common/components/admin-links/admin-links.d.ts.map +0 -1
  131. package/es/common/components/admin-links/index.d.ts +0 -3
  132. package/es/common/components/admin-links/index.d.ts.map +0 -1
  133. package/es/common/components/breadcrumb.d.ts +0 -16
  134. package/es/common/components/breadcrumb.d.ts.map +0 -1
  135. package/es/common/components/custom-contact-form/custom-contact-form.d.ts +0 -25
  136. package/es/common/components/custom-contact-form/custom-contact-form.d.ts.map +0 -1
  137. package/es/common/components/gesco-contact-form/gesco-contact-form.d.ts +0 -17
  138. package/es/common/components/gesco-contact-form/gesco-contact-form.d.ts.map +0 -1
  139. package/es/common/components/gesco-contact-form/hooks/use-params.d.ts +0 -15
  140. package/es/common/components/gesco-contact-form/hooks/use-params.d.ts.map +0 -1
  141. package/es/common/components/gesco-contact-form/index.d.ts +0 -3
  142. package/es/common/components/gesco-contact-form/index.d.ts.map +0 -1
  143. package/es/common/components/gesco-contact-form/phone-code-select.d.ts +0 -7
  144. package/es/common/components/gesco-contact-form/phone-code-select.d.ts.map +0 -1
  145. package/es/common/components/gesco-contact-form/services/api.d.ts +0 -30
  146. package/es/common/components/gesco-contact-form/services/api.d.ts.map +0 -1
  147. package/es/common/components/gesco-contact-form/services/form.d.ts +0 -31
  148. package/es/common/components/gesco-contact-form/services/form.d.ts.map +0 -1
  149. package/es/common/components/gesco-contact-form/services/messages.d.ts +0 -34
  150. package/es/common/components/gesco-contact-form/services/messages.d.ts.map +0 -1
  151. package/es/common/components/gesco-contact-form/services/plausible.d.ts +0 -3
  152. package/es/common/components/gesco-contact-form/services/plausible.d.ts.map +0 -1
  153. package/es/common/components/gesco-contact-form/types.d.ts +0 -34
  154. package/es/common/components/gesco-contact-form/types.d.ts.map +0 -1
  155. package/es/common/components/instant-search/hooks/use-constant.d.ts +0 -2
  156. package/es/common/components/instant-search/hooks/use-constant.d.ts.map +0 -1
  157. package/es/common/components/instant-search/hooks/use-debounced-search.d.ts +0 -7
  158. package/es/common/components/instant-search/hooks/use-debounced-search.d.ts.map +0 -1
  159. package/es/common/components/instant-search/hooks/use-search.d.ts +0 -16
  160. package/es/common/components/instant-search/hooks/use-search.d.ts.map +0 -1
  161. package/es/common/components/instant-search/index.d.ts +0 -3
  162. package/es/common/components/instant-search/index.d.ts.map +0 -1
  163. package/es/common/components/instant-search/input.d.ts +0 -15
  164. package/es/common/components/instant-search/input.d.ts.map +0 -1
  165. package/es/common/components/instant-search/instant-search.d.ts +0 -14
  166. package/es/common/components/instant-search/instant-search.d.ts.map +0 -1
  167. package/es/common/components/instant-search/links.d.ts +0 -12
  168. package/es/common/components/instant-search/links.d.ts.map +0 -1
  169. package/es/common/components/instant-search/no-product.d.ts +0 -6
  170. package/es/common/components/instant-search/no-product.d.ts.map +0 -1
  171. package/es/common/components/instant-search/products.d.ts +0 -14
  172. package/es/common/components/instant-search/products.d.ts.map +0 -1
  173. package/es/common/components/instant-search/results.d.ts +0 -76
  174. package/es/common/components/instant-search/results.d.ts.map +0 -1
  175. package/es/common/components/instant-search/services/api.d.ts +0 -2
  176. package/es/common/components/instant-search/services/api.d.ts.map +0 -1
  177. package/es/common/components/instant-search/services/messages.d.ts +0 -2
  178. package/es/common/components/instant-search/services/messages.d.ts.map +0 -1
  179. package/es/common/components/instant-search/services/utils.d.ts +0 -4
  180. package/es/common/components/instant-search/services/utils.d.ts.map +0 -1
  181. package/es/common/components/msem-preset-editor/components/facet-selector.d.ts +0 -6
  182. package/es/common/components/msem-preset-editor/components/facet-selector.d.ts.map +0 -1
  183. package/es/common/components/msem-preset-editor/components/form.d.ts +0 -8
  184. package/es/common/components/msem-preset-editor/components/form.d.ts.map +0 -1
  185. package/es/common/components/msem-preset-editor/components/stay-picker.d.ts +0 -14
  186. package/es/common/components/msem-preset-editor/components/stay-picker.d.ts.map +0 -1
  187. package/es/common/components/msem-preset-editor/components/widget-list-item.d.ts +0 -12
  188. package/es/common/components/msem-preset-editor/components/widget-list-item.d.ts.map +0 -1
  189. package/es/common/components/msem-preset-editor/components/widget-list.d.ts +0 -17
  190. package/es/common/components/msem-preset-editor/components/widget-list.d.ts.map +0 -1
  191. package/es/common/components/msem-preset-editor/editor-dialog.d.ts +0 -30
  192. package/es/common/components/msem-preset-editor/editor-dialog.d.ts.map +0 -1
  193. package/es/common/components/msem-preset-editor/editors/elloha.d.ts +0 -15
  194. package/es/common/components/msem-preset-editor/editors/elloha.d.ts.map +0 -1
  195. package/es/common/components/msem-preset-editor/editors/index.d.ts +0 -14
  196. package/es/common/components/msem-preset-editor/editors/index.d.ts.map +0 -1
  197. package/es/common/components/msem-preset-editor/editors/lodgings.d.ts +0 -17
  198. package/es/common/components/msem-preset-editor/editors/lodgings.d.ts.map +0 -1
  199. package/es/common/components/msem-preset-editor/editors/ski-passes.d.ts +0 -16
  200. package/es/common/components/msem-preset-editor/editors/ski-passes.d.ts.map +0 -1
  201. package/es/common/components/msem-preset-editor/editors/standard-products.d.ts +0 -16
  202. package/es/common/components/msem-preset-editor/editors/standard-products.d.ts.map +0 -1
  203. package/es/common/components/msem-preset-editor/editors/vakario.d.ts +0 -15
  204. package/es/common/components/msem-preset-editor/editors/vakario.d.ts.map +0 -1
  205. package/es/common/components/msem-preset-editor/msem-preset-editor.d.ts +0 -28
  206. package/es/common/components/msem-preset-editor/msem-preset-editor.d.ts.map +0 -1
  207. package/es/common/components/msem-preset-editor/services/api.d.ts +0 -15
  208. package/es/common/components/msem-preset-editor/services/api.d.ts.map +0 -1
  209. package/es/common/components/msem-preset-editor/services/offers.d.ts +0 -47
  210. package/es/common/components/msem-preset-editor/services/offers.d.ts.map +0 -1
  211. package/es/common/components/msem-preset-editor/services/preset.d.ts +0 -40
  212. package/es/common/components/msem-preset-editor/services/preset.d.ts.map +0 -1
  213. package/es/common/components/msem-preset-editor/services/url-params.d.ts +0 -3
  214. package/es/common/components/msem-preset-editor/services/url-params.d.ts.map +0 -1
  215. package/es/common/components/msem-preset-linker/components/actions.d.ts +0 -11
  216. package/es/common/components/msem-preset-linker/components/actions.d.ts.map +0 -1
  217. package/es/common/components/msem-preset-linker/components/overlays.d.ts +0 -8
  218. package/es/common/components/msem-preset-linker/components/overlays.d.ts.map +0 -1
  219. package/es/common/components/msem-preset-linker/components/resort-selector.d.ts +0 -6
  220. package/es/common/components/msem-preset-linker/components/resort-selector.d.ts.map +0 -1
  221. package/es/common/components/msem-preset-linker/hooks/use-msem-presets.d.ts +0 -4
  222. package/es/common/components/msem-preset-linker/hooks/use-msem-presets.d.ts.map +0 -1
  223. package/es/common/components/msem-preset-linker/index.d.ts +0 -3
  224. package/es/common/components/msem-preset-linker/index.d.ts.map +0 -1
  225. package/es/common/components/msem-preset-linker/msem-preset-linker.d.ts +0 -30
  226. package/es/common/components/msem-preset-linker/msem-preset-linker.d.ts.map +0 -1
  227. package/es/common/components/msem-preset-linker/services/url-params.d.ts +0 -2
  228. package/es/common/components/msem-preset-linker/services/url-params.d.ts.map +0 -1
  229. package/es/common/components/plausible/hooks/use-plausible.d.ts +0 -12
  230. package/es/common/components/plausible/hooks/use-plausible.d.ts.map +0 -1
  231. package/es/common/components/plausible/index.d.ts +0 -8
  232. package/es/common/components/plausible/index.d.ts.map +0 -1
  233. package/es/common/components/plausible/plausible.d.ts +0 -7
  234. package/es/common/components/plausible/plausible.d.ts.map +0 -1
  235. package/es/common/components/plausible/services/callback.d.ts +0 -24
  236. package/es/common/components/plausible/services/callback.d.ts.map +0 -1
  237. package/es/common/components/plausible/services/load.d.ts +0 -2
  238. package/es/common/components/plausible/services/load.d.ts.map +0 -1
  239. package/es/common/components/plausible/services/send-goal.d.ts +0 -7
  240. package/es/common/components/plausible/services/send-goal.d.ts.map +0 -1
  241. package/es/common/components/scroll-spy.d.ts +0 -14
  242. package/es/common/components/scroll-spy.d.ts.map +0 -1
  243. package/es/common/components/scrolling-carousel/index.d.ts +0 -3
  244. package/es/common/components/scrolling-carousel/index.d.ts.map +0 -1
  245. package/es/common/components/scrolling-carousel/scrolling-carousel.d.ts +0 -8
  246. package/es/common/components/scrolling-carousel/scrolling-carousel.d.ts.map +0 -1
  247. package/es/common/components/tabbed-zones.d.ts +0 -12
  248. package/es/common/components/tabbed-zones.d.ts.map +0 -1
  249. package/es/common/hooks/use-faq.d.ts +0 -3
  250. package/es/common/hooks/use-faq.d.ts.map +0 -1
  251. package/es/common/hooks/use-in-view.d.ts +0 -5
  252. package/es/common/hooks/use-in-view.d.ts.map +0 -1
  253. package/es/common/hooks/use-scroll-direction.d.ts +0 -11
  254. package/es/common/hooks/use-scroll-direction.d.ts.map +0 -1
  255. package/es/common/hooks/use-stay.d.ts +0 -4
  256. package/es/common/hooks/use-stay.d.ts.map +0 -1
  257. package/es/common/hooks/use-sticky.d.ts +0 -4
  258. package/es/common/hooks/use-sticky.d.ts.map +0 -1
  259. package/es/common/hooks/use-tunnel.d.ts +0 -8
  260. package/es/common/hooks/use-tunnel.d.ts.map +0 -1
  261. package/es/common/hooks/use-update-effect.d.ts +0 -2
  262. package/es/common/hooks/use-update-effect.d.ts.map +0 -1
  263. package/es/common/hooks/use-window-sizes.d.ts +0 -7
  264. package/es/common/hooks/use-window-sizes.d.ts.map +0 -1
  265. package/es/common/utils/cms.d.ts +0 -4
  266. package/es/common/utils/cms.d.ts.map +0 -1
  267. package/es/common/utils/cookies.d.ts +0 -2
  268. package/es/common/utils/cookies.d.ts.map +0 -1
  269. package/es/common/utils/copy.d.ts +0 -2
  270. package/es/common/utils/copy.d.ts.map +0 -1
  271. package/es/common/utils/dates.d.ts +0 -2
  272. package/es/common/utils/dates.d.ts.map +0 -1
  273. package/es/common/utils/elements.d.ts +0 -5
  274. package/es/common/utils/elements.d.ts.map +0 -1
  275. package/es/common/utils/events.d.ts +0 -4
  276. package/es/common/utils/events.d.ts.map +0 -1
  277. package/es/common/utils/file-manager.d.ts +0 -13
  278. package/es/common/utils/file-manager.d.ts.map +0 -1
  279. package/es/common/utils/load-js.d.ts +0 -3
  280. package/es/common/utils/load-js.d.ts.map +0 -1
  281. package/es/common/utils/msem-widget.d.ts +0 -16
  282. package/es/common/utils/msem-widget.d.ts.map +0 -1
  283. package/es/common/utils/url-parameters.d.ts +0 -2
  284. package/es/common/utils/url-parameters.d.ts.map +0 -1
  285. package/es/esf/components/magic-box/index.d.ts +0 -3
  286. package/es/esf/components/magic-box/index.d.ts.map +0 -1
  287. package/es/esf/components/magic-box/magic-box.d.ts +0 -22
  288. package/es/esf/components/magic-box/magic-box.d.ts.map +0 -1
  289. package/es/esf/components/parcours-esf/index.d.ts +0 -3
  290. package/es/esf/components/parcours-esf/index.d.ts.map +0 -1
  291. package/es/esf/components/parcours-esf/parcours-esf.d.ts +0 -14
  292. package/es/esf/components/parcours-esf/parcours-esf.d.ts.map +0 -1
  293. package/es/lbm/components/lumiplan/api.d.ts +0 -8
  294. package/es/lbm/components/lumiplan/api.d.ts.map +0 -1
  295. package/es/lbm/components/lumiplan/domain.d.ts +0 -8
  296. package/es/lbm/components/lumiplan/domain.d.ts.map +0 -1
  297. package/es/lbm/components/lumiplan/i18n/translations.d.ts +0 -7
  298. package/es/lbm/components/lumiplan/i18n/translations.d.ts.map +0 -1
  299. package/es/lbm/components/lumiplan/index.d.ts +0 -3
  300. package/es/lbm/components/lumiplan/index.d.ts.map +0 -1
  301. package/es/lbm/components/lumiplan/lumiplan.d.ts +0 -2
  302. package/es/lbm/components/lumiplan/lumiplan.d.ts.map +0 -1
  303. package/es/lbm/components/lumiplan/opening.d.ts +0 -9
  304. package/es/lbm/components/lumiplan/opening.d.ts.map +0 -1
  305. package/es/lbm/components/lumiplan/pois.d.ts +0 -8
  306. package/es/lbm/components/lumiplan/pois.d.ts.map +0 -1
  307. package/es/lbm/components/lumiplan/resort-selector.d.ts +0 -12
  308. package/es/lbm/components/lumiplan/resort-selector.d.ts.map +0 -1
  309. package/es/lbm/components/lumiplan/road-condition.d.ts +0 -8
  310. package/es/lbm/components/lumiplan/road-condition.d.ts.map +0 -1
  311. package/es/lbm/components/lumiplan/todays-tips.d.ts +0 -8
  312. package/es/lbm/components/lumiplan/todays-tips.d.ts.map +0 -1
  313. package/es/lbm/components/lumiplan/types.d.ts +0 -285
  314. package/es/lbm/components/lumiplan/types.d.ts.map +0 -1
  315. package/es/lbm/components/lumiplan/weather/avalanche-risk.d.ts +0 -4
  316. package/es/lbm/components/lumiplan/weather/avalanche-risk.d.ts.map +0 -1
  317. package/es/lbm/components/lumiplan/weather/index.d.ts +0 -3
  318. package/es/lbm/components/lumiplan/weather/index.d.ts.map +0 -1
  319. package/es/lbm/components/lumiplan/weather/snow-data.d.ts +0 -8
  320. package/es/lbm/components/lumiplan/weather/snow-data.d.ts.map +0 -1
  321. package/es/lbm/components/lumiplan/weather/weather-data.d.ts +0 -9
  322. package/es/lbm/components/lumiplan/weather/weather-data.d.ts.map +0 -1
  323. package/es/lbm/components/lumiplan/weather/weather-days.d.ts +0 -7
  324. package/es/lbm/components/lumiplan/weather/weather-days.d.ts.map +0 -1
  325. package/es/lbm/components/lumiplan/weather/weather-icon.d.ts +0 -23
  326. package/es/lbm/components/lumiplan/weather/weather-icon.d.ts.map +0 -1
  327. package/es/lbm/components/lumiplan/weather/weather-zones.d.ts +0 -6
  328. package/es/lbm/components/lumiplan/weather/weather-zones.d.ts.map +0 -1
  329. package/es/lbm/components/lumiplan/weather/weather.d.ts +0 -8
  330. package/es/lbm/components/lumiplan/weather/weather.d.ts.map +0 -1
@@ -1,4 +1,3 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
1
  import * as React from "react";
3
2
  import getConfig from "next/config";
4
3
  import Button from "dt-design-system/es/button";
@@ -7,7 +6,6 @@ import Input from "dt-design-system/es/input";
7
6
  import Tooltip from "dt-design-system/es/tooltip";
8
7
  import * as Icons from "dt-design-system/es/icons";
9
8
  import * as MseM from "../../utils/msem-widget";
10
- // import * as MseM from "ublo-lib/es/common/utils/msem-widget";
11
9
  import FacetSelector from "./components/facet-selector";
12
10
  import StayPicker from "./components/stay-picker";
13
11
  import WidgetList from "./components/widget-list";
@@ -15,137 +13,225 @@ import Editors from "./editors";
15
13
  import * as UrlParams from "./services/url-params";
16
14
  import * as Preset from "./services/preset";
17
15
  import css from "./msem-preset-editor.module.css";
18
- const { publicRuntimeConfig } = getConfig();
19
- const { langPrefix } = publicRuntimeConfig;
20
- export default function MseMPresetEditor({ lang, options, urls, selectedPreset, onChange, noLodgingPage, children, }) {
21
- const currentPreset = selectedPreset ? JSON.parse(selectedPreset) : undefined;
22
- const defaultResort = Number(currentPreset ? currentPreset.options.resort : options.resort);
23
- const [facet, setFacet] = React.useState(currentPreset?.options?.facet?.toString() || "");
24
- const [stay, setStay] = React.useState(currentPreset?.presets?.stay || { from: "", to: "" });
25
- const [preset, setPreset] = React.useState(currentPreset || null);
26
- const [error, setError] = React.useState(null);
27
- const [showPresetDialog, setShowPresetDialog] = React.useState(false);
28
- const [presetUrl, setPresetUrl] = React.useState("");
29
- const [resort, setResort] = React.useState(defaultResort);
30
- const initialRender = React.useRef(true);
31
- const showWidgetList = resort && facet !== "";
32
- const baseUrl = getBaseUrl({
33
- lang,
34
- widget: preset?.widget,
35
- facet,
36
- urls,
37
- resort,
38
- slug: preset?.openPage ? preset?.presets?.accomodation : undefined,
39
- });
40
- const updatePreset = React.useCallback((item, subPreset) => {
41
- let { name, options: itemOptions, presets: itemPresets } = item;
42
- const widget = subPreset?.widget || item.widget;
43
- if (!widget) {
44
- return;
45
- }
46
- if (subPreset) {
47
- const formatedSubPreset = Preset.format(subPreset);
48
- name = subPreset.name;
49
- itemOptions = formatedSubPreset.options;
50
- itemPresets = formatedSubPreset.presets;
51
- }
52
- if (stay?.from && stay?.to) {
53
- itemPresets = { ...itemPresets, stay };
54
- }
55
- const allOptions = {
56
- facet: Number(facet),
57
- ...itemOptions,
58
- ...options,
59
- resort,
60
- };
16
+ import { jsx as _jsx } from "react/jsx-runtime";
17
+ import { jsxs as _jsxs } from "react/jsx-runtime";
18
+ const {
19
+ publicRuntimeConfig
20
+ } = getConfig();
21
+ const {
22
+ langPrefix
23
+ } = publicRuntimeConfig;
24
+ export default function MseMPresetEditor({
25
+ lang,
26
+ options,
27
+ urls,
28
+ selectedPreset,
29
+ onChange,
30
+ noLodgingPage,
31
+ children
32
+ }) {
33
+ const currentPreset = selectedPreset ? JSON.parse(selectedPreset) : undefined;
34
+ const defaultResort = Number(currentPreset ? currentPreset.options.resort : options.resort);
35
+ const [facet, setFacet] = React.useState(currentPreset?.options?.facet?.toString() || "");
36
+ const [stay, setStay] = React.useState(currentPreset?.presets?.stay || {
37
+ from: "",
38
+ to: ""
39
+ });
40
+ const [preset, setPreset] = React.useState(currentPreset || null);
41
+ const [error, setError] = React.useState(null);
42
+ const [showPresetDialog, setShowPresetDialog] = React.useState(false);
43
+ const [presetUrl, setPresetUrl] = React.useState("");
44
+ const [resort, setResort] = React.useState(defaultResort);
45
+ const initialRender = React.useRef(true);
46
+ const showWidgetList = resort && facet !== "";
47
+ const baseUrl = getBaseUrl({
48
+ lang,
49
+ widget: preset?.widget,
50
+ facet,
51
+ urls,
52
+ resort,
53
+ slug: preset?.openPage ? preset?.presets?.accomodation : undefined
54
+ });
55
+ const updatePreset = React.useCallback((item, subPreset) => {
56
+ let {
57
+ name,
58
+ options: itemOptions,
59
+ presets: itemPresets
60
+ } = item;
61
+ const widget = subPreset?.widget || item.widget;
62
+ if (!widget) {
63
+ return;
64
+ }
65
+ if (subPreset) {
66
+ const formatedSubPreset = Preset.format(subPreset);
67
+ name = subPreset.name;
68
+ itemOptions = formatedSubPreset.options;
69
+ itemPresets = formatedSubPreset.presets;
70
+ }
71
+ if (stay?.from && stay?.to) {
72
+ itemPresets = {
73
+ ...itemPresets,
74
+ stay
75
+ };
76
+ }
77
+ const allOptions = {
78
+ facet: Number(facet),
79
+ ...itemOptions,
80
+ ...options,
81
+ resort
82
+ };
83
+ const newPreset = {
84
+ name,
85
+ widget,
86
+ options: allOptions,
87
+ presets: itemPresets,
88
+ url: baseUrl || undefined
89
+ };
90
+ onChange?.(newPreset);
91
+ setPreset(newPreset);
92
+ }, [baseUrl, facet, onChange, options, stay, resort]);
93
+ const removePreset = React.useCallback(() => {
94
+ onChange?.(null);
95
+ setPreset(null);
96
+ }, [onChange]);
97
+ const testPreset = () => {
98
+ if (!preset) return;
99
+ const {
100
+ widget,
101
+ options,
102
+ presets
103
+ } = preset;
104
+ MseM.openMseM(widget, options, presets);
105
+ };
106
+ const copyUrl = e => {
107
+ e.preventDefault();
108
+ const field = e.target;
109
+ const url = field.value;
110
+ field.select();
111
+ navigator.clipboard.writeText(url);
112
+ window.ubloSnackbar("URL copiée dans le presse papier", "success");
113
+ };
114
+ React.useEffect(() => {
115
+ if (stay?.from && stay?.to) {
116
+ setPreset((current = {}) => {
61
117
  const newPreset = {
62
- name,
63
- widget,
64
- options: allOptions,
65
- presets: itemPresets,
66
- url: baseUrl || undefined,
118
+ ...current,
119
+ presets: {
120
+ ...(current?.presets || {}),
121
+ stay
122
+ }
67
123
  };
68
124
  onChange?.(newPreset);
69
- setPreset(newPreset);
70
- }, [baseUrl, facet, onChange, options, stay, resort]);
71
- const removePreset = React.useCallback(() => {
72
- onChange?.(null);
73
- setPreset(null);
74
- }, [onChange]);
75
- const testPreset = () => {
76
- if (!preset)
77
- return;
78
- const { widget, options, presets } = preset;
79
- MseM.openMseM(widget, options, presets);
80
- };
81
- const copyUrl = (e) => {
82
- e.preventDefault();
83
- const field = e.target;
84
- const url = field.value;
85
- field.select();
86
- navigator.clipboard.writeText(url);
87
- // @ts-ignore
88
- window.ubloSnackbar("URL copiée dans le presse papier", "success");
89
- };
90
- React.useEffect(() => {
91
- if (stay?.from && stay?.to) {
92
- setPreset((current = {}) => {
93
- const newPreset = {
94
- ...current,
95
- presets: { ...(current?.presets || {}), stay },
96
- };
97
- onChange?.(newPreset);
98
- return newPreset;
99
- });
100
- }
101
- }, [onChange, stay]);
102
- React.useEffect(() => {
103
- if (preset && baseUrl) {
104
- const url = UrlParams.getPresetUrl(lang, preset, baseUrl);
105
- setPresetUrl(url);
106
- }
107
- else {
108
- setPresetUrl("");
109
- }
110
- }, [baseUrl, lang, preset]);
111
- React.useEffect(() => {
112
- if (initialRender.current) {
113
- initialRender.current = false;
114
- }
115
- else {
116
- removePreset();
117
- }
118
- }, [removePreset, resort]);
119
- if (!resort)
120
- return null;
121
- const CurrentEditor = preset?.widget && Editors[preset.widget];
122
- return (_jsxs("div", { className: css.editor, children: [children &&
123
- React.cloneElement(children, {
124
- resort,
125
- setResort,
126
- }), _jsx(FacetSelector, { facet: facet, setFacet: setFacet, setPreset: setPreset }), _jsx(StayPicker, { stay: stay, setStay: setStay, setPreset: setPreset }), showWidgetList && (_jsx(WidgetList, { lang: lang, resort: resort, channel: options.channel, facet: facet, preset: preset, updatePreset: updatePreset, removePreset: removePreset, error: error, setError: setError, setShowPresetDialog: setShowPresetDialog })), _jsx(Dialog, { isOpened: showPresetDialog, close: () => setShowPresetDialog(false), container: null, showAsModal: false, children: showPresetDialog && (_jsx(CurrentEditor, { stay: stay, facet: facet, preset: preset, setPreset: setPreset, setShowPresetDialog: setShowPresetDialog, testPreset: testPreset, onChange: onChange, baseUrl: baseUrl, noLodgingPage: noLodgingPage })) }), error && _jsx("div", { className: css.error, children: error }), _jsxs("div", { className: css.footer, children: [_jsx(Tooltip, { content: "Tester dans le widget MseM", children: _jsx(Button, { variant: "secondary", disabled: !preset?.widget, className: css.testButton, onClick: testPreset, children: _jsx(Icons.OpenInBrowser, {}) }) }), _jsx(Input, { type: "text", className: css.url, value: presetUrl, onClick: copyUrl, disabled: !preset?.widget || presetUrl === "", placeholder: !preset
127
- ? "Aucun preset sélectionné"
128
- : "Preset incompatible au format URL", readOnly: true })] })] }));
129
- }
130
- function getBaseUrl({ lang, widget, facet, urls, slug }) {
131
- if (facet === "" || !widget || !urls)
132
- return "";
133
- if (urls.override)
134
- return urls.override;
135
- const facetCode = facet === "0" ? "winter" : "summer";
136
- let url = "";
137
- if (widget === "skiPass" && urls?.skiPasses) {
138
- url = urls?.skiPasses?.[facetCode];
139
- }
140
- if (widget === "lodging" && urls?.lodgings) {
141
- url = urls?.lodgings?.[facetCode];
125
+ return newPreset;
126
+ });
142
127
  }
143
- if (slug) {
144
- url = url.concat("/", slug);
128
+ }, [onChange, stay]);
129
+ React.useEffect(() => {
130
+ if (preset && baseUrl) {
131
+ const url = UrlParams.getPresetUrl(lang, preset, baseUrl);
132
+ setPresetUrl(url);
133
+ } else {
134
+ setPresetUrl("");
145
135
  }
146
- const isExternalUrl = url?.startsWith("http");
147
- if (!isExternalUrl && url && langPrefix) {
148
- url = "/".concat(lang, url);
136
+ }, [baseUrl, lang, preset]);
137
+ React.useEffect(() => {
138
+ if (initialRender.current) {
139
+ initialRender.current = false;
140
+ } else {
141
+ removePreset();
149
142
  }
150
- return url;
143
+ }, [removePreset, resort]);
144
+ if (!resort) return null;
145
+ const CurrentEditor = preset?.widget && Editors[preset.widget];
146
+ return _jsxs("div", {
147
+ className: css.editor,
148
+ children: [children && React.cloneElement(children, {
149
+ resort,
150
+ setResort
151
+ }), _jsx(FacetSelector, {
152
+ facet: facet,
153
+ setFacet: setFacet,
154
+ setPreset: setPreset
155
+ }), _jsx(StayPicker, {
156
+ stay: stay,
157
+ setStay: setStay,
158
+ setPreset: setPreset
159
+ }), showWidgetList && _jsx(WidgetList, {
160
+ lang: lang,
161
+ resort: resort,
162
+ channel: options.channel,
163
+ facet: facet,
164
+ preset: preset,
165
+ updatePreset: updatePreset,
166
+ removePreset: removePreset,
167
+ error: error,
168
+ setError: setError,
169
+ setShowPresetDialog: setShowPresetDialog
170
+ }), _jsx(Dialog, {
171
+ isOpened: showPresetDialog,
172
+ close: () => setShowPresetDialog(false),
173
+ container: null,
174
+ showAsModal: false,
175
+ children: showPresetDialog && _jsx(CurrentEditor, {
176
+ stay: stay,
177
+ facet: facet,
178
+ preset: preset,
179
+ setPreset: setPreset,
180
+ setShowPresetDialog: setShowPresetDialog,
181
+ testPreset: testPreset,
182
+ onChange: onChange,
183
+ baseUrl: baseUrl,
184
+ noLodgingPage: noLodgingPage
185
+ })
186
+ }), error && _jsx("div", {
187
+ className: css.error,
188
+ children: error
189
+ }), _jsxs("div", {
190
+ className: css.footer,
191
+ children: [_jsx(Tooltip, {
192
+ content: "Tester dans le widget MseM",
193
+ children: _jsx(Button, {
194
+ variant: "secondary",
195
+ disabled: !preset?.widget,
196
+ className: css.testButton,
197
+ onClick: testPreset,
198
+ children: _jsx(Icons.OpenInBrowser, {})
199
+ })
200
+ }), _jsx(Input, {
201
+ type: "text",
202
+ className: css.url,
203
+ value: presetUrl,
204
+ onClick: copyUrl,
205
+ disabled: !preset?.widget || presetUrl === "",
206
+ placeholder: !preset ? "Aucun preset sélectionné" : "Preset incompatible au format URL",
207
+ readOnly: true
208
+ })]
209
+ })]
210
+ });
151
211
  }
212
+ function getBaseUrl({
213
+ lang,
214
+ widget,
215
+ facet,
216
+ urls,
217
+ slug
218
+ }) {
219
+ if (facet === "" || !widget || !urls) return "";
220
+ if (urls.override) return urls.override;
221
+ const facetCode = facet === "0" ? "winter" : "summer";
222
+ let url = "";
223
+ if (widget === "skiPass" && urls?.skiPasses) {
224
+ url = urls?.skiPasses?.[facetCode];
225
+ }
226
+ if (widget === "lodging" && urls?.lodgings) {
227
+ url = urls?.lodgings?.[facetCode];
228
+ }
229
+ if (slug) {
230
+ url = url.concat("/", slug);
231
+ }
232
+ const isExternalUrl = url?.startsWith("http");
233
+ if (!isExternalUrl && url && langPrefix) {
234
+ url = "/".concat(lang, url);
235
+ }
236
+ return url;
237
+ }
@@ -1,75 +1,102 @@
1
1
  import getConfig from "next/config";
2
2
  import * as Fetcher from "../../../utils/fetcher";
3
- // import * as Fetcher from "ublo-lib/es/common/utils/fetcher";
4
- const { publicRuntimeConfig } = getConfig();
5
- const { msemServicesUrl } = publicRuntimeConfig;
3
+ const {
4
+ publicRuntimeConfig
5
+ } = getConfig();
6
+ const {
7
+ msemServicesUrl
8
+ } = publicRuntimeConfig;
6
9
  const standardProductUrl = "https://standard-product.esf-plus.com";
7
10
  const skiRentalUrl = "https://location-ski.esf-plus.com";
8
11
  export function getOffers(lang, channel, resort, facet) {
9
- const endpoint = `${msemServicesUrl}/api/tunnel/offers/${channel}/${resort}`;
10
- return Fetcher.get(endpoint, { lang, facet });
12
+ const endpoint = `${msemServicesUrl}/api/tunnel/offers/${channel}/${resort}`;
13
+ return Fetcher.get(endpoint, {
14
+ lang,
15
+ facet
16
+ });
11
17
  }
12
18
  const kinds = {
13
- ACTIVITIES: "activities",
14
- SERVICE_PLUS: "service_plus",
15
- RESTAURANT: "restaurant",
16
- TEXTILE: "textile",
17
- SKISCHOOL: "skischool",
18
- PARKING: "parking",
19
+ ACTIVITIES: "activities",
20
+ SERVICE_PLUS: "service_plus",
21
+ RESTAURANT: "restaurant",
22
+ TEXTILE: "textile",
23
+ SKISCHOOL: "skischool",
24
+ PARKING: "parking"
19
25
  };
20
26
  export async function getOtherOffers(lang, channel, resort, facet, kind) {
21
- const kindSlug = kinds[kind];
22
- if (!kindSlug)
23
- return;
24
- const endpoint = `${msemServicesUrl}/api/tunnel/offers/${channel}/${resort}/${kindSlug}`;
25
- return Fetcher.get(endpoint, { lang, facet });
27
+ const kindSlug = kinds[kind];
28
+ if (!kindSlug) return;
29
+ const endpoint = `${msemServicesUrl}/api/tunnel/offers/${channel}/${resort}/${kindSlug}`;
30
+ return Fetcher.get(endpoint, {
31
+ lang,
32
+ facet
33
+ });
26
34
  }
27
35
  export async function getRenters(channel, resort) {
28
- const endpoint = `${skiRentalUrl}/api/${resort}/renters`;
29
- return Fetcher.post(endpoint, { channel });
36
+ const endpoint = `${skiRentalUrl}/api/${resort}/renters`;
37
+ return Fetcher.post(endpoint, {
38
+ channel
39
+ });
30
40
  }
31
41
  export async function getSkiPassesCatalogs(merchant) {
32
- const endpoint = `${msemServicesUrl}/api/ski-pass/catalogs/${merchant}`;
33
- return Fetcher.get(endpoint);
42
+ const endpoint = `${msemServicesUrl}/api/ski-pass/catalogs/${merchant}`;
43
+ return Fetcher.get(endpoint);
34
44
  }
35
45
  export async function getSkiPassesFilters(merchant, catalog) {
36
- const endpoint = `${msemServicesUrl}/api/ski-pass/${merchant}/filters`;
37
- return Fetcher.post(endpoint, undefined, { catalog });
46
+ const endpoint = `${msemServicesUrl}/api/ski-pass/${merchant}/filters`;
47
+ return Fetcher.post(endpoint, undefined, {
48
+ catalog
49
+ });
38
50
  }
39
- // TO REMOVE?
40
51
  export async function getLodgings(channel, resort) {
41
- const endpoint = `${msemServicesUrl}/api/lodging/getAccommodationsStructure`;
42
- return Fetcher.get(endpoint, { channel, resort });
52
+ const endpoint = `${msemServicesUrl}/api/lodging/getAccommodationsStructure`;
53
+ return Fetcher.get(endpoint, {
54
+ channel,
55
+ resort
56
+ });
43
57
  }
44
58
  export async function getLodgingFilters(channel, resort, facet, language = "fr") {
45
- const endpoint = `${msemServicesUrl}/api/lodging/resort/${resort}/${channel}`;
46
- return Fetcher.get(endpoint, { facet, language });
59
+ const endpoint = `${msemServicesUrl}/api/lodging/resort/${resort}/${channel}`;
60
+ return Fetcher.get(endpoint, {
61
+ facet,
62
+ language
63
+ });
47
64
  }
48
65
  export async function getLodgingRooms(id, resort, facet, language = "fr", preview = false) {
49
- const endpoint = `${msemServicesUrl}/api/lodging/accomodation/${id}`;
50
- return Fetcher.post(endpoint, { resort, facet, language, preview });
66
+ const endpoint = `${msemServicesUrl}/api/lodging/accomodation/${id}`;
67
+ return Fetcher.post(endpoint, {
68
+ resort,
69
+ facet,
70
+ language,
71
+ preview
72
+ });
51
73
  }
52
74
  export async function getEllohaGroups(merchant, stayFrom, language = "fr") {
53
- const endpoint = `${msemServicesUrl}/api/elloha-activity/${merchant}/${language}/kinds`;
54
- return Fetcher.get(endpoint, { date: stayFrom });
75
+ const endpoint = `${msemServicesUrl}/api/elloha-activity/${merchant}/${language}/kinds`;
76
+ return Fetcher.get(endpoint, {
77
+ date: stayFrom
78
+ });
55
79
  }
56
80
  export async function getVakarioKinds(merchant, language = "fr") {
57
- const endpoint = `${msemServicesUrl}/api/vakario/${merchant}/${language}/kinds`;
58
- return Fetcher.get(endpoint);
81
+ const endpoint = `${msemServicesUrl}/api/vakario/${merchant}/${language}/kinds`;
82
+ return Fetcher.get(endpoint);
59
83
  }
60
84
  export async function getVakarioAges(merchant, kind, language = "fr") {
61
- const endpoint = `${msemServicesUrl}/api/vakario/${merchant}/${language}/${kind}/ages`;
62
- return Fetcher.get(endpoint);
85
+ const endpoint = `${msemServicesUrl}/api/vakario/${merchant}/${language}/${kind}/ages`;
86
+ return Fetcher.get(endpoint);
63
87
  }
64
88
  export async function getVakarioCategories(merchant, kind, age, language = "fr") {
65
- const endpoint = `${msemServicesUrl}/api/vakario/${merchant}/${language}/${kind}/${age}/categories`;
66
- return Fetcher.get(endpoint);
89
+ const endpoint = `${msemServicesUrl}/api/vakario/${merchant}/${language}/${kind}/${age}/categories`;
90
+ return Fetcher.get(endpoint);
67
91
  }
68
92
  export async function getVakarioLevels(merchant, kind, age, category, language = "fr") {
69
- const endpoint = `${msemServicesUrl}/api/vakario/${merchant}/${language}/${kind}/${age}/${category}/levels`;
70
- return Fetcher.get(endpoint);
93
+ const endpoint = `${msemServicesUrl}/api/vakario/${merchant}/${language}/${kind}/${age}/${category}/levels`;
94
+ return Fetcher.get(endpoint);
71
95
  }
72
96
  export async function getOtherProductsCategories(facet, merchant, lang = "fr") {
73
- const endpoint = `${standardProductUrl}/api/merchant/${merchant}`;
74
- return Fetcher.post(endpoint, { facet: Number(facet), lang });
75
- }
97
+ const endpoint = `${standardProductUrl}/api/merchant/${merchant}`;
98
+ return Fetcher.post(endpoint, {
99
+ facet: Number(facet),
100
+ lang
101
+ });
102
+ }
@@ -1,39 +1,65 @@
1
1
  import * as API from "./api";
2
2
  export async function get(lang, channel, resort, facet) {
3
- const offers = (await API.getOffers(lang, channel, resort, facet));
4
- const formatedOffers = await Promise.all(offers.map(async (offer) => {
5
- const { widget, category, kind, options, preset } = offer;
6
- const isSkiSchool = kind === "SKISCHOOL";
7
- const hasCategoryGroup = !!options?.categoryGroup || isSkiSchool;
8
- if (hasCategoryGroup) {
9
- let items = [];
10
- const otherOffersKind = isSkiSchool ? kind : options?.categoryGroup;
11
- const otherOffers = await API.getOtherOffers(lang, channel, resort, facet, otherOffersKind);
12
- if (otherOffers?.merchants?.length > 0) {
13
- items = otherOffers.merchants;
14
- }
15
- return preset
16
- ? { ...offer, preset: undefined, presets: { ...preset }, items }
17
- : { ...offer, items };
18
- }
19
- const isRental = widget === "skiRental";
20
- if (isRental) {
21
- const renters = await API.getRenters(channel, resort);
22
- const formattedRenters = renters.map((renter) => {
23
- return { ...renter, widget };
24
- });
25
- return { ...offer, items: formattedRenters };
26
- }
27
- const isSkipasses = category === "SKIPASS";
28
- if (isSkipasses) {
29
- const mergedSkiPasses = mergeSkiPasses(offer);
30
- return mergedSkiPasses;
31
- }
32
- return offer;
33
- }));
34
- return formatedOffers;
3
+ const offers = await API.getOffers(lang, channel, resort, facet);
4
+ const formatedOffers = await Promise.all(offers.map(async offer => {
5
+ const {
6
+ widget,
7
+ category,
8
+ kind,
9
+ options,
10
+ preset
11
+ } = offer;
12
+ const isSkiSchool = kind === "SKISCHOOL";
13
+ const hasCategoryGroup = !!options?.categoryGroup || isSkiSchool;
14
+ if (hasCategoryGroup) {
15
+ let items = [];
16
+ const otherOffersKind = isSkiSchool ? kind : options?.categoryGroup;
17
+ const otherOffers = await API.getOtherOffers(lang, channel, resort, facet, otherOffersKind);
18
+ if (otherOffers?.merchants?.length > 0) {
19
+ items = otherOffers.merchants;
20
+ }
21
+ return preset ? {
22
+ ...offer,
23
+ preset: undefined,
24
+ presets: {
25
+ ...preset
26
+ },
27
+ items
28
+ } : {
29
+ ...offer,
30
+ items
31
+ };
32
+ }
33
+ const isRental = widget === "skiRental";
34
+ if (isRental) {
35
+ const renters = await API.getRenters(channel, resort);
36
+ const formattedRenters = renters.map(renter => {
37
+ return {
38
+ ...renter,
39
+ widget
40
+ };
41
+ });
42
+ return {
43
+ ...offer,
44
+ items: formattedRenters
45
+ };
46
+ }
47
+ const isSkipasses = category === "SKIPASS";
48
+ if (isSkipasses) {
49
+ const mergedSkiPasses = mergeSkiPasses(offer);
50
+ return mergedSkiPasses;
51
+ }
52
+ return offer;
53
+ }));
54
+ return formatedOffers;
35
55
  }
36
56
  function mergeSkiPasses(offer) {
37
- const { items = [], ...rest } = offer;
38
- return { ...rest, ...items[0] };
39
- }
57
+ const {
58
+ items = [],
59
+ ...rest
60
+ } = offer;
61
+ return {
62
+ ...rest,
63
+ ...items[0]
64
+ };
65
+ }
@@ -1,15 +1,23 @@
1
1
  export function format(data) {
2
- const { widget, code, taxonomy, slug } = data;
3
- const isOtherProductsOrSkiRental = ["otherProducts", "skiRental"].includes(widget);
4
- const merchant = isOtherProductsOrSkiRental ? slug : code;
5
- const merchantSlug = isOtherProductsOrSkiRental ? slug : undefined;
6
- const categoryGroup = taxonomy?.category;
7
- const options = {
8
- merchant,
9
- categoryGroup,
10
- };
11
- const presets = {
12
- merchantSlug,
13
- };
14
- return { options, presets };
15
- }
2
+ const {
3
+ widget,
4
+ code,
5
+ taxonomy,
6
+ slug
7
+ } = data;
8
+ const isOtherProductsOrSkiRental = ["otherProducts", "skiRental"].includes(widget);
9
+ const merchant = isOtherProductsOrSkiRental ? slug : code;
10
+ const merchantSlug = isOtherProductsOrSkiRental ? slug : undefined;
11
+ const categoryGroup = taxonomy?.category;
12
+ const options = {
13
+ merchant,
14
+ categoryGroup
15
+ };
16
+ const presets = {
17
+ merchantSlug
18
+ };
19
+ return {
20
+ options,
21
+ presets
22
+ };
23
+ }