@braze/web-sdk 4.10.1 → 5.0.1

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 (202) hide show
  1. package/index.d.ts +26 -111
  2. package/package.json +1 -1
  3. package/shared-lib/braze-shared-lib.js +8 -1
  4. package/shared-lib/encoding-utils.js +12 -1
  5. package/shared-lib/event-types.js +34 -1
  6. package/shared-lib/guid.js +10 -1
  7. package/shared-lib/indexed-db-adapter.js +352 -1
  8. package/shared-lib/logger.js +38 -1
  9. package/shared-lib/supported-options.js +26 -1
  10. package/shared-lib/types.js +1 -1
  11. package/src/Card/card-manager-factory.js +14 -1
  12. package/src/Card/card-manager.js +78 -1
  13. package/src/Card/display/card-display.js +138 -1
  14. package/src/Card/index.js +6 -1
  15. package/src/Card/log-card-click.js +11 -1
  16. package/src/Card/log-card-dismissal.js +11 -1
  17. package/src/Card/log-card-impressions.js +13 -1
  18. package/src/Card/log-content-card-click.js +4 -1
  19. package/src/Card/log-content-card-impressions.js +4 -1
  20. package/src/Card/models/captioned-image.js +33 -1
  21. package/src/Card/models/card.js +197 -1
  22. package/src/Card/models/classic-card.js +32 -1
  23. package/src/Card/models/control-card.js +23 -1
  24. package/src/Card/models/image-only.js +31 -1
  25. package/src/Card/models/index.js +5 -1
  26. package/src/Card/types.js +1 -1
  27. package/src/Card/util/card-factory.js +104 -1
  28. package/src/ContentCards/content-cards-provider-factory.js +20 -1
  29. package/src/ContentCards/content-cards-provider.js +391 -1
  30. package/src/ContentCards/content-cards.js +24 -1
  31. package/src/ContentCards/get-cached-content-cards.js +5 -1
  32. package/src/ContentCards/index.js +7 -1
  33. package/src/ContentCards/request-content-cards-refresh.js +5 -1
  34. package/src/ContentCards/subscribe-to-content-cards-updates.js +17 -1
  35. package/src/ContentCards/types.js +1 -1
  36. package/src/ContentCards/ui/hide-content-cards.js +8 -1
  37. package/src/ContentCards/ui/show-content-cards.js +77 -1
  38. package/src/ContentCards/ui/toggle-content-cards.js +8 -1
  39. package/src/Core/add-sdk-metadata.js +26 -1
  40. package/src/Core/braze-sdk-metadata.js +10 -1
  41. package/src/Core/change-user.js +17 -1
  42. package/src/Core/destroy.js +5 -1
  43. package/src/Core/device-properties.js +9 -1
  44. package/src/Core/disable-sdk.js +15 -1
  45. package/src/Core/enable-sdk.js +11 -1
  46. package/src/Core/get-device-id.js +13 -1
  47. package/src/Core/get-user.js +4 -1
  48. package/src/Core/handle-braze-action.js +87 -1
  49. package/src/Core/index.js +23 -1
  50. package/src/Core/initialize.js +4 -1
  51. package/src/Core/is-disabled.js +4 -1
  52. package/src/Core/log-custom-event.js +38 -1
  53. package/src/Core/log-purchase.js +245 -1
  54. package/src/Core/open-session.js +25 -1
  55. package/src/Core/remove-all-subscriptions.js +4 -1
  56. package/src/Core/remove-subscription.js +4 -1
  57. package/src/Core/request-immediate-data-flush.js +6 -1
  58. package/src/Core/set-logger.js +4 -1
  59. package/src/Core/set-sdk-authentication-signature.js +8 -1
  60. package/src/Core/subscribe-to-sdk-authentication-failures.js +6 -1
  61. package/src/Core/toggle-logging.js +4 -1
  62. package/src/Core/types.js +1 -1
  63. package/src/Core/wipe-data.js +16 -1
  64. package/src/FeatureFlags/feature-flag-factory.js +24 -1
  65. package/src/FeatureFlags/feature-flag.js +64 -1
  66. package/src/FeatureFlags/feature-flags-provider-factory.js +19 -1
  67. package/src/FeatureFlags/feature-flags-provider.js +145 -1
  68. package/src/FeatureFlags/get-all-feature-flags.js +12 -1
  69. package/src/FeatureFlags/get-feature-flag.js +10 -1
  70. package/src/FeatureFlags/index.js +6 -1
  71. package/src/FeatureFlags/log-feature-flag-impression.js +23 -1
  72. package/src/FeatureFlags/refresh-feature-flags.js +9 -1
  73. package/src/FeatureFlags/subscribe-to-feature-flags-updates.js +9 -1
  74. package/src/FeatureFlags/types.js +1 -1
  75. package/src/Feed/feed-provider-factory.js +18 -1
  76. package/src/Feed/feed-provider.js +90 -1
  77. package/src/Feed/feed.js +20 -1
  78. package/src/Feed/get-cached-feed.js +5 -1
  79. package/src/Feed/index.js +8 -1
  80. package/src/Feed/log-feed-displayed.js +7 -1
  81. package/src/Feed/request-feed-refresh.js +5 -1
  82. package/src/Feed/subscribe-to-feed-updates.js +5 -1
  83. package/src/Feed/types.js +1 -1
  84. package/src/Feed/ui/hide-feed.js +7 -1
  85. package/src/Feed/ui/show-feed.js +96 -1
  86. package/src/Feed/ui/toggle-feed.js +8 -1
  87. package/src/InAppMessage/defer-in-app-message.js +13 -1
  88. package/src/InAppMessage/display/get-animation-effect.js +19 -1
  89. package/src/InAppMessage/display/html-message-to-html.js +243 -1
  90. package/src/InAppMessage/display/in-app-message-to-html.js +188 -1
  91. package/src/InAppMessage/display/modal-utils.js +73 -1
  92. package/src/InAppMessage/get-deferred-in-app-message.js +5 -1
  93. package/src/InAppMessage/in-app-message-factory.js +166 -1
  94. package/src/InAppMessage/in-app-message-manager-factory.js +16 -1
  95. package/src/InAppMessage/in-app-message-manager.js +248 -1
  96. package/src/InAppMessage/index.js +16 -1
  97. package/src/InAppMessage/log-in-app-message-button-click.js +27 -1
  98. package/src/InAppMessage/log-in-app-message-click.js +19 -1
  99. package/src/InAppMessage/log-in-app-message-html-click.js +23 -1
  100. package/src/InAppMessage/log-in-app-message-impression.js +13 -1
  101. package/src/InAppMessage/models/control-message.js +11 -1
  102. package/src/InAppMessage/models/full-screen-message.js +105 -1
  103. package/src/InAppMessage/models/html-message.js +68 -1
  104. package/src/InAppMessage/models/in-app-message-button.js +47 -1
  105. package/src/InAppMessage/models/in-app-message.js +382 -1
  106. package/src/InAppMessage/models/modal-message.js +101 -1
  107. package/src/InAppMessage/models/slide-up-message.js +84 -1
  108. package/src/InAppMessage/models/templated-in-app-message.js +19 -1
  109. package/src/InAppMessage/subscribe-to-in-app-message.js +10 -1
  110. package/src/InAppMessage/types.js +1 -1
  111. package/src/InAppMessage/ui/automatically-show-in-app-messages.js +15 -1
  112. package/src/InAppMessage/ui/show-in-app-message.js +181 -1
  113. package/src/InAppMessage/utils/in-app-message-utils.js +1 -1
  114. package/src/Push/index.js +5 -1
  115. package/src/Push/is-push-blocked.js +5 -1
  116. package/src/Push/is-push-permission-granted.js +5 -1
  117. package/src/Push/is-push-supported.js +5 -1
  118. package/src/Push/push-manager-factory.js +30 -1
  119. package/src/Push/push-manager.js +387 -1
  120. package/src/Push/request-push-permission.js +9 -1
  121. package/src/Push/types.js +1 -1
  122. package/src/Push/unregister-push.js +5 -1
  123. package/src/Push/utils/push-utils.js +36 -1
  124. package/src/User/index.js +1 -1
  125. package/src/User/types.js +1 -1
  126. package/src/User/user-manager.js +73 -1
  127. package/src/User/user.js +302 -1
  128. package/src/common/base-feed.js +29 -1
  129. package/src/common/base-provider.js +6 -1
  130. package/src/common/constants.js +14 -1
  131. package/src/common/event-logger.js +31 -1
  132. package/src/common/feed-display.js +210 -1
  133. package/src/common/translations.js +148 -1
  134. package/src/common/types.js +1 -1
  135. package/src/index.js +9 -1
  136. package/src/l10n/l10n-manager-factory.js +22 -1
  137. package/src/l10n/l10n-manager.js +25 -1
  138. package/src/l10n/types.js +1 -1
  139. package/src/managers/auth-manager.js +51 -1
  140. package/src/managers/braze-instance.js +322 -1
  141. package/src/managers/device-manager.js +85 -1
  142. package/src/managers/network-manager.js +256 -1
  143. package/src/managers/server-config-manager.js +108 -1
  144. package/src/managers/session-manager.js +75 -1
  145. package/src/managers/storage-manager-factory.js +42 -1
  146. package/src/managers/storage-manager.js +426 -1
  147. package/src/managers/subscription-manager.js +28 -1
  148. package/src/managers/types.js +1 -1
  149. package/src/models/backend-errors.js +8 -1
  150. package/src/models/braze-event.js +47 -1
  151. package/src/models/braze-sdk-metadata.js +10 -1
  152. package/src/models/device.js +18 -1
  153. package/src/models/identifier.js +19 -1
  154. package/src/models/push-token.js +27 -1
  155. package/src/models/request-result.js +8 -1
  156. package/src/models/server-config.js +48 -1
  157. package/src/models/types.js +1 -1
  158. package/src/request-controller.js +311 -1
  159. package/src/triggers/models/custom-event-data.js +14 -1
  160. package/src/triggers/models/custom-event-property-data.js +21 -1
  161. package/src/triggers/models/filter-set.js +55 -1
  162. package/src/triggers/models/filter.js +102 -1
  163. package/src/triggers/models/in-app-message-click-data.js +25 -1
  164. package/src/triggers/models/purchase-data.js +14 -1
  165. package/src/triggers/models/purchase-property-data.js +21 -1
  166. package/src/triggers/models/push-click-data.js +15 -1
  167. package/src/triggers/models/trigger-condition.js +105 -1
  168. package/src/triggers/models/trigger-events.js +8 -1
  169. package/src/triggers/models/trigger.js +122 -1
  170. package/src/triggers/triggers-provider-factory.js +34 -1
  171. package/src/triggers/triggers-provider.js +326 -1
  172. package/src/triggers/types.js +1 -1
  173. package/src/types.js +1 -1
  174. package/src/ui/js/attach-css.js +13 -1
  175. package/src/ui/js/feed-css.js +12 -1
  176. package/src/ui/js/iam-css.js +12 -1
  177. package/src/ui/js/index.js +3 -1
  178. package/src/ui/js/load-font-awesome.js +13 -1
  179. package/src/util/base-device-parser.js +14 -1
  180. package/src/util/braze-actions.js +84 -1
  181. package/src/util/browser-detector.js +84 -1
  182. package/src/util/client-hints-parser.js +66 -1
  183. package/src/util/code-utils.js +100 -1
  184. package/src/util/color-utils.js +29 -1
  185. package/src/util/component-utils.js +26 -1
  186. package/src/util/date-utils.js +28 -1
  187. package/src/util/deprecation-utils.js +5 -1
  188. package/src/util/device-constants.js +13 -1
  189. package/src/util/dom-utils.js +91 -1
  190. package/src/util/error-utils.js +2 -1
  191. package/src/util/key-codes.js +1 -1
  192. package/src/util/math.js +5 -1
  193. package/src/util/net.js +71 -1
  194. package/src/util/request-header-utils.js +46 -1
  195. package/src/util/string-utils.js +22 -1
  196. package/src/util/types.js +1 -1
  197. package/src/util/url-utils.js +20 -1
  198. package/src/util/user-agent-parser.js +80 -1
  199. package/src/util/validation-utils.js +217 -1
  200. package/src/util/window-utils.js +34 -1
  201. package/src/Card/models/banner.js +0 -1
  202. package/src/ContentCards/log-content-cards-displayed.js +0 -1
