@braze/web-sdk 4.3.0 → 4.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.d.ts +56 -6
- package/package.json +1 -1
- package/shared-lib/braze-shared-lib.js +8 -1
- package/shared-lib/encoding-utils.js +12 -1
- package/shared-lib/event-types.js +32 -1
- package/shared-lib/guid.js +10 -1
- package/shared-lib/indexed-db-adapter.js +315 -1
- package/shared-lib/logger.js +38 -1
- package/shared-lib/supported-options.js +26 -1
- package/src/Card/card-manager-factory.js +14 -1
- package/src/Card/card-manager.js +72 -1
- package/src/Card/display/card-display.js +134 -1
- package/src/Card/index.js +5 -1
- package/src/Card/log-card-click.js +11 -1
- package/src/Card/log-card-dismissal.js +11 -1
- package/src/Card/log-card-impressions.js +13 -1
- package/src/Card/log-content-card-impressions.js +4 -1
- package/src/Card/models/banner.js +30 -1
- package/src/Card/models/captioned-image.js +32 -1
- package/src/Card/models/card.js +174 -1
- package/src/Card/models/classic-card.js +32 -1
- package/src/Card/models/control-card.js +38 -1
- package/src/Card/models/index.js +5 -1
- package/src/Card/util/card-factory.js +104 -1
- package/src/ContentCards/content-cards-provider-factory.js +20 -1
- package/src/ContentCards/content-cards-provider.js +283 -1
- package/src/ContentCards/content-cards.js +24 -1
- package/src/ContentCards/get-cached-content-cards.js +5 -1
- package/src/ContentCards/index.js +8 -1
- package/src/ContentCards/log-content-cards-displayed.js +5 -1
- package/src/ContentCards/request-content-cards-refresh.js +5 -1
- package/src/ContentCards/subscribe-to-content-cards-updates.js +14 -1
- package/src/ContentCards/ui/hide-content-cards.js +8 -1
- package/src/ContentCards/ui/show-content-cards.js +72 -1
- package/src/ContentCards/ui/toggle-content-cards.js +8 -1
- package/src/Core/add-sdk-metadata.js +27 -1
- package/src/Core/braze-sdk-metadata.js +10 -1
- package/src/Core/change-user.js +19 -1
- package/src/Core/destroy.js +5 -1
- package/src/Core/device-properties.js +9 -1
- package/src/Core/disable-sdk.js +10 -1
- package/src/Core/enable-sdk.js +8 -1
- package/src/Core/get-device-id.js +10 -1
- package/src/Core/get-user.js +4 -1
- package/src/Core/handle-braze-action.js +64 -1
- package/src/Core/index.js +23 -1
- package/src/Core/initialize.js +4 -1
- package/src/Core/is-disabled.js +4 -1
- package/src/Core/log-custom-event.js +36 -1
- package/src/Core/log-purchase.js +245 -1
- package/src/Core/open-session.js +23 -1
- package/src/Core/remove-all-subscriptions.js +4 -1
- package/src/Core/remove-subscription.js +4 -1
- package/src/Core/request-immediate-data-flush.js +4 -1
- package/src/Core/set-logger.js +4 -1
- package/src/Core/set-sdk-authentication-signature.js +9 -1
- package/src/Core/subscribe-to-sdk-authentication-failures.js +4 -1
- package/src/Core/toggle-logging.js +4 -1
- package/src/Core/wipe-data.js +15 -1
- package/src/FeatureFlags/feature-flag-factory.js +14 -0
- package/src/FeatureFlags/feature-flag.js +16 -0
- package/src/FeatureFlags/feature-flags-provider-factory.js +19 -0
- package/src/FeatureFlags/feature-flags-provider.js +94 -0
- package/src/FeatureFlags/get-all-feature-flags.js +12 -0
- package/src/FeatureFlags/get-feature-flag.js +12 -0
- package/src/FeatureFlags/index.js +4 -0
- package/src/FeatureFlags/refresh-feature-flags.js +9 -0
- package/src/FeatureFlags/subscribe-to-feature-flags-updates.js +6 -0
- package/src/Feed/feed-provider-factory.js +18 -1
- package/src/Feed/feed-provider.js +79 -1
- package/src/Feed/feed.js +20 -1
- package/src/Feed/get-cached-feed.js +5 -1
- package/src/Feed/index.js +8 -1
- package/src/Feed/log-feed-displayed.js +5 -1
- package/src/Feed/request-feed-refresh.js +5 -1
- package/src/Feed/subscribe-to-feed-updates.js +5 -1
- package/src/Feed/ui/hide-feed.js +7 -1
- package/src/Feed/ui/show-feed.js +89 -1
- package/src/Feed/ui/toggle-feed.js +8 -1
- package/src/InAppMessage/display/get-animation-effect.js +19 -1
- package/src/InAppMessage/display/html-message-to-html.js +223 -1
- package/src/InAppMessage/display/in-app-message-to-html.js +152 -1
- package/src/InAppMessage/display/modal-utils.js +68 -1
- package/src/InAppMessage/in-app-message-factory.js +145 -1
- package/src/InAppMessage/in-app-message-manager-factory.js +16 -1
- package/src/InAppMessage/in-app-message-manager.js +189 -1
- package/src/InAppMessage/index.js +14 -1
- package/src/InAppMessage/log-in-app-message-button-click.js +19 -1
- package/src/InAppMessage/log-in-app-message-click.js +16 -1
- package/src/InAppMessage/log-in-app-message-html-click.js +23 -1
- package/src/InAppMessage/log-in-app-message-impression.js +13 -1
- package/src/InAppMessage/models/control-message.js +8 -1
- package/src/InAppMessage/models/full-screen-message.js +71 -1
- package/src/InAppMessage/models/html-message.js +54 -1
- package/src/InAppMessage/models/in-app-message-button.js +40 -1
- package/src/InAppMessage/models/in-app-message.js +267 -1
- package/src/InAppMessage/models/modal-message.js +68 -1
- package/src/InAppMessage/models/slide-up-message.js +58 -1
- package/src/InAppMessage/models/templated-in-app-message.js +14 -1
- package/src/InAppMessage/subscribe-to-in-app-message.js +10 -1
- package/src/InAppMessage/ui/automatically-show-in-app-messages.js +15 -1
- package/src/InAppMessage/ui/show-in-app-message.js +170 -1
- package/src/Push/index.js +5 -1
- package/src/Push/is-push-blocked.js +5 -1
- package/src/Push/is-push-permission-granted.js +5 -1
- package/src/Push/is-push-supported.js +5 -1
- package/src/Push/push-manager-factory.js +30 -1
- package/src/Push/push-manager.js +360 -1
- package/src/Push/request-push-permission.js +8 -1
- package/src/Push/unregister-push.js +5 -1
- package/src/Push/utils/push-utils.js +34 -1
- package/src/User/index.js +1 -1
- package/src/User/user-manager.js +70 -1
- package/src/User/user.js +278 -1
- package/src/common/base-feed.js +25 -1
- package/src/common/base-provider.js +6 -1
- package/src/common/constants.js +5 -1
- package/src/common/event-logger.js +24 -1
- package/src/common/feed-display.js +200 -1
- package/src/common/translations.js +148 -1
- package/src/index.js +9 -1
- package/src/l10n/l10n-manager-factory.js +22 -1
- package/src/l10n/l10n-manager.js +21 -1
- package/src/managers/auth-manager.js +48 -1
- package/src/managers/braze-instance.js +307 -1
- package/src/managers/device-manager.js +80 -1
- package/src/managers/network-manager.js +219 -1
- package/src/managers/server-config-manager.js +88 -1
- package/src/managers/session-manager.js +68 -1
- package/src/managers/storage-manager-factory.js +35 -1
- package/src/managers/storage-manager.js +394 -1
- package/src/managers/subscription-manager.js +25 -1
- package/src/models/backend-errors.js +8 -1
- package/src/models/braze-event.js +41 -1
- package/src/models/braze-sdk-metadata.js +10 -1
- package/src/models/device.js +26 -1
- package/src/models/identifier.js +20 -1
- package/src/models/push-token.js +22 -1
- package/src/models/request-result.js +8 -1
- package/src/models/server-config.js +32 -1
- package/src/request-controller.js +288 -1
- package/src/triggers/models/custom-event-data.js +14 -1
- package/src/triggers/models/custom-event-property-data.js +21 -1
- package/src/triggers/models/filter-set.js +55 -1
- package/src/triggers/models/filter.js +98 -1
- package/src/triggers/models/in-app-message-click-data.js +25 -1
- package/src/triggers/models/purchase-data.js +14 -1
- package/src/triggers/models/purchase-property-data.js +21 -1
- package/src/triggers/models/push-click-data.js +15 -1
- package/src/triggers/models/trigger-condition.js +109 -1
- package/src/triggers/models/trigger-events.js +8 -1
- package/src/triggers/models/trigger.js +110 -1
- package/src/triggers/triggers-provider-factory.js +30 -1
- package/src/triggers/triggers-provider.js +307 -1
- package/src/ui/js/attach-css.js +12 -1
- package/src/ui/js/feed-css.js +12 -1
- package/src/ui/js/iam-css.js +12 -1
- package/src/ui/js/index.js +3 -1
- package/src/ui/js/load-font-awesome.js +13 -1
- package/src/util/base-device-parser.js +14 -1
- package/src/util/braze-actions.js +79 -1
- package/src/util/browser-detector.js +85 -1
- package/src/util/client-hints-parser.js +60 -1
- package/src/util/code-utils.js +92 -1
- package/src/util/color-utils.js +23 -1
- package/src/util/component-utils.js +26 -1
- package/src/util/date-utils.js +27 -1
- package/src/util/deprecation-utils.js +5 -1
- package/src/util/device-constants.js +14 -1
- package/src/util/dom-utils.js +87 -1
- package/src/util/key-codes.js +1 -1
- package/src/util/math.js +5 -1
- package/src/util/net.js +75 -1
- package/src/util/string-utils.js +22 -1
- package/src/util/url-utils.js +23 -1
- package/src/util/user-agent-parser.js +85 -1
- package/src/util/validation-utils.js +136 -1
- package/src/util/window-utils.js +35 -1
|
@@ -1 +1,152 @@
|
|
|
1
|
-
import
|
|
1
|
+
import {
|
|
2
|
+
addPassiveEventListener as oe,
|
|
3
|
+
buildSvg as ae,
|
|
4
|
+
detectSwipe as d,
|
|
5
|
+
DIRECTIONS as c
|
|
6
|
+
} from "../../util/dom-utils.js";
|
|
7
|
+
import { createCloseButton as i } from "../../util/component-utils.js";
|
|
8
|
+
import { isTransparent as ne, toRgba as me } from "../../util/color-utils.js";
|
|
9
|
+
import FullScreenMessage from "../models/full-screen-message.js";
|
|
10
|
+
import HtmlMessage from "../models/html-message.js";
|
|
11
|
+
import InAppMessage from "../models/in-app-message.js";
|
|
12
|
+
import ModalMessage from "../models/modal-message.js";
|
|
13
|
+
import SlideUpMessage from "../models/slide-up-message.js";
|
|
14
|
+
import { logInAppMessageClick } from "../log-in-app-message-click.js";
|
|
15
|
+
import { _handleBrazeAction as m } from "../../Core/handle-braze-action.js";
|
|
16
|
+
import ut from "./html-message-to-html.js";
|
|
17
|
+
import ce from "./modal-utils.js";
|
|
18
|
+
import r from "../../../shared-lib/braze-shared-lib.js";
|
|
19
|
+
export default function le(e, o, s, t, a, n) {
|
|
20
|
+
if (((e.ke = document.activeElement), e instanceof HtmlMessage))
|
|
21
|
+
return ut(e, o, s, t, a, n);
|
|
22
|
+
const l = (function(e, o, s, t, a) {
|
|
23
|
+
const n = document.createElement("div");
|
|
24
|
+
(n.className = "ab-in-app-message ab-start-hidden ab-background"),
|
|
25
|
+
a && (n.style.zIndex = a + 1),
|
|
26
|
+
e.Me() &&
|
|
27
|
+
((n.className += " ab-modal-interactions"),
|
|
28
|
+
n.setAttribute("tabindex", "-1")),
|
|
29
|
+
e.sn() ||
|
|
30
|
+
((n.style.color = me(e.textColor)),
|
|
31
|
+
(n.style.backgroundColor = me(e.backgroundColor)),
|
|
32
|
+
ne(e.backgroundColor) && (n.className += " ab-no-shadow"));
|
|
33
|
+
const c = () => {
|
|
34
|
+
-1 !== n.className.indexOf("ab-start-hidden") &&
|
|
35
|
+
((n.className = n.className.replace("ab-start-hidden", "")), s(n));
|
|
36
|
+
};
|
|
37
|
+
e.imageStyle === InAppMessage.ImageStyle.GRAPHIC &&
|
|
38
|
+
(n.className += " graphic"),
|
|
39
|
+
e.orientation === InAppMessage.Orientation.LANDSCAPE &&
|
|
40
|
+
(n.className += " landscape"),
|
|
41
|
+
0 === e.buttons.length &&
|
|
42
|
+
(e.clickAction !== InAppMessage.ClickAction.NONE &&
|
|
43
|
+
(n.className += " ab-clickable"),
|
|
44
|
+
(n.onclick = s => (
|
|
45
|
+
e.on(n, () => {
|
|
46
|
+
logInAppMessageClick(e),
|
|
47
|
+
e.clickAction === InAppMessage.ClickAction.URI
|
|
48
|
+
? m(
|
|
49
|
+
e.uri,
|
|
50
|
+
s,
|
|
51
|
+
t || e.openTarget === InAppMessage.OpenTarget.BLANK
|
|
52
|
+
)
|
|
53
|
+
: e.clickAction === InAppMessage.ClickAction.NEWS_FEED && o();
|
|
54
|
+
}),
|
|
55
|
+
s.stopPropagation(),
|
|
56
|
+
!1
|
|
57
|
+
)));
|
|
58
|
+
const l = i(
|
|
59
|
+
"Close Message",
|
|
60
|
+
e.sn() ? void 0 : me(e.closeButtonColor),
|
|
61
|
+
() => {
|
|
62
|
+
e.on(n);
|
|
63
|
+
}
|
|
64
|
+
);
|
|
65
|
+
n.appendChild(l), a && (l.style.zIndex = a + 2);
|
|
66
|
+
const d = document.createElement("div");
|
|
67
|
+
d.className = "ab-message-text";
|
|
68
|
+
const u = (e.messageAlignment || e.Ce).toLowerCase();
|
|
69
|
+
d.className += " " + u + "-aligned";
|
|
70
|
+
let b = !1;
|
|
71
|
+
const f = document.createElement("div");
|
|
72
|
+
if (((f.className = "ab-image-area"), e.imageUrl)) {
|
|
73
|
+
if (e.cropType === InAppMessage.CropType.CENTER_CROP) {
|
|
74
|
+
const o = document.createElement("span");
|
|
75
|
+
(o.className = "ab-center-cropped-img"),
|
|
76
|
+
(o.style.backgroundImage = "url(" + e.imageUrl + ")"),
|
|
77
|
+
o.setAttribute("role", "img"),
|
|
78
|
+
o.setAttribute("aria-label", "Modal Image"),
|
|
79
|
+
e.Le(o),
|
|
80
|
+
f.appendChild(o);
|
|
81
|
+
} else {
|
|
82
|
+
const o = document.createElement("img");
|
|
83
|
+
o.setAttribute("src", e.imageUrl),
|
|
84
|
+
e.Le(o),
|
|
85
|
+
(b = !0),
|
|
86
|
+
(o.onload = c),
|
|
87
|
+
setTimeout(c, 1e3),
|
|
88
|
+
f.appendChild(o);
|
|
89
|
+
}
|
|
90
|
+
n.appendChild(f), (d.className += " ab-with-image");
|
|
91
|
+
} else if (e.icon) {
|
|
92
|
+
f.className += " ab-icon-area";
|
|
93
|
+
const o = document.createElement("span");
|
|
94
|
+
(o.className = "ab-icon"),
|
|
95
|
+
e.sn() ||
|
|
96
|
+
((o.style.backgroundColor = me(e.iconBackgroundColor)),
|
|
97
|
+
(o.style.color = me(e.iconColor)));
|
|
98
|
+
const s = document.createElement("i");
|
|
99
|
+
(s.className = "fa"),
|
|
100
|
+
s.appendChild(document.createTextNode(e.icon)),
|
|
101
|
+
s.setAttribute("aria-hidden", !0),
|
|
102
|
+
o.appendChild(s),
|
|
103
|
+
f.appendChild(o),
|
|
104
|
+
n.appendChild(f),
|
|
105
|
+
(d.className += " ab-with-icon");
|
|
106
|
+
}
|
|
107
|
+
if ((oe(d, "touchstart", function() {}), e.header && e.header.length > 0)) {
|
|
108
|
+
const o = document.createElement("h1");
|
|
109
|
+
(o.className = "ab-message-header"), (e.Ie = r.it.nt()), (o.id = e.Ie);
|
|
110
|
+
const s = (
|
|
111
|
+
e.headerAlignment || InAppMessage.TextAlignment.CENTER
|
|
112
|
+
).toLowerCase();
|
|
113
|
+
(o.className += " " + s + "-aligned"),
|
|
114
|
+
e.sn() || (o.style.color = me(e.headerTextColor)),
|
|
115
|
+
o.appendChild(document.createTextNode(e.header)),
|
|
116
|
+
d.appendChild(o);
|
|
117
|
+
}
|
|
118
|
+
return d.appendChild(e.Ae()), n.appendChild(d), b || c(), (e.mn = n), n;
|
|
119
|
+
})(e, o, s, t, a);
|
|
120
|
+
if (e instanceof FullScreenMessage || e instanceof ModalMessage) {
|
|
121
|
+
const s = e instanceof FullScreenMessage ? "ab-fullscreen" : "ab-modal";
|
|
122
|
+
(l.className += ` ${s} ab-centered`),
|
|
123
|
+
ce.Be(e, o, l, t),
|
|
124
|
+
ce.Ee(l),
|
|
125
|
+
ce.Ge(e.Ie, l);
|
|
126
|
+
} else if (e instanceof SlideUpMessage) {
|
|
127
|
+
l.className += " ab-slideup";
|
|
128
|
+
const o = l.getElementsByClassName("ab-close-button")[0];
|
|
129
|
+
if (null != o) {
|
|
130
|
+
const s = ae(
|
|
131
|
+
"0 0 11.38 19.44",
|
|
132
|
+
"M11.38 9.72l-9.33 9.72L0 17.3l7.27-7.58L0 2.14 2.05 0l9.33 9.72z",
|
|
133
|
+
e.sn() ? void 0 : me(e.closeButtonColor)
|
|
134
|
+
);
|
|
135
|
+
s.setAttribute("class", "ab-chevron"), o.appendChild(s);
|
|
136
|
+
}
|
|
137
|
+
let s, t;
|
|
138
|
+
d(l, c.ot, e => {
|
|
139
|
+
(l.className += " ab-swiped-left"), o.onclick(e);
|
|
140
|
+
}),
|
|
141
|
+
d(l, c.et, e => {
|
|
142
|
+
(l.className += " ab-swiped-right"), o.onclick(e);
|
|
143
|
+
}),
|
|
144
|
+
e.slideFrom === InAppMessage.SlideFrom.TOP
|
|
145
|
+
? ((s = c.He), (t = " ab-swiped-up"))
|
|
146
|
+
: ((s = c.Je), (t = " ab-swiped-down")),
|
|
147
|
+
d(l, s, e => {
|
|
148
|
+
(l.className += t), o.onclick(e);
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
return l;
|
|
152
|
+
}
|
|
@@ -1 +1,68 @@
|
|
|
1
|
-
import InAppMessage from"../models/in-app-message.js";
|
|
1
|
+
import InAppMessage from "../models/in-app-message.js";
|
|
2
|
+
import { _handleBrazeAction as m } from "../../Core/handle-braze-action.js";
|
|
3
|
+
import { logInAppMessageButtonClick } from "../log-in-app-message-button-click.js";
|
|
4
|
+
import { toRgba as me } from "../../util/color-utils.js";
|
|
5
|
+
import { addPassiveEventListener as oe } from "../../util/dom-utils.js";
|
|
6
|
+
import { KeyCodes as at } from "../../util/key-codes.js";
|
|
7
|
+
const ce = {
|
|
8
|
+
Ee: t => {
|
|
9
|
+
const o = t.querySelectorAll(
|
|
10
|
+
".ab-close-button, .ab-message-text, .ab-message-button"
|
|
11
|
+
);
|
|
12
|
+
for (let t = 0; t < o.length; t++) o[t].tabIndex = 0;
|
|
13
|
+
if (o.length > 0) {
|
|
14
|
+
const e = o[0],
|
|
15
|
+
s = o[o.length - 1];
|
|
16
|
+
t.addEventListener("keydown", o => {
|
|
17
|
+
var a = document.activeElement;
|
|
18
|
+
o.keyCode === at.oo &&
|
|
19
|
+
(o.shiftKey || (a !== s && a !== t)
|
|
20
|
+
? !o.shiftKey ||
|
|
21
|
+
(a !== e && a !== t) ||
|
|
22
|
+
(o.preventDefault(), s.focus())
|
|
23
|
+
: (o.preventDefault(), e.focus()));
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
Ge: (t, o) => {
|
|
28
|
+
o.setAttribute("role", "dialog"),
|
|
29
|
+
o.setAttribute("aria-modal", !0),
|
|
30
|
+
o.setAttribute("aria-label", "Modal Message"),
|
|
31
|
+
t && o.setAttribute("aria-labelledby", t);
|
|
32
|
+
},
|
|
33
|
+
Be: (t, o, e, s) => {
|
|
34
|
+
if (t.buttons.length > 0) {
|
|
35
|
+
const a = document.createElement("div");
|
|
36
|
+
(a.className = "ab-message-buttons"), e.appendChild(a);
|
|
37
|
+
const l = e.getElementsByClassName("ab-message-text")[0];
|
|
38
|
+
null != l && (l.className += " ab-with-buttons");
|
|
39
|
+
const n = a => l => (
|
|
40
|
+
t.on(e, () => {
|
|
41
|
+
logInAppMessageButtonClick(a, t),
|
|
42
|
+
a.clickAction === InAppMessage.ClickAction.URI
|
|
43
|
+
? m(a.uri, l, s || t.openTarget === InAppMessage.OpenTarget.BLANK)
|
|
44
|
+
: a.clickAction === InAppMessage.ClickAction.NEWS_FEED && o();
|
|
45
|
+
}),
|
|
46
|
+
l.stopPropagation(),
|
|
47
|
+
!1
|
|
48
|
+
);
|
|
49
|
+
for (let o = 0; o < t.buttons.length; o++) {
|
|
50
|
+
const e = t.buttons[o],
|
|
51
|
+
s = document.createElement("button");
|
|
52
|
+
(s.className = "ab-message-button"),
|
|
53
|
+
s.setAttribute("type", "button"),
|
|
54
|
+
oe(s, "touchstart", function() {});
|
|
55
|
+
let l = e.text;
|
|
56
|
+
"" === e.text && (l = " "),
|
|
57
|
+
s.appendChild(document.createTextNode(l)),
|
|
58
|
+
t.sn() ||
|
|
59
|
+
((s.style.backgroundColor = me(e.backgroundColor)),
|
|
60
|
+
(s.style.color = me(e.textColor)),
|
|
61
|
+
(s.style.borderColor = me(e.borderColor))),
|
|
62
|
+
(s.onclick = n(e)),
|
|
63
|
+
a.appendChild(s);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
export default ce;
|
|
@@ -1 +1,145 @@
|
|
|
1
|
-
import InAppMessage from
|
|
1
|
+
import InAppMessage from "./models/in-app-message.js";
|
|
2
|
+
import ControlMessage from "./models/control-message.js";
|
|
3
|
+
import FullScreenMessage from "./models/full-screen-message.js";
|
|
4
|
+
import HtmlMessage from "./models/html-message.js";
|
|
5
|
+
import InAppMessageButton from "./models/in-app-message-button.js";
|
|
6
|
+
import ModalMessage from "./models/modal-message.js";
|
|
7
|
+
import SlideUpMessage from "./models/slide-up-message.js";
|
|
8
|
+
import r from "../../shared-lib/braze-shared-lib.js";
|
|
9
|
+
export function newInAppMessageFromJson(e) {
|
|
10
|
+
if (e.is_control) return ControlMessage.fromJson(e);
|
|
11
|
+
let s = e.type;
|
|
12
|
+
null != s && (s = s.toUpperCase());
|
|
13
|
+
const o = e.message,
|
|
14
|
+
m = e.text_align_message,
|
|
15
|
+
l = e.slide_from,
|
|
16
|
+
n = e.extras,
|
|
17
|
+
t = e.trigger_id,
|
|
18
|
+
i = e.click_action,
|
|
19
|
+
p = e.uri,
|
|
20
|
+
f = e.open_target,
|
|
21
|
+
a = e.message_close,
|
|
22
|
+
d = e.duration,
|
|
23
|
+
u = e.icon,
|
|
24
|
+
g = e.image_url,
|
|
25
|
+
j = e.image_style,
|
|
26
|
+
w = e.icon_color,
|
|
27
|
+
c = e.icon_bg_color,
|
|
28
|
+
b = e.bg_color,
|
|
29
|
+
h = e.text_color,
|
|
30
|
+
v = e.close_btn_color,
|
|
31
|
+
I = e.header,
|
|
32
|
+
k = e.text_align_header,
|
|
33
|
+
x = e.header_text_color,
|
|
34
|
+
y = e.frame_color,
|
|
35
|
+
z = [];
|
|
36
|
+
let A = e.btns;
|
|
37
|
+
null == A && (A = []);
|
|
38
|
+
for (let e = 0; e < A.length; e++) z.push(InAppMessageButton.fromJson(A[e]));
|
|
39
|
+
const F = e.crop_type,
|
|
40
|
+
J = e.orientation,
|
|
41
|
+
M = e.animate_in,
|
|
42
|
+
q = e.animate_out;
|
|
43
|
+
let B,
|
|
44
|
+
C = e.html_id,
|
|
45
|
+
D = e.css;
|
|
46
|
+
if (
|
|
47
|
+
((null != C && "" !== C && null != D && "" !== D) ||
|
|
48
|
+
((C = void 0), (D = void 0)),
|
|
49
|
+
s === ModalMessage.es || s === InAppMessage.es.Ke)
|
|
50
|
+
)
|
|
51
|
+
B = new ModalMessage(
|
|
52
|
+
o,
|
|
53
|
+
m,
|
|
54
|
+
n,
|
|
55
|
+
t,
|
|
56
|
+
i,
|
|
57
|
+
p,
|
|
58
|
+
f,
|
|
59
|
+
a,
|
|
60
|
+
d,
|
|
61
|
+
u,
|
|
62
|
+
g,
|
|
63
|
+
j,
|
|
64
|
+
w,
|
|
65
|
+
c,
|
|
66
|
+
b,
|
|
67
|
+
h,
|
|
68
|
+
v,
|
|
69
|
+
M,
|
|
70
|
+
q,
|
|
71
|
+
I,
|
|
72
|
+
k,
|
|
73
|
+
x,
|
|
74
|
+
y,
|
|
75
|
+
z,
|
|
76
|
+
F,
|
|
77
|
+
C,
|
|
78
|
+
D
|
|
79
|
+
);
|
|
80
|
+
else if (s === FullScreenMessage.es)
|
|
81
|
+
B = new FullScreenMessage(
|
|
82
|
+
o,
|
|
83
|
+
m,
|
|
84
|
+
n,
|
|
85
|
+
t,
|
|
86
|
+
i,
|
|
87
|
+
p,
|
|
88
|
+
f,
|
|
89
|
+
a,
|
|
90
|
+
d,
|
|
91
|
+
u,
|
|
92
|
+
g,
|
|
93
|
+
j,
|
|
94
|
+
w,
|
|
95
|
+
c,
|
|
96
|
+
b,
|
|
97
|
+
h,
|
|
98
|
+
v,
|
|
99
|
+
M,
|
|
100
|
+
q,
|
|
101
|
+
I,
|
|
102
|
+
k,
|
|
103
|
+
x,
|
|
104
|
+
y,
|
|
105
|
+
z,
|
|
106
|
+
F,
|
|
107
|
+
J,
|
|
108
|
+
C,
|
|
109
|
+
D
|
|
110
|
+
);
|
|
111
|
+
else if (s === SlideUpMessage.es)
|
|
112
|
+
B = new SlideUpMessage(
|
|
113
|
+
o,
|
|
114
|
+
m,
|
|
115
|
+
l,
|
|
116
|
+
n,
|
|
117
|
+
t,
|
|
118
|
+
i,
|
|
119
|
+
p,
|
|
120
|
+
f,
|
|
121
|
+
a,
|
|
122
|
+
d,
|
|
123
|
+
u,
|
|
124
|
+
g,
|
|
125
|
+
w,
|
|
126
|
+
c,
|
|
127
|
+
b,
|
|
128
|
+
h,
|
|
129
|
+
v,
|
|
130
|
+
M,
|
|
131
|
+
q,
|
|
132
|
+
C,
|
|
133
|
+
D
|
|
134
|
+
);
|
|
135
|
+
else {
|
|
136
|
+
if (s !== HtmlMessage.es && s !== InAppMessage.es.cn)
|
|
137
|
+
return void r.D.error("Ignoring message with unknown type " + s);
|
|
138
|
+
{
|
|
139
|
+
const s = e.message_fields;
|
|
140
|
+
(B = new HtmlMessage(o, n, t, a, d, M, q, y, C, D, s)),
|
|
141
|
+
(B.trusted = e.trusted || !1);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return (B.un = s), B;
|
|
145
|
+
}
|
|
@@ -1 +1,16 @@
|
|
|
1
|
-
import ge from"./in-app-message-manager.js";
|
|
1
|
+
import ge from "./in-app-message-manager.js";
|
|
2
|
+
import e from "../managers/braze-instance.js";
|
|
3
|
+
const pe = {
|
|
4
|
+
Oe: null,
|
|
5
|
+
t: !1,
|
|
6
|
+
m: () => (
|
|
7
|
+
pe.o(), pe.Oe || (pe.Oe = new ge(e.nr(), e.g(), e.l(), e.p())), pe.Oe
|
|
8
|
+
),
|
|
9
|
+
o: () => {
|
|
10
|
+
pe.t || (e.u(pe), (pe.t = !0));
|
|
11
|
+
},
|
|
12
|
+
destroy: () => {
|
|
13
|
+
(pe.Oe = null), (pe.t = !1);
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
export default pe;
|
|
@@ -1 +1,189 @@
|
|
|
1
|
-
import b from"../util/net.js";
|
|
1
|
+
import b from "../util/net.js";
|
|
2
|
+
import e from "../managers/braze-instance.js";
|
|
3
|
+
import ControlMessage from "./models/control-message.js";
|
|
4
|
+
import HtmlMessage from "./models/html-message.js";
|
|
5
|
+
import InAppMessage from "./models/in-app-message.js";
|
|
6
|
+
import InAppMessageButton from "./models/in-app-message-button.js";
|
|
7
|
+
import s from "../common/event-logger.js";
|
|
8
|
+
import { newInAppMessageFromJson as lt } from "./in-app-message-factory.js";
|
|
9
|
+
import { randomInclusive as pt } from "../util/math.js";
|
|
10
|
+
import t from "../models/request-result.js";
|
|
11
|
+
import r from "../../shared-lib/braze-shared-lib.js";
|
|
12
|
+
import u from "../managers/subscription-manager.js";
|
|
13
|
+
import mt from "../triggers/models/trigger.js";
|
|
14
|
+
import { validateValueIsFromEnum as F } from "../util/code-utils.js";
|
|
15
|
+
import { BRAZE_ACTION_URI_REGEX as O } from "../util/validation-utils.js";
|
|
16
|
+
import {
|
|
17
|
+
containsPushPrimerBrazeAction as gt,
|
|
18
|
+
containsUnknownBrazeAction as ct,
|
|
19
|
+
getDecodedBrazeAction as J,
|
|
20
|
+
ineligibleBrazeActionURLErrorMessage as ht,
|
|
21
|
+
INELIGIBLE_BRAZE_ACTION_URL_ERROR_TYPES as ft
|
|
22
|
+
} from "../util/braze-actions.js";
|
|
23
|
+
import dt from "../Push/utils/push-utils.js";
|
|
24
|
+
export default class ge {
|
|
25
|
+
constructor(t, s, i, r) {
|
|
26
|
+
(this.vt = t),
|
|
27
|
+
(this.j = s),
|
|
28
|
+
(this.h = i),
|
|
29
|
+
(this.v = r),
|
|
30
|
+
(this.Pe = new u()),
|
|
31
|
+
e.jt(this.Pe),
|
|
32
|
+
(this.Qe = 1e3),
|
|
33
|
+
(this.Ue = 6e4);
|
|
34
|
+
}
|
|
35
|
+
Ve() {
|
|
36
|
+
return this.Pe;
|
|
37
|
+
}
|
|
38
|
+
We(t) {
|
|
39
|
+
return this.Pe.ut(t);
|
|
40
|
+
}
|
|
41
|
+
Xe() {
|
|
42
|
+
return this.Ye;
|
|
43
|
+
}
|
|
44
|
+
Ze(t) {
|
|
45
|
+
this.Ye = t;
|
|
46
|
+
}
|
|
47
|
+
ni(e, i) {
|
|
48
|
+
if (
|
|
49
|
+
!F(
|
|
50
|
+
InAppMessage.li,
|
|
51
|
+
i,
|
|
52
|
+
`${i} is not a valid in-app message display failure`,
|
|
53
|
+
"InAppMessage.DisplayFailures"
|
|
54
|
+
)
|
|
55
|
+
)
|
|
56
|
+
return new t();
|
|
57
|
+
const n = { trigger_ids: [e], error_code: i };
|
|
58
|
+
return s.G(r.A.ui, n);
|
|
59
|
+
}
|
|
60
|
+
G(e, i, n, o) {
|
|
61
|
+
const a = new t();
|
|
62
|
+
let l;
|
|
63
|
+
if (e instanceof ControlMessage) l = { trigger_ids: [e.triggerId] };
|
|
64
|
+
else {
|
|
65
|
+
if (i === r.A.pi || (e instanceof HtmlMessage && i === r.A.mi)) {
|
|
66
|
+
if (!e.k(o))
|
|
67
|
+
return (
|
|
68
|
+
r.D.info(
|
|
69
|
+
"This in-app message has already received a click. Ignoring analytics event."
|
|
70
|
+
),
|
|
71
|
+
a
|
|
72
|
+
);
|
|
73
|
+
} else if (i === r.A.gi) {
|
|
74
|
+
if (!e.R())
|
|
75
|
+
return (
|
|
76
|
+
r.D.info(
|
|
77
|
+
"This in-app message has already received an impression. Ignoring analytics event."
|
|
78
|
+
),
|
|
79
|
+
a
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
l = this.ci(e);
|
|
83
|
+
}
|
|
84
|
+
return null == l ? a : (null != n && (l.bid = n), s.G(i, l));
|
|
85
|
+
}
|
|
86
|
+
fi(e, i) {
|
|
87
|
+
const n = new t();
|
|
88
|
+
if (!e.k())
|
|
89
|
+
return (
|
|
90
|
+
r.D.info(
|
|
91
|
+
"This in-app message button has already received a click. Ignoring analytics event."
|
|
92
|
+
),
|
|
93
|
+
n
|
|
94
|
+
);
|
|
95
|
+
const o = this.ci(i);
|
|
96
|
+
return null == o
|
|
97
|
+
? n
|
|
98
|
+
: e.id === InAppMessageButton.di
|
|
99
|
+
? (r.D.info(
|
|
100
|
+
"This in-app message button does not have a tracking id. Not logging event to Braze servers."
|
|
101
|
+
),
|
|
102
|
+
n)
|
|
103
|
+
: (null != e.id && (o.bid = e.id), s.G(r.A.mi, o));
|
|
104
|
+
}
|
|
105
|
+
vi(t) {
|
|
106
|
+
if (!(t instanceof InAppMessage)) return;
|
|
107
|
+
const s = t => {
|
|
108
|
+
const s = J(t);
|
|
109
|
+
return ct(s)
|
|
110
|
+
? ht(ft.yi, "In-App Message")
|
|
111
|
+
: gt(s) && !dt.ji()
|
|
112
|
+
? ht(ft.bi, "In-App Message")
|
|
113
|
+
: void 0;
|
|
114
|
+
},
|
|
115
|
+
e = t.buttons;
|
|
116
|
+
let i;
|
|
117
|
+
for (const t of e)
|
|
118
|
+
if (
|
|
119
|
+
t.clickAction === InAppMessage.ClickAction.URI &&
|
|
120
|
+
O.test(t.uri) &&
|
|
121
|
+
((i = s(t.uri)), i)
|
|
122
|
+
)
|
|
123
|
+
return i;
|
|
124
|
+
return t.clickAction === InAppMessage.ClickAction.URI && O.test(t.uri)
|
|
125
|
+
? s(t.uri)
|
|
126
|
+
: void 0;
|
|
127
|
+
}
|
|
128
|
+
Ii(t, s, e, i) {
|
|
129
|
+
let n = this.vt.Ai(!1, !1);
|
|
130
|
+
(n = this.vt.Ps(n)),
|
|
131
|
+
(n.template = { trigger_id: t.triggerId, trigger_event_type: s }),
|
|
132
|
+
null != e && (n.template.data = e.Mi());
|
|
133
|
+
const o = this.vt.Bs(n);
|
|
134
|
+
this.vt.Gs(n, () => {
|
|
135
|
+
b.Hs({
|
|
136
|
+
url: `${this.vt.Ks()}/template/`,
|
|
137
|
+
data: n,
|
|
138
|
+
headers: o,
|
|
139
|
+
S: async s => {
|
|
140
|
+
if (!this.vt.Os(n, s, o))
|
|
141
|
+
return (
|
|
142
|
+
this.ni(t.triggerId, InAppMessage.li.zi),
|
|
143
|
+
void ("function" == typeof t.Di && t.Di())
|
|
144
|
+
);
|
|
145
|
+
if ((this.vt.Qs(), null == s || null == s.templated_message))
|
|
146
|
+
return void this.ni(t.triggerId, InAppMessage.li.zi);
|
|
147
|
+
const e = s.templated_message;
|
|
148
|
+
if (e.type !== mt._i.Ti)
|
|
149
|
+
return void this.ni(t.triggerId, InAppMessage.li.ki);
|
|
150
|
+
const i = lt(e.data);
|
|
151
|
+
if (null == i) return void this.ni(t.triggerId, InAppMessage.li.ki);
|
|
152
|
+
let a = this.vi(i);
|
|
153
|
+
if (a)
|
|
154
|
+
return r.D.error(a), void ("function" == typeof t.Di && t.Di());
|
|
155
|
+
"function" == typeof t.wi
|
|
156
|
+
? t.wi(i)
|
|
157
|
+
: this.ni(t.triggerId, InAppMessage.li.zi);
|
|
158
|
+
},
|
|
159
|
+
error: r => {
|
|
160
|
+
let n = `getting user personalization for message ${t.triggerId}`;
|
|
161
|
+
if (new Date().valueOf() - t.Si > t.$i)
|
|
162
|
+
this.ni(t.triggerId, InAppMessage.li.zi);
|
|
163
|
+
else {
|
|
164
|
+
const r = Math.min(t.$i, this.Ue),
|
|
165
|
+
o = this.Qe;
|
|
166
|
+
null == i && (i = o);
|
|
167
|
+
const a = Math.min(r, pt(o, 3 * i));
|
|
168
|
+
(n += `. Retrying in ${a} ms`),
|
|
169
|
+
setTimeout(() => {
|
|
170
|
+
this.Ii(t, s, e, a);
|
|
171
|
+
}, a);
|
|
172
|
+
}
|
|
173
|
+
this.vt.Vs(r, n);
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
ci(t) {
|
|
179
|
+
if (null == t.triggerId)
|
|
180
|
+
return (
|
|
181
|
+
r.D.info(
|
|
182
|
+
"The in-app message has no analytics id. Not logging event to Braze servers."
|
|
183
|
+
),
|
|
184
|
+
null
|
|
185
|
+
);
|
|
186
|
+
const s = {};
|
|
187
|
+
return null != t.triggerId && (s.trigger_ids = [t.triggerId]), s;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
@@ -1 +1,14 @@
|
|
|
1
|
-
export
|
|
1
|
+
export { default as InAppMessage } from "./models/in-app-message.js";
|
|
2
|
+
export { default as InAppMessageButton } from "./models/in-app-message-button.js";
|
|
3
|
+
export { default as ControlMessage } from "./models/control-message.js";
|
|
4
|
+
export { default as FullScreenMessage } from "./models/full-screen-message.js";
|
|
5
|
+
export { default as HtmlMessage } from "./models/html-message.js";
|
|
6
|
+
export { default as ModalMessage } from "./models/modal-message.js";
|
|
7
|
+
export { default as SlideUpMessage } from "./models/slide-up-message.js";
|
|
8
|
+
export { automaticallyShowInAppMessages } from "./ui/automatically-show-in-app-messages.js";
|
|
9
|
+
export { logInAppMessageButtonClick } from "./log-in-app-message-button-click.js";
|
|
10
|
+
export { logInAppMessageClick } from "./log-in-app-message-click.js";
|
|
11
|
+
export { logInAppMessageHtmlClick } from "./log-in-app-message-html-click.js";
|
|
12
|
+
export { logInAppMessageImpression } from "./log-in-app-message-impression.js";
|
|
13
|
+
export { showInAppMessage } from "./ui/show-in-app-message.js";
|
|
14
|
+
export { subscribeToInAppMessage } from "./subscribe-to-in-app-message.js";
|
|
@@ -1 +1,19 @@
|
|
|
1
|
-
import e from"../managers/braze-instance.js";
|
|
1
|
+
import e from "../managers/braze-instance.js";
|
|
2
|
+
import { MUST_BE_IN_APP_MESSAGE_WARNING as or } from "../common/constants.js";
|
|
3
|
+
import InAppMessage from "./models/in-app-message.js";
|
|
4
|
+
import InAppMessageButton from "./models/in-app-message-button.js";
|
|
5
|
+
import pe from "./in-app-message-manager-factory.js";
|
|
6
|
+
import r from "../../shared-lib/braze-shared-lib.js";
|
|
7
|
+
import V from "../triggers/models/trigger-events.js";
|
|
8
|
+
import { TriggersProviderFactory as W } from "../triggers/triggers-provider-factory.js";
|
|
9
|
+
export function logInAppMessageButtonClick(t, o) {
|
|
10
|
+
if (!e.rr()) return !1;
|
|
11
|
+
if (!(t instanceof InAppMessageButton))
|
|
12
|
+
return r.D.error("button must be an InAppMessageButton object"), !1;
|
|
13
|
+
if (!(o instanceof InAppMessage)) return r.D.error(or), !1;
|
|
14
|
+
const s = pe.m().fi(t, o);
|
|
15
|
+
if (s.S)
|
|
16
|
+
for (let r = 0; r < s.ve.length; r++)
|
|
17
|
+
W.er().je(V.Ar, [o.triggerId, t.id], s.ve[r]);
|
|
18
|
+
return s.S;
|
|
19
|
+
}
|
|
@@ -1 +1,16 @@
|
|
|
1
|
-
import e from"../managers/braze-instance.js";
|
|
1
|
+
import e from "../managers/braze-instance.js";
|
|
2
|
+
import InAppMessage from "./models/in-app-message.js";
|
|
3
|
+
import pe from "./in-app-message-manager-factory.js";
|
|
4
|
+
import { MUST_BE_IN_APP_MESSAGE_WARNING as or } from "../common/constants.js";
|
|
5
|
+
import r from "../../shared-lib/braze-shared-lib.js";
|
|
6
|
+
import V from "../triggers/models/trigger-events.js";
|
|
7
|
+
import { TriggersProviderFactory as W } from "../triggers/triggers-provider-factory.js";
|
|
8
|
+
export function logInAppMessageClick(o) {
|
|
9
|
+
if (!e.rr()) return !1;
|
|
10
|
+
if (!(o instanceof InAppMessage)) return r.D.error(or), !1;
|
|
11
|
+
const s = pe.m().G(o, r.A.pi);
|
|
12
|
+
if (s)
|
|
13
|
+
for (let r = 0; r < s.ve.length; r++)
|
|
14
|
+
W.er().je(V.Ar, [o.triggerId], s.ve[r]);
|
|
15
|
+
return s.S;
|
|
16
|
+
}
|