@braze/web-sdk 5.1.1 → 5.3.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 +65 -10
- package/package.json +1 -1
- package/shared-lib/encoding-utils.js +1 -1
- package/shared-lib/event-types.js +20 -20
- package/shared-lib/indexed-db-adapter.js +52 -52
- package/shared-lib/logger.js +7 -7
- package/shared-lib/supported-options.js +22 -21
- package/src/ContentCards/content-cards-provider.js +107 -135
- package/src/ContentCards/get-cached-content-cards.js +1 -1
- package/src/ContentCards/request-content-cards-refresh.js +1 -1
- package/src/ContentCards/subscribe-to-content-cards-updates.js +2 -2
- package/src/ContentCards/ui/show-content-cards.js +1 -1
- package/src/FeatureFlags/feature-flag.js +41 -30
- package/src/FeatureFlags/feature-flags-provider.js +88 -84
- package/src/FeatureFlags/get-all-feature-flags.js +2 -2
- package/src/FeatureFlags/get-feature-flag.js +2 -2
- package/src/FeatureFlags/log-feature-flag-impression.js +3 -3
- package/src/FeatureFlags/subscribe-to-feature-flags-updates.js +2 -2
- package/src/Feed/feed-provider.js +24 -24
- package/src/Feed/get-cached-feed.js +1 -1
- package/src/Feed/log-feed-displayed.js +1 -1
- package/src/Feed/request-feed-refresh.js +1 -1
- package/src/Feed/subscribe-to-feed-updates.js +1 -1
- package/src/Feed/ui/show-feed.js +1 -1
- package/src/InAppMessage/defer-in-app-message.js +1 -1
- package/src/InAppMessage/display/html-message-to-html.js +45 -42
- package/src/InAppMessage/display/in-app-message-to-html.js +22 -22
- package/src/InAppMessage/display/modal-utils.js +7 -7
- package/src/InAppMessage/get-deferred-in-app-message.js +1 -1
- package/src/InAppMessage/in-app-message-factory.js +23 -21
- package/src/InAppMessage/in-app-message-manager.js +95 -112
- package/src/InAppMessage/log-in-app-message-button-click.js +2 -2
- package/src/InAppMessage/log-in-app-message-click.js +3 -3
- package/src/InAppMessage/log-in-app-message-html-click.js +3 -3
- package/src/InAppMessage/log-in-app-message-impression.js +1 -1
- package/src/InAppMessage/models/control-message.js +4 -2
- package/src/InAppMessage/models/full-screen-message.js +14 -11
- package/src/InAppMessage/models/html-message.js +11 -9
- package/src/InAppMessage/models/in-app-message-button.js +2 -2
- package/src/InAppMessage/models/in-app-message.js +127 -120
- package/src/InAppMessage/models/modal-message.js +14 -11
- package/src/InAppMessage/models/slide-up-message.js +46 -21
- package/src/InAppMessage/models/templated-in-app-message.js +8 -8
- package/src/InAppMessage/subscribe-to-in-app-message.js +1 -1
- package/src/InAppMessage/ui/automatically-show-in-app-messages.js +3 -3
- package/src/InAppMessage/ui/show-in-app-message.js +37 -43
- package/src/InAppMessage/utils/in-app-message-utils.js +18 -1
- package/src/Push/push-manager-factory.js +4 -4
- package/src/Push/push-manager.js +118 -110
- package/src/Push/utils/push-utils.js +4 -4
- package/src/User/user-manager.js +4 -4
- package/src/User/user.js +19 -19
- package/src/common/base-feed.js +1 -1
- package/src/common/base-provider.js +1 -1
- package/src/common/constants.js +0 -2
- package/src/common/event-logger.js +2 -2
- package/src/common/feed-display.js +12 -12
- package/src/l10n/l10n-manager-factory.js +1 -1
- package/src/l10n/l10n-manager.js +4 -4
- package/src/managers/auth-manager.js +27 -27
- package/src/managers/braze-instance.js +119 -112
- package/src/managers/device-manager.js +19 -19
- package/src/managers/network-manager.js +215 -165
- package/src/managers/server-config-manager.js +46 -50
- package/src/managers/session-manager.js +21 -21
- package/src/managers/storage-manager-factory.js +1 -1
- package/src/managers/storage-manager.js +128 -125
- package/src/managers/utils.js +6 -0
- package/src/models/backend-errors.js +5 -5
- package/src/models/braze-event.js +19 -11
- package/src/models/device.js +3 -3
- package/src/models/identifier.js +34 -20
- package/src/models/push-token.js +4 -4
- package/src/models/server-config.js +24 -24
- package/src/request-controller.js +134 -124
- package/src/triggers/models/filter-set.js +2 -2
- package/src/triggers/models/filter.js +56 -56
- package/src/triggers/models/in-app-message-click-data.js +8 -8
- package/src/triggers/models/push-click-data.js +3 -3
- package/src/triggers/models/trigger-condition.js +30 -30
- package/src/triggers/models/trigger-events.js +1 -1
- package/src/triggers/models/trigger.js +36 -36
- package/src/triggers/triggers-provider-factory.js +2 -2
- package/src/triggers/triggers-provider.js +84 -95
- package/src/ui/js/attach-css.js +2 -2
- package/src/ui/js/load-font-awesome.js +1 -1
- package/src/util/base-device-parser.js +7 -7
- package/src/util/braze-actions.js +4 -4
- package/src/util/browser-detector.js +25 -24
- package/src/util/client-hints-parser.js +4 -4
- package/src/util/component-utils.js +2 -2
- package/src/util/device-constants.js +2 -2
- package/src/util/dom-utils.js +6 -6
- package/src/util/key-codes.js +1 -1
- package/src/util/net.js +4 -4
- package/src/util/request-header-utils.js +36 -37
- package/src/util/user-agent-parser.js +8 -8
- package/src/util/validation-utils.js +2 -0
- package/src/util/window-utils.js +3 -3
|
@@ -1,9 +1,32 @@
|
|
|
1
1
|
import InAppMessage from "./in-app-message.js";
|
|
2
2
|
import { DOMUtils as de } from "../../util/dom-utils.js";
|
|
3
3
|
export default class SlideUpMessage extends InAppMessage {
|
|
4
|
-
constructor(
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
constructor(
|
|
5
|
+
e,
|
|
6
|
+
t,
|
|
7
|
+
s,
|
|
8
|
+
o,
|
|
9
|
+
i,
|
|
10
|
+
r,
|
|
11
|
+
n,
|
|
12
|
+
d,
|
|
13
|
+
a,
|
|
14
|
+
u,
|
|
15
|
+
p,
|
|
16
|
+
m,
|
|
17
|
+
c,
|
|
18
|
+
l,
|
|
19
|
+
v,
|
|
20
|
+
x,
|
|
21
|
+
f,
|
|
22
|
+
h,
|
|
23
|
+
g,
|
|
24
|
+
I,
|
|
25
|
+
M,
|
|
26
|
+
b,
|
|
27
|
+
) {
|
|
28
|
+
(x = x || InAppMessage.th.Dh),
|
|
29
|
+
(v = v || InAppMessage.th.Mh),
|
|
7
30
|
super(
|
|
8
31
|
e,
|
|
9
32
|
(t = t || InAppMessage.TextAlignment.START),
|
|
@@ -34,51 +57,53 @@ export default class SlideUpMessage extends InAppMessage {
|
|
|
34
57
|
void 0,
|
|
35
58
|
I,
|
|
36
59
|
M,
|
|
60
|
+
b,
|
|
37
61
|
),
|
|
38
|
-
(this
|
|
62
|
+
(this.De = InAppMessage.TextAlignment.START);
|
|
39
63
|
}
|
|
40
|
-
|
|
64
|
+
ze() {
|
|
41
65
|
return !1;
|
|
42
66
|
}
|
|
43
|
-
|
|
67
|
+
Je() {
|
|
44
68
|
const e = document.createElement("span");
|
|
45
69
|
return e.appendChild(document.createTextNode(this.message || "")), e;
|
|
46
70
|
}
|
|
47
|
-
|
|
71
|
+
Oh(e) {
|
|
48
72
|
const t = e.getElementsByClassName("ab-in-app-message")[0];
|
|
49
|
-
de.
|
|
73
|
+
de.po(t, !0, !0) ||
|
|
50
74
|
(this.slideFrom === InAppMessage.SlideFrom.TOP
|
|
51
75
|
? (t.style.top = "0px")
|
|
52
76
|
: (t.style.bottom = "0px")),
|
|
53
|
-
super.
|
|
77
|
+
super.Oh(e);
|
|
54
78
|
}
|
|
55
79
|
Y() {
|
|
56
80
|
return super.Y(SlideUpMessage.it);
|
|
57
81
|
}
|
|
58
|
-
static
|
|
82
|
+
static Xr(e) {
|
|
59
83
|
return new SlideUpMessage(
|
|
84
|
+
e[InAppMessage.tt.Vr],
|
|
85
|
+
e[InAppMessage.tt.Wr],
|
|
86
|
+
e[InAppMessage.tt.Rh],
|
|
87
|
+
e[InAppMessage.tt.bt],
|
|
88
|
+
e[InAppMessage.tt.Yr],
|
|
89
|
+
e[InAppMessage.tt.Zr],
|
|
90
|
+
e[InAppMessage.tt.URI],
|
|
60
91
|
e[InAppMessage.tt.ea],
|
|
61
92
|
e[InAppMessage.tt.ra],
|
|
62
|
-
e[InAppMessage.tt.Sh],
|
|
63
|
-
e[InAppMessage.tt.bt],
|
|
64
93
|
e[InAppMessage.tt.sa],
|
|
65
94
|
e[InAppMessage.tt.ta],
|
|
66
|
-
e[InAppMessage.tt.
|
|
67
|
-
e[InAppMessage.tt.ia],
|
|
95
|
+
e[InAppMessage.tt.ot],
|
|
68
96
|
e[InAppMessage.tt.aa],
|
|
69
97
|
e[InAppMessage.tt.oa],
|
|
70
98
|
e[InAppMessage.tt.pa],
|
|
71
|
-
e[InAppMessage.tt.
|
|
99
|
+
e[InAppMessage.tt.ma],
|
|
72
100
|
e[InAppMessage.tt.na],
|
|
73
101
|
e[InAppMessage.tt.ua],
|
|
74
102
|
e[InAppMessage.tt.ca],
|
|
75
|
-
e[InAppMessage.tt.
|
|
76
|
-
e[InAppMessage.tt.da],
|
|
77
|
-
e[InAppMessage.tt.la],
|
|
78
|
-
e[InAppMessage.tt.ga],
|
|
79
|
-
e[InAppMessage.tt.Sa],
|
|
103
|
+
e[InAppMessage.tt.ha],
|
|
80
104
|
e[InAppMessage.tt.CSS],
|
|
105
|
+
e[InAppMessage.tt.va],
|
|
81
106
|
);
|
|
82
107
|
}
|
|
83
108
|
}
|
|
84
|
-
SlideUpMessage.it = InAppMessage.
|
|
109
|
+
SlideUpMessage.it = InAppMessage.qe.Kr;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
export default class wt {
|
|
2
2
|
constructor(t, s, i, h, l) {
|
|
3
3
|
(this.triggerId = t),
|
|
4
|
-
(this.
|
|
5
|
-
(this.
|
|
6
|
-
(this.
|
|
7
|
-
(this.
|
|
4
|
+
(this.Er = s),
|
|
5
|
+
(this.Tr = i),
|
|
6
|
+
(this.Gr = h),
|
|
7
|
+
(this.Nr = l),
|
|
8
8
|
(this.triggerId = t),
|
|
9
|
-
(this.
|
|
10
|
-
(this.
|
|
11
|
-
(this.
|
|
12
|
-
(this.
|
|
9
|
+
(this.Er = s),
|
|
10
|
+
(this.Tr = i),
|
|
11
|
+
(this.Gr = h),
|
|
12
|
+
(this.Nr = l);
|
|
13
13
|
}
|
|
14
14
|
static fromJson(t, s, i, h, l) {
|
|
15
15
|
return null == t || null == t.trigger_id
|
|
@@ -7,9 +7,9 @@ export function automaticallyShowInAppMessages() {
|
|
|
7
7
|
if (!e.X()) return;
|
|
8
8
|
ss();
|
|
9
9
|
const s = se.m();
|
|
10
|
-
if (null == s.
|
|
10
|
+
if (null == s.Pi()) {
|
|
11
11
|
const r = subscribeToInAppMessage((s) => showInAppMessage(s));
|
|
12
|
-
s
|
|
12
|
+
s.$i(r);
|
|
13
13
|
}
|
|
14
|
-
return s.
|
|
14
|
+
return s.Pi();
|
|
15
15
|
}
|
|
@@ -3,7 +3,6 @@ import ControlMessage from "../models/control-message.js";
|
|
|
3
3
|
import HtmlMessage from "../models/html-message.js";
|
|
4
4
|
import InAppMessage from "../models/in-app-message.js";
|
|
5
5
|
import SlideUpMessage from "../models/slide-up-message.js";
|
|
6
|
-
import se from "../in-app-message-manager-factory.js";
|
|
7
6
|
import me from "../display/get-animation-effect.js";
|
|
8
7
|
import ce from "../display/in-app-message-to-html.js";
|
|
9
8
|
import { logInAppMessageImpression } from "../log-in-app-message-impression.js";
|
|
@@ -11,8 +10,8 @@ import {
|
|
|
11
10
|
ORIENTATION as fe,
|
|
12
11
|
WindowUtils as eo,
|
|
13
12
|
} from "../../util/window-utils.js";
|
|
14
|
-
import { isURIJavascriptOrData as
|
|
15
|
-
import { KeyCodes as
|
|
13
|
+
import { isURIJavascriptOrData as R } from "../../util/url-utils.js";
|
|
14
|
+
import { KeyCodes as lt } from "../../util/key-codes.js";
|
|
16
15
|
import { setupInAppMessageUI as ss } from "../../ui/js/index.js";
|
|
17
16
|
import { logger as r } from "../../../shared-lib/index.js";
|
|
18
17
|
import { toRgba as ie } from "../../util/color-utils.js";
|
|
@@ -31,29 +30,26 @@ export function showInAppMessage(t, s, o) {
|
|
|
31
30
|
);
|
|
32
31
|
if (!(t instanceof InAppMessage)) return !1;
|
|
33
32
|
if (t.constructor === InAppMessage) return !1;
|
|
34
|
-
const i = se.m();
|
|
35
33
|
t.Nh();
|
|
36
|
-
const
|
|
37
|
-
if (
|
|
34
|
+
const i = t instanceof HtmlMessage;
|
|
35
|
+
if (i && !t.trusted && !e.tr())
|
|
38
36
|
return (
|
|
39
37
|
r.error(
|
|
40
38
|
'HTML in-app messages are disabled. Use the "allowUserSuppliedJavascript" option for braze.initialize to enable these messages.',
|
|
41
39
|
),
|
|
42
|
-
i.Ve(t.triggerId, InAppMessage.Me.Ch),
|
|
43
40
|
!1
|
|
44
41
|
);
|
|
45
|
-
if ((null == s && (s = document.body), t.
|
|
42
|
+
if ((null == s && (s = document.body), t.ze())) {
|
|
46
43
|
if (s.querySelectorAll(".ab-modal-interactions").length > 0)
|
|
47
44
|
return (
|
|
48
45
|
r.info(
|
|
49
46
|
`Cannot show in-app message ${t.message} because another message is being shown.`,
|
|
50
47
|
),
|
|
51
|
-
i.Ve(t.triggerId, InAppMessage.Me.ke),
|
|
52
48
|
!1
|
|
53
49
|
);
|
|
54
50
|
}
|
|
55
|
-
if (eo.
|
|
56
|
-
const e = eo.
|
|
51
|
+
if (eo.fo()) {
|
|
52
|
+
const e = eo.co();
|
|
57
53
|
if (
|
|
58
54
|
(e === fe.PORTRAIT &&
|
|
59
55
|
t.orientation === InAppMessage.Orientation.LANDSCAPE) ||
|
|
@@ -69,7 +65,6 @@ export function showInAppMessage(t, s, o) {
|
|
|
69
65
|
r.info(
|
|
70
66
|
`Not showing ${o} in-app message ${t.message} because the screen is currently ${s}`,
|
|
71
67
|
),
|
|
72
|
-
i.Ve(t.triggerId, InAppMessage.Me.dh),
|
|
73
68
|
!1
|
|
74
69
|
);
|
|
75
70
|
}
|
|
@@ -81,35 +76,34 @@ export function showInAppMessage(t, s, o) {
|
|
|
81
76
|
for (let t = 0; t < s.length; t++)
|
|
82
77
|
if (s[t].clickAction === InAppMessage.ClickAction.URI) {
|
|
83
78
|
const o = s[t].uri;
|
|
84
|
-
e =
|
|
79
|
+
e = R(o);
|
|
85
80
|
}
|
|
86
|
-
} else t.clickAction === InAppMessage.ClickAction.URI && (e =
|
|
81
|
+
} else t.clickAction === InAppMessage.ClickAction.URI && (e = R(t.uri));
|
|
87
82
|
if (e)
|
|
88
83
|
return (
|
|
89
84
|
r.error(
|
|
90
85
|
'Javascript click actions are disabled. Use the "allowUserSuppliedJavascript" option for braze.initialize to enable these actions.',
|
|
91
86
|
),
|
|
92
|
-
i.Ve(t.triggerId, InAppMessage.Me.Ch),
|
|
93
87
|
!1
|
|
94
88
|
);
|
|
95
89
|
}
|
|
96
|
-
const
|
|
90
|
+
const n = document.createElement("div");
|
|
97
91
|
if (
|
|
98
|
-
((
|
|
99
|
-
(
|
|
100
|
-
|
|
101
|
-
t.
|
|
102
|
-
e.nn(L.
|
|
103
|
-
s.appendChild(
|
|
104
|
-
t.
|
|
92
|
+
((n.className = "ab-iam-root v3"),
|
|
93
|
+
(n.className += me(t)),
|
|
94
|
+
n.setAttribute("role", "complementary"),
|
|
95
|
+
t.xe() && (n.id = t.htmlId),
|
|
96
|
+
e.nn(L.jo) && (n.style.zIndex = (e.nn(L.jo) + 1).toString()),
|
|
97
|
+
s.appendChild(n),
|
|
98
|
+
t.Ce())
|
|
105
99
|
) {
|
|
106
100
|
const s = document.createElement("style");
|
|
107
101
|
(s.innerHTML = t.css),
|
|
108
|
-
(s.id = t.
|
|
109
|
-
null != e.nn(L.
|
|
102
|
+
(s.id = t.ve()),
|
|
103
|
+
null != e.nn(L.bo) && s.setAttribute("nonce", e.nn(L.bo)),
|
|
110
104
|
document.getElementsByTagName("head")[0].appendChild(s);
|
|
111
105
|
}
|
|
112
|
-
const
|
|
106
|
+
const a = t instanceof SlideUpMessage,
|
|
113
107
|
l = ce(
|
|
114
108
|
t,
|
|
115
109
|
() => {
|
|
@@ -118,23 +112,23 @@ export function showInAppMessage(t, s, o) {
|
|
|
118
112
|
});
|
|
119
113
|
},
|
|
120
114
|
(s) => {
|
|
121
|
-
if (t.
|
|
115
|
+
if (t.ze() && t.do()) {
|
|
122
116
|
const o = document.createElement("div");
|
|
123
117
|
if (
|
|
124
118
|
((o.className = "ab-page-blocker"),
|
|
125
|
-
t.
|
|
126
|
-
e.nn(L.
|
|
127
|
-
|
|
128
|
-
!e.nn(L.
|
|
119
|
+
t.Ce() || (o.style.backgroundColor = ie(t.frameColor)),
|
|
120
|
+
e.nn(L.jo) && (o.style.zIndex = e.nn(L.jo).toString()),
|
|
121
|
+
n.appendChild(o),
|
|
122
|
+
!e.nn(L.Lh))
|
|
129
123
|
) {
|
|
130
124
|
const e = new Date().valueOf();
|
|
131
125
|
o.onclick = (o) => {
|
|
132
|
-
new Date().valueOf() - e > InAppMessage.
|
|
133
|
-
(t.
|
|
126
|
+
new Date().valueOf() - e > InAppMessage.fh &&
|
|
127
|
+
(t.Ae(s), o.stopPropagation());
|
|
134
128
|
};
|
|
135
129
|
}
|
|
136
|
-
|
|
137
|
-
} else if (
|
|
130
|
+
n.appendChild(s), s.focus(), t.Oh(n);
|
|
131
|
+
} else if (a) {
|
|
138
132
|
const e = document.querySelectorAll(".ab-slideup");
|
|
139
133
|
let o = null;
|
|
140
134
|
for (let t = e.length - 1; t >= 0; t--)
|
|
@@ -154,28 +148,28 @@ export function showInAppMessage(t, s, o) {
|
|
|
154
148
|
o.offsetTop),
|
|
155
149
|
(s.style.bottom = Math.max(e, 0) + "px");
|
|
156
150
|
}
|
|
157
|
-
} else if (
|
|
151
|
+
} else if (i && !e.nn(L.Lh)) {
|
|
158
152
|
const e = t;
|
|
159
153
|
It(s) &&
|
|
160
154
|
s.contentWindow &&
|
|
161
155
|
s.contentWindow.addEventListener("keydown", function (t) {
|
|
162
|
-
t.keyCode ===
|
|
156
|
+
t.keyCode === lt.mh && e.closeMessage();
|
|
163
157
|
});
|
|
164
158
|
}
|
|
165
159
|
logInAppMessageImpression(t),
|
|
166
160
|
t.dismissType === InAppMessage.DismissType.AUTO_DISMISS &&
|
|
167
161
|
setTimeout(() => {
|
|
168
|
-
|
|
162
|
+
n.contains(s) && t.Ae(s);
|
|
169
163
|
}, t.duration),
|
|
170
164
|
"function" == typeof o && o();
|
|
171
165
|
},
|
|
172
|
-
(e
|
|
173
|
-
r.info(e)
|
|
166
|
+
(e) => {
|
|
167
|
+
r.info(e);
|
|
174
168
|
},
|
|
175
|
-
e.nn(L.yo),
|
|
176
169
|
e.nn(L.ho),
|
|
177
|
-
e.nn(L.
|
|
170
|
+
e.nn(L.jo),
|
|
171
|
+
e.nn(L.bo),
|
|
178
172
|
s,
|
|
179
173
|
);
|
|
180
|
-
return (
|
|
174
|
+
return (i || a) && (n.appendChild(l), t.Oh(n)), !0;
|
|
181
175
|
}
|
|
@@ -1 +1,18 @@
|
|
|
1
|
-
export const isIFrame = (
|
|
1
|
+
export const isIFrame = (o) => null !== o && "IFRAME" === o.tagName;
|
|
2
|
+
export function nodeScriptReplace(o) {
|
|
3
|
+
var n;
|
|
4
|
+
if ("SCRIPT" === o.tagName)
|
|
5
|
+
null === (n = o.parentNode) ||
|
|
6
|
+
void 0 === n ||
|
|
7
|
+
n.replaceChild(
|
|
8
|
+
(function (o) {
|
|
9
|
+
const n = document.createElement("script");
|
|
10
|
+
n.text = o.innerHTML;
|
|
11
|
+
for (const e of o.attributes) n.setAttribute(e.name, e.value);
|
|
12
|
+
return n;
|
|
13
|
+
})(o),
|
|
14
|
+
o,
|
|
15
|
+
);
|
|
16
|
+
else for (const n of o.childNodes) nodeScriptReplace(n);
|
|
17
|
+
return o;
|
|
18
|
+
}
|