workwonders-sdk 0.0.13 → 0.1.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.
@@ -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 as WorkWondersSdk } 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,IAAI,cAAc,EAAE,MAAM,eAAe,CAAC;AAE9D,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 as WorkWondersSdk } 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,IAAI,cAAc,EAAE,MAAM,eAAe,CAAC;AAQ9D,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.13",
4
+ "version": "0.1.0",
5
5
  "description": "",
6
6
  "main": "dist/index.js",
7
7
  "files": [
@@ -1,39 +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 $changelogContainer;
13
- private $changelogIframe;
14
- private $changelogMiniContainer;
15
- private $feedbackButton;
16
- private $styleLink;
17
- private widgetBaseUrl;
18
- private args;
19
- private organizationData;
20
- private contextBasedChangelogs;
21
- private readonly messageListener;
22
- private readonly clickListener;
23
- init: (args: InitArgs) => Promise<void>;
24
- initFeedbackWidget: ({ useCustomTrigger }?: InitFeedabackArgs) => void;
25
- notifyUrlChange: () => void;
26
- private checkShowContextBasedChangelogs;
27
- private initFeedbackButton;
28
- initChangelogWidget: () => Promise<void>;
29
- showChangelogs: (changelogIdsToShow: number[]) => void;
30
- initChangelogWidgetMini: () => void;
31
- openFeedbackWidget: () => void;
32
- openChangelogWidget: (id?: string) => void;
33
- openChangelogMiniWidget: () => void;
34
- closeChangelogWidget: () => void;
35
- closeFeedbackWidget: () => void;
36
- closeChangelogMiniWidget: () => void;
37
- }
38
- export {};
39
- //# 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,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,UAiD3D;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,aAWhB;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
- $changelogContainer = null;
46
- $changelogIframe = null;
47
- $changelogMiniContainer = null;
48
- $feedbackButton = null;
49
- $styleLink = null;
50
- widgetBaseUrl = "";
51
- args = null;
52
- organizationData = null;
53
- contextBasedChangelogs = [];
54
- messageListener = (message) => {
55
- if (message.data.type === "changelog_widget_closed") {
56
- this.closeChangelogWidget();
57
- }
58
- if (message.data.type === "changelog_mini_widget_closed") {
59
- this.closeChangelogMiniWidget();
60
- }
61
- if (message.data.type === "changelog_mini_widget_item_clicked") {
62
- this.openChangelogWidget(message.data.id);
63
- this.closeChangelogMiniWidget();
64
- }
65
- if (message.data.type === "feedback_widget_closed") {
66
- this.closeFeedbackWidget();
67
- }
68
- if (message.data.type === "feedback_post_created") {
69
- // trigger callback events
70
- }
71
- };
72
- clickListener = (event) => {
73
- this.checkShowContextBasedChangelogs({
74
- clickedElement: event.target,
75
- });
76
- const $triggerFeedbackTarget = event.target.closest("[data-open-workwonders-feedback]");
77
- const $triggerChangelogTarget = event.target.closest("[data-open-workwonders-changelog]");
78
- const $triggerChangelogMiniTarget = event.target.closest("[data-open-workwonders-changelog-mini]");
79
- const $changelogMiniContainerTarget = event.target.closest("#workwonders-changelog-mini-container");
80
- if (!$changelogMiniContainerTarget) {
81
- this.closeChangelogMiniWidget();
82
- }
83
- if ($triggerFeedbackTarget) {
84
- this.openFeedbackWidget();
85
- return;
86
- }
87
- if ($triggerChangelogTarget) {
88
- this.openChangelogWidget();
89
- return;
90
- }
91
- if ($triggerChangelogMiniTarget) {
92
- this.openChangelogMiniWidget();
93
- return;
94
- }
95
- };
96
- init = async (args) => {
97
- this.args = args;
98
- if (this.$changelogContainer) {
99
- this.$changelogContainer.remove();
100
- this.$changelogContainer = null;
101
- }
102
- if (this.$feedbackContainer) {
103
- this.$feedbackContainer.remove();
104
- this.$feedbackContainer = null;
105
- }
106
- if (this.$changelogMiniContainer) {
107
- this.$changelogMiniContainer.remove();
108
- this.$changelogMiniContainer = null;
109
- }
110
- if (this.$feedbackButton) {
111
- this.$feedbackButton.remove();
112
- this.$feedbackButton = null;
113
- }
114
- if (!args.organization) {
115
- console.error("Cannot init Work Wonders SDK. Organization is required.");
116
- return;
117
- }
118
- const organizationData = await this.ky
119
- .get(`organizations/${args.organization}`)
120
- .then((res) => res.json());
121
- if (organizationData.accessLevel === OrganizationDtoAccessLevel.Private &&
122
- !args.token) {
123
- console.error("Cannot init Work Wonders SDK. This organization is private, a token is required.");
124
- return;
125
- }
126
- if (!organizationData.features.widgets) {
127
- console.error("Cannot init Work Wonders SDK. This organization does not have widgets feature enabled.");
128
- return;
129
- }
130
- this.organizationData = organizationData;
131
- const language = organizationData.languages.find((lang) => lang === args.locale) ??
132
- organizationData.defaultLanguage;
133
- args.locale = language;
134
- this.widgetBaseUrl = `https://${args.organization}.${workwondersUrl.host}/widget/`;
135
- window.removeEventListener("message", this.messageListener);
136
- window.addEventListener("message", this.messageListener);
137
- document.removeEventListener("click", this.clickListener);
138
- document.addEventListener("click", this.clickListener);
139
- if (!this.$styleLink) {
140
- const linkElement = document.createElement("link");
141
- this.$styleLink = linkElement;
142
- this.$styleLink.rel = "stylesheet";
143
- this.$styleLink.href = "https://sdk.workwonders.app/style.css";
144
- document.head.appendChild(this.$styleLink);
145
- await Promise.race([
146
- new Promise((resolve) => {
147
- linkElement.onload = resolve;
148
- }),
149
- new Promise((resolve) => {
150
- setTimeout(() => {
151
- resolve(null);
152
- }, 3000);
153
- }),
154
- ]);
155
- }
156
- console.log("Work Wonders SDK initialized");
157
- };
158
- initFeedbackWidget = ({ useCustomTrigger } = {}) => {
159
- if (this.$feedbackContainer) {
160
- return;
161
- }
162
- const args = this.args;
163
- const organizationData = this.organizationData;
164
- if (!args) {
165
- return;
166
- }
167
- if (!organizationData) {
168
- return;
169
- }
170
- if (!organizationData.enabledModules.includes("FEEDBACK")) {
171
- console.warn("Feedback module is not enabled for this organization.");
172
- return;
173
- }
174
- const $feedbackContainer = document.createElement("div");
175
- this.$feedbackContainer = $feedbackContainer;
176
- $feedbackContainer.id = "workwonders-feedback-container";
177
- $feedbackContainer.classList.add("workwonders-widget-container");
178
- $feedbackContainer.classList.add("workwonders-widget-container--hidden");
179
- const $feedbackIframe = document.createElement("iframe");
180
- $feedbackIframe.id = "workwonders-feedback-iframe";
181
- $feedbackIframe.classList.add("workwonders-widget-iframe");
182
- $feedbackIframe.classList.add("workwonders-feedback-iframe");
183
- const widgetUrl = new URL("feedback", `${this.widgetBaseUrl}`);
184
- widgetUrl.searchParams.append("jwt", args.token || "");
185
- widgetUrl.searchParams.append("lang", args.locale || "");
186
- $feedbackIframe.src = widgetUrl.toString();
187
- $feedbackContainer.onclick = () => {
188
- this.closeFeedbackWidget();
189
- };
190
- $feedbackContainer.appendChild($feedbackIframe);
191
- document.body.appendChild($feedbackContainer);
192
- if (!useCustomTrigger) {
193
- this.initFeedbackButton();
194
- }
195
- };
196
- notifyUrlChange = () => {
197
- this.checkShowContextBasedChangelogs({});
198
- };
199
- checkShowContextBasedChangelogs({ clickedElement, }) {
200
- const args = this.args;
201
- const organizationData = this.organizationData;
202
- if (!args?.locale || !organizationData) {
203
- console.log("No args or organization data");
204
- return;
205
- }
206
- const contextBasedChangelogsMatching = this.contextBasedChangelogs.filter((changelog) => {
207
- return processContextConditions(changelog.contextConditions, window.location.href, organizationData.userMetadata, clickedElement);
208
- });
209
- if (contextBasedChangelogsMatching.length > 0) {
210
- this.showChangelogs(contextBasedChangelogsMatching.map((changelog) => changelog.id));
211
- }
212
- }
213
- initFeedbackButton() {
214
- if (this.$feedbackButton) {
215
- return;
216
- }
217
- const args = this.args;
218
- const organizationData = this.organizationData;
219
- if (!args?.locale || !organizationData) {
220
- return;
221
- }
222
- const $feedbackButton = document.createElement("button");
223
- this.$feedbackButton = $feedbackButton;
224
- const buttonText = organizationData.feedbackPostConfig.copywriting[args.locale]
225
- ?.widgetButtonText ??
226
- organizationData.feedbackPostConfig.copywriting[organizationData.defaultLanguage].widgetButtonText ??
227
- "Feedback";
228
- $feedbackButton.id = "workwonders-feedback-button";
229
- $feedbackButton.textContent = buttonText;
230
- $feedbackButton.classList.add("workwonders-feedback-button");
231
- $feedbackButton.style.backgroundColor = organizationData.primaryColor;
232
- $feedbackButton.onclick = () => {
233
- this.openFeedbackWidget();
234
- };
235
- document.body.appendChild($feedbackButton);
236
- }
237
- initChangelogWidget = async () => {
238
- if (this.$changelogContainer) {
239
- return;
240
- }
241
- const args = this.args;
242
- const organizationData = this.organizationData;
243
- if (!args?.locale || !organizationData) {
244
- return;
245
- }
246
- if (!organizationData.enabledModules.includes("CHANGELOG")) {
247
- console.warn("Changelog module is not enabled for this organization.");
248
- return;
249
- }
250
- const $changelogContainer = document.createElement("div");
251
- this.$changelogContainer = $changelogContainer;
252
- const existingsChangelogs = await this.ky
253
- .get(`organizations/${args.organization}/changelogs/summary?language=${args.locale}`)
254
- .then((res) => res.json())
255
- .then((changelogs) => changelogs.sort((a, b) => new Date(b.publishedAt ?? 0).getTime() -
256
- new Date(a.publishedAt ?? 0).getTime()));
257
- const regularChangelogs = existingsChangelogs.filter((changelog) => changelog.showMode === "Regular");
258
- this.contextBasedChangelogs = existingsChangelogs.filter((changelog) => changelog.showMode === "ContextBased");
259
- $changelogContainer.id = "workwonders-changelog-container";
260
- $changelogContainer.classList.add("workwonders-widget-container", "workwonders-widget-container--hidden");
261
- const $changelogIframe = document.createElement("iframe");
262
- this.$changelogIframe = $changelogIframe;
263
- $changelogIframe.id = "workwonders-changelog-iframe";
264
- $changelogIframe.classList.add("workwonders-widget-iframe", "workwonders-changelog-iframe");
265
- const seenChangelogs = localStorage.getItem(`workwonders-seen-changelogs-${args.organization}`);
266
- const seenChangelogsArray = seenChangelogs
267
- ? JSON.parse(seenChangelogs)
268
- : null;
269
- const unseenChangelogs = regularChangelogs.filter((changelog) => !seenChangelogsArray?.includes(changelog.id));
270
- const shouldShowChangelogOnStart = unseenChangelogs.length > 0 &&
271
- (seenChangelogsArray ||
272
- organizationData.changelogConfig.showLatestChangelogOnFirstVisit);
273
- if (shouldShowChangelogOnStart) {
274
- const changelogIdsToShow = seenChangelogsArray === null
275
- ? [unseenChangelogs[0].id]
276
- : unseenChangelogs.map((c) => c.id);
277
- this.showChangelogs(changelogIdsToShow);
278
- }
279
- const newSeenChangelogs = [
280
- ...(seenChangelogsArray ?? []),
281
- ...unseenChangelogs.map((c) => c.id),
282
- ];
283
- localStorage.setItem(`workwonders-seen-changelogs-${this.args?.organization}`, JSON.stringify(newSeenChangelogs));
284
- this.notifyUrlChange();
285
- $changelogContainer.onclick = () => {
286
- this.closeChangelogWidget();
287
- };
288
- $changelogContainer.appendChild($changelogIframe);
289
- document.body.appendChild($changelogContainer);
290
- };
291
- showChangelogs = (changelogIdsToShow) => {
292
- const $changelogIframe = this.$changelogIframe;
293
- const $changelogContainer = this.$changelogContainer;
294
- const args = this.args;
295
- if (!$changelogIframe || !$changelogContainer || !args) {
296
- console.log("No changelog iframe or container or args for showChangelogs");
297
- return;
298
- }
299
- if (changelogIdsToShow.length === 0) {
300
- console.log("No changelogs to show");
301
- return;
302
- }
303
- const widgetUrl = new URL("changelog", `${this.widgetBaseUrl}`);
304
- widgetUrl.searchParams.append("jwt", args.token || "");
305
- widgetUrl.searchParams.append("lang", args.locale || "");
306
- widgetUrl.searchParams.append("changelogIds", changelogIdsToShow.join(","));
307
- $changelogIframe.onload = () => {
308
- const currentSeenChangelogs = localStorage.getItem(`workwonders-seen-changelogs-${this.args?.organization}`);
309
- const currentSeenChangelogsArray = currentSeenChangelogs
310
- ? JSON.parse(currentSeenChangelogs)
311
- : [];
312
- const newSeenChangelogs = [
313
- ...currentSeenChangelogsArray,
314
- ...changelogIdsToShow,
315
- ];
316
- localStorage.setItem(`workwonders-seen-changelogs-${this.args?.organization}`, JSON.stringify(newSeenChangelogs));
317
- $changelogContainer.classList.remove("workwonders-widget-container--hidden");
318
- };
319
- $changelogIframe.src = widgetUrl.toString();
320
- };
321
- initChangelogWidgetMini = () => {
322
- if (this.$changelogMiniContainer) {
323
- return;
324
- }
325
- const args = this.args;
326
- const organizationData = this.organizationData;
327
- if (!args) {
328
- return;
329
- }
330
- if (!organizationData) {
331
- return;
332
- }
333
- if (!organizationData.enabledModules.includes("CHANGELOG")) {
334
- console.warn("Changelog module is not enabled for this organization.");
335
- return;
336
- }
337
- const $changelogMiniContainer = document.createElement("div");
338
- this.$changelogMiniContainer = $changelogMiniContainer;
339
- $changelogMiniContainer.id = "workwonders-changelog-mini-container";
340
- $changelogMiniContainer.classList.add("workwonders-widget-container");
341
- $changelogMiniContainer.classList.add("workwonders-changelog-mini-container");
342
- $changelogMiniContainer.classList.add("workwonders-widget-container--hidden");
343
- const $changelogMiniIframe = document.createElement("iframe");
344
- $changelogMiniIframe.id = "workwonders-changelog-mini-iframe";
345
- $changelogMiniIframe.classList.add("workwonders-widget-iframe");
346
- $changelogMiniIframe.classList.add("workwonders-changelog-mini-iframe");
347
- const widgetUrl = new URL("changelog/mini", `${this.widgetBaseUrl}`);
348
- widgetUrl.searchParams.append("jwt", args.token || "");
349
- widgetUrl.searchParams.append("lang", args.locale || "");
350
- $changelogMiniIframe.src = widgetUrl.toString();
351
- $changelogMiniContainer.appendChild($changelogMiniIframe);
352
- $changelogMiniContainer.onclick = () => {
353
- this.closeChangelogMiniWidget();
354
- };
355
- document.body.appendChild($changelogMiniContainer);
356
- };
357
- openFeedbackWidget = () => {
358
- if (this.$feedbackContainer) {
359
- window.parent.postMessage({ type: "set_origin", origin: window.location.href }, "*");
360
- this.$feedbackContainer.classList.remove("workwonders-widget-container--hidden");
361
- }
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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"}