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