workwonders-sdk 0.0.14 → 0.1.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.
@@ -0,0 +1,31 @@
1
+ import { KyInstance } from "ky";
2
+ import { OrganizationDto } from "./types/organizationDto";
3
+ interface ChangelogInitArgs {
4
+ ky: KyInstance;
5
+ widgetBaseUrl: string;
6
+ token?: string;
7
+ locale?: string;
8
+ organizationData: OrganizationDto;
9
+ }
10
+ export declare class ChangelogModule {
11
+ private $changelogContainer;
12
+ private $changelogIframe;
13
+ private $changelogMiniContainer;
14
+ private readonly args;
15
+ private contextBasedChangelogs;
16
+ constructor(args: ChangelogInitArgs);
17
+ cleanup(): void;
18
+ initChangelogWidget: () => Promise<void>;
19
+ showChangelogs: (changelogIdsToShow: number[]) => void;
20
+ initChangelogWidgetMini: () => void;
21
+ openChangelogWidget: (id?: string) => void;
22
+ openChangelogMiniWidget: () => void;
23
+ closeChangelogWidget: () => void;
24
+ closeChangelogMiniWidget: () => void;
25
+ notifyUrlChange: () => void;
26
+ checkShowContextBasedChangelogs({ clickedElement, }: {
27
+ clickedElement?: HTMLElement;
28
+ }): void;
29
+ }
30
+ export {};
31
+ //# sourceMappingURL=changelog-module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changelog-module.d.ts","sourceRoot":"","sources":["../src/changelog-module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAKhC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG1D,UAAU,iBAAiB;IACzB,EAAE,EAAE,UAAU,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,eAAe,CAAC;CACnC;AAuED,qBAAa,eAAe;IAC1B,OAAO,CAAC,mBAAmB,CAA+B;IAC1D,OAAO,CAAC,gBAAgB,CAAkC;IAC1D,OAAO,CAAC,uBAAuB,CAA+B;IAE9D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoB;IAEzC,OAAO,CAAC,sBAAsB,CAA6B;gBAE/C,IAAI,EAAE,iBAAiB;IAInC,OAAO;IAYP,mBAAmB,sBA8FjB;IAEF,cAAc,uBAAwB,MAAM,EAAE,UA8C5C;IAEF,uBAAuB,aA2CrB;IAEF,mBAAmB,QAAS,MAAM,UAkBhC;IAEF,uBAAuB,aAMrB;IAEF,oBAAoB,aAMlB;IAEF,wBAAwB,aAMtB;IAEF,eAAe,aAEb;IAEK,+BAA+B,CAAC,EACrC,cAAc,GACf,EAAE;QACD,cAAc,CAAC,EAAE,WAAW,CAAC;KAC9B;CA0BF"}
@@ -0,0 +1,208 @@
1
+ const processContextConditions = (conditions, currentUrl, userMetadata, clickedElement) => {
2
+ const andResult = conditions.AND?.every((condition) => processContextConditions(condition, currentUrl, userMetadata, clickedElement)) ?? true;
3
+ const orResult = conditions.OR?.some((condition) => processContextConditions(condition, currentUrl, userMetadata, clickedElement)) ?? true;
4
+ const notResult = conditions.NOT
5
+ ? !processContextConditions(conditions.NOT, currentUrl, userMetadata, clickedElement)
6
+ : true;
7
+ const urlPathContainsResult = conditions.urlPathContains
8
+ ? currentUrl.includes(conditions.urlPathContains)
9
+ : true;
10
+ const onClickCssSelectorResult = conditions.onClickCssSelector
11
+ ? !!clickedElement?.closest(conditions.onClickCssSelector)
12
+ : true;
13
+ const userMetadataResult = conditions.userMetadataMatches
14
+ ? userMetadata?.[conditions.userMetadataMatches.key] ==
15
+ conditions.userMetadataMatches.value
16
+ : true;
17
+ console.log({
18
+ currentUrl,
19
+ andResult,
20
+ orResult,
21
+ notResult,
22
+ urlPathContainsResult,
23
+ onClickCssSelectorResult,
24
+ conditions,
25
+ clickedElement,
26
+ cssSelector: conditions.onClickCssSelector,
27
+ userMetadata,
28
+ });
29
+ return (andResult &&
30
+ orResult &&
31
+ notResult &&
32
+ urlPathContainsResult &&
33
+ onClickCssSelectorResult &&
34
+ userMetadataResult);
35
+ };
36
+ export class ChangelogModule {
37
+ $changelogContainer = null;
38
+ $changelogIframe = null;
39
+ $changelogMiniContainer = null;
40
+ args;
41
+ contextBasedChangelogs = [];
42
+ constructor(args) {
43
+ this.args = args;
44
+ }
45
+ cleanup() {
46
+ if (this.$changelogContainer) {
47
+ this.$changelogContainer.remove();
48
+ this.$changelogContainer = null;
49
+ }
50
+ if (this.$changelogMiniContainer) {
51
+ this.$changelogMiniContainer.remove();
52
+ this.$changelogMiniContainer = null;
53
+ }
54
+ }
55
+ initChangelogWidget = async () => {
56
+ if (this.$changelogContainer) {
57
+ return;
58
+ }
59
+ if (!this.args.organizationData.enabledModules.includes("CHANGELOG")) {
60
+ console.warn("Changelog module is not enabled for this organization.");
61
+ return;
62
+ }
63
+ const $changelogContainer = document.createElement("div");
64
+ this.$changelogContainer = $changelogContainer;
65
+ const existingsChangelogs = await this.args.ky
66
+ .get(`organizations/${this.args.organizationData.slug}/changelogs/summary?language=${this.args.locale}`)
67
+ .then((res) => res.json())
68
+ .then((changelogs) => changelogs.sort((a, b) => new Date(b.publishedAt ?? 0).getTime() -
69
+ new Date(a.publishedAt ?? 0).getTime()));
70
+ const regularChangelogs = existingsChangelogs.filter((changelog) => changelog.showMode === "Regular");
71
+ this.contextBasedChangelogs = existingsChangelogs.filter((changelog) => changelog.showMode === "ContextBased");
72
+ $changelogContainer.id = "workwonders-changelog-container";
73
+ $changelogContainer.classList.add("workwonders-widget-container", "workwonders-widget-container--hidden");
74
+ const $changelogIframe = document.createElement("iframe");
75
+ this.$changelogIframe = $changelogIframe;
76
+ $changelogIframe.id = "workwonders-changelog-iframe";
77
+ $changelogIframe.classList.add("workwonders-widget-iframe", "workwonders-changelog-iframe");
78
+ const seenChangelogs = localStorage.getItem(`workwonders-seen-changelogs-${this.args.organizationData.slug}`);
79
+ const seenChangelogsArray = seenChangelogs
80
+ ? JSON.parse(seenChangelogs)
81
+ : null;
82
+ const unseenChangelogs = regularChangelogs.filter((changelog) => !seenChangelogsArray?.includes(changelog.id));
83
+ const shouldShowChangelogOnStart = unseenChangelogs.length > 0 &&
84
+ (seenChangelogsArray ||
85
+ this.args.organizationData.changelogConfig
86
+ .showLatestChangelogOnFirstVisit);
87
+ if (shouldShowChangelogOnStart) {
88
+ const changelogIdsToShow = seenChangelogsArray === null
89
+ ? [unseenChangelogs[0].id]
90
+ : unseenChangelogs.map((c) => c.id);
91
+ this.showChangelogs(changelogIdsToShow);
92
+ }
93
+ const newSeenChangelogs = [
94
+ ...(seenChangelogsArray ?? []),
95
+ ...unseenChangelogs.map((c) => c.id),
96
+ ];
97
+ localStorage.setItem(`workwonders-seen-changelogs-${this.args?.organizationData.slug}`, JSON.stringify(newSeenChangelogs));
98
+ this.notifyUrlChange();
99
+ $changelogContainer.onclick = () => {
100
+ this.closeChangelogWidget();
101
+ };
102
+ $changelogContainer.appendChild($changelogIframe);
103
+ document.body.appendChild($changelogContainer);
104
+ };
105
+ showChangelogs = (changelogIdsToShow) => {
106
+ const $changelogIframe = this.$changelogIframe;
107
+ const $changelogContainer = this.$changelogContainer;
108
+ const args = this.args;
109
+ if (!$changelogIframe || !$changelogContainer || !args) {
110
+ console.log("No changelog iframe or container or args for showChangelogs");
111
+ return;
112
+ }
113
+ if (changelogIdsToShow.length === 0) {
114
+ console.log("No changelogs to show");
115
+ return;
116
+ }
117
+ const widgetUrl = new URL("changelog", `${this.args.widgetBaseUrl}`);
118
+ widgetUrl.searchParams.append("jwt", args.token || "");
119
+ widgetUrl.searchParams.append("lang", args.locale || "");
120
+ widgetUrl.searchParams.append("changelogIds", changelogIdsToShow.join(","));
121
+ $changelogIframe.onload = () => {
122
+ const currentSeenChangelogs = localStorage.getItem(`workwonders-seen-changelogs-${this.args?.organizationData.slug}`);
123
+ const currentSeenChangelogsArray = currentSeenChangelogs
124
+ ? JSON.parse(currentSeenChangelogs)
125
+ : [];
126
+ const newSeenChangelogs = [
127
+ ...currentSeenChangelogsArray,
128
+ ...changelogIdsToShow,
129
+ ];
130
+ localStorage.setItem(`workwonders-seen-changelogs-${this.args?.organizationData.slug}`, JSON.stringify(newSeenChangelogs));
131
+ $changelogContainer.classList.remove("workwonders-widget-container--hidden");
132
+ };
133
+ $changelogIframe.src = widgetUrl.toString();
134
+ };
135
+ initChangelogWidgetMini = () => {
136
+ if (this.$changelogMiniContainer) {
137
+ return;
138
+ }
139
+ const args = this.args;
140
+ const organizationData = this.args.organizationData;
141
+ if (!organizationData.enabledModules.includes("CHANGELOG")) {
142
+ console.warn("Changelog module is not enabled for this organization.");
143
+ return;
144
+ }
145
+ const $changelogMiniContainer = document.createElement("div");
146
+ this.$changelogMiniContainer = $changelogMiniContainer;
147
+ $changelogMiniContainer.id = "workwonders-changelog-mini-container";
148
+ $changelogMiniContainer.classList.add("workwonders-widget-container", "workwonders-changelog-mini-container", "workwonders-widget-container--hidden");
149
+ const $changelogMiniIframe = document.createElement("iframe");
150
+ $changelogMiniIframe.id = "workwonders-changelog-mini-iframe";
151
+ $changelogMiniIframe.classList.add("workwonders-widget-iframe", "workwonders-changelog-mini-iframe");
152
+ const widgetUrl = new URL("changelog/mini", `${this.args.widgetBaseUrl}`);
153
+ widgetUrl.searchParams.append("jwt", args.token || "");
154
+ widgetUrl.searchParams.append("lang", args.locale || "");
155
+ $changelogMiniIframe.src = widgetUrl.toString();
156
+ $changelogMiniContainer.appendChild($changelogMiniIframe);
157
+ $changelogMiniContainer.onclick = () => {
158
+ this.closeChangelogMiniWidget();
159
+ };
160
+ document.body.appendChild($changelogMiniContainer);
161
+ };
162
+ openChangelogWidget = (id) => {
163
+ if (this.$changelogContainer) {
164
+ if (id) {
165
+ const $iframe = document.getElementById("workwonders-changelog-iframe");
166
+ const widgetUrl = new URL("changelog", `${this.args.widgetBaseUrl}`);
167
+ widgetUrl.searchParams.append("jwt", this.args?.token || "");
168
+ widgetUrl.searchParams.append("lang", this.args?.locale || "");
169
+ widgetUrl.searchParams.append("changelogIds", id);
170
+ $iframe.src = widgetUrl.toString();
171
+ }
172
+ this.$changelogContainer.classList.remove("workwonders-widget-container--hidden");
173
+ }
174
+ };
175
+ openChangelogMiniWidget = () => {
176
+ if (this.$changelogMiniContainer) {
177
+ this.$changelogMiniContainer.classList.remove("workwonders-widget-container--hidden");
178
+ }
179
+ };
180
+ closeChangelogWidget = () => {
181
+ if (this.$changelogContainer) {
182
+ this.$changelogContainer.classList.add("workwonders-widget-container--hidden");
183
+ }
184
+ };
185
+ closeChangelogMiniWidget = () => {
186
+ if (this.$changelogMiniContainer) {
187
+ this.$changelogMiniContainer.classList.add("workwonders-widget-container--hidden");
188
+ }
189
+ };
190
+ notifyUrlChange = () => {
191
+ this.checkShowContextBasedChangelogs({});
192
+ };
193
+ checkShowContextBasedChangelogs({ clickedElement, }) {
194
+ const args = this.args;
195
+ const organizationData = this.args.organizationData;
196
+ if (!args?.locale || !organizationData) {
197
+ console.log("No args or organization data");
198
+ return;
199
+ }
200
+ const contextBasedChangelogsMatching = this.contextBasedChangelogs.filter((changelog) => {
201
+ return processContextConditions(changelog.contextConditions, window.location.href, organizationData.userMetadata, clickedElement);
202
+ });
203
+ if (contextBasedChangelogsMatching.length > 0) {
204
+ this.showChangelogs(contextBasedChangelogsMatching.map((changelog) => changelog.id));
205
+ }
206
+ }
207
+ }
208
+ //# sourceMappingURL=changelog-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changelog-module.js","sourceRoot":"","sources":["../src/changelog-module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { OrganizationDto } from "./types/organizationDto";
2
+ interface InitFeedabackArgs {
3
+ useCustomTrigger?: boolean;
4
+ }
5
+ interface FeedbackInitArgs {
6
+ widgetBaseUrl: string;
7
+ token?: string;
8
+ locale?: string;
9
+ organizationData: OrganizationDto;
10
+ }
11
+ export declare class FeedbackModule {
12
+ private $feedbackContainer;
13
+ private $feedbackIframe;
14
+ private $feedbackButton;
15
+ private readonly args;
16
+ constructor(args: FeedbackInitArgs);
17
+ cleanup(): void;
18
+ initFeedbackWidget: ({ useCustomTrigger }?: InitFeedabackArgs) => void;
19
+ private initFeedbackButton;
20
+ openFeedbackWidget: () => void;
21
+ closeFeedbackWidget: () => void;
22
+ }
23
+ export {};
24
+ //# sourceMappingURL=feedback-module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback-module.d.ts","sourceRoot":"","sources":["../src/feedback-module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,UAAU,iBAAiB;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,UAAU,gBAAgB;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,eAAe,CAAC;CACnC;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,kBAAkB,CAA+B;IACzD,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,eAAe,CAAkC;IAEzD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmB;gBAE5B,IAAI,EAAE,gBAAgB;IAIlC,OAAO;IAYP,kBAAkB,0BAA0B,iBAAiB,UA4C3D;IAEF,OAAO,CAAC,kBAAkB;IAmC1B,kBAAkB,aAchB;IAEF,mBAAmB,aAMjB;CACH"}
@@ -0,0 +1,86 @@
1
+ export class FeedbackModule {
2
+ $feedbackContainer = null;
3
+ $feedbackIframe = null;
4
+ $feedbackButton = null;
5
+ args;
6
+ constructor(args) {
7
+ this.args = args;
8
+ }
9
+ cleanup() {
10
+ if (this.$feedbackContainer) {
11
+ this.$feedbackContainer.remove();
12
+ this.$feedbackContainer = null;
13
+ }
14
+ if (this.$feedbackButton) {
15
+ this.$feedbackButton.remove();
16
+ this.$feedbackButton = null;
17
+ }
18
+ }
19
+ initFeedbackWidget = ({ useCustomTrigger } = {}) => {
20
+ if (this.$feedbackContainer) {
21
+ return;
22
+ }
23
+ if (!this.args.organizationData.enabledModules.includes("FEEDBACK")) {
24
+ console.warn("Feedback module is not enabled for this organization.");
25
+ return;
26
+ }
27
+ const $feedbackContainer = document.createElement("div");
28
+ this.$feedbackContainer = $feedbackContainer;
29
+ $feedbackContainer.id = "workwonders-feedback-container";
30
+ $feedbackContainer.classList.add("workwonders-widget-container", "workwonders-widget-container--hidden");
31
+ const $feedbackIframe = document.createElement("iframe");
32
+ this.$feedbackIframe = $feedbackIframe;
33
+ $feedbackIframe.id = "workwonders-feedback-iframe";
34
+ $feedbackIframe.classList.add("workwonders-widget-iframe", "workwonders-feedback-iframe");
35
+ const widgetUrl = new URL("feedback", `${this.args.widgetBaseUrl}`);
36
+ widgetUrl.searchParams.append("jwt", this.args.token || "");
37
+ widgetUrl.searchParams.append("lang", this.args.locale || "");
38
+ $feedbackIframe.src = widgetUrl.toString();
39
+ $feedbackContainer.onclick = () => {
40
+ this.closeFeedbackWidget();
41
+ };
42
+ $feedbackContainer.appendChild($feedbackIframe);
43
+ document.body.appendChild($feedbackContainer);
44
+ if (!useCustomTrigger) {
45
+ this.initFeedbackButton();
46
+ }
47
+ };
48
+ initFeedbackButton() {
49
+ if (this.$feedbackButton) {
50
+ return;
51
+ }
52
+ const args = this.args;
53
+ const organizationData = this.args.organizationData;
54
+ if (!args?.locale || !organizationData) {
55
+ return;
56
+ }
57
+ const $feedbackButton = document.createElement("button");
58
+ this.$feedbackButton = $feedbackButton;
59
+ const buttonText = organizationData.feedbackPostConfig.copywriting[args.locale]
60
+ ?.widgetButtonText ??
61
+ organizationData.feedbackPostConfig.copywriting[organizationData.defaultLanguage].widgetButtonText ??
62
+ "Feedback";
63
+ $feedbackButton.id = "workwonders-feedback-button";
64
+ $feedbackButton.textContent = buttonText;
65
+ $feedbackButton.classList.add("workwonders-feedback-button");
66
+ $feedbackButton.style.backgroundColor = organizationData.primaryColor;
67
+ $feedbackButton.onclick = () => {
68
+ this.openFeedbackWidget();
69
+ };
70
+ document.body.appendChild($feedbackButton);
71
+ }
72
+ openFeedbackWidget = () => {
73
+ if (!this.args.organizationData.enabledModules.includes("FEEDBACK")) {
74
+ console.warn("Feedback module is not enabled for this organization.");
75
+ return;
76
+ }
77
+ this.$feedbackIframe?.contentWindow?.postMessage({ type: "set_origin", origin: window.location.href }, "*");
78
+ this.$feedbackContainer?.classList.remove("workwonders-widget-container--hidden");
79
+ };
80
+ closeFeedbackWidget = () => {
81
+ if (this.$feedbackContainer) {
82
+ this.$feedbackContainer.classList.add("workwonders-widget-container--hidden");
83
+ }
84
+ };
85
+ }
86
+ //# sourceMappingURL=feedback-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback-module.js","sourceRoot":"","sources":["../src/feedback-module.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- import { WorkWondersSdk } from "./workwonders-sdk";
2
- export { WorkWondersSdk } from "./workwonders-sdk";
1
+ import { WorkWonders } from "./workwonders";
2
+ export { WorkWonders } from "./workwonders";
3
3
  declare global {
4
4
  interface Window {
5
- WorkWondersSdk: typeof WorkWondersSdk;
5
+ WorkWonders: typeof WorkWonders;
6
6
  }
7
7
  }
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,cAAc,EAAE,OAAO,cAAc,CAAC;KACvC;CACF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,WAAW,EAAE,OAAO,WAAW,CAAC;KACjC;CACF"}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
- import { WorkWondersSdk } from "./workwonders-sdk";
2
- export { WorkWondersSdk } from "./workwonders-sdk";
1
+ import { WorkWonders } from "./workwonders";
2
+ export { WorkWonders } from "./workwonders";
3
3
  function loadSdk() {
4
- window.WorkWondersSdk = WorkWondersSdk;
4
+ window.WorkWonders = WorkWonders;
5
5
  console.log("Work Wonders SDK ready to be used");
6
6
  }
