@braze/web-sdk 4.9.0 → 4.10.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.
- package/index.d.ts +2296 -2235
- package/package.json +1 -1
- package/shared-lib/braze-shared-lib.js +1 -8
- package/shared-lib/encoding-utils.js +1 -12
- package/shared-lib/event-types.js +1 -34
- package/shared-lib/guid.js +1 -10
- package/shared-lib/indexed-db-adapter.js +1 -352
- package/shared-lib/logger.js +1 -38
- package/shared-lib/supported-options.js +1 -26
- package/shared-lib/types.js +1 -1
- package/src/Card/card-manager-factory.js +1 -14
- package/src/Card/card-manager.js +1 -78
- package/src/Card/display/card-display.js +1 -138
- package/src/Card/index.js +1 -6
- package/src/Card/log-card-click.js +1 -11
- package/src/Card/log-card-dismissal.js +1 -11
- package/src/Card/log-card-impressions.js +1 -13
- package/src/Card/log-content-card-click.js +1 -4
- package/src/Card/log-content-card-impressions.js +1 -4
- package/src/Card/models/banner.js +1 -31
- package/src/Card/models/captioned-image.js +1 -33
- package/src/Card/models/card.js +1 -196
- package/src/Card/models/classic-card.js +1 -32
- package/src/Card/models/control-card.js +1 -23
- package/src/Card/models/image-only.js +1 -32
- package/src/Card/models/index.js +1 -6
- package/src/Card/types.js +1 -1
- package/src/Card/util/card-factory.js +1 -104
- package/src/ContentCards/content-cards-provider-factory.js +1 -20
- package/src/ContentCards/content-cards-provider.js +1 -391
- package/src/ContentCards/content-cards.js +1 -24
- package/src/ContentCards/get-cached-content-cards.js +1 -5
- package/src/ContentCards/index.js +1 -8
- package/src/ContentCards/log-content-cards-displayed.js +1 -5
- package/src/ContentCards/request-content-cards-refresh.js +1 -5
- package/src/ContentCards/subscribe-to-content-cards-updates.js +1 -17
- package/src/ContentCards/types.js +1 -1
- package/src/ContentCards/ui/hide-content-cards.js +1 -8
- package/src/ContentCards/ui/show-content-cards.js +1 -77
- package/src/ContentCards/ui/toggle-content-cards.js +1 -8
- package/src/Core/add-sdk-metadata.js +1 -26
- package/src/Core/braze-sdk-metadata.js +1 -10
- package/src/Core/change-user.js +1 -17
- package/src/Core/destroy.js +1 -5
- package/src/Core/device-properties.js +1 -9
- package/src/Core/disable-sdk.js +1 -15
- package/src/Core/enable-sdk.js +1 -11
- package/src/Core/get-device-id.js +1 -11
- package/src/Core/get-user.js +1 -4
- package/src/Core/handle-braze-action.js +1 -87
- package/src/Core/index.js +1 -23
- package/src/Core/initialize.js +1 -4
- package/src/Core/is-disabled.js +1 -4
- package/src/Core/log-custom-event.js +1 -38
- package/src/Core/log-purchase.js +1 -245
- package/src/Core/open-session.js +1 -25
- package/src/Core/remove-all-subscriptions.js +1 -4
- package/src/Core/remove-subscription.js +1 -4
- package/src/Core/request-immediate-data-flush.js +1 -6
- package/src/Core/set-logger.js +1 -4
- package/src/Core/set-sdk-authentication-signature.js +1 -8
- package/src/Core/subscribe-to-sdk-authentication-failures.js +1 -6
- package/src/Core/toggle-logging.js +1 -4
- package/src/Core/types.js +1 -1
- package/src/Core/wipe-data.js +1 -16
- package/src/FeatureFlags/feature-flag-factory.js +1 -24
- package/src/FeatureFlags/feature-flag.js +1 -64
- package/src/FeatureFlags/feature-flags-provider-factory.js +1 -19
- package/src/FeatureFlags/feature-flags-provider.js +1 -145
- package/src/FeatureFlags/get-all-feature-flags.js +1 -12
- package/src/FeatureFlags/get-feature-flag.js +1 -12
- package/src/FeatureFlags/index.js +1 -6
- package/src/FeatureFlags/log-feature-flag-impression.js +1 -23
- package/src/FeatureFlags/refresh-feature-flags.js +1 -9
- package/src/FeatureFlags/subscribe-to-feature-flags-updates.js +1 -9
- package/src/FeatureFlags/types.js +1 -1
- package/src/Feed/feed-provider-factory.js +1 -18
- package/src/Feed/feed-provider.js +1 -90
- package/src/Feed/feed.js +1 -20
- package/src/Feed/get-cached-feed.js +1 -5
- package/src/Feed/index.js +1 -8
- package/src/Feed/log-feed-displayed.js +1 -7
- package/src/Feed/request-feed-refresh.js +1 -5
- package/src/Feed/subscribe-to-feed-updates.js +1 -5
- package/src/Feed/types.js +1 -1
- package/src/Feed/ui/hide-feed.js +1 -7
- package/src/Feed/ui/show-feed.js +1 -96
- package/src/Feed/ui/toggle-feed.js +1 -8
- package/src/InAppMessage/defer-in-app-message.js +1 -13
- package/src/InAppMessage/display/get-animation-effect.js +1 -19
- package/src/InAppMessage/display/html-message-to-html.js +1 -244
- package/src/InAppMessage/display/in-app-message-to-html.js +1 -188
- package/src/InAppMessage/display/modal-utils.js +1 -73
- package/src/InAppMessage/get-deferred-in-app-message.js +1 -5
- package/src/InAppMessage/in-app-message-factory.js +1 -166
- package/src/InAppMessage/in-app-message-manager-factory.js +1 -16
- package/src/InAppMessage/in-app-message-manager.js +1 -248
- package/src/InAppMessage/index.js +1 -16
- package/src/InAppMessage/log-in-app-message-button-click.js +1 -27
- package/src/InAppMessage/log-in-app-message-click.js +1 -19
- package/src/InAppMessage/log-in-app-message-html-click.js +1 -23
- package/src/InAppMessage/log-in-app-message-impression.js +1 -13
- package/src/InAppMessage/models/control-message.js +1 -11
- package/src/InAppMessage/models/full-screen-message.js +1 -105
- package/src/InAppMessage/models/html-message.js +1 -68
- package/src/InAppMessage/models/in-app-message-button.js +1 -47
- package/src/InAppMessage/models/in-app-message.js +1 -382
- package/src/InAppMessage/models/modal-message.js +1 -101
- package/src/InAppMessage/models/slide-up-message.js +1 -84
- package/src/InAppMessage/models/templated-in-app-message.js +1 -19
- package/src/InAppMessage/subscribe-to-in-app-message.js +1 -10
- package/src/InAppMessage/types.js +1 -1
- package/src/InAppMessage/ui/automatically-show-in-app-messages.js +1 -15
- package/src/InAppMessage/ui/show-in-app-message.js +1 -181
- package/src/InAppMessage/utils/in-app-message-utils.js +1 -1
- package/src/Push/index.js +1 -5
- package/src/Push/is-push-blocked.js +1 -5
- package/src/Push/is-push-permission-granted.js +1 -5
- package/src/Push/is-push-supported.js +1 -5
- package/src/Push/push-manager-factory.js +1 -30
- package/src/Push/push-manager.js +1 -387
- package/src/Push/request-push-permission.js +1 -9
- package/src/Push/types.js +1 -1
- package/src/Push/unregister-push.js +1 -5
- package/src/Push/utils/push-utils.js +1 -36
- package/src/User/index.js +1 -1
- package/src/User/types.js +1 -1
- package/src/User/user-manager.js +1 -73
- package/src/User/user.js +1 -301
- package/src/common/base-feed.js +1 -28
- package/src/common/base-provider.js +1 -6
- package/src/common/constants.js +1 -14
- package/src/common/event-logger.js +1 -31
- package/src/common/feed-display.js +1 -210
- package/src/common/translations.js +1 -148
- package/src/common/types.js +1 -1
- package/src/index.js +1 -9
- package/src/l10n/l10n-manager-factory.js +1 -22
- package/src/l10n/l10n-manager.js +1 -25
- package/src/l10n/types.js +1 -1
- package/src/managers/auth-manager.js +1 -51
- package/src/managers/braze-instance.js +1 -329
- package/src/managers/device-manager.js +1 -85
- package/src/managers/network-manager.js +1 -253
- package/src/managers/server-config-manager.js +1 -108
- package/src/managers/session-manager.js +1 -75
- package/src/managers/storage-manager-factory.js +1 -42
- package/src/managers/storage-manager.js +1 -419
- package/src/managers/subscription-manager.js +1 -28
- package/src/managers/types.js +1 -1
- package/src/models/backend-errors.js +1 -8
- package/src/models/braze-event.js +1 -47
- package/src/models/braze-sdk-metadata.js +1 -10
- package/src/models/device.js +1 -18
- package/src/models/identifier.js +1 -19
- package/src/models/push-token.js +1 -27
- package/src/models/request-result.js +1 -8
- package/src/models/server-config.js +1 -48
- package/src/models/types.js +1 -1
- package/src/request-controller.js +1 -307
- package/src/triggers/models/custom-event-data.js +1 -14
- package/src/triggers/models/custom-event-property-data.js +1 -21
- package/src/triggers/models/filter-set.js +1 -55
- package/src/triggers/models/filter.js +1 -102
- package/src/triggers/models/in-app-message-click-data.js +1 -25
- package/src/triggers/models/purchase-data.js +1 -14
- package/src/triggers/models/purchase-property-data.js +1 -21
- package/src/triggers/models/push-click-data.js +1 -15
- package/src/triggers/models/trigger-condition.js +1 -105
- package/src/triggers/models/trigger-events.js +1 -8
- package/src/triggers/models/trigger.js +1 -122
- package/src/triggers/triggers-provider-factory.js +1 -34
- package/src/triggers/triggers-provider.js +1 -326
- package/src/triggers/types.js +1 -1
- package/src/types.js +1 -1
- package/src/ui/js/attach-css.js +1 -13
- package/src/ui/js/feed-css.js +1 -12
- package/src/ui/js/iam-css.js +1 -12
- package/src/ui/js/index.js +1 -3
- package/src/ui/js/load-font-awesome.js +1 -13
- package/src/util/base-device-parser.js +1 -14
- package/src/util/braze-actions.js +1 -84
- package/src/util/browser-detector.js +1 -84
- package/src/util/client-hints-parser.js +1 -66
- package/src/util/code-utils.js +1 -100
- package/src/util/color-utils.js +1 -29
- package/src/util/component-utils.js +1 -26
- package/src/util/date-utils.js +1 -28
- package/src/util/deprecation-utils.js +1 -5
- package/src/util/device-constants.js +1 -14
- package/src/util/dom-utils.js +1 -91
- package/src/util/error-utils.js +1 -2
- package/src/util/key-codes.js +1 -1
- package/src/util/math.js +1 -5
- package/src/util/net.js +1 -71
- package/src/util/request-header-utils.js +1 -46
- package/src/util/string-utils.js +1 -22
- package/src/util/types.js +1 -1
- package/src/util/url-utils.js +1 -20
- package/src/util/user-agent-parser.js +1 -85
- package/src/util/validation-utils.js +1 -217
- package/src/util/window-utils.js +1 -34
package/src/ui/js/iam-css.js
CHANGED
|
@@ -1,12 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { loadFontAwesome as Ne } from "./load-font-awesome.js";
|
|
3
|
-
export function attachInAppMessageCSS(t) {
|
|
4
|
-
Ie(
|
|
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(), Ne();
|
|
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()}
|
package/src/ui/js/index.js
CHANGED
|
@@ -1,3 +1 @@
|
|
|
1
|
-
export
|
|
2
|
-
export { attachInAppMessageCSS, setupInAppMessageUI } from "./iam-css.js";
|
|
3
|
-
export { loadFontAwesome } from "./load-font-awesome.js";
|
|
1
|
+
export{attachFeedCSS,setupFeedUI}from"./feed-css.js";export{attachInAppMessageCSS,setupInAppMessageUI}from"./iam-css.js";export{loadFontAwesome}from"./load-font-awesome.js";
|
|
@@ -1,13 +1 @@
|
|
|
1
|
-
import e,
|
|
2
|
-
export function loadFontAwesome() {
|
|
3
|
-
if (e.nn(L.Po)) 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
|
+
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,14 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
export default class ge {
|
|
3
|
-
constructor() {}
|
|
4
|
-
tf() {}
|
|
5
|
-
ef() {}
|
|
6
|
-
Ia(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
|
+
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,84 +1 @@
|
|
|
1
|
-
import r from
|
|
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 X,
|
|
6
|
-
isValidBrazeActionType as ro,
|
|
7
|
-
isValidBrazeActionJson as Y,
|
|
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(X),
|
|
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 || !Y(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
|
+
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,84 +1 @@
|
|
|
1
|
-
import ni from
|
|
2
|
-
import ai from "./user-agent-parser.js";
|
|
3
|
-
import { Browsers as oi, OperatingSystems as W } 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.Ia().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.$o = gi.vg(this.userAgent));
|
|
22
|
-
}
|
|
23
|
-
OE() {
|
|
24
|
-
return this.browser === oi.Bg;
|
|
25
|
-
}
|
|
26
|
-
Oa() {
|
|
27
|
-
return this.OS || null;
|
|
28
|
-
}
|
|
29
|
-
Ia() {
|
|
30
|
-
return this.OS
|
|
31
|
-
? Promise.resolve(this.OS)
|
|
32
|
-
: this.Sg.Ia(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: W.Pg },
|
|
60
|
-
{ string: navigator.platform, if: "Mac", identity: W.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: W.de,
|
|
72
|
-
},
|
|
73
|
-
{ string: navigator.platform, if: "Pike v", identity: W.de },
|
|
74
|
-
{ string: navigator.userAgent, if: ["Web0S"], identity: "WebOS" },
|
|
75
|
-
{
|
|
76
|
-
string: navigator.platform,
|
|
77
|
-
if: ["Linux armv7l", "Android"],
|
|
78
|
-
identity: W.xg,
|
|
79
|
-
},
|
|
80
|
-
{ string: navigator.userAgent, if: ["Android"], identity: W.xg },
|
|
81
|
-
{ string: navigator.platform, if: "Linux", identity: "Linux" },
|
|
82
|
-
];
|
|
83
|
-
const V = new gi();
|
|
84
|
-
export { V as default, gi as BrowserDetector };
|
|
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,66 +1 @@
|
|
|
1
|
-
import ge from
|
|
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.Uu();
|
|
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
|
-
Ia(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
|
-
Uu() {
|
|
40
|
-
const t = {},
|
|
41
|
-
s = this.userAgentData.brands;
|
|
42
|
-
if (s && s.length)
|
|
43
|
-
for (const r of s) {
|
|
44
|
-
const s = this.Ou(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
|
-
Ou(t) {
|
|
54
|
-
const s = [];
|
|
55
|
-
for (const r in t) {
|
|
56
|
-
const i = r;
|
|
57
|
-
t[i] !== oi.Ku && 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
|
+
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()}}
|
package/src/util/code-utils.js
CHANGED
|
@@ -1,100 +1 @@
|
|
|
1
|
-
import r from
|
|
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
|
+
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}
|
package/src/util/color-utils.js
CHANGED
|
@@ -1,29 +1 @@
|
|
|
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
|
+
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,26 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { KeyCodes as lt } 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 !== lt.Fo && t.keyCode !== lt.To) ||
|
|
19
|
-
(e(), t.stopPropagation());
|
|
20
|
-
}),
|
|
21
|
-
(n.onclick = (t) => {
|
|
22
|
-
e(), t.stopPropagation();
|
|
23
|
-
}),
|
|
24
|
-
n
|
|
25
|
-
);
|
|
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}
|
package/src/util/date-utils.js
CHANGED
|
@@ -1,28 +1 @@
|
|
|
1
|
-
import
|
|
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 && Nt(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
|
+
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,5 +1 @@
|
|
|
1
|
-
import r from
|
|
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
|
+
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,14 +1 @@
|
|
|
1
|
-
export const Browsers =
|
|
2
|
-
pE: "Chrome",
|
|
3
|
-
xE: "Edge",
|
|
4
|
-
Ku: "Internet Explorer",
|
|
5
|
-
FE: "Opera",
|
|
6
|
-
Bg: "Safari",
|
|
7
|
-
ME: "Firefox",
|
|
8
|
-
};
|
|
9
|
-
export const OperatingSystems = {
|
|
10
|
-
xg: "Android",
|
|
11
|
-
de: "iOS",
|
|
12
|
-
kg: "Mac",
|
|
13
|
-
Pg: "Windows",
|
|
14
|
-
};
|
|
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"};
|