@mapvx/web-js 1.0.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 (397) hide show
  1. package/LICENSE.md +19 -0
  2. package/README.md +257 -0
  3. package/dist/cjs/assets/icons.js +87 -0
  4. package/dist/cjs/assets/icons.js.map +1 -0
  5. package/dist/cjs/assets/route_animation_icon.svg +15 -0
  6. package/dist/cjs/assets/user-dot-icon.svg +3 -0
  7. package/dist/cjs/config/sdkConfig.js +3 -0
  8. package/dist/cjs/config/sdkConfig.js.map +1 -0
  9. package/dist/cjs/controllers/routeController.js +1054 -0
  10. package/dist/cjs/controllers/routeController.js.map +1 -0
  11. package/dist/cjs/domain/models/_internal.js +15 -0
  12. package/dist/cjs/domain/models/_internal.js.map +1 -0
  13. package/dist/cjs/domain/models/_rtl.js +10 -0
  14. package/dist/cjs/domain/models/_rtl.js.map +1 -0
  15. package/dist/cjs/domain/models/animation.js +63 -0
  16. package/dist/cjs/domain/models/animation.js.map +1 -0
  17. package/dist/cjs/domain/models/banner.js +24 -0
  18. package/dist/cjs/domain/models/banner.js.map +1 -0
  19. package/dist/cjs/domain/models/categories.js +25 -0
  20. package/dist/cjs/domain/models/categories.js.map +1 -0
  21. package/dist/cjs/domain/models/cityFilterOption.js +3 -0
  22. package/dist/cjs/domain/models/cityFilterOption.js.map +1 -0
  23. package/dist/cjs/domain/models/configuration.js +3 -0
  24. package/dist/cjs/domain/models/configuration.js.map +1 -0
  25. package/dist/cjs/domain/models/cssCustomization.js +3 -0
  26. package/dist/cjs/domain/models/cssCustomization.js.map +1 -0
  27. package/dist/cjs/domain/models/fitOptions.js +3 -0
  28. package/dist/cjs/domain/models/fitOptions.js.map +1 -0
  29. package/dist/cjs/domain/models/innerFloors.js +3 -0
  30. package/dist/cjs/domain/models/innerFloors.js.map +1 -0
  31. package/dist/cjs/domain/models/institution.js +44 -0
  32. package/dist/cjs/domain/models/institution.js.map +1 -0
  33. package/dist/cjs/domain/models/latLng.js +3 -0
  34. package/dist/cjs/domain/models/latLng.js.map +1 -0
  35. package/dist/cjs/domain/models/location.js +3 -0
  36. package/dist/cjs/domain/models/location.js.map +1 -0
  37. package/dist/cjs/domain/models/loggeable.js +52 -0
  38. package/dist/cjs/domain/models/loggeable.js.map +1 -0
  39. package/dist/cjs/domain/models/mapCamera.js +3 -0
  40. package/dist/cjs/domain/models/mapCamera.js.map +1 -0
  41. package/dist/cjs/domain/models/mapConfig.js +15 -0
  42. package/dist/cjs/domain/models/mapConfig.js.map +1 -0
  43. package/dist/cjs/domain/models/marker.js +400 -0
  44. package/dist/cjs/domain/models/marker.js.map +1 -0
  45. package/dist/cjs/domain/models/multilanguage.js +18 -0
  46. package/dist/cjs/domain/models/multilanguage.js.map +1 -0
  47. package/dist/cjs/domain/models/openingHours.js +3 -0
  48. package/dist/cjs/domain/models/openingHours.js.map +1 -0
  49. package/dist/cjs/domain/models/place.js +101 -0
  50. package/dist/cjs/domain/models/place.js.map +1 -0
  51. package/dist/cjs/domain/models/platform.js +3 -0
  52. package/dist/cjs/domain/models/platform.js.map +1 -0
  53. package/dist/cjs/domain/models/popover.js +3 -0
  54. package/dist/cjs/domain/models/popover.js.map +1 -0
  55. package/dist/cjs/domain/models/product.js +3 -0
  56. package/dist/cjs/domain/models/product.js.map +1 -0
  57. package/dist/cjs/domain/models/property.js +104 -0
  58. package/dist/cjs/domain/models/property.js.map +1 -0
  59. package/dist/cjs/domain/models/route.js +166 -0
  60. package/dist/cjs/domain/models/route.js.map +1 -0
  61. package/dist/cjs/domain/models/routeConfiguration.js +80 -0
  62. package/dist/cjs/domain/models/routeConfiguration.js.map +1 -0
  63. package/dist/cjs/domain/models/routeInstance.js +30 -0
  64. package/dist/cjs/domain/models/routeInstance.js.map +1 -0
  65. package/dist/cjs/domain/models/routeStyle.js +3 -0
  66. package/dist/cjs/domain/models/routeStyle.js.map +1 -0
  67. package/dist/cjs/domain/models/transport.js +22 -0
  68. package/dist/cjs/domain/models/transport.js.map +1 -0
  69. package/dist/cjs/domain/ports/ICache.js +3 -0
  70. package/dist/cjs/domain/ports/ICache.js.map +1 -0
  71. package/dist/cjs/domain/ports/IHttpClient.js +3 -0
  72. package/dist/cjs/domain/ports/IHttpClient.js.map +1 -0
  73. package/dist/cjs/domain/ports/ILogger.js +23 -0
  74. package/dist/cjs/domain/ports/ILogger.js.map +1 -0
  75. package/dist/cjs/domain/ports/index.js +10 -0
  76. package/dist/cjs/domain/ports/index.js.map +1 -0
  77. package/dist/cjs/index.js +76 -0
  78. package/dist/cjs/index.js.map +1 -0
  79. package/dist/cjs/infrastructure/cache/CacheManager.js +236 -0
  80. package/dist/cjs/infrastructure/cache/CacheManager.js.map +1 -0
  81. package/dist/cjs/infrastructure/cache/LRUCache.js +153 -0
  82. package/dist/cjs/infrastructure/cache/LRUCache.js.map +1 -0
  83. package/dist/cjs/infrastructure/cache/PersistentCache.js +160 -0
  84. package/dist/cjs/infrastructure/cache/PersistentCache.js.map +1 -0
  85. package/dist/cjs/infrastructure/cache/cacheConfig.js +70 -0
  86. package/dist/cjs/infrastructure/cache/cacheConfig.js.map +1 -0
  87. package/dist/cjs/infrastructure/http/FetchHttpClient.js +75 -0
  88. package/dist/cjs/infrastructure/http/FetchHttpClient.js.map +1 -0
  89. package/dist/cjs/infrastructure/logging/CountlyLogger.js +78 -0
  90. package/dist/cjs/infrastructure/logging/CountlyLogger.js.map +1 -0
  91. package/dist/cjs/interfaces/cache.js +3 -0
  92. package/dist/cjs/interfaces/cache.js.map +1 -0
  93. package/dist/cjs/interfaces/healthResponse.js +3 -0
  94. package/dist/cjs/interfaces/healthResponse.js.map +1 -0
  95. package/dist/cjs/interfaces/institutionResponse.js +3 -0
  96. package/dist/cjs/interfaces/institutionResponse.js.map +1 -0
  97. package/dist/cjs/interfaces/metadata.js +3 -0
  98. package/dist/cjs/interfaces/metadata.js.map +1 -0
  99. package/dist/cjs/interfaces/placeResponse.js +3 -0
  100. package/dist/cjs/interfaces/placeResponse.js.map +1 -0
  101. package/dist/cjs/interfaces/routeCacheResponse.js +3 -0
  102. package/dist/cjs/interfaces/routeCacheResponse.js.map +1 -0
  103. package/dist/cjs/interfaces/routeResponse.js +3 -0
  104. package/dist/cjs/interfaces/routeResponse.js.map +1 -0
  105. package/dist/cjs/interfaces/styleResponse.js +3 -0
  106. package/dist/cjs/interfaces/styleResponse.js.map +1 -0
  107. package/dist/cjs/logger/logger.js +91 -0
  108. package/dist/cjs/logger/logger.js.map +1 -0
  109. package/dist/cjs/logger/rollbar.js +24 -0
  110. package/dist/cjs/logger/rollbar.js.map +1 -0
  111. package/dist/cjs/map/map.js +1457 -0
  112. package/dist/cjs/map/map.js.map +1 -0
  113. package/dist/cjs/repository/repository.js +574 -0
  114. package/dist/cjs/repository/repository.js.map +1 -0
  115. package/dist/cjs/repository/requester.js +590 -0
  116. package/dist/cjs/repository/requester.js.map +1 -0
  117. package/dist/cjs/sdk.js +351 -0
  118. package/dist/cjs/sdk.js.map +1 -0
  119. package/dist/cjs/utils/error.js +20 -0
  120. package/dist/cjs/utils/error.js.map +1 -0
  121. package/dist/cjs/utils/images.js +26 -0
  122. package/dist/cjs/utils/images.js.map +1 -0
  123. package/dist/cjs/utils/nav-functions.js +150 -0
  124. package/dist/cjs/utils/nav-functions.js.map +1 -0
  125. package/dist/cjs/utils/opening-hours-helper.js +911 -0
  126. package/dist/cjs/utils/opening-hours-helper.js.map +1 -0
  127. package/dist/cjs/utils/route-utils.js +58 -0
  128. package/dist/cjs/utils/route-utils.js.map +1 -0
  129. package/dist/cjs/utils/update-css.js +77 -0
  130. package/dist/cjs/utils/update-css.js.map +1 -0
  131. package/dist/cjs/utils/utils.js +105 -0
  132. package/dist/cjs/utils/utils.js.map +1 -0
  133. package/dist/es/assets/icons.d.ts +86 -0
  134. package/dist/es/assets/icons.d.ts.map +1 -0
  135. package/dist/es/assets/icons.js +83 -0
  136. package/dist/es/assets/icons.js.map +1 -0
  137. package/dist/es/assets/route_animation_icon.svg +15 -0
  138. package/dist/es/assets/user-dot-icon.svg +3 -0
  139. package/dist/es/config/sdkConfig.d.ts +105 -0
  140. package/dist/es/config/sdkConfig.d.ts.map +1 -0
  141. package/dist/es/config/sdkConfig.js +2 -0
  142. package/dist/es/config/sdkConfig.js.map +1 -0
  143. package/dist/es/controllers/routeController.d.ts +161 -0
  144. package/dist/es/controllers/routeController.d.ts.map +1 -0
  145. package/dist/es/controllers/routeController.js +1050 -0
  146. package/dist/es/controllers/routeController.js.map +1 -0
  147. package/dist/es/domain/models/_internal.d.ts +21 -0
  148. package/dist/es/domain/models/_internal.d.ts.map +1 -0
  149. package/dist/es/domain/models/_internal.js +11 -0
  150. package/dist/es/domain/models/_internal.js.map +1 -0
  151. package/dist/es/domain/models/_rtl.d.ts +7 -0
  152. package/dist/es/domain/models/_rtl.d.ts.map +1 -0
  153. package/dist/es/domain/models/_rtl.js +7 -0
  154. package/dist/es/domain/models/_rtl.js.map +1 -0
  155. package/dist/es/domain/models/animation.d.ts +161 -0
  156. package/dist/es/domain/models/animation.d.ts.map +1 -0
  157. package/dist/es/domain/models/animation.js +58 -0
  158. package/dist/es/domain/models/animation.js.map +1 -0
  159. package/dist/es/domain/models/banner.d.ts +64 -0
  160. package/dist/es/domain/models/banner.d.ts.map +1 -0
  161. package/dist/es/domain/models/banner.js +20 -0
  162. package/dist/es/domain/models/banner.js.map +1 -0
  163. package/dist/es/domain/models/categories.d.ts +157 -0
  164. package/dist/es/domain/models/categories.d.ts.map +1 -0
  165. package/dist/es/domain/models/categories.js +20 -0
  166. package/dist/es/domain/models/categories.js.map +1 -0
  167. package/dist/es/domain/models/cityFilterOption.d.ts +15 -0
  168. package/dist/es/domain/models/cityFilterOption.d.ts.map +1 -0
  169. package/dist/es/domain/models/cityFilterOption.js +2 -0
  170. package/dist/es/domain/models/cityFilterOption.js.map +1 -0
  171. package/dist/es/domain/models/configuration.d.ts +523 -0
  172. package/dist/es/domain/models/configuration.d.ts.map +1 -0
  173. package/dist/es/domain/models/configuration.js +2 -0
  174. package/dist/es/domain/models/configuration.js.map +1 -0
  175. package/dist/es/domain/models/cssCustomization.d.ts +63 -0
  176. package/dist/es/domain/models/cssCustomization.d.ts.map +1 -0
  177. package/dist/es/domain/models/cssCustomization.js +2 -0
  178. package/dist/es/domain/models/cssCustomization.js.map +1 -0
  179. package/dist/es/domain/models/fitOptions.d.ts +175 -0
  180. package/dist/es/domain/models/fitOptions.d.ts.map +1 -0
  181. package/dist/es/domain/models/fitOptions.js +2 -0
  182. package/dist/es/domain/models/fitOptions.js.map +1 -0
  183. package/dist/es/domain/models/innerFloors.d.ts +42 -0
  184. package/dist/es/domain/models/innerFloors.d.ts.map +1 -0
  185. package/dist/es/domain/models/innerFloors.js +2 -0
  186. package/dist/es/domain/models/innerFloors.js.map +1 -0
  187. package/dist/es/domain/models/institution.d.ts +64 -0
  188. package/dist/es/domain/models/institution.d.ts.map +1 -0
  189. package/dist/es/domain/models/institution.js +40 -0
  190. package/dist/es/domain/models/institution.js.map +1 -0
  191. package/dist/es/domain/models/latLng.d.ts +14 -0
  192. package/dist/es/domain/models/latLng.d.ts.map +1 -0
  193. package/dist/es/domain/models/latLng.js +2 -0
  194. package/dist/es/domain/models/latLng.js.map +1 -0
  195. package/dist/es/domain/models/location.d.ts +10 -0
  196. package/dist/es/domain/models/location.d.ts.map +1 -0
  197. package/dist/es/domain/models/location.js +2 -0
  198. package/dist/es/domain/models/location.js.map +1 -0
  199. package/dist/es/domain/models/loggeable.d.ts +43 -0
  200. package/dist/es/domain/models/loggeable.d.ts.map +1 -0
  201. package/dist/es/domain/models/loggeable.js +48 -0
  202. package/dist/es/domain/models/loggeable.js.map +1 -0
  203. package/dist/es/domain/models/mapCamera.d.ts +109 -0
  204. package/dist/es/domain/models/mapCamera.d.ts.map +1 -0
  205. package/dist/es/domain/models/mapCamera.js +2 -0
  206. package/dist/es/domain/models/mapCamera.js.map +1 -0
  207. package/dist/es/domain/models/mapConfig.d.ts +238 -0
  208. package/dist/es/domain/models/mapConfig.d.ts.map +1 -0
  209. package/dist/es/domain/models/mapConfig.js +12 -0
  210. package/dist/es/domain/models/mapConfig.js.map +1 -0
  211. package/dist/es/domain/models/marker.d.ts +301 -0
  212. package/dist/es/domain/models/marker.d.ts.map +1 -0
  213. package/dist/es/domain/models/marker.js +396 -0
  214. package/dist/es/domain/models/marker.js.map +1 -0
  215. package/dist/es/domain/models/multilanguage.d.ts +27 -0
  216. package/dist/es/domain/models/multilanguage.d.ts.map +1 -0
  217. package/dist/es/domain/models/multilanguage.js +14 -0
  218. package/dist/es/domain/models/multilanguage.js.map +1 -0
  219. package/dist/es/domain/models/openingHours.d.ts +30 -0
  220. package/dist/es/domain/models/openingHours.d.ts.map +1 -0
  221. package/dist/es/domain/models/openingHours.js +2 -0
  222. package/dist/es/domain/models/openingHours.js.map +1 -0
  223. package/dist/es/domain/models/place.d.ts +167 -0
  224. package/dist/es/domain/models/place.d.ts.map +1 -0
  225. package/dist/es/domain/models/place.js +97 -0
  226. package/dist/es/domain/models/place.js.map +1 -0
  227. package/dist/es/domain/models/platform.d.ts +6 -0
  228. package/dist/es/domain/models/platform.d.ts.map +1 -0
  229. package/dist/es/domain/models/platform.js +2 -0
  230. package/dist/es/domain/models/platform.js.map +1 -0
  231. package/dist/es/domain/models/popover.d.ts +14 -0
  232. package/dist/es/domain/models/popover.d.ts.map +1 -0
  233. package/dist/es/domain/models/popover.js +2 -0
  234. package/dist/es/domain/models/popover.js.map +1 -0
  235. package/dist/es/domain/models/product.d.ts +36 -0
  236. package/dist/es/domain/models/product.d.ts.map +1 -0
  237. package/dist/es/domain/models/product.js +2 -0
  238. package/dist/es/domain/models/product.js.map +1 -0
  239. package/dist/es/domain/models/property.d.ts +172 -0
  240. package/dist/es/domain/models/property.d.ts.map +1 -0
  241. package/dist/es/domain/models/property.js +100 -0
  242. package/dist/es/domain/models/property.js.map +1 -0
  243. package/dist/es/domain/models/route.d.ts +199 -0
  244. package/dist/es/domain/models/route.d.ts.map +1 -0
  245. package/dist/es/domain/models/route.js +160 -0
  246. package/dist/es/domain/models/route.js.map +1 -0
  247. package/dist/es/domain/models/routeConfiguration.d.ts +140 -0
  248. package/dist/es/domain/models/routeConfiguration.d.ts.map +1 -0
  249. package/dist/es/domain/models/routeConfiguration.js +75 -0
  250. package/dist/es/domain/models/routeConfiguration.js.map +1 -0
  251. package/dist/es/domain/models/routeInstance.d.ts +52 -0
  252. package/dist/es/domain/models/routeInstance.d.ts.map +1 -0
  253. package/dist/es/domain/models/routeInstance.js +26 -0
  254. package/dist/es/domain/models/routeInstance.js.map +1 -0
  255. package/dist/es/domain/models/routeStyle.d.ts +47 -0
  256. package/dist/es/domain/models/routeStyle.d.ts.map +1 -0
  257. package/dist/es/domain/models/routeStyle.js +2 -0
  258. package/dist/es/domain/models/routeStyle.js.map +1 -0
  259. package/dist/es/domain/models/transport.d.ts +176 -0
  260. package/dist/es/domain/models/transport.d.ts.map +1 -0
  261. package/dist/es/domain/models/transport.js +18 -0
  262. package/dist/es/domain/models/transport.js.map +1 -0
  263. package/dist/es/domain/ports/ICache.d.ts +70 -0
  264. package/dist/es/domain/ports/ICache.d.ts.map +1 -0
  265. package/dist/es/domain/ports/ICache.js +2 -0
  266. package/dist/es/domain/ports/ICache.js.map +1 -0
  267. package/dist/es/domain/ports/IHttpClient.d.ts +77 -0
  268. package/dist/es/domain/ports/IHttpClient.d.ts.map +1 -0
  269. package/dist/es/domain/ports/IHttpClient.js +2 -0
  270. package/dist/es/domain/ports/IHttpClient.js.map +1 -0
  271. package/dist/es/domain/ports/ILogger.d.ts +61 -0
  272. package/dist/es/domain/ports/ILogger.d.ts.map +1 -0
  273. package/dist/es/domain/ports/ILogger.js +19 -0
  274. package/dist/es/domain/ports/ILogger.js.map +1 -0
  275. package/dist/es/domain/ports/index.d.ts +9 -0
  276. package/dist/es/domain/ports/index.d.ts.map +1 -0
  277. package/dist/es/domain/ports/index.js +6 -0
  278. package/dist/es/domain/ports/index.js.map +1 -0
  279. package/dist/es/index.d.ts +58 -0
  280. package/dist/es/index.d.ts.map +1 -0
  281. package/dist/es/index.js +48 -0
  282. package/dist/es/index.js.map +1 -0
  283. package/dist/es/infrastructure/cache/CacheManager.d.ts +106 -0
  284. package/dist/es/infrastructure/cache/CacheManager.d.ts.map +1 -0
  285. package/dist/es/infrastructure/cache/CacheManager.js +232 -0
  286. package/dist/es/infrastructure/cache/CacheManager.js.map +1 -0
  287. package/dist/es/infrastructure/cache/LRUCache.d.ts +70 -0
  288. package/dist/es/infrastructure/cache/LRUCache.d.ts.map +1 -0
  289. package/dist/es/infrastructure/cache/LRUCache.js +149 -0
  290. package/dist/es/infrastructure/cache/LRUCache.js.map +1 -0
  291. package/dist/es/infrastructure/cache/PersistentCache.d.ts +58 -0
  292. package/dist/es/infrastructure/cache/PersistentCache.d.ts.map +1 -0
  293. package/dist/es/infrastructure/cache/PersistentCache.js +156 -0
  294. package/dist/es/infrastructure/cache/PersistentCache.js.map +1 -0
  295. package/dist/es/infrastructure/cache/cacheConfig.d.ts +51 -0
  296. package/dist/es/infrastructure/cache/cacheConfig.d.ts.map +1 -0
  297. package/dist/es/infrastructure/cache/cacheConfig.js +66 -0
  298. package/dist/es/infrastructure/cache/cacheConfig.js.map +1 -0
  299. package/dist/es/infrastructure/http/FetchHttpClient.d.ts +41 -0
  300. package/dist/es/infrastructure/http/FetchHttpClient.d.ts.map +1 -0
  301. package/dist/es/infrastructure/http/FetchHttpClient.js +71 -0
  302. package/dist/es/infrastructure/http/FetchHttpClient.js.map +1 -0
  303. package/dist/es/infrastructure/logging/CountlyLogger.d.ts +47 -0
  304. package/dist/es/infrastructure/logging/CountlyLogger.d.ts.map +1 -0
  305. package/dist/es/infrastructure/logging/CountlyLogger.js +74 -0
  306. package/dist/es/infrastructure/logging/CountlyLogger.js.map +1 -0
  307. package/dist/es/interfaces/cache.d.ts +5 -0
  308. package/dist/es/interfaces/cache.d.ts.map +1 -0
  309. package/dist/es/interfaces/cache.js +2 -0
  310. package/dist/es/interfaces/cache.js.map +1 -0
  311. package/dist/es/interfaces/healthResponse.d.ts +17 -0
  312. package/dist/es/interfaces/healthResponse.d.ts.map +1 -0
  313. package/dist/es/interfaces/healthResponse.js +2 -0
  314. package/dist/es/interfaces/healthResponse.js.map +1 -0
  315. package/dist/es/interfaces/institutionResponse.d.ts +12 -0
  316. package/dist/es/interfaces/institutionResponse.d.ts.map +1 -0
  317. package/dist/es/interfaces/institutionResponse.js +2 -0
  318. package/dist/es/interfaces/institutionResponse.js.map +1 -0
  319. package/dist/es/interfaces/metadata.d.ts +7 -0
  320. package/dist/es/interfaces/metadata.d.ts.map +1 -0
  321. package/dist/es/interfaces/metadata.js +2 -0
  322. package/dist/es/interfaces/metadata.js.map +1 -0
  323. package/dist/es/interfaces/placeResponse.d.ts +50 -0
  324. package/dist/es/interfaces/placeResponse.d.ts.map +1 -0
  325. package/dist/es/interfaces/placeResponse.js +2 -0
  326. package/dist/es/interfaces/placeResponse.js.map +1 -0
  327. package/dist/es/interfaces/routeCacheResponse.d.ts +13 -0
  328. package/dist/es/interfaces/routeCacheResponse.d.ts.map +1 -0
  329. package/dist/es/interfaces/routeCacheResponse.js +2 -0
  330. package/dist/es/interfaces/routeCacheResponse.js.map +1 -0
  331. package/dist/es/interfaces/routeResponse.d.ts +42 -0
  332. package/dist/es/interfaces/routeResponse.d.ts.map +1 -0
  333. package/dist/es/interfaces/routeResponse.js +2 -0
  334. package/dist/es/interfaces/routeResponse.js.map +1 -0
  335. package/dist/es/interfaces/styleResponse.d.ts +5 -0
  336. package/dist/es/interfaces/styleResponse.d.ts.map +1 -0
  337. package/dist/es/interfaces/styleResponse.js +2 -0
  338. package/dist/es/interfaces/styleResponse.js.map +1 -0
  339. package/dist/es/logger/logger.d.ts +14 -0
  340. package/dist/es/logger/logger.d.ts.map +1 -0
  341. package/dist/es/logger/logger.js +84 -0
  342. package/dist/es/logger/logger.js.map +1 -0
  343. package/dist/es/logger/rollbar.d.ts +4 -0
  344. package/dist/es/logger/rollbar.d.ts.map +1 -0
  345. package/dist/es/logger/rollbar.js +20 -0
  346. package/dist/es/logger/rollbar.js.map +1 -0
  347. package/dist/es/map/map.d.ts +598 -0
  348. package/dist/es/map/map.d.ts.map +1 -0
  349. package/dist/es/map/map.js +1430 -0
  350. package/dist/es/map/map.js.map +1 -0
  351. package/dist/es/repository/repository.d.ts +65 -0
  352. package/dist/es/repository/repository.d.ts.map +1 -0
  353. package/dist/es/repository/repository.js +570 -0
  354. package/dist/es/repository/repository.js.map +1 -0
  355. package/dist/es/repository/requester.d.ts +169 -0
  356. package/dist/es/repository/requester.d.ts.map +1 -0
  357. package/dist/es/repository/requester.js +586 -0
  358. package/dist/es/repository/requester.js.map +1 -0
  359. package/dist/es/sdk.d.ts +279 -0
  360. package/dist/es/sdk.d.ts.map +1 -0
  361. package/dist/es/sdk.js +346 -0
  362. package/dist/es/sdk.js.map +1 -0
  363. package/dist/es/utils/error.d.ts +8 -0
  364. package/dist/es/utils/error.d.ts.map +1 -0
  365. package/dist/es/utils/error.js +16 -0
  366. package/dist/es/utils/error.js.map +1 -0
  367. package/dist/es/utils/images.d.ts +8 -0
  368. package/dist/es/utils/images.d.ts.map +1 -0
  369. package/dist/es/utils/images.js +22 -0
  370. package/dist/es/utils/images.js.map +1 -0
  371. package/dist/es/utils/nav-functions.d.ts +85 -0
  372. package/dist/es/utils/nav-functions.d.ts.map +1 -0
  373. package/dist/es/utils/nav-functions.js +143 -0
  374. package/dist/es/utils/nav-functions.js.map +1 -0
  375. package/dist/es/utils/opening-hours-helper.d.ts +395 -0
  376. package/dist/es/utils/opening-hours-helper.d.ts.map +1 -0
  377. package/dist/es/utils/opening-hours-helper.js +906 -0
  378. package/dist/es/utils/opening-hours-helper.js.map +1 -0
  379. package/dist/es/utils/route-utils.d.ts +28 -0
  380. package/dist/es/utils/route-utils.d.ts.map +1 -0
  381. package/dist/es/utils/route-utils.js +54 -0
  382. package/dist/es/utils/route-utils.js.map +1 -0
  383. package/dist/es/utils/update-css.d.ts +12 -0
  384. package/dist/es/utils/update-css.d.ts.map +1 -0
  385. package/dist/es/utils/update-css.js +73 -0
  386. package/dist/es/utils/update-css.js.map +1 -0
  387. package/dist/es/utils/utils.d.ts +39 -0
  388. package/dist/es/utils/utils.d.ts.map +1 -0
  389. package/dist/es/utils/utils.js +97 -0
  390. package/dist/es/utils/utils.js.map +1 -0
  391. package/dist/umd/index.js +16874 -0
  392. package/dist/umd/index.js.map +1 -0
  393. package/dist/umd/styles.css +107 -0
  394. package/dist/umd/styles.css.map +1 -0
  395. package/dist/umd/styles.js +37 -0
  396. package/dist/umd/styles.js.map +1 -0
  397. package/package.json +198 -0