7
7
  loadSdk();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAQnD,SAAS,OAAO;IACd,MAAM,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;AACnD,CAAC;AAED,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAQ5C,SAAS,OAAO;IACd,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;AACnD,CAAC;AAED,OAAO,EAAE,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { ChangelogModule } from "./changelog-module";
2
+ import { FeedbackModule } from "./feedback-module";
3
+ interface InitArgs {
4
+ organization: string;
5
+ token?: string;
6
+ locale?: string;
7
+ }
8
+ export declare class WorkWonders {
9
+ private readonly ky;
10
+ private $styleLink;
11
+ private widgetBaseUrl;
12
+ changelog: ChangelogModule;
13
+ feedback: FeedbackModule;
14
+ private readonly messageListener;
15
+ private readonly clickListener;
16
+ init: (args: InitArgs) => Promise<void>;
17
+ notifyUrlChange: () => void;
18
+ }
19
+ export {};
20
+ //# sourceMappingURL=workwonders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workwonders.d.ts","sourceRoot":"","sources":["../src/workwonders.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,UAAU,QAAQ;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAKD,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAEhB;IAEH,OAAO,CAAC,UAAU,CAAgC;IAElD,OAAO,CAAC,aAAa,CAAM;IAE3B,SAAS,EAAG,eAAe,CAAC;IAC5B,QAAQ,EAAG,cAAc,CAAC;IAE1B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAqB9B;IAEF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAuC5B;IAEF,IAAI,SAAgB,QAAQ,mBAoF1B;IAEF,eAAe,aAEb;CACH"}
@@ -0,0 +1,124 @@
1
+ import ky from "ky";
2
+ import { OrganizationDtoAccessLevel } from "./types/organizationDtoAccessLevel";
3
+ import { ChangelogModule } from "./changelog-module";
4
+ import { FeedbackModule } from "./feedback-module";
5
+ const workwondersUrl = new URL("https://workwonders.app");
6
+ const workwondersApiUrl = new URL("https://api.workwonders.app");
7
+ export class WorkWonders {
8
+ ky = ky.create({
9
+ prefixUrl: workwondersApiUrl,
10
+ });
11
+ $styleLink = null;
12
+ widgetBaseUrl = "";
13
+ changelog;
14
+ feedback;
15
+ messageListener = (message) => {
16
+ if (message.data.type === "changelog_widget_closed") {
17
+ this.changelog.closeChangelogWidget();
18
+ }
19
+ if (message.data.type === "changelog_mini_widget_closed") {
20
+ this.changelog.closeChangelogMiniWidget();
21
+ }
22
+ if (message.data.type === "changelog_mini_widget_item_clicked") {
23
+ this.changelog.openChangelogWidget(message.data.id);
24
+ this.changelog.closeChangelogMiniWidget();
25
+ }
26
+ if (message.data.type === "feedback_widget_closed") {
27
+ this.feedback.closeFeedbackWidget();
28
+ }
29
+ if (message.data.type === "feedback_post_created") {
30
+ // trigger callback events
31
+ }
32
+ };
33
+ clickListener = (event) => {
34
+ this.changelog.checkShowContextBasedChangelogs({
35
+ clickedElement: event.target,
36
+ });
37
+ const $triggerFeedbackTarget = event.target.closest("[data-open-workwonders-feedback]");
38
+ const $triggerChangelogTarget = event.target.closest("[data-open-workwonders-changelog]");
39
+ const $triggerChangelogMiniTarget = event.target.closest("[data-open-workwonders-changelog-mini]");
40
+ const $changelogMiniContainerTarget = event.target.closest("#workwonders-changelog-mini-container");
41
+ if (!$changelogMiniContainerTarget) {
42
+ this.changelog.closeChangelogMiniWidget();
43
+ }
44
+ if ($triggerFeedbackTarget) {
45
+ this.feedback.openFeedbackWidget();
46
+ return;
47
+ }
48
+ if ($triggerChangelogTarget) {
49
+ this.changelog.openChangelogWidget();
50
+ return;
51
+ }
52
+ if ($triggerChangelogMiniTarget) {
53
+ this.changelog.openChangelogMiniWidget();
54
+ return;
55
+ }
56
+ };
57
+ init = async (args) => {
58
+ if (!args.organization) {
59
+ console.error("Cannot init Work Wonders SDK. Organization is required.");
60
+ return;
61
+ }
62
+ if (this.changelog) {
63
+ this.changelog.cleanup();
64
+ }
65
+ if (this.feedback) {
66
+ this.feedback.cleanup();
67
+ }
68
+ const organizationData = await this.ky
69
+ .get(`organizations/${args.organization}`)
70
+ .then((res) => res.json());
71
+ if (organizationData.accessLevel === OrganizationDtoAccessLevel.Private &&
72
+ !args.token) {
73
+ console.error("Cannot init Work Wonders SDK. This organization is private, a token is required.");
74
+ return;
75
+ }
76
+ if (!organizationData.features.widgets) {
77
+ console.error("Cannot init Work Wonders SDK. This organization does not have widgets feature enabled.");
78
+ return;
79
+ }
80
+ const language = organizationData.languages.find((lang) => lang === args.locale) ??
81
+ organizationData.defaultLanguage;
82
+ args.locale = language;
83
+ this.widgetBaseUrl = `https://${args.organization}.${workwondersUrl.host}/widget/`;
84
+ this.changelog = new ChangelogModule({
85
+ ky: this.ky,
86
+ widgetBaseUrl: this.widgetBaseUrl,
87
+ token: args.token,
88
+ locale: args.locale,
89
+ organizationData: organizationData,
90
+ });
91
+ this.feedback = new FeedbackModule({
92
+ widgetBaseUrl: this.widgetBaseUrl,
93
+ token: args.token,
94
+ locale: args.locale,
95
+ organizationData: organizationData,
96
+ });
97
+ window.removeEventListener("message", this.messageListener);
98
+ window.addEventListener("message", this.messageListener);
99
+ document.removeEventListener("click", this.clickListener);
100
+ document.addEventListener("click", this.clickListener);
101
+ if (!this.$styleLink) {
102
+ const linkElement = document.createElement("link");
103
+ this.$styleLink = linkElement;
104
+ this.$styleLink.rel = "stylesheet";
105
+ this.$styleLink.href = "https://sdk.workwonders.app/style.css";
106
+ document.head.appendChild(this.$styleLink);
107
+ await Promise.race([
108
+ new Promise((resolve) => {
109
+ linkElement.onload = resolve;
110
+ }),
111
+ new Promise((resolve) => {
112
+ setTimeout(() => {
113
+ resolve(null);
114
+ }, 3000);
115
+ }),
116
+ ]);
117
+ }
118
+ console.log("Work Wonders SDK initialized");
119
+ };
120
+ notifyUrlChange = () => {
121
+ this.changelog.notifyUrlChange();
122
+ };
123
+ }
124
+ //# sourceMappingURL=workwonders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workwonders.js","sourceRoot":"","sources":["../src/workwonders.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "workwonders-sdk",
3
3
  "author": "Work Wonders",
