@eka-care/medassist-widget-embed 0.1.4 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +76 -9
- package/dist/src/medassist-widget.js +20 -20
- package/dist/src/medassist-widget.js.map +1 -1
- package/index.ts +81 -9
- package/package.json +1 -1
- package/src/medassist-widget.js +20 -20
- package/src/medassist-widget.js.map +1 -1
- package/test.html +7 -0
package/dist/index.d.ts
CHANGED
|
@@ -12,11 +12,14 @@ declare let widgetCssTextPromise: Promise<string> | null;
|
|
|
12
12
|
declare class MedAssistWidgetLoader extends HTMLElement {
|
|
13
13
|
private defaultIconUrl;
|
|
14
14
|
private widgetLoaded;
|
|
15
|
+
private displayMode;
|
|
16
|
+
private onClose?;
|
|
15
17
|
constructor();
|
|
16
18
|
static get observedAttributes(): string[];
|
|
17
19
|
connectedCallback(): void;
|
|
18
20
|
attributeChangedCallback(name: string): void;
|
|
19
21
|
renderButton(): void;
|
|
22
|
+
initializeFullMode(): void;
|
|
20
23
|
loadAndRender(): Promise<void>;
|
|
21
24
|
loadWidgetCss(): Promise<void>;
|
|
22
25
|
loadWidgetScript(): Promise<void>;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,gBAAgB,QAAO,iBAAiB,GAAG,IAahD,CAAC;AAEF,KAAK,iBAAiB,GAAG,YAAY,GAAG,aAAa,GAAG,SAAS,CAAC;AAElE,QAAA,MAAM,cAAc,GAClB,OAAO,MAAM,GAAG,IAAI,KACnB,iBAAiB,GAAG,SAStB,CAAC;AAEF,QAAA,MAAM,yBAAyB,8DAC8B,CAAC;AAE9D,QAAA,MAAM,QAAQ,0BAAqB,CAAC;AACpC,QAAA,MAAM,aAAa,QASf,CAAC;AAEL,QAAA,MAAM,kBAAkB,QAmBpB,CAAC;AAEL,QAAA,MAAM,aAAa,QAA6C,CAAC;AACjE,QAAA,MAAM,cAAc,QAA8C,CAAC;AAEnE,QAAA,IAAI,mBAAmB,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAW,CAAC;AACrD,QAAA,IAAI,oBAAoB,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAW,CAAC;AAExD,cAAM,qBAAsB,SAAQ,WAAW;IAC7C,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,YAAY,CAAU;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,gBAAgB,QAAO,iBAAiB,GAAG,IAahD,CAAC;AAEF,KAAK,iBAAiB,GAAG,YAAY,GAAG,aAAa,GAAG,SAAS,CAAC;AAElE,QAAA,MAAM,cAAc,GAClB,OAAO,MAAM,GAAG,IAAI,KACnB,iBAAiB,GAAG,SAStB,CAAC;AAEF,QAAA,MAAM,yBAAyB,8DAC8B,CAAC;AAE9D,QAAA,MAAM,QAAQ,0BAAqB,CAAC;AACpC,QAAA,MAAM,aAAa,QASf,CAAC;AAEL,QAAA,MAAM,kBAAkB,QAmBpB,CAAC;AAEL,QAAA,MAAM,aAAa,QAA6C,CAAC;AACjE,QAAA,MAAM,cAAc,QAA8C,CAAC;AAEnE,QAAA,IAAI,mBAAmB,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAW,CAAC;AACrD,QAAA,IAAI,oBAAoB,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAW,CAAC;AAExD,cAAM,qBAAsB,SAAQ,WAAW;IAC7C,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,OAAO,CAAC,CAAa;;IAU7B,MAAM,KAAK,kBAAkB,IAAI,MAAM,EAAE,CAExC;IAED,iBAAiB,IAAI,IAAI;IAazB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAmB5C,YAAY,IAAI,IAAI;IAiEpB,kBAAkB,IAAI,IAAI;IA6BpB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAmF9B,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IA4BpC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;CA0ClC"}
|
package/dist/index.js
CHANGED
|
@@ -60,16 +60,41 @@ class MedAssistWidgetLoader extends HTMLElement {
|
|
|
60
60
|
this.attachShadow({ mode: "open" });
|
|
61
61
|
this.defaultIconUrl = "./assets/bot-icon.svg";
|
|
62
62
|
this.widgetLoaded = false;
|
|
63
|
+
this.displayMode = this.getAttribute("display-mode") === "full" ? "full" : "widget";
|
|
63
64
|
}
|
|
64
65
|
static get observedAttributes() {
|
|
65
|
-
return ["icon-url"];
|
|
66
|
+
return ["icon-url", "display-mode"];
|
|
66
67
|
}
|
|
67
68
|
connectedCallback() {
|
|
68
|
-
this.
|
|
69
|
+
if (this.displayMode === "full") {
|
|
70
|
+
this.initializeFullMode();
|
|
71
|
+
this.loadWidgetCss().then(() => {
|
|
72
|
+
this.loadWidgetScript().then(() => {
|
|
73
|
+
this.loadAndRender();
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
this.renderButton();
|
|
79
|
+
}
|
|
69
80
|
}
|
|
70
81
|
attributeChangedCallback(name) {
|
|
71
82
|
if (name === "icon-url") {
|
|
72
|
-
this.
|
|
83
|
+
if (this.displayMode === "widget") {
|
|
84
|
+
this.renderButton();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (name === "display-mode") {
|
|
88
|
+
const newMode = this.getAttribute("display-mode") === "full" ? "full" : "widget";
|
|
89
|
+
if (newMode !== this.displayMode) {
|
|
90
|
+
this.displayMode = newMode;
|
|
91
|
+
if (newMode === "full") {
|
|
92
|
+
this.initializeFullMode();
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
this.renderButton();
|
|
96
|
+
}
|
|
97
|
+
}
|
|
73
98
|
}
|
|
74
99
|
}
|
|
75
100
|
renderButton() {
|
|
@@ -132,9 +157,35 @@ class MedAssistWidgetLoader extends HTMLElement {
|
|
|
132
157
|
}
|
|
133
158
|
}
|
|
134
159
|
}
|
|
160
|
+
initializeFullMode() {
|
|
161
|
+
const shadowRoot = this.shadowRoot;
|
|
162
|
+
if (!shadowRoot) {
|
|
163
|
+
console.error("Shadow root is not available");
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
if (!shadowRoot.getElementById("medassist-widget-root")) {
|
|
167
|
+
shadowRoot.innerHTML = `
|
|
168
|
+
<style>
|
|
169
|
+
:host {
|
|
170
|
+
display: block;
|
|
171
|
+
width: 100%;
|
|
172
|
+
height: 100%;
|
|
173
|
+
position: fixed;
|
|
174
|
+
top: 0;
|
|
175
|
+
left: 0;
|
|
176
|
+
z-index: 200000;
|
|
177
|
+
}
|
|
178
|
+
#medassist-widget-root {
|
|
179
|
+
width: 100%;
|
|
180
|
+
height: 100%;
|
|
181
|
+
}
|
|
182
|
+
</style>
|
|
183
|
+
<div id="medassist-widget-root"></div>
|
|
184
|
+
`;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
135
187
|
async loadAndRender() {
|
|
136
188
|
var _a, _b;
|
|
137
|
-
console.log("MedAssistWidgetLoader loadAndRender");
|
|
138
189
|
const shadowRoot = this.shadowRoot;
|
|
139
190
|
if (!shadowRoot) {
|
|
140
191
|
console.error("Shadow root is not available");
|
|
@@ -150,22 +201,36 @@ class MedAssistWidgetLoader extends HTMLElement {
|
|
|
150
201
|
const displayModeAttribute = this.getAttribute("display-mode");
|
|
151
202
|
const displayMode = displayModeAttribute === "full" ? "full" : "widget";
|
|
152
203
|
const context = this.getAttribute("context") ? JSON.parse(this.getAttribute("context") || "{}") : undefined;
|
|
204
|
+
const customOnClose = this.onClose || (() => {
|
|
205
|
+
const onCloseAttr = this.getAttribute("data-on-close");
|
|
206
|
+
if (onCloseAttr && typeof window[onCloseAttr] === "function") {
|
|
207
|
+
return window[onCloseAttr];
|
|
208
|
+
}
|
|
209
|
+
return undefined;
|
|
210
|
+
})();
|
|
153
211
|
if (!agentId) {
|
|
154
212
|
console.error("Agent ID is required");
|
|
155
213
|
return;
|
|
156
214
|
}
|
|
157
|
-
if (!
|
|
158
|
-
console.error("Widget
|
|
215
|
+
if (!rootElement) {
|
|
216
|
+
console.error("Widget root element is missing");
|
|
159
217
|
return;
|
|
160
218
|
}
|
|
161
|
-
button
|
|
219
|
+
if (button) {
|
|
220
|
+
button.classList.add("hidden");
|
|
221
|
+
}
|
|
162
222
|
rootElement.classList.remove("hidden");
|
|
163
223
|
const widgetConfig = {
|
|
164
224
|
title,
|
|
165
225
|
iconUrl,
|
|
166
226
|
environment,
|
|
167
227
|
onClose: () => {
|
|
168
|
-
|
|
228
|
+
if (customOnClose && typeof customOnClose === "function") {
|
|
229
|
+
customOnClose();
|
|
230
|
+
}
|
|
231
|
+
if (button) {
|
|
232
|
+
button.classList.remove("hidden");
|
|
233
|
+
}
|
|
169
234
|
rootElement.classList.add("hidden");
|
|
170
235
|
},
|
|
171
236
|
baseUrl,
|
|
@@ -186,7 +251,9 @@ class MedAssistWidgetLoader extends HTMLElement {
|
|
|
186
251
|
}
|
|
187
252
|
catch (error) {
|
|
188
253
|
console.error("Failed to load MedAssist widget", error);
|
|
189
|
-
button
|
|
254
|
+
if (button) {
|
|
255
|
+
button.classList.remove("hidden");
|
|
256
|
+
}
|
|
190
257
|
rootElement.classList.add("hidden");
|
|
191
258
|
}
|
|
192
259
|
}
|