@@ -1 +1,12 @@
1
- import{attachCSS as Ie}from"./attach-css.js";import{loadFontAwesome as Ne}from"./load-font-awesome.js";export function attachInAppMessageCSS(t){Ie(t,"iam","{{IAM_CSS_INCLUSION}}")}export function setupInAppMessageUI(){attachInAppMessageCSS(),Ne()}
1
+ import { attachCSS as Ce } from "./attach-css.js";
2
+ import { loadFontAwesome as Ie } from "./load-font-awesome.js";
3
+ export function attachInAppMessageCSS(t) {
4
+ Ce(
5
+ t,
6
+ "iam",
7
+ ".ab-pause-scrolling,body.ab-pause-scrolling,html.ab-pause-scrolling{overflow:hidden;touch-action:none}.ab-iam-root.v3{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:9011;-webkit-tap-highlight-color:transparent}.ab-iam-root.v3:focus{outline:0}.ab-iam-root.v3.ab-effect-fullscreen,.ab-iam-root.v3.ab-effect-html,.ab-iam-root.v3.ab-effect-modal{opacity:0}.ab-iam-root.v3.ab-effect-fullscreen.ab-show,.ab-iam-root.v3.ab-effect-html.ab-show,.ab-iam-root.v3.ab-effect-modal.ab-show{opacity:1}.ab-iam-root.v3.ab-effect-fullscreen.ab-show.ab-animate-in,.ab-iam-root.v3.ab-effect-html.ab-show.ab-animate-in,.ab-iam-root.v3.ab-effect-modal.ab-show.ab-animate-in{-webkit-transition:opacity .5s;-moz-transition:opacity .5s;-o-transition:opacity .5s;transition:opacity .5s}.ab-iam-root.v3.ab-effect-fullscreen.ab-hide,.ab-iam-root.v3.ab-effect-html.ab-hide,.ab-iam-root.v3.ab-effect-modal.ab-hide{opacity:0}.ab-iam-root.v3.ab-effect-fullscreen.ab-hide.ab-animate-out,.ab-iam-root.v3.ab-effect-html.ab-hide.ab-animate-out,.ab-iam-root.v3.ab-effect-modal.ab-hide.ab-animate-out{-webkit-transition:opacity .5s;-moz-transition:opacity .5s;-o-transition:opacity .5s;transition:opacity .5s}.ab-iam-root.v3.ab-effect-slide .ab-in-app-message{-webkit-transform:translateX(535px);-moz-transform:translateX(535px);-ms-transform:translateX(535px);transform:translateX(535px)}.ab-iam-root.v3.ab-effect-slide.ab-show .ab-in-app-message{-webkit-transform:translateX(0);-moz-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}.ab-iam-root.v3.ab-effect-slide.ab-show.ab-animate-in .ab-in-app-message{-webkit-transition:transform .5s ease-in-out;-moz-transition:transform .5s ease-in-out;-o-transition:transform .5s ease-in-out;transition:transform .5s ease-in-out}.ab-iam-root.v3.ab-effect-slide.ab-hide .ab-in-app-message{-webkit-transform:translateX(535px);-moz-transform:translateX(535px);-ms-transform:translateX(535px);transform:translateX(535px)}.ab-iam-root.v3.ab-effect-slide.ab-hide .ab-in-app-message.ab-swiped-left{-webkit-transform:translateX(-535px);-moz-transform:translateX(-535px);-ms-transform:translateX(-535px);transform:translateX(-535px)}.ab-iam-root.v3.ab-effect-slide.ab-hide .ab-in-app-message.ab-swiped-up{-webkit-transform:translateY(-535px);-moz-transform:translateY(-535px);-ms-transform:translateY(-535px);transform:translateY(-535px)}.ab-iam-root.v3.ab-effect-slide.ab-hide .ab-in-app-message.ab-swiped-down{-webkit-transform:translateY(535px);-moz-transform:translateY(535px);-ms-transform:translateY(535px);transform:translateY(535px)}.ab-iam-root.v3.ab-effect-slide.ab-hide.ab-animate-out .ab-in-app-message{-webkit-transition:transform .5s ease-in-out;-moz-transition:transform .5s ease-in-out;-o-transition:transform .5s ease-in-out;transition:transform .5s ease-in-out}.ab-iam-root.v3 .ab-ios-scroll-wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;pointer-events:all;touch-action:auto;-webkit-overflow-scrolling:touch}.ab-iam-root.v3 .ab-in-app-message{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:fixed;text-align:center;-webkit-box-shadow:0 0 4px rgba(0,0,0,.3);-moz-box-shadow:0 0 4px rgba(0,0,0,.3);box-shadow:0 0 4px rgba(0,0,0,.3);line-height:normal;letter-spacing:normal;font-family:'Helvetica Neue Light','Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif;z-index:9011;max-width:100%;overflow:hidden;display:inline-block;pointer-events:all;color:#333}.ab-iam-root.v3 .ab-in-app-message.ab-no-shadow{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.ab-iam-root.v3 .ab-in-app-message :focus,.ab-iam-root.v3 .ab-in-app-message:focus{outline:0}.ab-iam-root.v3 .ab-in-app-message.ab-clickable{cursor:pointer}.ab-iam-root.v3 .ab-in-app-message.ab-background{background-color:#fff}.ab-iam-root.v3 .ab-in-app-message .ab-close-button{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;background-color:transparent;background-size:15px;border:none;width:15px;min-width:15px;height:15px;cursor:pointer;display:block;font-size:15px;line-height:0;padding-top:15px;padding-right:15px;padding-left:15px;padding-bottom:15px;position:absolute;right:0;top:0;z-index:9021}.ab-iam-root.v3 .ab-in-app-message .ab-close-button svg{-webkit-transition:.2s ease;-moz-transition:.2s ease;-o-transition:.2s ease;transition:.2s ease;fill:#9b9b9b;height:auto;width:100%}.ab-iam-root.v3 .ab-in-app-message .ab-close-button svg.ab-chevron{display:none}.ab-iam-root.v3 .ab-in-app-message .ab-close-button:active{background-color:transparent}.ab-iam-root.v3 .ab-in-app-message .ab-close-button:focus{background-color:transparent}.ab-iam-root.v3 .ab-in-app-message .ab-close-button:hover{background-color:transparent}.ab-iam-root.v3 .ab-in-app-message .ab-close-button:hover svg{fill-opacity:.8}.ab-iam-root.v3 .ab-in-app-message .ab-message-text{float:none;line-height:1.5;margin:20px 25px;max-width:100%;overflow:hidden;overflow-y:auto;vertical-align:text-bottom;word-wrap:break-word;white-space:pre-wrap;font-family:'Helvetica Neue Light','Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif}.ab-iam-root.v3 .ab-in-app-message .ab-message-text.start-aligned{text-align:start}.ab-iam-root.v3 .ab-in-app-message .ab-message-text.end-aligned{text-align:end}.ab-iam-root.v3 .ab-in-app-message .ab-message-text.center-aligned{text-align:center}.ab-iam-root.v3 .ab-in-app-message .ab-message-text::-webkit-scrollbar{-webkit-appearance:none;width:14px}.ab-iam-root.v3 .ab-in-app-message .ab-message-text::-webkit-scrollbar-thumb{-webkit-appearance:none;border:4px solid transparent;background-clip:padding-box;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px;background-color:rgba(0,0,0,.2)}.ab-iam-root.v3 .ab-in-app-message .ab-message-text::-webkit-scrollbar-button{width:0;height:0;display:none}.ab-iam-root.v3 .ab-in-app-message .ab-message-text::-webkit-scrollbar-corner{background-color:transparent}.ab-iam-root.v3 .ab-in-app-message .ab-message-header{float:none;letter-spacing:0;margin:0;font-weight:700;font-family:'Helvetica Neue Light','Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif;display:block;font-size:20px;margin-bottom:10px;line-height:1.3}.ab-iam-root.v3 .ab-in-app-message .ab-message-header.start-aligned{text-align:start}.ab-iam-root.v3 .ab-in-app-message .ab-message-header.end-aligned{text-align:end}.ab-iam-root.v3 .ab-in-app-message .ab-message-header.center-aligned{text-align:center}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen,.ab-iam-root.v3 .ab-in-app-message.ab-modal,.ab-iam-root.v3 .ab-in-app-message.ab-slideup{-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px}.ab-iam-root.v3 .ab-in-app-message.ab-slideup{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;cursor:pointer;overflow:hidden;word-wrap:break-word;text-overflow:ellipsis;font-size:14px;font-weight:700;margin:20px;margin-top:calc(constant(safe-area-inset-top,0) + 20px);margin-right:calc(constant(safe-area-inset-right,0) + 20px);margin-bottom:calc(constant(safe-area-inset-bottom,0) + 20px);margin-left:calc(constant(safe-area-inset-left,0) + 20px);margin-top:calc(env(safe-area-inset-top,0) + 20px);margin-right:calc(env(safe-area-inset-right,0) + 20px);margin-bottom:calc(env(safe-area-inset-bottom,0) + 20px);margin-left:calc(env(safe-area-inset-left,0) + 20px);max-height:150px;padding:10px;right:0;background-color:#efefef}.ab-iam-root.v3 .ab-in-app-message.ab-slideup.simulate-phone{max-height:66px;margin:10px;margin-top:calc(constant(safe-area-inset-top,0) + 10px);margin-right:calc(constant(safe-area-inset-right,0) + 10px);margin-bottom:calc(constant(safe-area-inset-bottom,0) + 10px);margin-left:calc(constant(safe-area-inset-left,0) + 10px);margin-top:calc(env(safe-area-inset-top,0) + 10px);margin-right:calc(env(safe-area-inset-right,0) + 10px);margin-bottom:calc(env(safe-area-inset-bottom,0) + 10px);margin-left:calc(env(safe-area-inset-left,0) + 10px);max-width:90%;max-width:calc(100% - 40px);min-width:90%;min-width:calc(100% - 40px)}.ab-iam-root.v3 .ab-in-app-message.ab-slideup.simulate-phone .ab-close-button{display:none}.ab-iam-root.v3 .ab-in-app-message.ab-slideup.simulate-phone .ab-close-button svg:not(.ab-chevron){display:none}.ab-iam-root.v3 .ab-in-app-message.ab-slideup.simulate-phone.ab-clickable .ab-close-button{display:block;height:20px;padding:0 20px 0 18px;pointer-events:none;top:50%;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);width:12px}.ab-iam-root.v3 .ab-in-app-message.ab-slideup.simulate-phone.ab-clickable .ab-close-button svg.ab-chevron{display:inline}.ab-iam-root.v3 .ab-in-app-message.ab-slideup.simulate-phone.ab-clickable .ab-message-text{border-right-width:40px}.ab-iam-root.v3 .ab-in-app-message.ab-slideup.simulate-phone .ab-message-text{max-width:100%;border-right-width:10px}.ab-iam-root.v3 .ab-in-app-message.ab-slideup.simulate-phone .ab-message-text span{max-height:66px}.ab-iam-root.v3 .ab-in-app-message.ab-slideup.simulate-phone .ab-message-text.ab-with-icon,.ab-iam-root.v3 .ab-in-app-message.ab-slideup.simulate-phone .ab-message-text.ab-with-image{max-width:80%;max-width:calc(100% - 50px - 5px - 10px - 25px)}.ab-iam-root.v3 .ab-in-app-message.ab-slideup.simulate-phone .ab-image-area{width:50px;height:50px}.ab-iam-root.v3 .ab-in-app-message.ab-slideup.simulate-phone .ab-image-area img{max-width:100%;max-height:100%;width:auto;height:auto}.ab-iam-root.v3 .ab-in-app-message.ab-slideup.ab-clickable:active .ab-message-text,.ab-iam-root.v3 .ab-in-app-message.ab-slideup.ab-clickable:focus .ab-message-text,.ab-iam-root.v3 .ab-in-app-message.ab-slideup.ab-clickable:hover .ab-message-text{opacity:.8}.ab-iam-root.v3 .ab-in-app-message.ab-slideup.ab-clickable:active .ab-close-button svg.ab-chevron,.ab-iam-root.v3 .ab-in-app-message.ab-slideup.ab-clickable:focus .ab-close-button svg.ab-chevron,.ab-iam-root.v3 .ab-in-app-message.ab-slideup.ab-clickable:hover .ab-close-button svg.ab-chevron{fill-opacity:.8}.ab-iam-root.v3 .ab-in-app-message.ab-slideup .ab-message-text{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:table-cell;border-color:transparent;border-style:solid;border-width:5px 25px 5px 10px;max-width:430px;vertical-align:middle;margin:0}.ab-iam-root.v3 .ab-in-app-message.ab-slideup .ab-message-text span{display:block;max-height:150px;overflow:auto}.ab-iam-root.v3 .ab-in-app-message.ab-slideup .ab-message-text.ab-with-icon,.ab-iam-root.v3 .ab-in-app-message.ab-slideup .ab-message-text.ab-with-image{max-width:365px;border-top:0;border-bottom:0}.ab-iam-root.v3 .ab-in-app-message.ab-slideup .ab-close-button{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;background-color:transparent;background-size:15px;border:none;width:15px;min-width:15px;height:15px;cursor:pointer;display:block;font-size:15px;line-height:0;padding-top:15px;padding-right:15px;padding-left:15px;padding-bottom:15px;position:absolute;right:0;top:0;z-index:9021}.ab-iam-root.v3 .ab-in-app-message.ab-slideup .ab-close-button svg{-webkit-transition:.2s ease;-moz-transition:.2s ease;-o-transition:.2s ease;transition:.2s ease;fill:#9b9b9b;height:auto;width:100%}.ab-iam-root.v3 .ab-in-app-message.ab-slideup .ab-close-button svg.ab-chevron{display:none}.ab-iam-root.v3 .ab-in-app-message.ab-slideup .ab-close-button:active{background-color:transparent}.ab-iam-root.v3 .ab-in-app-message.ab-slideup .ab-close-button:focus{background-color:transparent}.ab-iam-root.v3 .ab-in-app-message.ab-slideup .ab-close-button:hover{background-color:transparent}.ab-iam-root.v3 .ab-in-app-message.ab-slideup .ab-close-button:hover svg{fill-opacity:.8}.ab-iam-root.v3 .ab-in-app-message.ab-slideup .ab-image-area{float:none;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:table-cell;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;vertical-align:top;width:60px;margin:0}.ab-iam-root.v3 .ab-in-app-message.ab-slideup .ab-image-area.ab-icon-area{width:auto}.ab-iam-root.v3 .ab-in-app-message.ab-slideup .ab-image-area img{float:none;width:100%}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen,.ab-iam-root.v3 .ab-in-app-message.ab-modal{font-size:14px}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen .ab-image-area,.ab-iam-root.v3 .ab-in-app-message.ab-modal .ab-image-area{float:none;position:relative;display:block;overflow:hidden}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen .ab-image-area .ab-center-cropped-img,.ab-iam-root.v3 .ab-in-app-message.ab-modal .ab-image-area .ab-center-cropped-img{background-size:cover;background-repeat:no-repeat;background-position:50% 50%;position:absolute;top:0;right:0;bottom:0;left:0}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen .ab-icon,.ab-iam-root.v3 .ab-in-app-message.ab-modal .ab-icon{margin-top:20px}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.graphic,.ab-iam-root.v3 .ab-in-app-message.ab-modal.graphic{padding:0}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.graphic .ab-message-text,.ab-iam-root.v3 .ab-in-app-message.ab-modal.graphic .ab-message-text{display:none}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.graphic .ab-message-buttons,.ab-iam-root.v3 .ab-in-app-message.ab-modal.graphic .ab-message-buttons{bottom:0;left:0}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.graphic .ab-image-area,.ab-iam-root.v3 .ab-in-app-message.ab-modal.graphic .ab-image-area{float:none;height:auto;margin:0}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.graphic .ab-image-area img,.ab-iam-root.v3 .ab-in-app-message.ab-modal.graphic .ab-image-area img{display:block;top:0;-webkit-transform:none;-moz-transform:none;-ms-transform:none;transform:none}.ab-iam-root.v3 .ab-in-app-message.ab-modal{padding-top:20px;width:450px;max-width:450px;max-height:720px}.ab-iam-root.v3 .ab-in-app-message.ab-modal.simulate-phone{max-width:91%;max-width:calc(100% - 30px)}.ab-iam-root.v3 .ab-in-app-message.ab-modal.simulate-phone.graphic .ab-image-area img{max-width:91vw;max-width:calc(100vw - 30px)}.ab-iam-root.v3 .ab-in-app-message.ab-modal .ab-message-text{max-height:660px}.ab-iam-root.v3 .ab-in-app-message.ab-modal .ab-message-text.ab-with-image{max-height:524.82758621px}.ab-iam-root.v3 .ab-in-app-message.ab-modal .ab-message-text.ab-with-icon{max-height:610px}.ab-iam-root.v3 .ab-in-app-message.ab-modal .ab-message-text.ab-with-buttons{margin-bottom:93px;max-height:587px}.ab-iam-root.v3 .ab-in-app-message.ab-modal .ab-message-text.ab-with-buttons.ab-with-image{max-height:451.82758621px}.ab-iam-root.v3 .ab-in-app-message.ab-modal .ab-message-text.ab-with-buttons.ab-with-icon{max-height:537px}.ab-iam-root.v3 .ab-in-app-message.ab-modal .ab-image-area{margin-top:-20px;max-height:155.17241379px}.ab-iam-root.v3 .ab-in-app-message.ab-modal .ab-image-area img{max-width:100%;max-height:155.17241379px}.ab-iam-root.v3 .ab-in-app-message.ab-modal .ab-image-area.ab-icon-area{height:auto}.ab-iam-root.v3 .ab-in-app-message.ab-modal.graphic{width:auto;overflow:hidden}.ab-iam-root.v3 .ab-in-app-message.ab-modal.graphic .ab-image-area{display:inline}.ab-iam-root.v3 .ab-in-app-message.ab-modal.graphic .ab-image-area img{width:auto;max-height:720px;max-width:450px}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen{width:450px;max-height:720px}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.landscape{width:720px;max-height:450px}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.landscape .ab-image-area{height:225px}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.landscape.graphic .ab-image-area{height:450px}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.landscape .ab-message-text{max-height:112px}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen .ab-message-text{max-height:247px}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen .ab-message-text.ab-with-buttons{margin-bottom:93px}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen .ab-image-area{height:360px}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.graphic .ab-image-area{height:720px}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.simulate-phone{-webkit-transition:top none;-moz-transition:top none;-o-transition:top none;transition:top none;top:0;right:0;bottom:0;left:0;height:100%;width:100%;max-height:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-transform:none;-moz-transform:none;-ms-transform:none;transform:none;height:auto!important}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.simulate-phone.landscape .ab-close-button{margin-right:calc(constant(safe-area-inset-bottom,0) + constant(safe-area-inset-top,0));margin-right:calc(env(safe-area-inset-bottom,0) + env(safe-area-inset-top,0));margin-left:calc(constant(safe-area-inset-bottom,0) + constant(safe-area-inset-top,0));margin-left:calc(env(safe-area-inset-bottom,0) + env(safe-area-inset-top,0))}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.simulate-phone .ab-image-area,.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.simulate-phone.landscape .ab-image-area{height:50%}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.simulate-phone .ab-message-text{max-height:48%;max-height:calc(50% - 20px - 20px)}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.simulate-phone .ab-message-text.ab-with-buttons{margin-bottom:20px;max-height:30%;max-height:calc(50% - 93px - 20px)}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.simulate-phone.landscape .ab-message-text.ab-with-buttons{max-height:20%;max-height:calc(50% - 93px - 20px)}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.simulate-phone:not(.graphic){padding-bottom:0;padding-bottom:constant(safe-area-inset-bottom,0);padding-bottom:env(safe-area-inset-bottom,0)}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.simulate-phone:not(.graphic) .ab-message-buttons{padding-top:0;position:relative}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.simulate-phone.graphic{display:block}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.simulate-phone.graphic .ab-image-area{height:100%}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.simulate-phone.graphic .ab-message-button{margin-bottom:0;margin-bottom:constant(safe-area-inset-bottom,0);margin-bottom:env(safe-area-inset-bottom,0)}.ab-iam-root.v3 .ab-in-app-message.ab-html-message{background-color:transparent;border:none;height:100%;overflow:auto;position:relative;touch-action:auto;width:100%}.ab-iam-root.v3 .ab-in-app-message .ab-message-buttons{position:absolute;bottom:0;width:100%;padding:17px 25px 30px 25px;z-index:inherit;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ab-iam-root.v3 .ab-in-app-message .ab-message-button{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;cursor:pointer;display:inline-block;font-size:14px;font-weight:700;font-family:'Helvetica Neue Light','Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif;height:44px;line-height:normal;letter-spacing:normal;margin:0;max-width:100%;min-width:80px;padding:0 12px;position:relative;text-transform:none;width:48%;width:calc(50% - 5px);border:1px solid #1b78cf;-webkit-transition:.2s ease;-moz-transition:.2s ease;-o-transition:.2s ease;transition:.2s ease;overflow:hidden;word-wrap:break-word;text-overflow:ellipsis;word-wrap:normal;white-space:nowrap}.ab-iam-root.v3 .ab-in-app-message .ab-message-button:first-of-type{float:left;background-color:#fff;color:#1b78cf}.ab-iam-root.v3 .ab-in-app-message .ab-message-button:last-of-type{float:right;background-color:#1b78cf;color:#fff}.ab-iam-root.v3 .ab-in-app-message .ab-message-button:first-of-type:last-of-type{float:none;width:auto}.ab-iam-root.v3 .ab-in-app-message .ab-message-button:after{content:'';position:absolute;top:0;left:0;width:100%;height:100%;background-color:transparent}.ab-iam-root.v3 .ab-in-app-message .ab-message-button:after{-webkit-transition:.2s ease;-moz-transition:.2s ease;-o-transition:.2s ease;transition:.2s ease}.ab-iam-root.v3 .ab-in-app-message .ab-message-button:hover{opacity:.8}.ab-iam-root.v3 .ab-in-app-message .ab-message-button:active:after{content:'';position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.08)}.ab-iam-root.v3 .ab-in-app-message .ab-message-button:focus:after{content:'';position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.15)}.ab-iam-root.v3 .ab-in-app-message .ab-message-button a{color:inherit;text-decoration:inherit}.ab-iam-root.v3 .ab-in-app-message img{float:none;display:inline-block}.ab-iam-root.v3 .ab-in-app-message .ab-icon{float:none;display:inline-block;padding:10px;-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px}.ab-iam-root.v3 .ab-in-app-message .ab-icon .fa{float:none;font-size:30px;width:30px}.ab-iam-root.v3 .ab-start-hidden{visibility:hidden}.ab-iam-root.v3 .ab-centered{margin:auto;position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.ab-iam-root.v3{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.ab-iam-root.v3 .ab-page-blocker{position:fixed;top:0;left:0;width:100%;height:100%;z-index:9001;pointer-events:all;background-color:rgba(51,51,51,.75)}@media (max-width:600px){.ab-iam-root.v3 .ab-in-app-message.ab-slideup{max-height:66px;margin:10px;margin-top:calc(constant(safe-area-inset-top,0) + 10px);margin-right:calc(constant(safe-area-inset-right,0) + 10px);margin-bottom:calc(constant(safe-area-inset-bottom,0) + 10px);margin-left:calc(constant(safe-area-inset-left,0) + 10px);margin-top:calc(env(safe-area-inset-top,0) + 10px);margin-right:calc(env(safe-area-inset-right,0) + 10px);margin-bottom:calc(env(safe-area-inset-bottom,0) + 10px);margin-left:calc(env(safe-area-inset-left,0) + 10px);max-width:90%;max-width:calc(100% - 40px);min-width:90%;min-width:calc(100% - 40px)}.ab-iam-root.v3 .ab-in-app-message.ab-slideup .ab-close-button{display:none}.ab-iam-root.v3 .ab-in-app-message.ab-slideup .ab-close-button svg:not(.ab-chevron){display:none}.ab-iam-root.v3 .ab-in-app-message.ab-slideup.ab-clickable .ab-close-button{display:block;height:20px;padding:0 20px 0 18px;pointer-events:none;top:50%;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);width:12px}.ab-iam-root.v3 .ab-in-app-message.ab-slideup.ab-clickable .ab-close-button svg.ab-chevron{display:inline}.ab-iam-root.v3 .ab-in-app-message.ab-slideup.ab-clickable .ab-message-text{border-right-width:40px}.ab-iam-root.v3 .ab-in-app-message.ab-slideup .ab-message-text{max-width:100%;border-right-width:10px}.ab-iam-root.v3 .ab-in-app-message.ab-slideup .ab-message-text span{max-height:66px}.ab-iam-root.v3 .ab-in-app-message.ab-slideup .ab-message-text.ab-with-icon,.ab-iam-root.v3 .ab-in-app-message.ab-slideup .ab-message-text.ab-with-image{max-width:80%;max-width:calc(100% - 50px - 5px - 10px - 25px)}.ab-iam-root.v3 .ab-in-app-message.ab-slideup .ab-image-area{width:50px;height:50px}.ab-iam-root.v3 .ab-in-app-message.ab-slideup .ab-image-area img{max-width:100%;max-height:100%;width:auto;height:auto}.ab-iam-root.v3 .ab-in-app-message:not(.force-desktop).ab-fullscreen,.ab-iam-root.v3 .ab-in-app-message:not(.force-desktop).ab-fullscreen.landscape{-webkit-transition:top none;-moz-transition:top none;-o-transition:top none;transition:top none;top:0;right:0;bottom:0;left:0;height:100%;width:100%;max-height:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-transform:none;-moz-transform:none;-ms-transform:none;transform:none;height:auto!important}.ab-iam-root.v3 .ab-in-app-message:not(.force-desktop).ab-fullscreen.landscape .ab-close-button,.ab-iam-root.v3 .ab-in-app-message:not(.force-desktop).ab-fullscreen.landscape.landscape .ab-close-button{margin-right:calc(constant(safe-area-inset-bottom,0) + constant(safe-area-inset-top,0));margin-right:calc(env(safe-area-inset-bottom,0) + env(safe-area-inset-top,0));margin-left:calc(constant(safe-area-inset-bottom,0) + constant(safe-area-inset-top,0));margin-left:calc(env(safe-area-inset-bottom,0) + env(safe-area-inset-top,0))}.ab-iam-root.v3 .ab-in-app-message:not(.force-desktop).ab-fullscreen .ab-image-area,.ab-iam-root.v3 .ab-in-app-message:not(.force-desktop).ab-fullscreen.landscape .ab-image-area,.ab-iam-root.v3 .ab-in-app-message:not(.force-desktop).ab-fullscreen.landscape.landscape .ab-image-area{height:50%}.ab-iam-root.v3 .ab-in-app-message:not(.force-desktop).ab-fullscreen .ab-message-text,.ab-iam-root.v3 .ab-in-app-message:not(.force-desktop).ab-fullscreen.landscape .ab-message-text{max-height:48%;max-height:calc(50% - 20px - 20px)}.ab-iam-root.v3 .ab-in-app-message:not(.force-desktop).ab-fullscreen .ab-message-text.ab-with-buttons,.ab-iam-root.v3 .ab-in-app-message:not(.force-desktop).ab-fullscreen.landscape .ab-message-text.ab-with-buttons{margin-bottom:20px;max-height:30%;max-height:calc(50% - 93px - 20px)}.ab-iam-root.v3 .ab-in-app-message:not(.force-desktop).ab-fullscreen.landscape .ab-message-text.ab-with-buttons,.ab-iam-root.v3 .ab-in-app-message:not(.force-desktop).ab-fullscreen.landscape.landscape .ab-message-text.ab-with-buttons{max-height:20%;max-height:calc(50% - 93px - 20px)}.ab-iam-root.v3 .ab-in-app-message:not(.force-desktop).ab-fullscreen.landscape:not(.graphic),.ab-iam-root.v3 .ab-in-app-message:not(.force-desktop).ab-fullscreen:not(.graphic){padding-bottom:0;padding-bottom:constant(safe-area-inset-bottom,0);padding-bottom:env(safe-area-inset-bottom,0)}.ab-iam-root.v3 .ab-in-app-message:not(.force-desktop).ab-fullscreen.landscape:not(.graphic) .ab-message-buttons,.ab-iam-root.v3 .ab-in-app-message:not(.force-desktop).ab-fullscreen:not(.graphic) .ab-message-buttons{padding-top:0;position:relative}.ab-iam-root.v3 .ab-in-app-message:not(.force-desktop).ab-fullscreen.graphic,.ab-iam-root.v3 .ab-in-app-message:not(.force-desktop).ab-fullscreen.landscape.graphic{display:block}.ab-iam-root.v3 .ab-in-app-message:not(.force-desktop).ab-fullscreen.graphic .ab-image-area,.ab-iam-root.v3 .ab-in-app-message:not(.force-desktop).ab-fullscreen.landscape.graphic .ab-image-area{height:100%}.ab-iam-root.v3 .ab-in-app-message:not(.force-desktop).ab-fullscreen.graphic .ab-message-button,.ab-iam-root.v3 .ab-in-app-message:not(.force-desktop).ab-fullscreen.landscape.graphic .ab-message-button{margin-bottom:0;margin-bottom:constant(safe-area-inset-bottom,0);margin-bottom:env(safe-area-inset-bottom,0)}}@media (max-width:480px){.ab-iam-root.v3 .ab-in-app-message.ab-modal:not(.force-desktop){max-width:91%;max-width:calc(100% - 30px)}.ab-iam-root.v3 .ab-in-app-message.ab-modal:not(.force-desktop).graphic .ab-image-area img{max-width:91vw;max-width:calc(100vw - 30px)}}@media (max-height:750px){.ab-iam-root.v3 .ab-in-app-message.ab-modal:not(.force-desktop){max-height:91%;max-height:calc(100% - 30px)}.ab-iam-root.v3 .ab-in-app-message.ab-modal:not(.force-desktop).graphic .ab-image-area img{max-height:91vh;max-height:calc(100vh - 30px)}.ab-iam-root.v3 .ab-in-app-message.ab-modal:not(.force-desktop) .ab-message-text{max-height:65vh;max-height:calc(100vh - 30px - 60px)}.ab-iam-root.v3 .ab-in-app-message.ab-modal:not(.force-desktop) .ab-message-text.ab-with-image{max-height:45vh;max-height:calc(100vh - 30px - 155.17241379310346px - 40px)}.ab-iam-root.v3 .ab-in-app-message.ab-modal:not(.force-desktop) .ab-message-text.ab-with-icon{max-height:45vh;max-height:calc(100vh - 30px - 70px - 40px)}.ab-iam-root.v3 .ab-in-app-message.ab-modal:not(.force-desktop) .ab-message-text.ab-with-buttons{max-height:50vh;max-height:calc(100vh - 30px - 93px - 40px)}.ab-iam-root.v3 .ab-in-app-message.ab-modal:not(.force-desktop) .ab-message-text.ab-with-buttons.ab-with-image{max-height:30vh;max-height:calc(100vh - 30px - 155.17241379310346px - 93px - 20px)}.ab-iam-root.v3 .ab-in-app-message.ab-modal:not(.force-desktop) .ab-message-text.ab-with-buttons.ab-with-icon{max-height:30vh;max-height:calc(100vh - 30px - 70px - 93px - 20px)}}@media (min-width:601px){.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen .ab-image-area img{max-height:100%;max-width:100%}}@media (max-height:750px) and (min-width:601px){.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen:not(.landscape):not(.force-desktop){-webkit-transition:top none;-moz-transition:top none;-o-transition:top none;transition:top none;top:0;right:0;bottom:0;left:0;height:100%;width:100%;max-height:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-transform:none;-moz-transform:none;-ms-transform:none;transform:none;height:auto!important;width:450px}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen:not(.landscape):not(.force-desktop).landscape .ab-close-button{margin-right:calc(constant(safe-area-inset-bottom,0) + constant(safe-area-inset-top,0));margin-right:calc(env(safe-area-inset-bottom,0) + env(safe-area-inset-top,0));margin-left:calc(constant(safe-area-inset-bottom,0) + constant(safe-area-inset-top,0));margin-left:calc(env(safe-area-inset-bottom,0) + env(safe-area-inset-top,0))}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen:not(.landscape):not(.force-desktop) .ab-image-area,.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen:not(.landscape):not(.force-desktop).landscape .ab-image-area{height:50%}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen:not(.landscape):not(.force-desktop) .ab-message-text{max-height:48%;max-height:calc(50% - 20px - 20px)}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen:not(.landscape):not(.force-desktop) .ab-message-text.ab-with-buttons{margin-bottom:20px;max-height:30%;max-height:calc(50% - 93px - 20px)}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen:not(.landscape):not(.force-desktop).landscape .ab-message-text.ab-with-buttons{max-height:20%;max-height:calc(50% - 93px - 20px)}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen:not(.landscape):not(.force-desktop):not(.graphic){padding-bottom:0;padding-bottom:constant(safe-area-inset-bottom,0);padding-bottom:env(safe-area-inset-bottom,0)}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen:not(.landscape):not(.force-desktop):not(.graphic) .ab-message-buttons{padding-top:0;position:relative}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen:not(.landscape):not(.force-desktop).graphic{display:block}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen:not(.landscape):not(.force-desktop).graphic .ab-image-area{height:100%}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen:not(.landscape):not(.force-desktop).graphic .ab-message-button{margin-bottom:0;margin-bottom:constant(safe-area-inset-bottom,0);margin-bottom:env(safe-area-inset-bottom,0)}}@media (max-height:480px){.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.landscape:not(.force-desktop){-webkit-transition:top none;-moz-transition:top none;-o-transition:top none;transition:top none;top:0;right:0;bottom:0;left:0;height:100%;width:100%;max-height:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-transform:none;-moz-transform:none;-ms-transform:none;transform:none;height:auto!important}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.landscape:not(.force-desktop).landscape .ab-close-button{margin-right:calc(constant(safe-area-inset-bottom,0) + constant(safe-area-inset-top,0));margin-right:calc(env(safe-area-inset-bottom,0) + env(safe-area-inset-top,0));margin-left:calc(constant(safe-area-inset-bottom,0) + constant(safe-area-inset-top,0));margin-left:calc(env(safe-area-inset-bottom,0) + env(safe-area-inset-top,0))}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.landscape:not(.force-desktop) .ab-image-area,.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.landscape:not(.force-desktop).landscape .ab-image-area{height:50%}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.landscape:not(.force-desktop) .ab-message-text{max-height:48%;max-height:calc(50% - 20px - 20px)}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.landscape:not(.force-desktop) .ab-message-text.ab-with-buttons{margin-bottom:20px;max-height:30%;max-height:calc(50% - 93px - 20px)}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.landscape:not(.force-desktop).landscape .ab-message-text.ab-with-buttons{max-height:20%;max-height:calc(50% - 93px - 20px)}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.landscape:not(.force-desktop):not(.graphic){padding-bottom:0;padding-bottom:constant(safe-area-inset-bottom,0);padding-bottom:env(safe-area-inset-bottom,0)}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.landscape:not(.force-desktop):not(.graphic) .ab-message-buttons{padding-top:0;position:relative}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.landscape:not(.force-desktop).graphic{display:block}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.landscape:not(.force-desktop).graphic .ab-image-area{height:100%}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.landscape:not(.force-desktop).graphic .ab-message-button{margin-bottom:0;margin-bottom:constant(safe-area-inset-bottom,0);margin-bottom:env(safe-area-inset-bottom,0)}}@media (max-width:750px){.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.landscape:not(.force-desktop){-webkit-transition:top none;-moz-transition:top none;-o-transition:top none;transition:top none;top:0;right:0;bottom:0;left:0;height:100%;width:100%;max-height:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-transform:none;-moz-transform:none;-ms-transform:none;transform:none;height:auto!important}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.landscape:not(.force-desktop).landscape .ab-close-button{margin-right:calc(constant(safe-area-inset-bottom,0) + constant(safe-area-inset-top,0));margin-right:calc(env(safe-area-inset-bottom,0) + env(safe-area-inset-top,0));margin-left:calc(constant(safe-area-inset-bottom,0) + constant(safe-area-inset-top,0));margin-left:calc(env(safe-area-inset-bottom,0) + env(safe-area-inset-top,0))}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.landscape:not(.force-desktop) .ab-image-area,.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.landscape:not(.force-desktop).landscape .ab-image-area{height:50%}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.landscape:not(.force-desktop) .ab-message-text{max-height:48%;max-height:calc(50% - 20px - 20px)}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.landscape:not(.force-desktop) .ab-message-text.ab-with-buttons{margin-bottom:20px;max-height:30%;max-height:calc(50% - 93px - 20px)}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.landscape:not(.force-desktop).landscape .ab-message-text.ab-with-buttons{max-height:20%;max-height:calc(50% - 93px - 20px)}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.landscape:not(.force-desktop):not(.graphic){padding-bottom:0;padding-bottom:constant(safe-area-inset-bottom,0);padding-bottom:env(safe-area-inset-bottom,0)}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.landscape:not(.force-desktop):not(.graphic) .ab-message-buttons{padding-top:0;position:relative}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.landscape:not(.force-desktop).graphic{display:block}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.landscape:not(.force-desktop).graphic .ab-image-area{height:100%}.ab-iam-root.v3 .ab-in-app-message.ab-fullscreen.landscape:not(.force-desktop).graphic .ab-message-button{margin-bottom:0;margin-bottom:constant(safe-area-inset-bottom,0);margin-bottom:env(safe-area-inset-bottom,0)}}",
8
+ );
9
+ }
10
+ export function setupInAppMessageUI() {
11
+ attachInAppMessageCSS(), Ie();
12
+ }
@@ -1 +1,3 @@
1
- export{attachFeedCSS,setupFeedUI}from"./feed-css.js";export{attachInAppMessageCSS,setupInAppMessageUI}from"./iam-css.js";export{loadFontAwesome}from"./load-font-awesome.js";
1
+ export { attachFeedCSS, setupFeedUI } from "./feed-css.js";
2
+ export { attachInAppMessageCSS, setupInAppMessageUI } from "./iam-css.js";
3
+ export { loadFontAwesome } from "./load-font-awesome.js";
@@ -1 +1,13 @@
1
- import e,{OPTIONS as L}from"../../managers/braze-instance.js";export function loadFontAwesome(){if(e.nn(L.Lo))return;const t="https://use.fontawesome.com/7f85a56ba4.css";if(!(null!==document.querySelector('link[rel=stylesheet][href="'+t+'"]'))){const e=document.createElement("link");e.setAttribute("rel","stylesheet"),e.setAttribute("href",t),document.getElementsByTagName("head")[0].appendChild(e)}}
1
+ import e, { OPTIONS as L } from "../../managers/braze-instance.js";
2
+ export function loadFontAwesome() {
3
+ if (e.nn(L.Co)) return;
4
+ const t = "https://use.fontawesome.com/7f85a56ba4.css";
5
+ if (
6
+ !(null !== document.querySelector('link[rel=stylesheet][href="' + t + '"]'))
7
+ ) {
8
+ const e = document.createElement("link");
9
+ e.setAttribute("rel", "stylesheet"),
10
+ e.setAttribute("href", t),
11
+ document.getElementsByTagName("head")[0].appendChild(e);
12
+ }
13
+ }
@@ -1 +1,14 @@
1
- import{isArray as p}from"./code-utils.js";export default class ge{constructor(){}tf(){}ef(){}Ta(t){}static rf(t,e){if(t&&e)if(t=t.toLowerCase(),p(e.if)){for(let r=0;r<e.if.length;r++)if(-1!==t.indexOf(e.if[r].toLowerCase()))return e.identity}else if(-1!==t.indexOf(e.if.toLowerCase()))return e.identity}}
1
+ import { isArray as p } from "./code-utils.js";
2
+ export default class ge {
3
+ constructor() {}
4
+ tf() {}
5
+ ef() {}
6
+ Ta(t) {}
7
+ static rf(t, e) {
8
+ if (t && e)
9
+ if (((t = t.toLowerCase()), p(e.if))) {
10
+ for (let r = 0; r < e.if.length; r++)
11
+ if (-1 !== t.indexOf(e.if[r].toLowerCase())) return e.identity;
12
+ } else if (-1 !== t.indexOf(e.if.toLowerCase())) return e.identity;
13
+ }
14
+ }
@@ -1 +1,84 @@
1
- import r from"../../shared-lib/braze-shared-lib.js";import{getErrorMessage as ei}from"./error-utils.js";import{decodeBrazeActions as to}from"./string-utils.js";import{BRAZE_ACTION_URI_REGEX as X,isValidBrazeActionType as ro,isValidBrazeActionJson as Y}from"./validation-utils.js";export const BRAZE_ACTIONS={types:{ue:"container",logCustomEvent:"logCustomEvent",setEmailNotificationSubscriptionType:"setEmailNotificationSubscriptionType",setPushNotificationSubscriptionType:"setPushNotificationSubscriptionType",setCustomUserAttribute:"setCustomUserAttribute",requestPushPermission:"requestPushPermission",addToSubscriptionGroup:"addToSubscriptionGroup",removeFromSubscriptionGroup:"removeFromSubscriptionGroup",addToCustomAttributeArray:"addToCustomAttributeArray",removeFromCustomAttributeArray:"removeFromCustomAttributeArray",pe:"openLink",je:"openLinkInWebView"},properties:{type:"type",me:"steps",le:"args"}};export const INELIGIBLE_BRAZE_ACTION_URL_ERROR_TYPES={_r:"unknownBrazeAction",Or:"noPushPrompt"};export const ineligibleBrazeActionURLErrorMessage=(t,o)=>{switch(t){case INELIGIBLE_BRAZE_ACTION_URL_ERROR_TYPES._r:return`${o} contains an unknown braze action type and will not be displayed.`;case INELIGIBLE_BRAZE_ACTION_URL_ERROR_TYPES.Or:return`${o} contains a push prompt braze action, but is not eligible for a push prompt. Ignoring.`;default:return""}};export function getDecodedBrazeAction(t){try{const o=t.match(X),e=o?o[0].length:null,n=e?t.substring(e):null;if(null==e||e>t.length-1||!n)return void r.j.error(`Did not find base64 encoded brazeAction in url to process : ${t}`);const i=to(n);return i?JSON.parse(i):void r.j.error(`Failed to decode base64 encoded brazeAction: ${n}`)}catch(o){return void r.j.error(`Failed to process brazeAction URL ${t} : ${ei(o)}`)}}function eo(t,o){let r=!1;if(o)for(const e of o)if(r=r||t(e),r)return!0;return!1}export function containsUnknownBrazeAction(t){const o=BRAZE_ACTIONS.properties.type,r=BRAZE_ACTIONS.properties.me;try{if(null==t)return!0;const e=t[o];return e===BRAZE_ACTIONS.types.ue?eo(containsUnknownBrazeAction,t[r]):!ro(e)}catch(t){return!0}}export function containsPushPrimerBrazeAction(t){if(!t||!Y(t))return!1;const o=BRAZE_ACTIONS.properties.type,r=BRAZE_ACTIONS.properties.me,e=t[o];return e===BRAZE_ACTIONS.types.ue?eo(containsPushPrimerBrazeAction,t[r]):e===BRAZE_ACTIONS.types.requestPushPermission}
1
+ import r from "../../shared-lib/braze-shared-lib.js";
2
+ import { getErrorMessage as ei } from "./error-utils.js";
3
+ import { decodeBrazeActions as to } from "./string-utils.js";
4
+ import {
5
+ BRAZE_ACTION_URI_REGEX as W,
6
+ isValidBrazeActionType as ro,
7
+ isValidBrazeActionJson as X,
8
+ } from "./validation-utils.js";
9
+ export const BRAZE_ACTIONS = {
10
+ types: {
11
+ ue: "container",
12
+ logCustomEvent: "logCustomEvent",
13
+ setEmailNotificationSubscriptionType:
14
+ "setEmailNotificationSubscriptionType",
15
+ setPushNotificationSubscriptionType: "setPushNotificationSubscriptionType",
16
+ setCustomUserAttribute: "setCustomUserAttribute",
17
+ requestPushPermission: "requestPushPermission",
18
+ addToSubscriptionGroup: "addToSubscriptionGroup",
19
+ removeFromSubscriptionGroup: "removeFromSubscriptionGroup",
20
+ addToCustomAttributeArray: "addToCustomAttributeArray",
21
+ removeFromCustomAttributeArray: "removeFromCustomAttributeArray",
22
+ pe: "openLink",
23
+ je: "openLinkInWebView",
24
+ },
25
+ properties: { type: "type", me: "steps", le: "args" },
26
+ };
27
+ export const INELIGIBLE_BRAZE_ACTION_URL_ERROR_TYPES = {
28
+ _r: "unknownBrazeAction",
29
+ Or: "noPushPrompt",
30
+ };
31
+ export const ineligibleBrazeActionURLErrorMessage = (t, o) => {
32
+ switch (t) {
33
+ case INELIGIBLE_BRAZE_ACTION_URL_ERROR_TYPES._r:
34
+ return `${o} contains an unknown braze action type and will not be displayed.`;
35
+ case INELIGIBLE_BRAZE_ACTION_URL_ERROR_TYPES.Or:
36
+ return `${o} contains a push prompt braze action, but is not eligible for a push prompt. Ignoring.`;
37
+ default:
38
+ return "";
39
+ }
40
+ };
41
+ export function getDecodedBrazeAction(t) {
42
+ try {
43
+ const o = t.match(W),
44
+ e = o ? o[0].length : null,
45
+ n = e ? t.substring(e) : null;
46
+ if (null == e || e > t.length - 1 || !n)
47
+ return void r.j.error(
48
+ `Did not find base64 encoded brazeAction in url to process : ${t}`,
49
+ );
50
+ const i = to(n);
51
+ return i
52
+ ? JSON.parse(i)
53
+ : void r.j.error(`Failed to decode base64 encoded brazeAction: ${n}`);
54
+ } catch (o) {
55
+ return void r.j.error(`Failed to process brazeAction URL ${t} : ${ei(o)}`);
56
+ }
57
+ }
58
+ function eo(t, o) {
59
+ let r = !1;
60
+ if (o) for (const e of o) if (((r = r || t(e)), r)) return !0;
61
+ return !1;
62
+ }
63
+ export function containsUnknownBrazeAction(t) {
64
+ const o = BRAZE_ACTIONS.properties.type,
65
+ r = BRAZE_ACTIONS.properties.me;
66
+ try {
67
+ if (null == t) return !0;
68
+ const e = t[o];
69
+ return e === BRAZE_ACTIONS.types.ue
70
+ ? eo(containsUnknownBrazeAction, t[r])
71
+ : !ro(e);
72
+ } catch (t) {
73
+ return !0;
74
+ }
75
+ }
76
+ export function containsPushPrimerBrazeAction(t) {
77
+ if (!t || !X(t)) return !1;
78
+ const o = BRAZE_ACTIONS.properties.type,
79
+ r = BRAZE_ACTIONS.properties.me,
80
+ e = t[o];
81
+ return e === BRAZE_ACTIONS.types.ue
82
+ ? eo(containsPushPrimerBrazeAction, t[r])
83
+ : e === BRAZE_ACTIONS.types.requestPushPermission;
84
+ }
@@ -1 +1,84 @@
1
- import ni from"./client-hints-parser.js";import ai from"./user-agent-parser.js";import{Browsers as oi,OperatingSystems as W}from"./device-constants.js";class gi{constructor(){const t=navigator.userAgentData?ni:ai;this.Sg=new t,this.userAgent=navigator.userAgent,this.browser=this.Sg.tf(),this.version=this.Sg.ef(),this.OS=null,this.Ta().then((t=>this.OS=t));const i=navigator;this.language=(i.userLanguage||i.language||i.browserLanguage||i.systemLanguage||"").toLowerCase(),this.qo=gi.vg(this.userAgent)}OE(){return this.browser===oi.Bg}Ca(){return this.OS||null}Ta(){return this.OS?Promise.resolve(this.OS):this.Sg.Ta(gi.Og).then((t=>(this.OS=t,t)))}static vg(t){t=t.toLowerCase();const i=["googlebot","bingbot","slurp","duckduckbot","baiduspider","yandex","facebookexternalhit","sogou","ia_archiver","https://github.com/prerender/prerender","aolbuild","bingpreview","msnbot","adsbot","mediapartners-google","teoma"];for(let n=0;n<i.length;n++)if(-1!==t.indexOf(i[n]))return!0;return!1}}gi.Og=[{string:navigator.platform,if:"Win",identity:W.Pg},{string:navigator.platform,if:"Mac",identity:W.kg},{string:navigator.platform,if:"BlackBerry",identity:"BlackBerry"},{string:navigator.platform,if:"FreeBSD",identity:"FreeBSD"},{string:navigator.platform,if:"OpenBSD",identity:"OpenBSD"},{string:navigator.platform,if:"Nintendo",identity:"Nintendo"},{string:navigator.platform,if:"SunOS",identity:"SunOS"},{string:navigator.platform,if:"PlayStation",identity:"PlayStation"},{string:navigator.platform,if:"X11",identity:"X11"},{string:navigator.userAgent,if:["iPhone","iPad","iPod"],identity:W.de},{string:navigator.platform,if:"Pike v",identity:W.de},{string:navigator.userAgent,if:["Web0S"],identity:"WebOS"},{string:navigator.platform,if:["Linux armv7l","Android"],identity:W.xg},{string:navigator.userAgent,if:["Android"],identity:W.xg},{string:navigator.platform,if:"Linux",identity:"Linux"}];const V=new gi;export{V as default,gi as BrowserDetector};
1
+ import ni from "./client-hints-parser.js";
2
+ import ai from "./user-agent-parser.js";
3
+ import { Browsers as oi, OperatingSystems as V } from "./device-constants.js";
4
+ class gi {
5
+ constructor() {
6
+ const t = navigator.userAgentData ? ni : ai;
7
+ (this.Sg = new t()),
8
+ (this.userAgent = navigator.userAgent),
9
+ (this.browser = this.Sg.tf()),
10
+ (this.version = this.Sg.ef()),
11
+ (this.OS = null),
12
+ this.Ta().then((t) => (this.OS = t));
13
+ const i = navigator;
14
+ (this.language = (
15
+ i.userLanguage ||
16
+ i.language ||
17
+ i.browserLanguage ||
18
+ i.systemLanguage ||
19
+ ""
20
+ ).toLowerCase()),
21
+ (this.qo = gi.vg(this.userAgent));
22
+ }
23
+ gE() {
24
+ return this.browser === oi.Bg;
25
+ }
26
+ Ca() {
27
+ return this.OS || null;
28
+ }
29
+ Ta() {
30
+ return this.OS
31
+ ? Promise.resolve(this.OS)
32
+ : this.Sg.Ta(gi.Og).then((t) => ((this.OS = t), t));
33
+ }
34
+ static vg(t) {
35
+ t = t.toLowerCase();
36
+ const i = [
37
+ "googlebot",
38
+ "bingbot",
39
+ "slurp",
40
+ "duckduckbot",
41
+ "baiduspider",
42
+ "yandex",
43
+ "facebookexternalhit",
44
+ "sogou",
45
+ "ia_archiver",
46
+ "https://github.com/prerender/prerender",
47
+ "aolbuild",
48
+ "bingpreview",
49
+ "msnbot",
50
+ "adsbot",
51
+ "mediapartners-google",
52
+ "teoma",
53
+ ];
54
+ for (let n = 0; n < i.length; n++) if (-1 !== t.indexOf(i[n])) return !0;
55
+ return !1;
56
+ }
57
+ }
58
+ gi.Og = [
59
+ { string: navigator.platform, if: "Win", identity: V.Pg },
60
+ { string: navigator.platform, if: "Mac", identity: V.kg },
61
+ { string: navigator.platform, if: "BlackBerry", identity: "BlackBerry" },
62
+ { string: navigator.platform, if: "FreeBSD", identity: "FreeBSD" },
63
+ { string: navigator.platform, if: "OpenBSD", identity: "OpenBSD" },
64
+ { string: navigator.platform, if: "Nintendo", identity: "Nintendo" },
65
+ { string: navigator.platform, if: "SunOS", identity: "SunOS" },
66
+ { string: navigator.platform, if: "PlayStation", identity: "PlayStation" },
67
+ { string: navigator.platform, if: "X11", identity: "X11" },
68
+ {
69
+ string: navigator.userAgent,
70
+ if: ["iPhone", "iPad", "iPod"],
71
+ identity: V.de,
72
+ },
73
+ { string: navigator.platform, if: "Pike v", identity: V.de },
74
+ { string: navigator.userAgent, if: ["Web0S"], identity: "WebOS" },
75
+ {
76
+ string: navigator.platform,
77
+ if: ["Linux armv7l", "Android"],
78
+ identity: V.xg,
79
+ },
80
+ { string: navigator.userAgent, if: ["Android"], identity: V.xg },
81
+ { string: navigator.platform, if: "Linux", identity: "Linux" },
82
+ ];
83
+ const Q = new gi();
84
+ export { Q as default, gi as BrowserDetector };
@@ -1 +1,66 @@
1
- import ge from"./base-device-parser.js";import{Browsers as oi}from"./device-constants.js";export default class ni extends ge{constructor(){if(super(),this.userAgentData=navigator.userAgentData,this.browser=null,this.version=null,this.userAgentData){const t=this.ic();this.browser=t.browser||"Unknown Browser",this.version=t.version||"Unknown Version"}this.OS=null}tf(){return this.browser}ef(){return this.version}Ta(t){if(this.OS)return Promise.resolve(this.OS);const s=s=>{for(let r=0;r<t.length;r++){const i=ni.rf(s,t[r]);if(i)return this.OS=i,this.OS}return s};return this.userAgentData.platform?Promise.resolve(s(this.userAgentData.platform)):this.getHighEntropyValues().then((t=>t.platform?s(t.platform):navigator.platform)).catch((()=>navigator.platform))}ic(){const t={},s=this.userAgentData.brands;if(s&&s.length)for(const r of s){const s=this.nc(oi),i=r.brand.match(s);if(i&&i.length>0){t.browser=i[0],t.version=r.version;break}}return t}nc(t){const s=[];for(const r in t){const i=r;t[i]!==oi.oc&&s.push(t[i])}return new RegExp("("+s.join("|")+")","i")}getHighEntropyValues(){return this.userAgentData.getHighEntropyValues?this.userAgentData.getHighEntropyValues(["platform"]):Promise.reject()}}
1
+ import ge from "./base-device-parser.js";
2
+ import { Browsers as oi } from "./device-constants.js";
3
+ export default class ni extends ge {
4
+ constructor() {
5
+ if (
6
+ (super(),
7
+ (this.userAgentData = navigator.userAgentData),
8
+ (this.browser = null),
9
+ (this.version = null),
10
+ this.userAgentData)
11
+ ) {
12
+ const t = this.ic();
13
+ (this.browser = t.browser || "Unknown Browser"),
14
+ (this.version = t.version || "Unknown Version");
15
+ }
16
+ this.OS = null;
17
+ }
18
+ tf() {
19
+ return this.browser;
20
+ }
21
+ ef() {
22
+ return this.version;
23
+ }
24
+ Ta(t) {
25
+ if (this.OS) return Promise.resolve(this.OS);
26
+ const s = (s) => {
27
+ for (let r = 0; r < t.length; r++) {
28
+ const i = ni.rf(s, t[r]);
29
+ if (i) return (this.OS = i), this.OS;
30
+ }
31
+ return s;
32
+ };
33
+ return this.userAgentData.platform
34
+ ? Promise.resolve(s(this.userAgentData.platform))
35
+ : this.getHighEntropyValues()
36
+ .then((t) => (t.platform ? s(t.platform) : navigator.platform))
37
+ .catch(() => navigator.platform);
38
+ }
39
+ ic() {
40
+ const t = {},
41
+ s = this.userAgentData.brands;
42
+ if (s && s.length)
43
+ for (const r of s) {
44
+ const s = this.nc(oi),
45
+ i = r.brand.match(s);
46
+ if (i && i.length > 0) {
47
+ (t.browser = i[0]), (t.version = r.version);
48
+ break;
49
+ }
50
+ }
51
+ return t;
52
+ }
53
+ nc(t) {
54
+ const s = [];
55
+ for (const r in t) {
56
+ const i = r;
57
+ s.push(t[i]);
58
+ }
59
+ return new RegExp("(" + s.join("|") + ")", "i");
60
+ }
61
+ getHighEntropyValues() {
62
+ return this.userAgentData.getHighEntropyValues
63
+ ? this.userAgentData.getHighEntropyValues(["platform"])
64
+ : Promise.reject();
65
+ }
66
+ }
@@ -1 +1,100 @@
1
- import r from"../../shared-lib/braze-shared-lib.js";export function values(t){const e=[];let r;for(const n in t)r=n,Object.prototype.hasOwnProperty.call(t,r)&&void 0!==t[r]&&e.push(t[r]);return e}export function validateValueIsFromEnum(t,e,n,o){const c=values(t);return-1!==c.indexOf(e)||(r.j.error(`${n} Valid values from ${o} are "${c.join('"/"')}".`),!1)}export function isArray(t){return Array.isArray?Array.isArray(t):"[object Array]"===Object.prototype.toString.call(t)}export function isDate(t){return"[object Date]"===Object.prototype.toString.call(t)}export function isObject(t){return"[object Object]"===Object.prototype.toString.call(t)}export function intersection(t,...e){null==t&&(t=[]);const r=[],n=arguments.length;for(let e=0,o=t.length;e<o;e++){const o=t[e];if(-1!==r.indexOf(o))continue;let c=1;for(c=1;c<n&&-1!==arguments[c].indexOf(o);c++);c===n&&r.push(o)}return r}export function keys(t){const e=[];for(const r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.push(r);return e}export function isEqual(t,e){if(t===e)return 0!==t||1/t==1/e;if(null==t||null==e)return t===e;const r=t.toString();if(r!==e.toString())return!1;switch(r){case"[object RegExp]":case"[object String]":return""+t==""+e;case"[object Number]":return+t!=+t?+e!=+e:0==+t?1/+t==1/e:+t==+e;case"[object Date]":case"[object Boolean]":return+t==+e}const n="[object Array]"===r;if(!n){if("object"!=typeof t||"object"!=typeof e)return!1;const r=t.constructor,n=e.constructor;if(r!==n&&!("function"==typeof r&&r instanceof r&&"function"==typeof n&&n instanceof n)&&"constructor"in t&&"constructor"in e)return!1}const o=[],c=[];let i=o.length;for(;i--;)if(o[i]===t)return c[i]===e;if(o.push(t),c.push(e),n){if(i=t.length,i!==e.length)return!1;for(;i--;)if(!isEqual(t[i],e[i]))return!1}else{const r=keys(t);let n;if(i=r.length,keys(e).length!==i)return!1;for(;i--;)if(n=r[i],!Object.prototype.hasOwnProperty.call(e,n)||!isEqual(t[n],e[n]))return!1}return o.pop(),c.pop(),!0}
1
+ import r from "../../shared-lib/braze-shared-lib.js";
2
+ export function values(t) {
3
+ const e = [];
4
+ let r;
5
+ for (const n in t)
6
+ (r = n),
7
+ Object.prototype.hasOwnProperty.call(t, r) &&
8
+ void 0 !== t[r] &&
9
+ e.push(t[r]);
10
+ return e;
11
+ }
12
+ export function validateValueIsFromEnum(t, e, n, o) {
13
+ const c = values(t);
14
+ return (
15
+ -1 !== c.indexOf(e) ||
16
+ (r.j.error(`${n} Valid values from ${o} are "${c.join('"/"')}".`), !1)
17
+ );
18
+ }
19
+ export function isArray(t) {
20
+ return Array.isArray
21
+ ? Array.isArray(t)
22
+ : "[object Array]" === Object.prototype.toString.call(t);
23
+ }
24
+ export function isDate(t) {
25
+ return "[object Date]" === Object.prototype.toString.call(t);
26
+ }
27
+ export function isObject(t) {
28
+ return "[object Object]" === Object.prototype.toString.call(t);
29
+ }
30
+ export function intersection(t, ...e) {
31
+ null == t && (t = []);
32
+ const r = [],
33
+ n = arguments.length;
34
+ for (let e = 0, o = t.length; e < o; e++) {
35
+ const o = t[e];
36
+ if (-1 !== r.indexOf(o)) continue;
37
+ let c = 1;
38
+ for (c = 1; c < n && -1 !== arguments[c].indexOf(o); c++);
39
+ c === n && r.push(o);
40
+ }
41
+ return r;
42
+ }
43
+ export function keys(t) {
44
+ const e = [];
45
+ for (const r in t) Object.prototype.hasOwnProperty.call(t, r) && e.push(r);
46
+ return e;
47
+ }
48
+ export function isEqual(t, e) {
49
+ if (t === e) return 0 !== t || 1 / t == 1 / e;
50
+ if (null == t || null == e) return t === e;
51
+ const r = t.toString();
52
+ if (r !== e.toString()) return !1;
53
+ switch (r) {
54
+ case "[object RegExp]":
55
+ case "[object String]":
56
+ return "" + t == "" + e;
57
+ case "[object Number]":
58
+ return +t != +t ? +e != +e : 0 == +t ? 1 / +t == 1 / e : +t == +e;
59
+ case "[object Date]":
60
+ case "[object Boolean]":
61
+ return +t == +e;
62
+ }
63
+ const n = "[object Array]" === r;
64
+ if (!n) {
65
+ if ("object" != typeof t || "object" != typeof e) return !1;
66
+ const r = t.constructor,
67
+ n = e.constructor;
68
+ if (
69
+ r !== n &&
70
+ !(
71
+ "function" == typeof r &&
72
+ r instanceof r &&
73
+ "function" == typeof n &&
74
+ n instanceof n
75
+ ) &&
76
+ "constructor" in t &&
77
+ "constructor" in e
78
+ )
79
+ return !1;
80
+ }
81
+ const o = [],
82
+ c = [];
83
+ let i = o.length;
84
+ for (; i--; ) if (o[i] === t) return c[i] === e;
85
+ if ((o.push(t), c.push(e), n)) {
86
+ if (((i = t.length), i !== e.length)) return !1;
87
+ for (; i--; ) if (!isEqual(t[i], e[i])) return !1;
88
+ } else {
89
+ const r = keys(t);
90
+ let n;
91
+ if (((i = r.length), keys(e).length !== i)) return !1;
92
+ for (; i--; )
93
+ if (
94
+ ((n = r[i]),
95
+ !Object.prototype.hasOwnProperty.call(e, n) || !isEqual(t[n], e[n]))
96
+ )
97
+ return !1;
98
+ }
99
+ return o.pop(), c.pop(), !0;
100
+ }
@@ -1 +1,29 @@
1
- export function isTransparent(r){return null!=r&&(r=parseInt(r.toString()),!isNaN(r)&&(4278190080&r)>>>24==0)}export function toRgba(r,n){if(null==r)return"";if(r=parseInt(r.toString()),isNaN(r))return"";n&&!isNaN(parseFloat(n.toString()))||(n=1);return"rgba("+[(16711680&(r>>>=0))>>>16,(65280&r)>>>8,255&r,((4278190080&r)>>>24)/255*n].join(",")+")"}export function toRgb(r){if(null==r||isNaN(parseInt(r.toString())))return"";return"rgb("+[(16711680&(r>>>=0))>>>16,(65280&r)>>>8,255&r].join(",")+")"}
1
+ export function isTransparent(r) {
2
+ return (
3
+ null != r &&
4
+ ((r = parseInt(r.toString())), !isNaN(r) && (4278190080 & r) >>> 24 == 0)
5
+ );
6
+ }
7
+ export function toRgba(r, n) {
8
+ if (null == r) return "";
9
+ if (((r = parseInt(r.toString())), isNaN(r))) return "";
10
+ (n && !isNaN(parseFloat(n.toString()))) || (n = 1);
11
+ return (
12
+ "rgba(" +
13
+ [
14
+ (16711680 & (r >>>= 0)) >>> 16,
15
+ (65280 & r) >>> 8,
16
+ 255 & r,
17
+ (((4278190080 & r) >>> 24) / 255) * n,
18
+ ].join(",") +
19
+ ")"
20
+ );
21
+ }
22
+ export function toRgb(r) {
23
+ if (null == r || isNaN(parseInt(r.toString()))) return "";
24
+ return (
25
+ "rgb(" +
26
+ [(16711680 & (r >>>= 0)) >>> 16, (65280 & r) >>> 8, 255 & r].join(",") +
27
+ ")"
28
+ );
29
+ }
@@ -1 +1,26 @@
1
- import{addPassiveEventListener as oe,buildSvg as ae}from"./dom-utils.js";import{KeyCodes as lt}from"./key-codes.js";export function createCloseButton(t,o,e){const n=document.createElement("button");n.setAttribute("aria-label",t),n.setAttribute("tabindex","0"),n.setAttribute("role","button"),oe(n,"touchstart"),n.className="ab-close-button";const r=ae("0 0 15 15","M15 1.5L13.5 0l-6 6-6-6L0 1.5l6 6-6 6L1.5 15l6-6 6 6 1.5-1.5-6-6 6-6z",o);return n.appendChild(r),n.addEventListener("keydown",(t=>{t.keyCode!==lt.Fo&&t.keyCode!==lt.To||(e(),t.stopPropagation())})),n.onclick=t=>{e(),t.stopPropagation()},n}
1
+ import { addPassiveEventListener as oe, buildSvg as ae } from "./dom-utils.js";
2
+ import { KeyCodes as at } from "./key-codes.js";
3
+ export function createCloseButton(t, o, e) {
4
+ const n = document.createElement("button");
5
+ n.setAttribute("aria-label", t),
6
+ n.setAttribute("tabindex", "0"),
7
+ n.setAttribute("role", "button"),
8
+ oe(n, "touchstart"),
9
+ (n.className = "ab-close-button");
10
+ const r = ae(
11
+ "0 0 15 15",
12
+ "M15 1.5L13.5 0l-6 6-6-6L0 1.5l6 6-6 6L1.5 15l6-6 6 6 1.5-1.5-6-6 6-6z",
13
+ o,
14
+ );
15
+ return (
16
+ n.appendChild(r),
17
+ n.addEventListener("keydown", (t) => {
18
+ (t.keyCode !== at.Fo && t.keyCode !== at.To) ||
19
+ (e(), t.stopPropagation());
20
+ }),
21
+ (n.onclick = (t) => {
22
+ e(), t.stopPropagation();
23
+ }),
24
+ n
25
+ );
26
+ }
@@ -1 +1,28 @@
1
- import{isDate as yt}from"./code-utils.js";export function convertMsToSeconds(e,n=!1){let t=e/1e3;return n&&(t=Math.floor(t)),t}export function convertSecondsToMs(e){return 1e3*e}export function dateFromUnixTimestamp(e){if(null==e)return null;const n=parseInt(e.toString());return isNaN(n)?null:new Date(1e3*n)}export function toValidBackendTimeString(e){return null!=e&&yt(e)?e.toISOString().replace(/\.[0-9]{3}Z$/,""):e}export function rehydrateDateAfterJsonization(e){return null==e||""===e?null:new Date(e)}export function timestampOrNow(e){return null==e||""===e?(new Date).valueOf():e}export function secondsAgo(e){return((new Date).valueOf()-e.valueOf())/1e3}export function secondsInTheFuture(e){return(e.valueOf()-(new Date).valueOf())/1e3}
1
+ import { isDate as yt } from "./code-utils.js";
2
+ export function convertMsToSeconds(e, n = !1) {
3
+ let t = e / 1e3;
4
+ return n && (t = Math.floor(t)), t;
5
+ }
6
+ export function convertSecondsToMs(e) {
7
+ return 1e3 * e;
8
+ }
9
+ export function dateFromUnixTimestamp(e) {
10
+ if (null == e) return null;
11
+ const n = parseInt(e.toString());
12
+ return isNaN(n) ? null : new Date(1e3 * n);
13
+ }
14
+ export function toValidBackendTimeString(e) {
15
+ return null != e && yt(e) ? e.toISOString().replace(/\.[0-9]{3}Z$/, "") : e;
16
+ }
17
+ export function rehydrateDateAfterJsonization(e) {
18
+ return null == e || "" === e ? null : new Date(e);
19
+ }
20
+ export function timestampOrNow(e) {
21
+ return null == e || "" === e ? new Date().valueOf() : e;
22
+ }
23
+ export function secondsAgo(e) {
24
+ return (new Date().valueOf() - e.valueOf()) / 1e3;
25
+ }
26
+ export function secondsInTheFuture(e) {
27
+ return (e.valueOf() - new Date().valueOf()) / 1e3;
28
+ }
@@ -1 +1,5 @@
1
- import r from"../../shared-lib/braze-shared-lib.js";export function logDeprecationWarning(e,a,i){let s=`The '${e}' ${a} is deprecated.`;i&&(s+=` Please use '${i}' instead.`),r.j.warn(s)}
1
+ import r from "../../shared-lib/braze-shared-lib.js";
2
+ export function logDeprecationWarning(e, a, i) {
3
+ let s = `The '${e}' ${a} is deprecated.`;
4
+ i && (s += ` Please use '${i}' instead.`), r.j.warn(s);
5
+ }
@@ -1 +1,13 @@
1
- export const Browsers={pE:"Chrome",xE:"Edge",oc:"Internet Explorer",FE:"Opera",Bg:"Safari",ME:"Firefox"};export const OperatingSystems={xg:"Android",de:"iOS",kg:"Mac",Pg:"Windows"};
1
+ export const Browsers = {
2
+ rO: "Chrome",
3
+ eO: "Edge",
4
+ oO: "Opera",
5
+ Bg: "Safari",
6
+ OO: "Firefox",
7
+ };
8
+ export const OperatingSystems = {
9
+ xg: "Android",
10
+ de: "iOS",
11
+ kg: "Mac",
12
+ Pg: "Windows",
13
+ };