4
- "version": "0.0.14",
4
+ "version": "0.1.1",
5
5
  "description": "",
6
6
  "main": "dist/index.js",
7
7
  "files": [
@@ -1,40 +0,0 @@
1
- interface InitArgs {
2
- organization: string;
3
- token?: string;
4
- locale?: string;
5
- }
6
- interface InitFeedabackArgs {
7
- useCustomTrigger?: boolean;
8
- }
9
- export declare class WorkWondersSdk {
10
- private readonly ky;
11
- private $feedbackContainer;
12
- private $feedbackIframe;
13
- private $changelogContainer;
14
- private $changelogIframe;
15
- private $changelogMiniContainer;
16
- private $feedbackButton;
17
- private $styleLink;
18
- private widgetBaseUrl;
19
- private args;
20
- private organizationData;
21
- private contextBasedChangelogs;
22
- private readonly messageListener;
23
- private readonly clickListener;
24
- init: (args: InitArgs) => Promise<void>;
25
- initFeedbackWidget: ({ useCustomTrigger }?: InitFeedabackArgs) => void;
26
- notifyUrlChange: () => void;
27
- private checkShowContextBasedChangelogs;
28
- private initFeedbackButton;
29
- initChangelogWidget: () => Promise<void>;
30
- showChangelogs: (changelogIdsToShow: number[]) => void;
31
- initChangelogWidgetMini: () => void;
32
- openFeedbackWidget: () => void;
33
- openChangelogWidget: (id?: string) => void;
34
- openChangelogMiniWidget: () => void;
35
- closeChangelogWidget: () => void;
36
- closeFeedbackWidget: () => void;
37
- closeChangelogMiniWidget: () => void;
38
- }
39
- export {};
40
- //# sourceMappingURL=workwonders-sdk.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workwonders-sdk.d.ts","sourceRoot":"","sources":["../src/workwonders-sdk.ts"],"names":[],"mappings":"AASA,UAAU,QAAQ;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,iBAAiB;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AA0ED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAEhB;IAEH,OAAO,CAAC,kBAAkB,CAA+B;IACzD,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,mBAAmB,CAA+B;IAC1D,OAAO,CAAC,gBAAgB,CAAkC;IAC1D,OAAO,CAAC,uBAAuB,CAA+B;IAC9D,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,UAAU,CAAgC;IAElD,OAAO,CAAC,aAAa,CAAM;IAC3B,OAAO,CAAC,IAAI,CAAyB;IACrC,OAAO,CAAC,gBAAgB,CAAgC;IAExD,OAAO,CAAC,sBAAsB,CAA6B;IAE3D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAqB9B;IAEF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAuC5B;IAEF,IAAI,SAAgB,QAAQ,mBAqF1B;IAEF,kBAAkB,0BAA0B,iBAAiB,UAmD3D;IAEF,eAAe,aAEb;IAEF,OAAO,CAAC,+BAA+B;IA+BvC,OAAO,CAAC,kBAAkB;IAmC1B,mBAAmB,sBAoGjB;IAEF,cAAc,uBAAwB,MAAM,EAAE,UA8C5C;IAEF,uBAAuB,aAmDrB;IAEF,kBAAkB,aAShB;IAEF,mBAAmB,QAAS,MAAM,UAkBhC;IAEF,uBAAuB,aAMrB;IAEF,oBAAoB,aAMlB;IAEF,mBAAmB,aAMjB;IAEF,wBAAwB,aAMtB;CACH"}
@@ -1,397 +0,0 @@
1
- import ky from "ky";
2
- import { OrganizationDtoAccessLevel } from "./types/organizationDtoAccessLevel";
3
- const workwondersUrl = new URL("https://workwonders.app");
4
- const workwondersApiUrl = new URL("https://api.workwonders.app");
5
- const processContextConditions = (conditions, currentUrl, userMetadata, clickedElement) => {
6
- const andResult = conditions.AND?.every((condition) => processContextConditions(condition, currentUrl, userMetadata, clickedElement)) ?? true;
7
- const orResult = conditions.OR?.some((condition) => processContextConditions(condition, currentUrl, userMetadata, clickedElement)) ?? true;
8
- const notResult = conditions.NOT
9
- ? !processContextConditions(conditions.NOT, currentUrl, userMetadata, clickedElement)
10
- : true;
11
- const urlPathContainsResult = conditions.urlPathContains
12
- ? currentUrl.includes(conditions.urlPathContains)
13
- : true;
14
- const onClickCssSelectorResult = conditions.onClickCssSelector
15
- ? !!clickedElement?.closest(conditions.onClickCssSelector)
16
- : true;
17
- const userMetadataResult = conditions.userMetadataMatches
18
- ? userMetadata?.[conditions.userMetadataMatches.key] ==
19
- conditions.userMetadataMatches.value
20
- : true;
21
- console.log({
22
- currentUrl,
23
- andResult,
24
- orResult,
25
- notResult,
26
- urlPathContainsResult,
27
- onClickCssSelectorResult,
28
- conditions,
29
- clickedElement,
30
- cssSelector: conditions.onClickCssSelector,
31
- userMetadata,
32
- });
33
- return (andResult &&
34
- orResult &&
35
- notResult &&
36
- urlPathContainsResult &&
37
- onClickCssSelectorResult &&
38
- userMetadataResult);
39
- };
40
- export class WorkWondersSdk {
41
- ky = ky.create({
42
- prefixUrl: workwondersApiUrl,
43
- });
44
- $feedbackContainer = null;
45
- $feedbackIframe = null;
46
- $changelogContainer = null;
47
- $changelogIframe = null;
48
- $changelogMiniContainer = null;
49
- $feedbackButton = null;
50
- $styleLink = null;
51
- widgetBaseUrl = "";
52
- args = null;
53
- organizationData = null;
54
- contextBasedChangelogs = [];
55
- messageListener = (message) => {
56
- if (message.data.type === "changelog_widget_closed") {
57
- this.closeChangelogWidget();
58
- }
59
- if (message.data.type === "changelog_mini_widget_closed") {
60
- this.closeChangelogMiniWidget();
61
- }
62
- if (message.data.type === "changelog_mini_widget_item_clicked") {
63
- this.openChangelogWidget(message.data.id);
64
- this.closeChangelogMiniWidget();
65
- }
66
- if (message.data.type === "feedback_widget_closed") {
67
- this.closeFeedbackWidget();
68
- }
69
- if (message.data.type === "feedback_post_created") {
70
- // trigger callback events
71
- }
72
- };
73
- clickListener = (event) => {
74
- this.checkShowContextBasedChangelogs({
75
- clickedElement: event.target,
76
- });
77
- const $triggerFeedbackTarget = event.target.closest("[data-open-workwonders-feedback]");
78
- const $triggerChangelogTarget = event.target.closest("[data-open-workwonders-changelog]");
79
- const $triggerChangelogMiniTarget = event.target.closest("[data-open-workwonders-changelog-mini]");
80
- const $changelogMiniContainerTarget = event.target.closest("#workwonders-changelog-mini-container");
81
- if (!$changelogMiniContainerTarget) {
82
- this.closeChangelogMiniWidget();
83
- }
84
- if ($triggerFeedbackTarget) {
85
- this.openFeedbackWidget();
86
- return;
87
- }
88
- if ($triggerChangelogTarget) {
89
- this.openChangelogWidget();
90
- return;
91
- }
92
- if ($triggerChangelogMiniTarget) {
93
- this.openChangelogMiniWidget();
94
- return;
95
- }
96
- };
97
- init = async (args) => {
98
- this.args = args;
99
- if (this.$changelogContainer) {
100
- this.$changelogContainer.remove();
101
- this.$changelogContainer = null;
102
- }
103
- if (this.$feedbackContainer) {
104
- this.$feedbackContainer.remove();
105
- this.$feedbackContainer = null;
106
- }
107
- if (this.$changelogMiniContainer) {
108
- this.$changelogMiniContainer.remove();
109
- this.$changelogMiniContainer = null;
110
- }
111
- if (this.$feedbackButton) {
112
- this.$feedbackButton.remove();
113
- this.$feedbackButton = null;
114
- }
115
- if (!args.organization) {
116
- console.error("Cannot init Work Wonders SDK. Organization is required.");
117
- return;
118
- }
119
- const organizationData = await this.ky
120
- .get(`organizations/${args.organization}`)
121
- .then((res) => res.json());
122
- if (organizationData.accessLevel === OrganizationDtoAccessLevel.Private &&
123
- !args.token) {
124
- console.error("Cannot init Work Wonders SDK. This organization is private, a token is required.");
125
- return;
126
- }
127
- if (!organizationData.features.widgets) {
128
- console.error("Cannot init Work Wonders SDK. This organization does not have widgets feature enabled.");
129
- return;
130
- }
131
- this.organizationData = organizationData;
132
- const language = organizationData.languages.find((lang) => lang === args.locale) ??
133
- organizationData.defaultLanguage;
134
- args.locale = language;
135
- this.widgetBaseUrl = `https://${args.organization}.${workwondersUrl.host}/widget/`;
136
- window.removeEventListener("message", this.messageListener);
137
- window.addEventListener("message", this.messageListener);
138
- document.removeEventListener("click", this.clickListener);
139
- document.addEventListener("click", this.clickListener);
140
- if (!this.$styleLink) {
141
- const linkElement = document.createElement("link");
142
- this.$styleLink = linkElement;
143
- this.$styleLink.rel = "stylesheet";
144
- this.$styleLink.href = "https://sdk.workwonders.app/style.css";
145
- document.head.appendChild(this.$styleLink);
146
- await Promise.race([
147
- new Promise((resolve) => {
148
- linkElement.onload = resolve;
149
- }),
150
- new Promise((resolve) => {
151
- setTimeout(() => {
152
- resolve(null);
153
- }, 3000);
154
- }),
155
- ]);
156
- }
157
- console.log("Work Wonders SDK initialized");
158
- };
159
- initFeedbackWidget = ({ useCustomTrigger } = {}) => {
160
- if (this.$feedbackContainer) {
161
- return;
162
- }
163
- const args = this.args;
164
- const organizationData = this.organizationData;
165
- if (!args) {
166
- return;
167
- }
168
- if (!organizationData) {
169
- return;
170
- }
171
- if (!organizationData.enabledModules.includes("FEEDBACK")) {
172
- console.warn("Feedback module is not enabled for this organization.");
173
- return;
174
- }
175
- const $feedbackContainer = document.createElement("div");
176
- this.$feedbackContainer = $feedbackContainer;
177
- $feedbackContainer.id = "workwonders-feedback-container";
178
- $feedbackContainer.classList.add("workwonders-widget-container");
179
- $feedbackContainer.classList.add("workwonders-widget-container--hidden");
180
- const $feedbackIframe = document.createElement("iframe");
181
- this.$feedbackIframe = $feedbackIframe;
182
- $feedbackIframe.id = "workwonders-feedback-iframe";
183
- $feedbackIframe.classList.add("workwonders-widget-iframe");
184
- $feedbackIframe.classList.add("workwonders-feedback-iframe");
185
- const widgetUrl = new URL("feedback", `${this.widgetBaseUrl}`);
186
- widgetUrl.searchParams.append("jwt", args.token || "");
187
- widgetUrl.searchParams.append("lang", args.locale || "");
188
- $feedbackIframe.src = widgetUrl.toString();
189
- $feedbackContainer.onclick = () => {
190
- this.closeFeedbackWidget();
191
- };
192
- $feedbackContainer.appendChild($feedbackIframe);
193
- document.body.appendChild($feedbackContainer);
194
- if (!useCustomTrigger) {
195
- this.initFeedbackButton();
196
- }
197
- };
198
- notifyUrlChange = () => {
199
- this.checkShowContextBasedChangelogs({});
200
- };
201
- checkShowContextBasedChangelogs({ clickedElement, }) {
202
- const args = this.args;
203
- const organizationData = this.organizationData;
204
- if (!args?.locale || !organizationData) {
205
- console.log("No args or organization data");
206
- return;
207
- }
208
- const contextBasedChangelogsMatching = this.contextBasedChangelogs.filter((changelog) => {
209
- return processContextConditions(changelog.contextConditions, window.location.href, organizationData.userMetadata, clickedElement);
210
- });
211
- if (contextBasedChangelogsMatching.length > 0) {
212
- this.showChangelogs(contextBasedChangelogsMatching.map((changelog) => changelog.id));
213
- }
214
- }
215
- initFeedbackButton() {
216
- if (this.$feedbackButton) {
217
- return;
218
- }
219
- const args = this.args;
220
- const organizationData = this.organizationData;
221
- if (!args?.locale || !organizationData) {
222
- return;
223
- }
224
- const $feedbackButton = document.createElement("button");
225
- this.$feedbackButton = $feedbackButton;
226
- const buttonText = organizationData.feedbackPostConfig.copywriting[args.locale]
227
- ?.widgetButtonText ??
228
- organizationData.feedbackPostConfig.copywriting[organizationData.defaultLanguage].widgetButtonText ??
229
- "Feedback";
230
- $feedbackButton.id = "workwonders-feedback-button";
231
- $feedbackButton.textContent = buttonText;
232
- $feedbackButton.classList.add("workwonders-feedback-button");
233
- $feedbackButton.style.backgroundColor = organizationData.primaryColor;
234
- $feedbackButton.onclick = () => {
235
- this.openFeedbackWidget();
236
- };
237
- document.body.appendChild($feedbackButton);
238
- }
239
- initChangelogWidget = async () => {
240
- if (this.$changelogContainer) {
241
- return;
242
- }
243
- const args = this.args;
244
- const organizationData = this.organizationData;
245
- if (!args?.locale || !organizationData) {
246
- return;
247
- }
248
- if (!organizationData.enabledModules.includes("CHANGELOG")) {
249
- console.warn("Changelog module is not enabled for this organization.");
250
- return;
251
- }
252
- const $changelogContainer = document.createElement("div");
253
- this.$changelogContainer = $changelogContainer;
254
- const existingsChangelogs = await this.ky
255
- .get(`organizations/${args.organization}/changelogs/summary?language=${args.locale}`)
256
- .then((res) => res.json())
257
- .then((changelogs) => changelogs.sort((a, b) => new Date(b.publishedAt ?? 0).getTime() -
258
- new Date(a.publishedAt ?? 0).getTime()));
259
- const regularChangelogs = existingsChangelogs.filter((changelog) => changelog.showMode === "Regular");
260
- this.contextBasedChangelogs = existingsChangelogs.filter((changelog) => changelog.showMode === "ContextBased");
261
- $changelogContainer.id = "workwonders-changelog-container";
262
- $changelogContainer.classList.add("workwonders-widget-container", "workwonders-widget-container--hidden");
263
- const $changelogIframe = document.createElement("iframe");
264
- this.$changelogIframe = $changelogIframe;
265
- $changelogIframe.id = "workwonders-changelog-iframe";
266
- $changelogIframe.classList.add("workwonders-widget-iframe", "workwonders-changelog-iframe");
267
- const seenChangelogs = localStorage.getItem(`workwonders-seen-changelogs-${args.organization}`);
268
- const seenChangelogsArray = seenChangelogs
269
- ? JSON.parse(seenChangelogs)
270
- : null;
271
- const unseenChangelogs = regularChangelogs.filter((changelog) => !seenChangelogsArray?.includes(changelog.id));
272
- const shouldShowChangelogOnStart = unseenChangelogs.length > 0 &&
273
- (seenChangelogsArray ||
274
- organizationData.changelogConfig.showLatestChangelogOnFirstVisit);
275
- if (shouldShowChangelogOnStart) {
276
- const changelogIdsToShow = seenChangelogsArray === null
277
- ? [unseenChangelogs[0].id]
278
- : unseenChangelogs.map((c) => c.id);
279
- this.showChangelogs(changelogIdsToShow);
280
- }
281
- const newSeenChangelogs = [
282
- ...(seenChangelogsArray ?? []),
283
- ...unseenChangelogs.map((c) => c.id),
284
- ];
285
- localStorage.setItem(`workwonders-seen-changelogs-${this.args?.organization}`, JSON.stringify(newSeenChangelogs));
286
- this.notifyUrlChange();
287
- $changelogContainer.onclick = () => {
288
- this.closeChangelogWidget();
289
- };
290
- $changelogContainer.appendChild($changelogIframe);
291
- document.body.appendChild($changelogContainer);
292
- };
293
- showChangelogs = (changelogIdsToShow) => {
294
- const $changelogIframe = this.$changelogIframe;
295
- const $changelogContainer = this.$changelogContainer;
296
- const args = this.args;
297
- if (!$changelogIframe || !$changelogContainer || !args) {
298
- console.log("No changelog iframe or container or args for showChangelogs");
299
- return;
300
- }
301
- if (changelogIdsToShow.length === 0) {
302
- console.log("No changelogs to show");
303
- return;
304
- }
305
- const widgetUrl = new URL("changelog", `${this.widgetBaseUrl}`);
306
- widgetUrl.searchParams.append("jwt", args.token || "");
307
- widgetUrl.searchParams.append("lang", args.locale || "");
308
- widgetUrl.searchParams.append("changelogIds", changelogIdsToShow.join(","));
309
- $changelogIframe.onload = () => {
310
- const currentSeenChangelogs = localStorage.getItem(`workwonders-seen-changelogs-${this.args?.organization}`);
311
- const currentSeenChangelogsArray = currentSeenChangelogs
312
- ? JSON.parse(currentSeenChangelogs)
313
- : [];
314
- const newSeenChangelogs = [
315
- ...currentSeenChangelogsArray,
316
- ...changelogIdsToShow,
317
- ];
318
- localStorage.setItem(`workwonders-seen-changelogs-${this.args?.organization}`, JSON.stringify(newSeenChangelogs));
319
- $changelogContainer.classList.remove("workwonders-widget-container--hidden");
320
- };
321
- $changelogIframe.src = widgetUrl.toString();
322
- };
323
- initChangelogWidgetMini = () => {
324
- if (this.$changelogMiniContainer) {
325
- return;
326
- }
327
- const args = this.args;
328
- const organizationData = this.organizationData;
329
- if (!args) {
330
- return;
331
- }
332
- if (!organizationData) {
333
- return;
334
- }
335
- if (!organizationData.enabledModules.includes("CHANGELOG")) {
336
- console.warn("Changelog module is not enabled for this organization.");
337
- return;
338
- }
339
- const $changelogMiniContainer = document.createElement("div");
340
- this.$changelogMiniContainer = $changelogMiniContainer;
341
- $changelogMiniContainer.id = "workwonders-changelog-mini-container";
342
- $changelogMiniContainer.classList.add("workwonders-widget-container");
343
- $changelogMiniContainer.classList.add("workwonders-changelog-mini-container");
344
- $changelogMiniContainer.classList.add("workwonders-widget-container--hidden");
345
- const $changelogMiniIframe = document.createElement("iframe");
346
- $changelogMiniIframe.id = "workwonders-changelog-mini-iframe";
347
- $changelogMiniIframe.classList.add("workwonders-widget-iframe");
348
- $changelogMiniIframe.classList.add("workwonders-changelog-mini-iframe");
349
- const widgetUrl = new URL("changelog/mini", `${this.widgetBaseUrl}`);
350
- widgetUrl.searchParams.append("jwt", args.token || "");
351
- widgetUrl.searchParams.append("lang", args.locale || "");
352
- $changelogMiniIframe.src = widgetUrl.toString();
353
- $changelogMiniContainer.appendChild($changelogMiniIframe);
354
- $changelogMiniContainer.onclick = () => {
355
- this.closeChangelogMiniWidget();
356
- };
357
- document.body.appendChild($changelogMiniContainer);
358
- };
359
- openFeedbackWidget = () => {
360
- this.$feedbackIframe?.contentWindow?.postMessage({ type: "set_origin", origin: window.location.href }, "*");
361
- this.$feedbackContainer?.classList.remove("workwonders-widget-container--hidden");
362
- };
363
- openChangelogWidget = (id) => {
364
- if (this.$changelogContainer) {
365
- if (id) {
366
- const $iframe = document.getElementById("workwonders-changelog-iframe");
367
- const widgetUrl = new URL("changelog", `${this.widgetBaseUrl}`);
368
- widgetUrl.searchParams.append("jwt", this.args?.token || "");
369
- widgetUrl.searchParams.append("lang", this.args?.locale || "");
370
- widgetUrl.searchParams.append("changelogIds", id);
371
- $iframe.src = widgetUrl.toString();
372
- }
373
- this.$changelogContainer.classList.remove("workwonders-widget-container--hidden");
374
- }
375
- };
376
- openChangelogMiniWidget = () => {
377
- if (this.$changelogMiniContainer) {
378
- this.$changelogMiniContainer.classList.remove("workwonders-widget-container--hidden");
379
- }
380
- };
381
- closeChangelogWidget = () => {
382
- if (this.$changelogContainer) {
383
- this.$changelogContainer.classList.add("workwonders-widget-container--hidden");
384
- }
385
- };
386
- closeFeedbackWidget = () => {
387
- if (this.$feedbackContainer) {
388
- this.$feedbackContainer.classList.add("workwonders-widget-container--hidden");
389
- }
390
- };
391
- closeChangelogMiniWidget = () => {
392
- if (this.$changelogMiniContainer) {
393
- this.$changelogMiniContainer.classList.add("workwonders-widget-container--hidden");
394
- }
395
- };
396
- }
397
- //# sourceMappingURL=workwonders-sdk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workwonders-sdk.js","sourceRoot":"","sources":["../src/workwonders-sdk.ts"],"names":[],"mappings":"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"}