Skip to content

Commit 9a4c299

Browse files
committed
v13.0.0
1 parent b4a5cca commit 9a4c299

File tree

8 files changed

+107
-23
lines changed

8 files changed

+107
-23
lines changed

build/index.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

demo/main.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Gleap.setWSApiUrl("ws://0.0.0.0:8080");
66

77
// Gleap.setLanguage("en");
88

9-
Gleap.initialize("ogWhNhuiZcGWrva5nlDS8l7a78OfaLlV");
9+
Gleap.initialize("X5C0grjFCjUMbZKi131MjZLaGRwg2iKH");
1010

1111
/*Gleap.setUrlHandler((url, newTab) => {
1212
alert("URL: " + url + " newTab: " + newTab);

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "gleap",
3-
"version": "12.8.1",
3+
"version": "13.0.0",
44
"main": "build/index.js",
55
"scripts": {
66
"start": "NODE_OPTIONS=--openssl-legacy-provider webpack serve",

published/13.0.0/index.js

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

published/latest/index.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/GleapAdminManager.js

Lines changed: 81 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
1-
21
export default class GleapAdminManager {
32
libraryInstance = null;
43
lastUrl = undefined;
4+
injectedFrame = false;
5+
gleapFrameContainer = null;
6+
gleapFrame = null;
7+
configData = null;
8+
status = "navigate";
59

610
// GleapAdminManager singleton
711
static instance;
@@ -17,7 +21,7 @@ export default class GleapAdminManager {
1721
if (currentUrl && currentUrl !== this.lastUrl) {
1822
this.lastUrl = currentUrl;
1923

20-
this.sendMessage({
24+
this.sendMessageToTourBuilder({
2125
name: "page-changed",
2226
data: {
2327
page: currentUrl,
@@ -60,43 +64,77 @@ export default class GleapAdminManager {
6064
self.libraryInstance = new window.GleapHelper.default();
6165
if (self.libraryInstance) {
6266
self.libraryInstance.onElementPicked = (selector) => {
63-
self.sendMessage({
67+
self.sendMessageToTourBuilder({
6468
name: "element-picked",
6569
data: {
6670
selector
6771
}
6872
});
6973
};
74+
75+
self.injectFrame();
76+
self.setFrameHeight("loading");
7077
}
7178
}
7279
});
7380
}
7481

82+
setFrameHeight(state) {
83+
if (this.gleapFrameContainer) {
84+
var height = "";
85+
if (state === "picker" || state === "navigate") {
86+
height = "65px";
87+
} else if (state === "editor") {
88+
height = "100vh";
89+
} else {
90+
height = "0px";
91+
}
92+
this.gleapFrameContainer.style.height = height;
93+
}
94+
}
95+
7596
start() {
7697
var self = this;
7798

7899
// Add window message listener.
79100
window.addEventListener("message", (event) => {
80-
if (!event.origin || !(event.origin === "https://app.gleap.io" || event.origin.startsWith("http://localhost"))) {
101+
if (!event.origin || !event.origin === "https://app.gleap.io") {
81102
return;
82103
}
83104

84105
try {
85106
const data = JSON.parse(event.data);
86-
if (data.type !== "admin") {
87-
return;
107+
if (data.type === "admin") {
108+
if (data.name === "load") {
109+
self.configData = data.data;
110+
self.loadAdminScript();
111+
}
88112
}
89113

90-
if (data.name === "load") {
91-
self.loadAdminScript();
92-
}
114+
if (data.type === "tourbuilder") {
115+
if (data.name === "loaddata") {
116+
this.sendMessageToTourBuilder({
117+
name: "data",
118+
data: self.configData,
119+
});
120+
}
93121

94-
if (data.name === "pick") {
95-
self.libraryInstance.startPicker();
96-
}
122+
if (data.name === "save") {
123+
this.sendMessage({
124+
name: "save",
125+
data: data.data,
126+
});
127+
}
97128

98-
if (data.name === "navigate") {
99-
self.libraryInstance.stopPicker();
129+
if (data.name === "status-changed") {
130+
self.status = data.data;
131+
this.setFrameHeight(self.status);
132+
self.libraryInstance.stopPicker();
133+
134+
if (self.status === "picker") {
135+
self.libraryInstance.startPicker();
136+
}
137+
}
100138
}
101139
} catch (exp) { }
102140
});
@@ -110,13 +148,40 @@ export default class GleapAdminManager {
110148

111149
sendMessage(data) {
112150
try {
113-
if (window && window.parent) {
114-
window.parent.postMessage(JSON.stringify({
151+
if (window && window.opener) {
152+
window.opener.postMessage(JSON.stringify({
115153
...data,
116154
type: "admin"
117155
}), "*");
118156
}
119157
} catch (e) { }
120158
}
121159

160+
sendMessageToTourBuilder(data) {
161+
try {
162+
if (this.gleapFrame && this.gleapFrame.contentWindow) {
163+
this.gleapFrame.contentWindow.postMessage(JSON.stringify({
164+
...data,
165+
type: "tourbuilder"
166+
}), "*");
167+
}
168+
} catch (e) { }
169+
}
170+
171+
injectFrame = () => {
172+
if (this.injectedFrame) {
173+
return;
174+
}
175+
this.injectedFrame = true;
176+
177+
// Inject widget HTML.
178+
var elem = document.createElement("div");
179+
elem.className =
180+
"gleap-admin-frame-container";
181+
elem.innerHTML = `<iframe src="https://app.gleap.io/producttourbuilder" class="gleap-admin-frame" scrolling="no" title="Gleap Admin Window" allow="autoplay; encrypted-media; fullscreen;" frameborder="0"></iframe>`;
182+
document.body.appendChild(elem);
183+
184+
this.gleapFrameContainer = elem;
185+
this.gleapFrame = document.querySelector(".gleap-admin-frame");
186+
};
122187
}

src/GleapProductTours.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,11 @@ export default class GleapProductTours {
5454
</div>`;
5555
} else {
5656
var senderHTML = ``;
57-
if (step.sender && step.sender.name) {
57+
58+
if (config.sender && config.sender.firstName) {
5859
senderHTML = `<div class="gleap-tour-sender">
59-
<div class="gleap-tour-sender-image" style="background-image: url('${step.sender.profileImageUrl}');"></div>
60-
<div class="gleap-tour-sender-name">${step.sender.name}</div>
60+
<div class="gleap-tour-sender-image" style="background-image: url('${config.sender.profileImageUrl}');"></div>
61+
<div class="gleap-tour-sender-name">${config.sender.firstName}</div>
6162
</div>`;
6263
}
6364

src/UI.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1678,6 +1678,23 @@ export const injectStyledCSS = (
16781678
display: block;
16791679
border-radius: 8px;
16801680
}
1681+
1682+
.gleap-admin-frame-container {
1683+
position: fixed;
1684+
bottom: 0px;
1685+
left: 0px;
1686+
right: 0px;
1687+
width: 100vw;
1688+
z-index: 2147483730;
1689+
}
1690+
1691+
.gleap-admin-frame {
1692+
width: 100%;
1693+
height: 100%;
1694+
border: none;
1695+
outline: none;
1696+
display: block;
1697+
}
16811698
16821699
.gleap-tour-message .linktype-link {
16831700
display: inline-block !important;

0 commit comments

Comments
 (0)