@@ -0,0 +1,906 @@
1
+ import { InternalMapVXSDK } from "../sdk";
2
+ /**
3
+ * Helper class for opening hours.
4
+ */
5
+ export class OpeningHoursHelper {
6
+ /**
7
+ * Gets the day of the week as a two-character string indicator.
8
+ *
9
+ * @param date The Date object to extract the day from.
10
+ * @returns A `DaysOfTheWeek` string representing the day of the week.
11
+ * @example
12
+ * ```typescript
13
+ * const date = new Date(2024, 0, 1); // Monday
14
+ * const day = OpeningHoursHelper.getDay(date);
15
+ * console.log(day); // "mo"
16
+ * ```
17
+ * @default Returns null if an error occurs or invalid date is provided.
18
+ */
19
+ static getDay(date) {
20
+ try {
21
+ const dayNumber = date.getDay(); // JavaScript getDay() returns 0-6 (Sun-Sat)
22
+ switch (dayNumber) {
23
+ case 0:
24
+ return "su";
25
+ case 1:
26
+ return "mo";
27
+ case 2:
28
+ return "tu";
29
+ case 3:
30
+ return "we";
31
+ case 4:
32
+ return "th";
33
+ case 5:
34
+ return "fr";
35
+ case 6:
36
+ return "sa";
37
+ default:
38
+ // This default shouldn't happen. I'll add it just for completeness.
39
+ return null;
40
+ }
41
+ }
42
+ catch (_a) {
43
+ return null;
44
+ }
45
+ }
46
+ /**
47
+ * Converts a 24-hour time format to 12-hour format with AM/PM.
48
+ *
49
+ * @param time24h The time string in 24-hour format (HH:mm).
50
+ * @returns Time formatted in 12-hour format with AM/PM.
51
+ * @example
52
+ * ```typescript
53
+ * const time12h = OpeningHoursHelper.convertSingleTimeTo12Hour("14:30");
54
+ * console.log(time12h); // "2:30 p.m."
55
+ *
56
+ * const morningTime = OpeningHoursHelper.convertSingleTimeTo12Hour("09:00");
57
+ * console.log(morningTime); // "9:00 a.m."
58
+ * ```
59
+ * @default Returns empty string "" if an error occurs or invalid time is provided.
60
+ */
61
+ static convertSingleTimeTo12Hour(time24h) {
62
+ var _a;
63
+ try {
64
+ if (!time24h || typeof time24h !== "string") {
65
+ return "";
66
+ }
67
+ const [hourStr, minuteStr] = (_a = time24h.split(":")) !== null && _a !== void 0 ? _a : [];
68
+ if (!hourStr || !minuteStr) {
69
+ return "";
70
+ }
71
+ const hour = parseInt(hourStr, 10);
72
+ const minute = parseInt(minuteStr, 10);
73
+ if (isNaN(hour) || isNaN(minute) || hour < 0 || hour > 23 || minute < 0 || minute > 59) {
74
+ return "";
75
+ }
76
+ let displayHour = hour % 24;
77
+ let period;
78
+ if (displayHour < 12) {
79
+ period = "a.m.";
80
+ if (displayHour === 0) {
81
+ displayHour = 12;
82
+ }
83
+ }
84
+ else {
85
+ period = "p.m.";
86
+ if (displayHour !== 12) {
87
+ displayHour -= 12;
88
+ }
89
+ }
90
+ return `${displayHour}:${minute < 10 ? "0" : ""}${minute} ${period}`;
91
+ }
92
+ catch (_b) {
93
+ return "";
94
+ }
95
+ }
96
+ /**
97
+ * Formats an opening time schedule into a readable string.
98
+ *
99
+ * @param openingTime The opening time object containing open and close times.
100
+ * @returns Formatted time schedule string.
101
+ * @example
102
+ * ```typescript
103
+ * const schedule = { open: "09:00", close: "17:00" };
104
+ * const formatted = OpeningHoursHelper.formatTimeSchedule(schedule);
105
+ * console.log(formatted); // "9:00 a.m. - 5:00 p.m."
106
+ * ```
107
+ * @default Returns empty string "" if an error occurs or invalid opening time is provided.
108
+ */
109
+ static formatTimeSchedule(openingTime) {
110
+ try {
111
+ if (!openingTime || !openingTime.open || !openingTime.close) {
112
+ return "";
113
+ }
114
+ // Check if it's a 24-hour schedule
115
+ if (is24Hours(openingTime)) {
116
+ return "24 hrs";
117
+ }
118
+ const openTime = OpeningHoursHelper.convertSingleTimeTo12Hour(openingTime.open);
119
+ const closeTime = OpeningHoursHelper.convertSingleTimeTo12Hour(openingTime.close);
120
+ // Check if conversion failed (returned empty string)
121
+ if (openTime === "" || closeTime === "") {
122
+ return "";
123
+ }
124
+ return `${openTime} - ${closeTime}`;
125
+ }
126
+ catch (_a) {
127
+ return "";
128
+ }
129
+ }
130
+ /**
131
+ * Gets the day number (1-7) for a given day string.
132
+ *
133
+ * @param day The two-character day string (e.g., "mo", "tu").
134
+ * @returns The day number (1-7), or -1 if the day is invalid.
135
+ * @example
136
+ * ```typescript
137
+ * const dayNumber = OpeningHoursHelper.getDayNumber("mo");
138
+ * console.log(dayNumber); // 1
139
+ *
140
+ * const invalidDay = OpeningHoursHelper.getDayNumber("invalid");
141
+ * console.log(invalidDay); // -1
142
+ * ```
143
+ * @default Returns -1 if an error occurs or invalid day string is provided.
144
+ */
145
+ static getDayNumber(day) {
146
+ try {
147
+ switch (day) {
148
+ case "mo":
149
+ return 1;
150
+ case "tu":
151
+ return 2;
152
+ case "we":
153
+ return 3;
154
+ case "th":
155
+ return 4;
156
+ case "fr":
157
+ return 5;
158
+ case "sa":
159
+ return 6;
160
+ case "su":
161
+ return 7;
162
+ default:
163
+ return -1;
164
+ }
165
+ }
166
+ catch (_a) {
167
+ return -1;
168
+ }
169
+ }
170
+ /**
171
+ * Gets the full day name (localized) for a given day string.
172
+ *
173
+ * @param day The two-character day string (e.g., "mo", "tu").
174
+ * @returns The localized day name, or an empty string if the day is invalid.
175
+ * @example
176
+ * ```typescript
177
+ * const dayName = OpeningHoursHelper.getDayName("mo");
178
+ * console.log(dayName); // "Monday" (or localized equivalent)
179
+ *
180
+ * const invalidDay = OpeningHoursHelper.getDayName("invalid");
181
+ * console.log(invalidDay); // ""
182
+ * ```
183
+ * @default Returns empty string "" if an error occurs or invalid day string is provided.
184
+ */
185
+ static getDayName(day) {
186
+ try {
187
+ const dayNumber = OpeningHoursHelper.getDayNumber(day);
188
+ if (dayNumber === -1) {
189
+ return "";
190
+ }
191
+ const date = new Date(2024, 0, dayNumber);
192
+ try {
193
+ const currentLang = InternalMapVXSDK.getLang();
194
+ return date.toLocaleDateString(currentLang, { weekday: "long" });
195
+ }
196
+ catch (error) {
197
+ // Fallback to English if the language is not valid
198
+ return date.toLocaleDateString("en", { weekday: "long" });
199
+ }
200
+ }
201
+ catch (_a) {
202
+ return "";
203
+ }
204
+ }
205
+ /**
206
+ * Sorts the opening hours object by day of the week.
207
+ *
208
+ * @param openingHours The opening hours object to sort.
209
+ * @returns A new object with the opening hours sorted by day of the week.
210
+ * @example
211
+ * ```typescript
212
+ * const unsortedHours = { fr: [...], mo: [...], we: [...] };
213
+ * const sortedHours = OpeningHoursHelper.sortDays(unsortedHours);
214
+ * console.log(Object.keys(sortedHours)); // ["mo", "we", "fr"]
215
+ * ```
216
+ * @default Returns the original openingHours object if an error occurs.
217
+ */
218
+ static sortDays(openingHours) {
219
+ try {
220
+ return Object.fromEntries(Object.entries(openingHours).sort(([keyA], [keyB]) => {
221
+ const dayNumberA = OpeningHoursHelper.getDayNumber(keyA);
222
+ const dayNumberB = OpeningHoursHelper.getDayNumber(keyB);
223
+ return dayNumberA - dayNumberB;
224
+ }));
225
+ }
226
+ catch (_a) {
227
+ return openingHours;
228
+ }
229
+ }
230
+ /**
231
+ * Checks if a store is open from the previous day (for overnight hours).
232
+ *
233
+ * @param openingHours The opening hours of the store.
234
+ * @param currentDate Optional date to check against. If not provided, uses the current date.
235
+ * @returns `true` if the store is open from the previous day, `false` otherwise.
236
+ * @example
237
+ * ```typescript
238
+ * const overnightHours = { mo: [{ open: "22:00", close: "06:00" }] };
239
+ * const isOpen = OpeningHoursHelper.isOpenFromPreviousDay(overnightHours);
240
+ * console.log(isOpen); // true if current time is between 22:00 and 06:00
241
+ * ```
242
+ * @default Returns `false` if an error occurs or invalid opening hours are provided.
243
+ */
244
+ static isOpenFromPreviousDay(openingHours, currentDate) {
245
+ try {
246
+ if (!openingHours || typeof openingHours !== "object") {
247
+ return false;
248
+ }
249
+ const now = currentDate || new Date(); // Gets the current date
250
+ const yesterday = new Date(now); // Creates a copy of the current date
251
+ OpeningHoursHelper.previousDate(yesterday);
252
+ const yesterdayString = OpeningHoursHelper.getDay(yesterday);
253
+ if (yesterdayString == null) {
254
+ return false;
255
+ }
256
+ const intervals = openingHours[yesterdayString];
257
+ if (!intervals || !Array.isArray(intervals) || intervals.length === 0) {
258
+ return false;
259
+ }
260
+ for (const interval of intervals) {
261
+ // Check if it's a 24-hour schedule
262
+ if (is24Hours(interval)) {
263
+ return true;
264
+ }
265
+ if (interval &&
266
+ interval.open &&
267
+ interval.close &&
268
+ OpeningHoursHelper.isValidTime(interval.open) &&
269
+ OpeningHoursHelper.isValidTime(interval.close)) {
270
+ // Create the date object based on yesterday
271
+ const openTime = OpeningHoursHelper.parseTimeAsDate(interval.open, yesterday);
272
+ const closeTime = OpeningHoursHelper.parseTimeAsDate(interval.close, yesterday);
273
+ if (openTime > closeTime) {
274
+ OpeningHoursHelper.nextDate(closeTime);
275
+ }
276
+ if (now >= openTime && now <= closeTime) {
277
+ return true; // The current time is within this interval
278
+ }
279
+ }
280
+ }
281
+ return false;
282
+ }
283
+ catch (_a) {
284
+ return false;
285
+ }
286
+ }
287
+ /**
288
+ * Modifies the given Date object to represent the previous day.
289
+ *
290
+ * @param date The Date object to modify. This object will be mutated.
291
+ * @returns This function modifies the Date object in place and does not return a value.
292
+ * @example
293
+ * ```typescript
294
+ * const date = new Date(2024, 0, 15); // January 15, 2024
295
+ * OpeningHoursHelper.previousDate(date);
296
+ * console.log(date.getDate()); // 14
297
+ * ```
298
+ */
299
+ static previousDate(date) {
300
+ try {
301
+ const day = date.getDate();
302
+ date.setDate(day - 1);
303
+ }
304
+ catch (_a) { }
305
+ }
306
+ /**
307
+ * Modifies the given Date object to represent the next day.
308
+ *
309
+ * @param date The Date object to modify. This object will be mutated.
310
+ * @returns This function modifies the Date object in place and does not return a value.
311
+ * @example
312
+ * ```typescript
313
+ * const date = new Date(2024, 0, 15); // January 15, 2024
314
+ * OpeningHoursHelper.nextDate(date);
315
+ * console.log(date.getDate()); // 16
316
+ * ```
317
+ */
318
+ static nextDate(date) {
319
+ try {
320
+ const day = date.getDate();
321
+ date.setDate(day + 1);
322
+ }
323
+ catch (_a) { }
324
+ }
325
+ /**
326
+ * Checks if the current time is within the opening hours defined for the current day.
327
+ *
328
+ * @param openingHours An object containing the opening hours for each day of the week.
329
+ * @param currentDate Optional date to check against. If not provided, uses the current date.
330
+ * @returns `true` if the current time is within the opening hours, `false` otherwise.
331
+ * @example
332
+ * ```typescript
333
+ * const hours = { mo: [{ open: "09:00", close: "17:00" }] };
334
+ * const isOpen = OpeningHoursHelper.isWithinOpeningHours(hours);
335
+ * console.log(isOpen); // true if current time is between 09:00 and 17:00 on Monday
336
+ * ```
337
+ * @default Returns `false` if an error occurs or invalid opening hours are provided.
338
+ */
339
+ static isWithinOpeningHours(openingHours, currentDate) {
340
+ try {
341
+ if (!openingHours || typeof openingHours !== "object") {
342
+ return false;
343
+ }
344
+ const now = currentDate || new Date();
345
+ const dayOfWeek = OpeningHoursHelper.getDay(now);
346
+ if (dayOfWeek == null) {
347
+ return false;
348
+ }
349
+ if (OpeningHoursHelper.isOpenFromPreviousDay(openingHours, now)) {
350
+ return true;
351
+ }
352
+ const intervals = openingHours[dayOfWeek];
353
+ if (!intervals || !Array.isArray(intervals) || intervals.length === 0) {
354
+ return false;
355
+ }
356
+ for (const interval of intervals) {
357
+ // Check if it's a 24-hour schedule
358
+ if (is24Hours(interval)) {
359
+ return true;
360
+ }
361
+ if (interval &&
362
+ interval.open &&
363
+ interval.close &&
364
+ OpeningHoursHelper.isValidTime(interval.open) &&
365
+ OpeningHoursHelper.isValidTime(interval.close)) {
366
+ // Create Date objects based on today
367
+ const openTime = OpeningHoursHelper.parseTimeAsDate(interval.open, now);
368
+ const closeTime = OpeningHoursHelper.parseTimeAsDate(interval.close, now);
369
+ if (openTime >= closeTime) {
370
+ OpeningHoursHelper.nextDate(closeTime);
371
+ }
372
+ if (now >= openTime && now <= closeTime) {
373
+ return true;
374
+ }
375
+ }
376
+ }
377
+ return false; // The current time is not within any interval
378
+ }
379
+ catch (_a) {
380
+ return false;
381
+ }
382
+ }
383
+ /**
384
+ * Checks if there are opening times defined for today.
385
+ *
386
+ * @param openingHours The opening hours of a store.
387
+ * @returns `true` if there are opening times for today, `false` otherwise.
388
+ * @example
389
+ * ```typescript
390
+ * const hours = { mo: [{ open: "09:00", close: "17:00" }] };
391
+ * const hasHours = OpeningHoursHelper.hasOpeningHoursToday(hours);
392
+ * console.log(hasHours); // true if today is Monday
393
+ * ```
394
+ * @default Returns `false` if an error occurs or invalid opening hours are provided.
395
+ */
396
+ static hasOpeningHoursToday(openingHours) {
397
+ try {
398
+ if (!openingHours || typeof openingHours !== "object") {
399
+ return false;
400
+ }
401
+ const now = new Date();
402
+ const day = OpeningHoursHelper.getDay(now);
403
+ if (day == null) {
404
+ return false;
405
+ }
406
+ const intervals = openingHours[day];
407
+ return !!(intervals && intervals.length > 0);
408
+ }
409
+ catch (_a) {
410
+ return false;
411
+ }
412
+ }
413
+ /**
414
+ * Checks if a given string is a valid time in HH:mm format.
415
+ *
416
+ * @param time The string to validate.
417
+ * @returns `true` if the string is a valid time, `false` otherwise.
418
+ * @example
419
+ * ```typescript
420
+ * const isValid = OpeningHoursHelper.isValidTime("14:30");
421
+ * console.log(isValid); // true
422
+ *
423
+ * const isInvalid = OpeningHoursHelper.isValidTime("25:00");
424
+ * console.log(isInvalid); // false
425
+ * ```
426
+ * @default Returns `false` if an error occurs or invalid time format is provided.
427
+ */
428
+ static isValidTime(time) {
429
+ try {
430
+ if (!time || typeof time !== "string") {
431
+ return false;
432
+ }
433
+ const timeRegex = /^([01][0-9]|2[0-3]):[0-5][0-9]$/; // HH:mm format (requires leading zero)
434
+ return timeRegex.test(time);
435
+ }
436
+ catch (_a) {
437
+ return false;
438
+ }
439
+ }
440
+ /**
441
+ * Parses a time string (HH:mm) and combines it with a date to create a new Date object.
442
+ *
443
+ * @param time The time string in HH:mm format (e.g., "14:30").
444
+ * @param date An optional Date object to combine with the time. If not provided, the current date is used.
445
+ * @returns A new Date object representing the combined date and time.
446
+ * @example
447
+ * ```typescript
448
+ * const date = new Date(2024, 0, 15);
449
+ * const timeDate = OpeningHoursHelper.parseTimeAsDate("14:30", date);
450
+ * console.log(timeDate); // Date object for January 15, 2024 at 2:30 PM
451
+ * ```
452
+ * @default Returns current date if an error occurs or invalid time is provided.
453
+ */
454
+ static parseTimeAsDate(time, date) {
455
+ try {
456
+ const [hours, minutes] = time.split(":").map(Number);
457
+ const baseDate = date ? new Date(date) : new Date();
458
+ const newDate = new Date(baseDate.getFullYear(), baseDate.getMonth(), baseDate.getDate(), hours, minutes, 0, 0);
459
+ return newDate;
460
+ }
461
+ catch (_a) {
462
+ return new Date();
463
+ }
464
+ }
465
+ /**
466
+ * Flattens an array of OpeningTime objects into a single OpeningTime object,
467
+ * taking the earliest open time and the latest close time.
468
+ *
469
+ * @param openingTimes The array of OpeningTime objects to flatten.
470
+ * @returns A single OpeningTime object representing the flattened time range.
471
+ * @example
472
+ * ```typescript
473
+ * const times = [
474
+ * { open: "09:00", close: "12:00" },
475
+ * { open: "14:00", close: "18:00" }
476
+ * ];
477
+ * const flattened = OpeningHoursHelper.flattenOpeningTimes(times);
478
+ * console.log(flattened); // { open: "09:00", close: "18:00" }
479
+ * ```
480
+ * @default Returns `{ open: "00:00", close: "00:00" }` if an error occurs or invalid array is provided.
481
+ */
482
+ static flattenOpeningTimes(openingTimes) {
483
+ try {
484
+ if (!openingTimes || !Array.isArray(openingTimes) || openingTimes.length === 0) {
485
+ return { open: "00:00", close: "00:00" };
486
+ }
487
+ OpeningHoursHelper.sortOpeningTimesByOpen(openingTimes);
488
+ const first = openingTimes[0];
489
+ const last = openingTimes[openingTimes.length - 1];
490
+ if (!first || !last || !first.open || !last.close) {
491
+ return { open: "00:00", close: "00:00" };
492
+ }
493
+ return {
494
+ open: first.open,
495
+ close: last.close,
496
+ };
497
+ }
498
+ catch (_a) {
499
+ return { open: "00:00", close: "00:00" };
500
+ }
501
+ }
502
+ /**
503
+ * Sorts a list of OpeningTime objects in place, based on the 'open' property.
504
+ *
505
+ * This method mutates the array and returns a reference to the same array.
506
+ *
507
+ * @param openingTimes The array of OpeningTime objects to sort. This array will be mutated.
508
+ * @returns The sorted array of OpeningTime objects (mutated in place).
509
+ * @example
510
+ * ```typescript
511
+ * const times = [
512
+ * { open: "14:00", close: "18:00" },
513
+ * { open: "09:00", close: "12:00" }
514
+ * ];
515
+ * const sorted = OpeningHoursHelper.sortOpeningTimesByOpen(times);
516
+ * console.log(sorted[0].open); // "09:00"
517
+ * ```
518
+ * @default Returns the original array if an error occurs.
519
+ */
520
+ static sortOpeningTimesByOpen(openingTimes) {
521
+ try {
522
+ return openingTimes.sort((a, b) => {
523
+ // Compare the 'open' times as strings
524
+ return a.open.localeCompare(b.open);
525
+ });
526
+ }
527
+ catch (_a) {
528
+ return openingTimes;
529
+ }
530
+ }
531
+ /**
532
+ * Formats the opening hours for the current day into a string representation.
533
+ *
534
+ * @param openingHours The opening hours for the store.
535
+ * @returns A string representing the opening hours for the current day, or an empty string if there are no opening hours for today.
536
+ * @example
537
+ * ```typescript
538
+ * const hours = { mo: [{ open: "09:00", close: "17:00" }] };
539
+ * const schedule = OpeningHoursHelper.formatCurrentDaySchedule(hours);
540
+ * console.log(schedule); // "9:00 a.m. - 5:00 p.m." (if today is Monday)
541
+ * ```
542
+ * @default Returns empty string "" if an error occurs or no opening hours for today.
543
+ */
544
+ static formatCurrentDaySchedule(openingHours) {
545
+ try {
546
+ const now = new Date();
547
+ const day = OpeningHoursHelper.getDay(now);
548
+ if (day == null) {
549
+ return "";
550
+ }
551
+ const intervals = openingHours[day];
552
+ if (intervals && intervals.length > 0) {
553
+ const flattenedTime = OpeningHoursHelper.flattenOpeningTimes(intervals);
554
+ return OpeningHoursHelper.formatTimeSchedule(flattenedTime);
555
+ }
556
+ else {
557
+ return "";
558
+ }
559
+ }
560
+ catch (_a) {
561
+ return "";
562
+ }
563
+ }
564
+ /**
565
+ * Formats the opening hours for the previous day into a string representation.
566
+ *
567
+ * @param openingHours The opening hours for the store.
568
+ * @returns A string representing the opening hours for the previous day, or an empty string if there are no opening hours for yesterday.
569
+ * @example
570
+ * ```typescript
571
+ * const hours = { su: [{ open: "10:00", close: "15:00" }] };
572
+ * const schedule = OpeningHoursHelper.formatPreviousDaySchedule(hours);
573
+ * console.log(schedule); // "10:00 a.m. - 3:00 p.m." (if yesterday was Sunday)
574
+ * ```
575
+ * @default Returns empty string "" if an error occurs or no opening hours for yesterday.
576
+ */
577
+ static formatPreviousDaySchedule(openingHours) {
578
+ try {
579
+ const yesterday = new Date();
580
+ OpeningHoursHelper.previousDate(yesterday);
581
+ const day = OpeningHoursHelper.getDay(yesterday);
582
+ if (day == null) {
583
+ return "";
584
+ }
585
+ const intervals = openingHours[day];
586
+ if (intervals && intervals.length > 0) {
587
+ const flattenedTime = OpeningHoursHelper.flattenOpeningTimes(intervals);
588
+ return OpeningHoursHelper.formatTimeSchedule(flattenedTime);
589
+ }
590
+ else {
591
+ return "";
592
+ }
593
+ }
594
+ catch (_a) {
595
+ return "";
596
+ }
597
+ }
598
+ /**
599
+ * Checks if the current time is within the specified opening hours.
600
+ *
601
+ * @param openHour The opening time in HH:mm format (e.g., "09:00").
602
+ * @param closeHour The closing time in HH:mm format (e.g., "18:00").
603
+ * @param currentHour The current time in HH:mm format (e.g., "14:30").
604
+ * @returns `true` if the current time is within the opening hours, `false` otherwise.
605
+ * @example
606
+ * ```typescript
607
+ * const isWithinHours = OpeningHoursHelper.isValidSchedule("09:00", "17:00", "14:30");
608
+ * console.log(isWithinHours); // true
609
+ *
610
+ * const isOutsideHours = OpeningHoursHelper.isValidSchedule("09:00", "17:00", "20:00");
611
+ * console.log(isOutsideHours); // false
612
+ * ```
613
+ * @default Returns `false` if an error occurs or invalid time format is provided.
614
+ */
615
+ static isValidSchedule(openHour, closeHour, currentHour) {
616
+ try {
617
+ if (!OpeningHoursHelper.isValidTime(openHour) ||
618
+ !OpeningHoursHelper.isValidTime(closeHour) ||
619
+ !OpeningHoursHelper.isValidTime(currentHour)) {
620
+ return false;
621
+ }
622
+ const minutesOpen = OpeningHoursHelper.toMinutes(openHour);
623
+ const minutesClose = OpeningHoursHelper.toMinutes(closeHour);
624
+ const minutesCurrent = OpeningHoursHelper.toMinutes(currentHour);
625
+ return minutesCurrent >= minutesOpen && minutesCurrent <= minutesClose;
626
+ }
627
+ catch (_a) {
628
+ return false;
629
+ }
630
+ }
631
+ /**
632
+ * Parses a time string (HH:mm) and creates a Date object for today with that time.
633
+ *
634
+ * @param time The time string in HH:mm format (e.g., "14:30").
635
+ * @param baseDate Optional base date to use. If not provided, uses the current date.
636
+ * @returns A Date object representing the date with the specified time.
637
+ * @example
638
+ * ```typescript
639
+ * const timeDate = OpeningHoursHelper.parseTimeToDate("14:30");
640
+ * console.log(timeDate); // Date object for today at 2:30 PM
641
+ * ```
642
+ * @default Returns current date if an error occurs or invalid time is provided.
643
+ */
644
+ static parseTimeToDate(time, baseDate) {
645
+ try {
646
+ if (!time || typeof time !== "string") {
647
+ return new Date();
648
+ }
649
+ const [hoursStr, minutesStr] = time.split(":");
650
+ if (!hoursStr || !minutesStr) {
651
+ return new Date();
652
+ }
653
+ const hours = parseInt(hoursStr, 10);
654
+ const minutes = parseInt(minutesStr, 10);
655
+ if (isNaN(hours) || isNaN(minutes)) {
656
+ return new Date();
657
+ }
658
+ const date = baseDate ? new Date(baseDate) : new Date();
659
+ date.setHours(hours, minutes, 0, 0);
660
+ return date;
661
+ }
662
+ catch (_a) {
663
+ return new Date();
664
+ }
665
+ }
666
+ /**
667
+ * Converts an array of day abbreviations to a readable day range string.
668
+ *
669
+ * @param days An array of day abbreviations (e.g., ["Mo", "Tu", "We"]).
670
+ * @returns A string representing the day range (e.g., "Monday - Wednesday" for consecutive days, or just "Monday" for a single day).
671
+ * @example
672
+ * ```typescript
673
+ * const range = OpeningHoursHelper.getDaysRange(["Mo", "Tu", "We"]);
674
+ * console.log(range); // "Monday - Wednesday"
675
+ *
676
+ * const singleDay = OpeningHoursHelper.getDaysRange(["Mo"]);
677
+ * console.log(singleDay); // "Monday"
678
+ * ```
679
+ * @default Returns empty string "" if an error occurs or empty array is provided.
680
+ */
681
+ static getDaysRange(days) {
682
+ try {
683
+ const dayMap = {
684
+ Mo: "Monday",
685
+ Tu: "Tuesday",
686
+ We: "Wednesday",
687
+ Th: "Thursday",
688
+ Fr: "Friday",
689
+ Sa: "Saturday",
690
+ Su: "Sunday",
691
+ };
692
+ if (days.length === 0) {
693
+ return "";
694
+ }
695
+ const firstDay = dayMap[days[0]] || "Invalid day";
696
+ const lastDay = dayMap[days[days.length - 1]] || "Invalid day";
697
+ if (days.length === 1) {
698
+ return firstDay;
699
+ }
700
+ return `${firstDay} - ${lastDay}`;
701
+ }
702
+ catch (_a) {
703
+ return "";
704
+ }
705
+ }
706
+ /**
707
+ * Finds the next closest time from an array of time strings relative to the current date.
708
+ *
709
+ * @param times An array of time strings in HH:mm format (e.g., ["09:00", "14:30", "18:00"]).
710
+ * @param currentDate The current date and time to compare against.
711
+ * @returns The closest upcoming time string, or empty string if no times are provided.
712
+ * @example
713
+ * ```typescript
714
+ * const times = ["09:00", "12:00", "18:00"];
715
+ * const currentTime = new Date(); // Assume it's 10:30 AM
716
+ * const nextTime = OpeningHoursHelper.getNextClosestTime(times, currentTime);
717
+ * console.log(nextTime); // "12:00"
718
+ * ```
719
+ * @default Returns empty string "" if an error occurs or no times are provided.
720
+ */
721
+ static getNextClosestTime(times, currentDate) {
722
+ try {
723
+ const nowMinutes = currentDate.getHours() * 60 + currentDate.getMinutes();
724
+ const timesWithDiffs = times.map((time) => {
725
+ const timeMinutes = OpeningHoursHelper.toMinutes(time);
726
+ const diff = timeMinutes - nowMinutes + (timeMinutes < nowMinutes ? 24 * 60 : 0);
727
+ return { time, diff };
728
+ });
729
+ timesWithDiffs.sort((a, b) => a.diff - b.diff);
730
+ return timesWithDiffs.length > 0 ? timesWithDiffs[0].time : "";
731
+ }
732
+ catch (_a) {
733
+ return "";
734
+ }
735
+ }
736
+ /**
737
+ * Checks if a place is currently open based on its opening hours.
738
+ *
739
+ * @param openingHours An object containing the opening hours for each day of the week.
740
+ * @param currentDate Optional date to check against. If not provided, uses the current date.
741
+ * @returns `true` if the place is currently open, `false` otherwise.
742
+ * @example
743
+ * ```typescript
744
+ * const hours = { mo: [{ open: "09:00", close: "17:00" }] };
745
+ * const isOpen = OpeningHoursHelper.isPlaceOpen(hours);
746
+ * console.log(isOpen); // true if current time is between 09:00 and 17:00 on Monday
747
+ * ```
748
+ * @default Returns `false` if an error occurs or invalid opening hours are provided.
749
+ */
750
+ static isPlaceOpen(openingHours, currentDate) {
751
+ try {
752
+ if (!openingHours || typeof openingHours !== "object") {
753
+ return false;
754
+ }
755
+ const date = currentDate || new Date();
756
+ const dayName = OpeningHoursHelper.getDay(date);
757
+ if (dayName == null ||
758
+ !openingHours[dayName] ||
759
+ !Array.isArray(openingHours[dayName]) ||
760
+ openingHours[dayName].length === 0) {
761
+ return false;
762
+ }
763
+ const daySchedule = openingHours[dayName][0];
764
+ if (!daySchedule || !daySchedule.open || !daySchedule.close) {
765
+ return false;
766
+ }
767
+ const startTime = daySchedule.open;
768
+ const endTime = daySchedule.close;
769
+ if (!OpeningHoursHelper.isValidTime(startTime) || !OpeningHoursHelper.isValidTime(endTime)) {
770
+ return false;
771
+ }
772
+ const startDate = OpeningHoursHelper.parseTimeToDate(startTime, date);
773
+ const endDate = OpeningHoursHelper.parseTimeToDate(endTime, date);
774
+ if (endDate < startDate) {
775
+ endDate.setDate(endDate.getDate() + 1);
776
+ }
777
+ const time = new Date(date);
778
+ time.setSeconds(0, 0);
779
+ return time >= startDate && time <= endDate;
780
+ }
781
+ catch (_a) {
782
+ return false;
783
+ }
784
+ }
785
+ /**
786
+ * Gets the next schedule time (opening or closing) for a place in 12-hour format.
787
+ *
788
+ * @param openingHours An object containing the opening hours for each day of the week.
789
+ * @param currentDate Optional date to check against. If not provided, uses the current date.
790
+ * @returns The next schedule time in 12-hour format (e.g., "9:00 a.m." or "6:00 p.m.").
791
+ * @example
792
+ * ```typescript
793
+ * const hours = { mo: [{ open: "09:00", close: "17:00" }] };
794
+ * const nextSchedule = OpeningHoursHelper.getNextSchedule(hours);
795
+ * console.log(nextSchedule); // "9:00 a.m." if closed, "5:00 p.m." if open
796
+ * ```
797
+ * @default Returns "" if an error occurs or invalid opening hours are provided.
798
+ */
799
+ static getNextSchedule(openingHours, currentDate) {
800
+ try {
801
+ if (!openingHours || typeof openingHours !== "object") {
802
+ return "";
803
+ }
804
+ const date = currentDate || new Date();
805
+ const dayName = OpeningHoursHelper.getDay(date);
806
+ if (dayName == null ||
807
+ !openingHours[dayName] ||
808
+ !Array.isArray(openingHours[dayName]) ||
809
+ openingHours[dayName].length === 0) {
810
+ return "";
811
+ }
812
+ const daySchedule = openingHours[dayName][0];
813
+ if (!daySchedule || !daySchedule.open || !daySchedule.close) {
814
+ return "";
815
+ }
816
+ const isOpen = OpeningHoursHelper.isPlaceOpen(openingHours, date);
817
+ const time = isOpen ? daySchedule.close : daySchedule.open;
818
+ if (!time) {
819
+ return "";
820
+ }
821
+ return OpeningHoursHelper.convertSingleTimeTo12Hour(time);
822
+ }
823
+ catch (_a) {
824
+ return "";
825
+ }
826
+ }
827
+ /**
828
+ * Checks if a specific day has a schedule defined in the opening hours.
829
+ *
830
+ * @param openingHours An object containing the opening hours for each day of the week.
831
+ * @param currentDate Optional date to check against. If not provided, uses the current date.
832
+ * @returns `true` if the day has a schedule defined, `false` otherwise.
833
+ * @example
834
+ * ```typescript
835
+ * const hours = { mo: [{ open: "09:00", close: "17:00" }] };
836
+ * const hasSchedule = OpeningHoursHelper.checkDayHasSchedule(hours);
837
+ * console.log(hasSchedule); // true if today is Monday
838
+ * ```
839
+ * @default Returns `false` if an error occurs or invalid opening hours are provided.
840
+ */
841
+ static checkDayHasSchedule(openingHours, currentDate) {
842
+ try {
843
+ const date = currentDate || new Date();
844
+ const dayName = OpeningHoursHelper.getDay(date);
845
+ if (dayName == null) {
846
+ return false;
847
+ }
848
+ return !!(openingHours && openingHours[dayName]);
849
+ }
850
+ catch (_a) {
851
+ return false;
852
+ }
853
+ }
854
+ /**
855
+ * Converts a time string (HH:mm) to total minutes since midnight.
856
+ *
857
+ * @param time The time string in HH:mm format (e.g., "14:30").
858
+ * @returns The total number of minutes since midnight (e.g., 870 for "14:30").
859
+ * @example
860
+ * ```typescript
861
+ * const minutes = OpeningHoursHelper.toMinutes("14:30");
862
+ * console.log(minutes); // 870
863
+ *
864
+ * const morningMinutes = OpeningHoursHelper.toMinutes("09:00");
865
+ * console.log(morningMinutes); // 540
866
+ * ```
867
+ * @default Returns 0 if an error occurs or invalid time format is provided.
868
+ */
869
+ static toMinutes(time) {
870
+ try {
871
+ if (!time || typeof time !== "string") {
872
+ return 0;
873
+ }
874
+ const [hoursStr, minutesStr] = time.split(":");
875
+ if (!hoursStr || !minutesStr) {
876
+ return 0;
877
+ }
878
+ const hours = parseInt(hoursStr, 10);
879
+ const minutes = parseInt(minutesStr, 10);
880
+ if (isNaN(hours) || isNaN(minutes)) {
881
+ return 0;
882
+ }
883
+ return hours * 60 + minutes;
884
+ }
885
+ catch (_a) {
886
+ return 0;
887
+ }
888
+ }
889
+ }
890
+ /**
891
+ * Checks if an OpeningTime represents a 24-hour schedule (open all day).
892
+ *
893
+ * @param openingTime The OpeningTime to check.
894
+ * @returns `true` if the schedule represents 24 hours, `false` otherwise.
895
+ */
896
+ export function is24Hours(openingTime) {
897
+ var _a, _b, _c, _d;
898
+ if (!(openingTime === null || openingTime === void 0 ? void 0 : openingTime.open) || !(openingTime === null || openingTime === void 0 ? void 0 : openingTime.close)) {
899
+ return false;
900
+ }
901
+ const open = (_b = (_a = openingTime === null || openingTime === void 0 ? void 0 : openingTime.open) === null || _a === void 0 ? void 0 : _a.trim()) !== null && _b !== void 0 ? _b : "";
902
+ const close = (_d = (_c = openingTime === null || openingTime === void 0 ? void 0 : openingTime.close) === null || _c === void 0 ? void 0 : _c.trim()) !== null && _d !== void 0 ? _d : "";
903
+ // Check if open is "00:00" and close is "24:00" or "00:00"
904
+ return (open === "00:00" && close === "24:00") || (open === "00:00" && close === "00:00");
905
+ }
906
+ //# sourceMappingURL=opening-hours-helper.js.map