@telia-ace/knowledge-widget-types-grid 1.0.29 → 1.0.30
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 @@
|
|
|
1
|
+
{"version":3,"file":"index.aba60d50.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
|
package/dist/index.js
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
1
|
+
var Y = Object.defineProperty, z = Object.defineProperties;
|
|
2
|
+
var J = Object.getOwnPropertyDescriptors;
|
|
3
|
+
var F = Object.getOwnPropertySymbols;
|
|
4
|
+
var X = Object.prototype.hasOwnProperty, Z = Object.prototype.propertyIsEnumerable;
|
|
5
|
+
var R = (i, e, t) => e in i ? Y(i, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : i[e] = t, Q = (i, e) => {
|
|
6
6
|
for (var t in e || (e = {}))
|
|
7
|
-
|
|
8
|
-
if (
|
|
9
|
-
for (var t of
|
|
10
|
-
|
|
7
|
+
X.call(e, t) && R(i, t, e[t]);
|
|
8
|
+
if (F)
|
|
9
|
+
for (var t of F(e))
|
|
10
|
+
Z.call(e, t) && R(i, t, e[t]);
|
|
11
11
|
return i;
|
|
12
|
-
},
|
|
13
|
-
var
|
|
12
|
+
}, _ = (i, e) => z(i, J(e));
|
|
13
|
+
var A = (i, e, t) => (R(i, typeof e != "symbol" ? e + "" : e, t), t);
|
|
14
|
+
var S = (i, e, t) => new Promise((n, s) => {
|
|
14
15
|
var a = (d) => {
|
|
15
16
|
try {
|
|
16
17
|
o(t.next(d));
|
|
@@ -26,35 +27,35 @@ var E = (i, e, t) => new Promise((n, s) => {
|
|
|
26
27
|
}, o = (d) => d.done ? n(d.value) : Promise.resolve(d.value).then(a, c);
|
|
27
28
|
o((t = t.apply(i, e)).next());
|
|
28
29
|
});
|
|
29
|
-
import { Widget as
|
|
30
|
-
import { Component as
|
|
31
|
-
import { DialogItemType as
|
|
32
|
-
import { removeNullAndUndefinedValues as
|
|
33
|
-
import { FormBuilder as
|
|
34
|
-
const
|
|
30
|
+
import { Widget as tt } from "@telia-ace/widget-types-grid";
|
|
31
|
+
import { Component as bt, DetachedComponent as yt, NotFound as vt, genericComponentStyling as Nt } from "@telia-ace/widget-types-grid";
|
|
32
|
+
import { DialogItemType as G, WidgetRenderState as B } from "@telia-ace/knowledge-widget-core";
|
|
33
|
+
import { removeNullAndUndefinedValues as et, shallowCompare as q, deepClone as it } from "@telia-ace/widget-utilities";
|
|
34
|
+
import { FormBuilder as W } from "@telia-ace/widget-forms";
|
|
35
|
+
const N = (i) => {
|
|
35
36
|
if (i) {
|
|
36
37
|
const { Type: e, Content: t } = i;
|
|
37
38
|
if (e && t)
|
|
38
39
|
return { type: e, content: t };
|
|
39
40
|
}
|
|
40
|
-
},
|
|
41
|
+
}, T = (i) => i.map((e) => {
|
|
41
42
|
const t = {
|
|
42
43
|
id: e.Id.toString(),
|
|
43
44
|
title: e.Name,
|
|
44
|
-
symbol:
|
|
45
|
-
activeSymbol: e.ActiveIcon &&
|
|
45
|
+
symbol: N(e.DefaultIcon),
|
|
46
|
+
activeSymbol: e.ActiveIcon && N(e.ActiveIcon),
|
|
46
47
|
description: e.Description || e.Attributes && e.Attributes.description || "",
|
|
47
48
|
matches: e.GuidesCount
|
|
48
49
|
};
|
|
49
|
-
return e.Children && e.Children.length && (t.items =
|
|
50
|
+
return e.Children && e.Children.length && (t.items = T(e.Children)), t;
|
|
50
51
|
}), y = (i, e) => i.filter(({ Type: t }) => t === e).map(({ Id: t, Title: n, Body: s }) => ({
|
|
51
52
|
id: t.toString(),
|
|
52
53
|
title: n,
|
|
53
54
|
body: s
|
|
54
|
-
})),
|
|
55
|
+
})), L = (i) => i.map(({ Id: e, Title: t, DefaultIcon: n, ListNotices: s, Notices: a }) => ({
|
|
55
56
|
id: e.toString(),
|
|
56
57
|
title: t,
|
|
57
|
-
symbol:
|
|
58
|
+
symbol: N(n),
|
|
58
59
|
defaultHeaderOptions: {
|
|
59
60
|
visible: !!s.length
|
|
60
61
|
},
|
|
@@ -65,7 +66,7 @@ const v = (i) => {
|
|
|
65
66
|
modified: f,
|
|
66
67
|
expandable: h === "listNotice"
|
|
67
68
|
}))
|
|
68
|
-
})),
|
|
69
|
+
})), O = ({
|
|
69
70
|
Id: i,
|
|
70
71
|
Title: e,
|
|
71
72
|
DefaultIcon: t,
|
|
@@ -80,7 +81,7 @@ const v = (i) => {
|
|
|
80
81
|
id: i.toString(),
|
|
81
82
|
title: e,
|
|
82
83
|
description: d,
|
|
83
|
-
symbol:
|
|
84
|
+
symbol: N(t),
|
|
84
85
|
clientName: g === "custom.adapter" ? I : g,
|
|
85
86
|
expanded: !0,
|
|
86
87
|
inline: !0,
|
|
@@ -90,21 +91,21 @@ const v = (i) => {
|
|
|
90
91
|
const { displayTextBeforeClick: m, textBeforeClick: r } = C;
|
|
91
92
|
m === "true" && (u.expanded = !1, u.title = r), g.indexOf("phone.text") > -1 ? u.body.phoneNumber = C.phoneNumber : u.body.freetext = C.freetext;
|
|
92
93
|
}
|
|
93
|
-
return (g.indexOf("chat.popup") > -1 || g.indexOf("link") > -1 || g === "custom.adapter" && s === "custom") && (u.body = C, u.body.confirmationFallback = a), g.indexOf("ace") > -1 && (u.body = C), o && o.HasValueComponents && (h ? u.body.form =
|
|
94
|
-
},
|
|
94
|
+
return (g.indexOf("chat.popup") > -1 || g.indexOf("link") > -1 || g === "custom.adapter" && s === "custom") && (u.body = C, u.body.confirmationFallback = a), g.indexOf("ace") > -1 && (u.body = C), o && o.HasValueComponents && (h ? u.body.form = W.fromLegacyForm(i.toString(), o, h).get() : u.body.form = W.fromLegacyForm(i.toString(), o).get(), c || (u.expanded = u.inline = !1)), u;
|
|
95
|
+
}, x = (i = []) => i.map(({ Id: e, Title: t, TotalMatches: n, Symbol: s, DefaultIcon: a, ActiveIcon: c }) => ({
|
|
95
96
|
id: e.toString(),
|
|
96
97
|
title: t,
|
|
97
98
|
matches: n,
|
|
98
|
-
symbol:
|
|
99
|
-
defaultIcon:
|
|
100
|
-
activeIcon:
|
|
101
|
-
})),
|
|
99
|
+
symbol: N(a || s),
|
|
100
|
+
defaultIcon: N(a),
|
|
101
|
+
activeIcon: N(c)
|
|
102
|
+
})), D = (i) => i.map(({ Id: e, Title: t, Tags: n, FirstPublishedDate: s, Modified: a }) => ({
|
|
102
103
|
id: e.toString(),
|
|
103
104
|
title: t,
|
|
104
|
-
tags:
|
|
105
|
+
tags: x(n),
|
|
105
106
|
published: s,
|
|
106
107
|
modified: a
|
|
107
|
-
})),
|
|
108
|
+
})), st = (i, e) => {
|
|
108
109
|
switch (i) {
|
|
109
110
|
case p.MatchByCategory:
|
|
110
111
|
case p.Match: {
|
|
@@ -125,16 +126,16 @@ const v = (i) => {
|
|
|
125
126
|
Tags: o,
|
|
126
127
|
ByCategory: d
|
|
127
128
|
} = e;
|
|
128
|
-
return t.guides =
|
|
129
|
+
return t.guides = D(n), t.matches = s, t.byCategory = (d || []).map(({ Id: h, Matches: f, TotalMatches: g }) => ({
|
|
129
130
|
id: h,
|
|
130
|
-
guides:
|
|
131
|
+
guides: D(f),
|
|
131
132
|
matches: g
|
|
132
|
-
})), t.tags =
|
|
133
|
+
})), t.tags = x(o), t.notificationLists = L(c || []), t.topNotifications = y(a || [], "noticeRowTop"), t.middleNotifications = y(a || [], "noticeRowMiddle"), t.bottomNotifications = y(a || [], "footerNotice"), t;
|
|
133
134
|
}
|
|
134
135
|
case p.Categories: {
|
|
135
136
|
const { Children: t, GuidesCountTotal: n } = e;
|
|
136
137
|
return {
|
|
137
|
-
categories:
|
|
138
|
+
categories: T(t || []),
|
|
138
139
|
matches: n
|
|
139
140
|
};
|
|
140
141
|
}
|
|
@@ -156,11 +157,11 @@ const v = (i) => {
|
|
|
156
157
|
Categories: m,
|
|
157
158
|
Tags: r,
|
|
158
159
|
SeoMetaDescription: l,
|
|
159
|
-
SeoAllowIndex:
|
|
160
|
+
SeoAllowIndex: E,
|
|
160
161
|
Perspectives: w,
|
|
161
|
-
PerspectiveKey:
|
|
162
|
-
Translations:
|
|
163
|
-
} = e,
|
|
162
|
+
PerspectiveKey: U,
|
|
163
|
+
Translations: P
|
|
164
|
+
} = e, V = U || Object.values(w).find((v) => v === o) || w.Default || null, H = {
|
|
164
165
|
guide: {
|
|
165
166
|
id: t.toString(),
|
|
166
167
|
title: n,
|
|
@@ -174,75 +175,75 @@ const v = (i) => {
|
|
|
174
175
|
hasHandover: f,
|
|
175
176
|
allowFeedback: h,
|
|
176
177
|
seoMetaDescription: l,
|
|
177
|
-
seoAllowIndex:
|
|
178
|
+
seoAllowIndex: E,
|
|
178
179
|
perspectives: w,
|
|
179
|
-
perspective:
|
|
180
|
-
translations: Object.keys(
|
|
180
|
+
perspective: V,
|
|
181
|
+
translations: Object.keys(P || {}).reduce((v, k) => (v[k] = P[k].toString(), v), {})
|
|
181
182
|
},
|
|
182
|
-
related:
|
|
183
|
+
related: D(a || []),
|
|
183
184
|
dialog: [],
|
|
184
|
-
contactMethods: (d || []).map((
|
|
185
|
-
tags:
|
|
185
|
+
contactMethods: (d || []).map((v) => O(v)),
|
|
186
|
+
tags: x(r)
|
|
186
187
|
};
|
|
187
|
-
return (c || []).forEach(({ CanAccess:
|
|
188
|
-
if (!
|
|
188
|
+
return (c || []).forEach(({ CanAccess: v, Description: k, ConnectionId: j, Properties: b }) => {
|
|
189
|
+
if (!v)
|
|
189
190
|
return;
|
|
190
191
|
const M = {
|
|
191
192
|
id: t.toString(),
|
|
192
|
-
title:
|
|
193
|
-
connection:
|
|
194
|
-
type:
|
|
193
|
+
title: k,
|
|
194
|
+
connection: j,
|
|
195
|
+
type: G.default,
|
|
195
196
|
parent: {
|
|
196
197
|
id: t.toString(),
|
|
197
198
|
title: n,
|
|
198
|
-
tags:
|
|
199
|
+
tags: x(r)
|
|
199
200
|
}
|
|
200
201
|
};
|
|
201
202
|
if (b.Type === "Guide" || b.Type === "Link")
|
|
202
203
|
switch (b.Id && (M.id = b.Id.toString()), b.Uri && (M.href = b.Uri), b.Target && (M.target = b.Target), b.Type) {
|
|
203
204
|
case "Guide":
|
|
204
|
-
M.type =
|
|
205
|
+
M.type = G.guide;
|
|
205
206
|
break;
|
|
206
207
|
case "Link":
|
|
207
|
-
M.type =
|
|
208
|
+
M.type = G.link;
|
|
208
209
|
break;
|
|
209
210
|
}
|
|
210
|
-
|
|
211
|
-
}),
|
|
211
|
+
H.dialog.push(M);
|
|
212
|
+
}), H;
|
|
212
213
|
}
|
|
213
214
|
case p.Contacts: {
|
|
214
215
|
const { Children: t, Matches: n, Notices: s, NoticeLists: a } = e;
|
|
215
216
|
return {
|
|
216
|
-
contactMethods: (n || []).map((o) =>
|
|
217
|
-
categories:
|
|
217
|
+
contactMethods: (n || []).map((o) => O(o)),
|
|
218
|
+
categories: T(t || []),
|
|
218
219
|
topNotifications: y(s || [], "noticeRowTop"),
|
|
219
220
|
middleNotifications: y(s || [], "noticeRowMiddle"),
|
|
220
221
|
bottomNotifications: y(s || [], "footerNotice"),
|
|
221
|
-
notificationLists:
|
|
222
|
+
notificationLists: L(a || [])
|
|
222
223
|
};
|
|
223
224
|
}
|
|
224
225
|
case p.ContactMethod: {
|
|
225
226
|
const { ContactMethod: t } = e;
|
|
226
|
-
return
|
|
227
|
+
return O(t || {});
|
|
227
228
|
}
|
|
228
229
|
case p.Tags:
|
|
229
230
|
case p.TagsOnGuides:
|
|
230
|
-
return
|
|
231
|
+
return x(e || []);
|
|
231
232
|
case p.Notifications: {
|
|
232
233
|
const { Notices: t, NoticeLists: n } = e;
|
|
233
234
|
return {
|
|
234
235
|
topNotifications: y(t || [], "noticeRowTop"),
|
|
235
236
|
middleNotifications: y(t || [], "noticeRowMiddle"),
|
|
236
237
|
bottomNotifications: y(t || [], "footerNotice"),
|
|
237
|
-
notificationLists:
|
|
238
|
+
notificationLists: L(n || [])
|
|
238
239
|
};
|
|
239
240
|
}
|
|
240
241
|
default:
|
|
241
242
|
return {};
|
|
242
243
|
}
|
|
243
244
|
};
|
|
244
|
-
var
|
|
245
|
-
const
|
|
245
|
+
var nt = /* @__PURE__ */ ((i) => (i.Guide = "guide", i.Guides = "guides", i.GuidesByCategory = "guides-by-category", i.RowNotifications = "row-notices", i.NotificationLists = "notification-lists", i.GuideCategories = "guide-categories", i.ContactMethodCategories = "contact-method-categories", i.ContactMethod = "contact-method", i.ContactMethods = "contact-methods", i.Tags = "tags", i.TagsOnGuides = "tagsonguides", i))(nt || {}), p = /* @__PURE__ */ ((i) => (i.Match = "match", i.Categories = "categories", i.Guide = "guide", i.Contacts = "contacts", i.ContactMethod = "contact-method", i.MatchByCategory = "match-by-category", i.Tags = "tags", i.TagsOnGuides = "tagsonguides", i.Notifications = "notifications", i))(p || {}), ot = /* @__PURE__ */ ((i) => (i.Positive = "Positive", i.Negative = "Negative", i))(ot || {}), at = /* @__PURE__ */ ((i) => (i.POPULARITY_DESCENDING = "popularity-descending", i.ALPHABETIC_ASCENDING = "alphabetic-ascending", i.ALPHABETIC_DESCENDING = "alphabetic-descending", i.MODIFIED_ASCENDING = "modified-ascending", i.MODIFIED_DESCENDING = "modified-descending", i.PUBLISHED_ASCENDING = "published-ascending", i.PUBLISHED_DESCENDING = "published-descending", i))(at || {});
|
|
246
|
+
const K = (i) => {
|
|
246
247
|
switch (i) {
|
|
247
248
|
case "guides":
|
|
248
249
|
return "match";
|
|
@@ -267,19 +268,23 @@ const W = (i) => {
|
|
|
267
268
|
default:
|
|
268
269
|
throw "error";
|
|
269
270
|
}
|
|
270
|
-
},
|
|
271
|
+
}, rt = (i) => S(void 0, null, function* () {
|
|
271
272
|
const { invoke: e } = i.get("$widget");
|
|
272
|
-
return (yield e("renderState")) ===
|
|
273
|
+
return (yield e("renderState")) === B.hidden;
|
|
273
274
|
});
|
|
274
|
-
class
|
|
275
|
+
class $ {
|
|
275
276
|
constructor(e, t) {
|
|
276
|
-
this
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
277
|
+
A(this, "queries", /* @__PURE__ */ new Map());
|
|
278
|
+
A(this, "lastTake", 0);
|
|
279
|
+
A(this, "events");
|
|
280
|
+
A(this, "getUnresolvedQueries", () => {
|
|
281
|
+
let e = 0;
|
|
282
|
+
return this.queries.forEach((t, n) => {
|
|
283
|
+
t.some((a) => !a.resolved) && (e = 1);
|
|
284
|
+
}), e;
|
|
285
|
+
});
|
|
286
|
+
this.container = e, this.matchingClient = t, this.events = e.get("$widget").events, this.events.subscribe("widget:settings-updated", () => this.queries = /* @__PURE__ */ new Map()), this.events.subscribe("widget:render-state-changed", (n, { next: s, previous: a }) => {
|
|
287
|
+
a === B.hidden && s === B.open && this.fetchAllUnresolvedQueries();
|
|
283
288
|
});
|
|
284
289
|
}
|
|
285
290
|
static getInstance(e) {
|
|
@@ -287,8 +292,8 @@ class K {
|
|
|
287
292
|
}
|
|
288
293
|
fetch(e, t) {
|
|
289
294
|
return new Promise((n, s) => {
|
|
290
|
-
t.take && (this.lastTake = +(t.take || 0)),
|
|
291
|
-
const a =
|
|
295
|
+
t.take && (this.lastTake = +(t.take || 0)), et(t);
|
|
296
|
+
const a = K(e), c = this.queries.get(a) || [], o = c.find((d) => q(d.params, t));
|
|
292
297
|
if (o) {
|
|
293
298
|
const d = c.indexOf(o);
|
|
294
299
|
if (o.resolved ? (this.events.dispatch("data-client:fetched", {
|
|
@@ -306,10 +311,10 @@ class K {
|
|
|
306
311
|
data: {},
|
|
307
312
|
resolvers: [{ resolve: n, reject: s }]
|
|
308
313
|
}), this.queries.set(a, c), this.runQuery(a, t);
|
|
309
|
-
}).then((n) =>
|
|
314
|
+
}).then((n) => it(n));
|
|
310
315
|
}
|
|
311
316
|
read(e, t) {
|
|
312
|
-
const { select: n } = t, s =
|
|
317
|
+
const { select: n } = t, s = K(e);
|
|
313
318
|
return (this.queries.get(s) || []).reduce((o, d) => {
|
|
314
319
|
if (typeof n == "function") {
|
|
315
320
|
const h = n(d.data);
|
|
@@ -323,11 +328,11 @@ class K {
|
|
|
323
328
|
return this.matchingClient.giveFeedback(e, t, n);
|
|
324
329
|
}
|
|
325
330
|
setLoadingStatus(e, t, n) {
|
|
326
|
-
const s = this.queries.get(e) || [], a = s.find((c) =>
|
|
331
|
+
const s = this.queries.get(e) || [], a = s.find((c) => q(c.params, t));
|
|
327
332
|
a && (a.loading = n), this.queries.set(e, s);
|
|
328
333
|
}
|
|
329
334
|
runQuery(e, t) {
|
|
330
|
-
return
|
|
335
|
+
return S(this, null, function* () {
|
|
331
336
|
const {
|
|
332
337
|
searchPhrase: n = "",
|
|
333
338
|
categories: s = "0",
|
|
@@ -342,19 +347,19 @@ class K {
|
|
|
342
347
|
sorting: I = "popularity-descending",
|
|
343
348
|
guideIds: u = []
|
|
344
349
|
} = t, m = n.toString().trim();
|
|
345
|
-
if (yield
|
|
350
|
+
if (yield rt(this.container))
|
|
346
351
|
return Promise.resolve();
|
|
347
352
|
switch (e) {
|
|
348
353
|
case "match": {
|
|
349
354
|
const r = (l) => {
|
|
350
|
-
const [
|
|
355
|
+
const [E, w] = l.split("-");
|
|
351
356
|
return {
|
|
352
357
|
type: (/* @__PURE__ */ new Map([
|
|
353
358
|
["popularity", "popularity"],
|
|
354
359
|
["alphabetic", "title"],
|
|
355
360
|
["modified", "lastModified"],
|
|
356
361
|
["published", "firstPublished"]
|
|
357
|
-
])).get(
|
|
362
|
+
])).get(E),
|
|
358
363
|
direction: w
|
|
359
364
|
};
|
|
360
365
|
};
|
|
@@ -386,7 +391,9 @@ class K {
|
|
|
386
391
|
l.status === 404 && (l.message = "The guide could not be found."), this.handleResponse({}, e, t, l);
|
|
387
392
|
});
|
|
388
393
|
case "categories":
|
|
389
|
-
return this.matchingClient.getCategories({ phrase: m, expand: g, tags: o }).then(
|
|
394
|
+
return this.matchingClient.getCategories({ phrase: m, expand: g, tags: o }).then(
|
|
395
|
+
(r) => r && this.handleResponse(r, e, t)
|
|
396
|
+
);
|
|
390
397
|
case "contacts":
|
|
391
398
|
return f ? this.matchingClient.contactMethods(+f, { phrase: m }).then((r) => r && this.handleResponse(r, e, t)) : this.matchingClient.contacts(+a, { phrase: m }).then((r) => r && this.handleResponse(r, e, t));
|
|
392
399
|
case "contact-method":
|
|
@@ -419,14 +426,14 @@ class K {
|
|
|
419
426
|
});
|
|
420
427
|
}
|
|
421
428
|
handleResponse(e = {}, t, n, s) {
|
|
422
|
-
const a = this.queries.get(t) || [], c = a.find((o) =>
|
|
429
|
+
const a = this.queries.get(t) || [], c = a.find((o) => q(o.params, n));
|
|
423
430
|
if (c) {
|
|
424
|
-
const o = s ||
|
|
431
|
+
const o = s || st(t, e);
|
|
425
432
|
this.track(o, t, s), c.resolvers.forEach((h) => {
|
|
426
433
|
s ? h.reject({ error: o }) : h.resolve(o);
|
|
427
434
|
});
|
|
428
435
|
const d = a.indexOf(c);
|
|
429
|
-
d > -1 && a.splice(d, 1), a.push(Q(
|
|
436
|
+
d > -1 && a.splice(d, 1), a.push(_(Q({}, c), { error: s, resolvers: [], data: o, resolved: !0 })), this.setLoadingStatus(t, n, !1), this.queries.set(t, a), s || this.events.dispatch("data-client:fetched", {
|
|
430
437
|
type: t,
|
|
431
438
|
params: n,
|
|
432
439
|
response: o,
|
|
@@ -451,27 +458,30 @@ class K {
|
|
|
451
458
|
});
|
|
452
459
|
}
|
|
453
460
|
static create(e) {
|
|
454
|
-
return e.getAsync("matchingClient").then((t) => new
|
|
461
|
+
return e.getAsync("matchingClient").then((t) => new $(e, t));
|
|
455
462
|
}
|
|
456
463
|
}
|
|
457
|
-
const
|
|
458
|
-
class
|
|
464
|
+
const ct = (i) => import("@telia-ace/knowledge-widget-adapters").then(({ ContactMethodPlatform: e }) => e.create(i)), dt = (i) => import("./index.aba60d50.js").then(({ DataClient: e }) => e.create(i));
|
|
465
|
+
class mt extends tt {
|
|
459
466
|
constructor(e) {
|
|
460
|
-
super(e), this.container.registerAsync(
|
|
467
|
+
super(e), this.container.registerAsync(
|
|
468
|
+
"contactMethods",
|
|
469
|
+
() => ct(this.container)
|
|
470
|
+
), this.container.registerAsync("dataClient", () => dt(this.container));
|
|
461
471
|
}
|
|
462
472
|
}
|
|
463
473
|
export {
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
474
|
+
bt as Component,
|
|
475
|
+
$ as DataClient,
|
|
476
|
+
nt as DataType,
|
|
477
|
+
yt as DetachedComponent,
|
|
478
|
+
ot as FeedbackType,
|
|
479
|
+
mt as GridWidget,
|
|
480
|
+
vt as NotFound,
|
|
471
481
|
p as ServiceClientQueryType,
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
482
|
+
at as SortingType,
|
|
483
|
+
K as determineServiceClientQueryType,
|
|
484
|
+
st as formatLegacyData,
|
|
475
485
|
Nt as genericComponentStyling
|
|
476
486
|
};
|
|
477
487
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/data/legacy-conversion.ts","../src/data/data-client.ts","../src/widget/services.ts","../src/widget/extended-widget.ts"],"sourcesContent":["import {\r\n CategoryApiResponse,\r\n ContactApiResponse,\r\n ContactCategoriesApiResponse,\r\n ContactMethodApiResponse,\r\n GuideApiResponse,\r\n GuideCategoriesApiResponse,\r\n GuideMatchApiResponse,\r\n GuideViewApiResponse,\r\n NoticeApiResponse,\r\n NoticeListApiResponse,\r\n TagListApiResponse,\r\n ValidationApiResult,\r\n} from '@telia-ace/knowledge-serviceclient';\r\nimport { ContactMethodType as ContactMethod } from '@telia-ace/knowledge-widget-adapters';\r\nimport {\r\n Category,\r\n DialogItem,\r\n DialogItemType,\r\n Guide,\r\n Notification,\r\n NotificationList,\r\n Symbol,\r\n Tag,\r\n} from '@telia-ace/knowledge-widget-core';\r\nimport { FormBuilder } from '@telia-ace/widget-forms';\r\nimport { DataError, ServiceClientQueryType } from './data-client';\r\n\r\nexport type MatchResult = {\r\n guides: Guide[];\r\n matches: number;\r\n topNotifications: Notification[];\r\n middleNotifications: Notification[];\r\n bottomNotifications: Notification[];\r\n notificationLists: NotificationList[];\r\n tags: Tag[];\r\n byCategory: { id: string; guides: Guide[]; matches: number }[];\r\n};\r\n\r\nexport type TagsResult = Tag[];\r\n\r\nexport type CategoriesResult = {\r\n categories: Category[];\r\n matches: number;\r\n};\r\n\r\nexport type NotificationResults = Pick<\r\n MatchResult,\r\n 'topNotifications' | 'middleNotifications' | 'bottomNotifications' | 'notificationLists'\r\n>;\r\n\r\nexport type GuideResult = {\r\n guide: {\r\n id: string;\r\n title: string;\r\n body: string;\r\n modified: string;\r\n modifiedBy: string | null;\r\n publishedBy: string | null;\r\n published: string;\r\n connection: string;\r\n categories: number[];\r\n hasHandover: boolean;\r\n allowFeedback: boolean;\r\n seoMetaDescription: string | null;\r\n seoAllowIndex: boolean | null;\r\n perspective: string | null;\r\n perspectives: { [key: string]: string };\r\n translations?: { [key: string]: string };\r\n };\r\n related: Guide[];\r\n dialog: DialogItem[];\r\n contactMethods: ContactMethod[];\r\n tags: Tag[];\r\n error?: DataError;\r\n};\r\n\r\nexport type ContactsResult = {\r\n categories: Category[];\r\n contactMethods: ContactMethod[];\r\n topNotifications: Notification[];\r\n middleNotifications: Notification[];\r\n bottomNotifications: Notification[];\r\n notificationLists: NotificationList[];\r\n};\r\n\r\nexport type SubmissionResult = {\r\n contactMethod?: ContactMethod;\r\n valid: boolean;\r\n};\r\n\r\nconst convertLegacySymbol = (symbol?: { Type: string; Content: string }): Symbol | undefined => {\r\n if (symbol) {\r\n const { Type, Content } = symbol;\r\n if (Type && Content) {\r\n return { type: Type, content: Content };\r\n }\r\n }\r\n};\r\n\r\nconst mapLegacyCategoriesRecursively = (categories: CategoryApiResponse[]): Category[] => {\r\n return categories.map((c) => {\r\n const category: Category = {\r\n id: c.Id.toString(),\r\n title: c.Name,\r\n symbol: convertLegacySymbol(c.DefaultIcon),\r\n activeSymbol: c.ActiveIcon && convertLegacySymbol(c.ActiveIcon),\r\n description: c.Description || (c.Attributes && c.Attributes.description) || '',\r\n matches: c.GuidesCount,\r\n };\r\n if (c.Children && c.Children.length) {\r\n category.items = mapLegacyCategoriesRecursively(c.Children);\r\n }\r\n return category;\r\n });\r\n};\r\n\r\nconst mapNotices = (source: NoticeApiResponse[], type: string): Notification[] => {\r\n return source\r\n .filter(({ Type }) => Type === type)\r\n .map(({ Id, Title, Body }) => ({\r\n id: Id.toString(),\r\n title: Title,\r\n body: Body,\r\n }));\r\n};\r\n\r\nconst mapNotificationLists = (source: NoticeListApiResponse[]): NotificationList[] => {\r\n return source.map(({ Id, Title, DefaultIcon, ListNotices, Notices }) => ({\r\n id: Id.toString(),\r\n title: Title,\r\n symbol: convertLegacySymbol(DefaultIcon),\r\n defaultHeaderOptions: {\r\n visible: !!ListNotices.length,\r\n },\r\n notifications: (ListNotices || [])\r\n .concat(Notices || [])\r\n .map(({ Id, Title, Body, Type, Modified }) => ({\r\n id: Id.toString(),\r\n title: Title,\r\n body: Body,\r\n modified: Modified,\r\n expandable: Type === 'listNotice',\r\n })),\r\n }));\r\n};\r\n\r\nconst mapContactMethodSettings = (\r\n {\r\n Id,\r\n Title,\r\n DefaultIcon,\r\n Exits: [Exit],\r\n ExitType,\r\n ConfirmationText,\r\n ExpandFormAutomatically,\r\n Form,\r\n Description,\r\n }: ContactApiResponse,\r\n Validation?: ValidationApiResult\r\n): ContactMethod => {\r\n const { Adapter } = Exit || { Adapter: {} };\r\n const { ClientName = '', Settings = {}, CustomClientName = '' } = Adapter;\r\n\r\n const settings: ContactMethod = {\r\n id: Id.toString(),\r\n title: Title,\r\n description: Description,\r\n symbol: convertLegacySymbol(DefaultIcon),\r\n clientName: ClientName === 'custom.adapter' ? CustomClientName : ClientName,\r\n expanded: true,\r\n inline: true,\r\n body: {},\r\n };\r\n\r\n if (ClientName.indexOf('phone') > -1 || ClientName.indexOf('freetext') > -1) {\r\n const { displayTextBeforeClick, textBeforeClick } = Settings;\r\n if (displayTextBeforeClick === 'true') {\r\n settings.expanded = false;\r\n settings.title = textBeforeClick;\r\n }\r\n\r\n if (ClientName.indexOf('phone.text') > -1) {\r\n settings.body.phoneNumber = Settings.phoneNumber;\r\n } else {\r\n settings.body.freetext = Settings.freetext;\r\n }\r\n }\r\n\r\n if (\r\n ClientName.indexOf('chat.popup') > -1 ||\r\n ClientName.indexOf('link') > -1 ||\r\n (ClientName === 'custom.adapter' && ExitType === 'custom')\r\n ) {\r\n settings.body = Settings;\r\n settings.body.confirmationFallback = ConfirmationText;\r\n }\r\n\r\n if (ClientName.indexOf('ace') > -1) {\r\n settings.body = Settings;\r\n }\r\n\r\n if (Form && Form.HasValueComponents) {\r\n if (Validation) {\r\n settings.body.form = FormBuilder.fromLegacyForm(Id.toString(), Form, Validation).get();\r\n } else {\r\n settings.body.form = FormBuilder.fromLegacyForm(Id.toString(), Form).get();\r\n }\r\n if (!ExpandFormAutomatically) {\r\n settings.expanded = settings.inline = false;\r\n }\r\n }\r\n\r\n return settings;\r\n};\r\n\r\ntype Modify<T, R> = Omit<T, keyof R> & R;\r\ntype ExtendedGuideMatchApiResponse = Modify<\r\n GuideMatchApiResponse,\r\n {\r\n ByCategory: { Id: string; Matches: GuideApiResponse[]; TotalMatches: number }[];\r\n }\r\n>;\r\n\r\nconst mapTags = (tags: TagListApiResponse[] = []): Tag[] => {\r\n return tags.map(({ Id, Title, TotalMatches, Symbol, DefaultIcon, ActiveIcon }) => ({\r\n id: Id.toString(),\r\n title: Title,\r\n matches: TotalMatches,\r\n symbol: convertLegacySymbol(DefaultIcon || Symbol),\r\n defaultIcon: convertLegacySymbol(DefaultIcon),\r\n activeIcon: convertLegacySymbol(ActiveIcon),\r\n }));\r\n};\r\n\r\nconst mapGuides = (guides: GuideApiResponse[]) => {\r\n return guides.map(({ Id, Title, Tags, FirstPublishedDate, Modified }) => ({\r\n id: Id.toString(),\r\n title: Title,\r\n tags: mapTags(Tags),\r\n published: FirstPublishedDate,\r\n modified: Modified,\r\n }));\r\n};\r\n\r\nexport const formatLegacyData = (type: ServiceClientQueryType, data: any) => {\r\n switch (type) {\r\n case ServiceClientQueryType.MatchByCategory:\r\n case ServiceClientQueryType.Match: {\r\n const result: MatchResult = {\r\n guides: [],\r\n matches: 0,\r\n topNotifications: [],\r\n middleNotifications: [],\r\n bottomNotifications: [],\r\n notificationLists: [],\r\n tags: [],\r\n byCategory: [],\r\n };\r\n const {\r\n Matches,\r\n TotalMatches,\r\n Notices,\r\n NoticeLists,\r\n Tags,\r\n ByCategory,\r\n }: ExtendedGuideMatchApiResponse = data;\r\n\r\n result.guides = mapGuides(Matches);\r\n\r\n result.matches = TotalMatches;\r\n\r\n result.byCategory = (ByCategory || []).map(({ Id, Matches, TotalMatches }) => ({\r\n id: Id,\r\n guides: mapGuides(Matches),\r\n matches: TotalMatches,\r\n }));\r\n\r\n result.tags = mapTags(Tags);\r\n\r\n result.notificationLists = mapNotificationLists(NoticeLists || []);\r\n\r\n result.topNotifications = mapNotices(Notices || [], 'noticeRowTop');\r\n\r\n result.middleNotifications = mapNotices(Notices || [], 'noticeRowMiddle');\r\n\r\n result.bottomNotifications = mapNotices(Notices || [], 'footerNotice');\r\n\r\n return result;\r\n }\r\n case ServiceClientQueryType.Categories: {\r\n const { Children, GuidesCountTotal }: GuideCategoriesApiResponse = data;\r\n\r\n const result: CategoriesResult = {\r\n categories: mapLegacyCategoriesRecursively(Children || []),\r\n matches: GuidesCountTotal,\r\n };\r\n\r\n return result;\r\n }\r\n case ServiceClientQueryType.Guide: {\r\n const {\r\n Id,\r\n Title,\r\n Body,\r\n Related,\r\n Options,\r\n ConnectionId,\r\n ContactMethods,\r\n EnableFeedback,\r\n HandoverExists,\r\n FirstPublishedDate,\r\n Modified,\r\n ModifiedByDisplayName,\r\n FirstPublishedByDisplayName,\r\n Categories,\r\n Tags,\r\n SeoMetaDescription,\r\n SeoAllowIndex,\r\n Perspectives,\r\n PerspectiveKey,\r\n Translations,\r\n }: GuideViewApiResponse = data;\r\n\r\n /* \r\n PerspectiveKey is always null when on the \"top level\" of a dialog tree\r\n OR when navigating down a dialog tree in the \"Default answer version\"\r\n Note: The \"Default answer version\" is not the same as a given guides\r\n default answer version. The \"Default answer version\" is always the answer\r\n version in Perspectives with the key \"Default\".\r\n */\r\n const perspective =\r\n PerspectiveKey ||\r\n Object.values(Perspectives).find((connection) => connection === ConnectionId) ||\r\n Perspectives['Default'] ||\r\n null;\r\n\r\n const result: GuideResult = {\r\n guide: {\r\n id: Id.toString(),\r\n title: Title,\r\n body: Body,\r\n modified: Modified,\r\n published: FirstPublishedDate,\r\n modifiedBy: ModifiedByDisplayName,\r\n publishedBy: FirstPublishedByDisplayName,\r\n connection: ConnectionId,\r\n categories: Categories,\r\n hasHandover: HandoverExists,\r\n allowFeedback: EnableFeedback,\r\n seoMetaDescription: SeoMetaDescription,\r\n seoAllowIndex: SeoAllowIndex,\r\n perspectives: Perspectives,\r\n perspective,\r\n translations: Object.keys(Translations || {}).reduce<{\r\n [key: string]: string;\r\n }>((acc, key) => {\r\n acc[key] = Translations[key].toString();\r\n return acc;\r\n }, {}),\r\n },\r\n related: mapGuides(Related || []),\r\n dialog: [],\r\n contactMethods: (ContactMethods || []).map((cm) => mapContactMethodSettings(cm)),\r\n tags: mapTags(Tags),\r\n };\r\n\r\n (Options || []).forEach(({ CanAccess, Description, ConnectionId, Properties }) => {\r\n if (!CanAccess) {\r\n return;\r\n }\r\n\r\n const item: DialogItem = {\r\n id: Id.toString(),\r\n title: Description,\r\n connection: ConnectionId,\r\n type: DialogItemType.default,\r\n parent: {\r\n id: Id.toString(),\r\n title: Title,\r\n tags: mapTags(Tags),\r\n },\r\n };\r\n\r\n if (Properties.Type === 'Guide' || Properties.Type === 'Link') {\r\n Properties.Id && (item.id = Properties.Id.toString());\r\n Properties.Uri && (item.href = Properties.Uri);\r\n Properties.Target && (item.target = Properties.Target);\r\n switch (Properties.Type) {\r\n case 'Guide':\r\n item.type = DialogItemType.guide;\r\n break;\r\n case 'Link':\r\n item.type = DialogItemType.link;\r\n break;\r\n }\r\n }\r\n\r\n result.dialog.push(item);\r\n });\r\n\r\n return result;\r\n }\r\n case ServiceClientQueryType.Contacts: {\r\n const { Children, Matches, Notices, NoticeLists }: ContactCategoriesApiResponse = data;\r\n\r\n const result: ContactsResult = {\r\n contactMethods: (Matches || []).map((cm) => mapContactMethodSettings(cm)),\r\n categories: mapLegacyCategoriesRecursively(Children || []),\r\n topNotifications: mapNotices(Notices || [], 'noticeRowTop'),\r\n middleNotifications: mapNotices(Notices || [], 'noticeRowMiddle'),\r\n bottomNotifications: mapNotices(Notices || [], 'footerNotice'),\r\n notificationLists: mapNotificationLists(NoticeLists || []),\r\n };\r\n\r\n return result;\r\n }\r\n case ServiceClientQueryType.ContactMethod: {\r\n const { ContactMethod }: ContactMethodApiResponse = data;\r\n\r\n return mapContactMethodSettings(ContactMethod || {});\r\n }\r\n case ServiceClientQueryType.Tags:\r\n case ServiceClientQueryType.TagsOnGuides: {\r\n return mapTags(data || []);\r\n }\r\n case ServiceClientQueryType.Notifications: {\r\n const { Notices, NoticeLists } = data;\r\n\r\n return {\r\n topNotifications: mapNotices(Notices || [], 'noticeRowTop'),\r\n middleNotifications: mapNotices(Notices || [], 'noticeRowMiddle'),\r\n bottomNotifications: mapNotices(Notices || [], 'footerNotice'),\r\n notificationLists: mapNotificationLists(NoticeLists || []),\r\n };\r\n }\r\n default:\r\n return {};\r\n }\r\n};\r\n","import { ServiceClient } from '@telia-ace/knowledge-serviceclient';\r\nimport { WidgetRenderState } from '@telia-ace/knowledge-widget-core';\r\nimport {\r\n deepClone,\r\n removeNullAndUndefinedValues,\r\n shallowCompare,\r\n} from '@telia-ace/widget-utilities';\r\nimport { Container, EventManager, Widget } from '@webprovisions/platform';\r\nimport { formatLegacyData } from './legacy-conversion';\r\n\r\nexport type Subscriber = (...args: any[]) => void;\r\n\r\nexport enum DataType {\r\n Guide = 'guide',\r\n Guides = 'guides',\r\n GuidesByCategory = 'guides-by-category',\r\n RowNotifications = 'row-notices',\r\n NotificationLists = 'notification-lists',\r\n GuideCategories = 'guide-categories',\r\n ContactMethodCategories = 'contact-method-categories',\r\n ContactMethod = 'contact-method',\r\n ContactMethods = 'contact-methods',\r\n Tags = 'tags',\r\n TagsOnGuides = 'tagsonguides',\r\n}\r\n\r\nexport type DataError = {\r\n status: number;\r\n message: string;\r\n};\r\n\r\nexport enum ServiceClientQueryType {\r\n Match = 'match',\r\n Categories = 'categories',\r\n Guide = 'guide',\r\n Contacts = 'contacts',\r\n ContactMethod = 'contact-method',\r\n MatchByCategory = 'match-by-category',\r\n Tags = 'tags',\r\n TagsOnGuides = 'tagsonguides',\r\n Notifications = 'notifications',\r\n}\r\n\r\nexport enum FeedbackType {\r\n Positive = 'Positive',\r\n Negative = 'Negative',\r\n}\r\n\r\nexport type QueryParameters = {\r\n guideId?: string | number;\r\n categories?: string | number | string[] | number[];\r\n tagId?: string | number;\r\n connection?: string;\r\n\r\n contactMethodCategoryId?: string | number;\r\n contactMethodId?: string | number;\r\n\r\n searchPhrase?: string | number;\r\n take?: string | number;\r\n [key: string]: any;\r\n\r\n expandCategories?: 'none' | 'children' | 'descendants';\r\n sorting?: SortingType;\r\n guideIds?: string[];\r\n};\r\n\r\nexport enum SortingType {\r\n POPULARITY_DESCENDING = 'popularity-descending',\r\n ALPHABETIC_ASCENDING = 'alphabetic-ascending',\r\n ALPHABETIC_DESCENDING = 'alphabetic-descending',\r\n MODIFIED_ASCENDING = 'modified-ascending',\r\n MODIFIED_DESCENDING = 'modified-descending',\r\n PUBLISHED_ASCENDING = 'published-ascending',\r\n PUBLISHED_DESCENDING = 'published-descending',\r\n}\r\n\r\nexport type Query = {\r\n params: QueryParameters;\r\n resolved: boolean;\r\n loading: boolean;\r\n error?: DataError;\r\n data: any;\r\n resolvers: {\r\n resolve: (data: any) => void;\r\n reject: (data: any) => void;\r\n }[];\r\n};\r\n\r\nexport const determineServiceClientQueryType = (type: DataType): ServiceClientQueryType => {\r\n switch (type) {\r\n case DataType.Guides:\r\n return ServiceClientQueryType.Match;\r\n case DataType.GuidesByCategory:\r\n return ServiceClientQueryType.MatchByCategory;\r\n case DataType.Guide:\r\n return ServiceClientQueryType.Guide;\r\n case DataType.GuideCategories:\r\n return ServiceClientQueryType.Categories;\r\n case DataType.ContactMethodCategories:\r\n case DataType.ContactMethods:\r\n return ServiceClientQueryType.Contacts;\r\n case DataType.ContactMethod:\r\n return ServiceClientQueryType.ContactMethod;\r\n case DataType.Tags:\r\n return ServiceClientQueryType.Tags;\r\n case DataType.TagsOnGuides:\r\n return ServiceClientQueryType.TagsOnGuides;\r\n case DataType.NotificationLists:\r\n case DataType.RowNotifications:\r\n return ServiceClientQueryType.Notifications;\r\n default:\r\n throw 'error';\r\n }\r\n};\r\n\r\nconst widgetIsHidden = async (container: Container) => {\r\n const { invoke } = container.get('$widget');\r\n const renderState = await invoke('renderState');\r\n return renderState === WidgetRenderState.hidden;\r\n};\r\n\r\nexport default class DataClient {\r\n private queries: Map<ServiceClientQueryType, Query[]> = new Map();\r\n private lastTake: number = 0;\r\n public events: EventManager;\r\n constructor(private container: Container, private matchingClient: ServiceClient) {\r\n this.events = (<Widget>container.get('$widget')).events;\r\n\r\n this.events.subscribe('widget:settings-updated', () => (this.queries = new Map()));\r\n\r\n this.events.subscribe('widget:render-state-changed', (event, { next, previous }) => {\r\n if (previous === WidgetRenderState.hidden && next === WidgetRenderState.open) {\r\n this.fetchAllUnresolvedQueries();\r\n }\r\n });\r\n }\r\n\r\n static getInstance(container: Container): Promise<DataClient> {\r\n return container.getAsync('dataClient');\r\n }\r\n\r\n private getUnresolvedQueries = () => {\r\n let unresolvedCount = 0;\r\n this.queries.forEach((queries, type) => {\r\n const hasUnresolved = queries.some((query: Query) => !query.resolved);\r\n if (hasUnresolved) {\r\n unresolvedCount = +1;\r\n }\r\n });\r\n return unresolvedCount;\r\n };\r\n\r\n public fetch(type: DataType, params: QueryParameters): Promise<any> {\r\n return new Promise((resolve, reject) => {\r\n if (params.take) {\r\n this.lastTake = +(params.take || 0);\r\n }\r\n\r\n removeNullAndUndefinedValues(params);\r\n const serviceClientQueryType = determineServiceClientQueryType(type);\r\n const queries = this.queries.get(serviceClientQueryType) || [];\r\n const query = queries.find((q) => shallowCompare(q.params, params));\r\n\r\n if (query) {\r\n const index = queries.indexOf(query);\r\n if (query.resolved) {\r\n this.events.dispatch('data-client:fetched', {\r\n params,\r\n type: serviceClientQueryType,\r\n response: query.data,\r\n unresolvedQueries: this.getUnresolvedQueries(),\r\n });\r\n this.track(query.data, serviceClientQueryType, query.error);\r\n if (query.data && query.error) {\r\n reject({ error: query.error });\r\n } else {\r\n resolve(query.data);\r\n }\r\n } else {\r\n query.resolvers.push({ resolve, reject });\r\n }\r\n queries.splice(index, 1);\r\n queries.push(query);\r\n this.queries.set(serviceClientQueryType, queries);\r\n if (!query.loading && !query.resolved) {\r\n return this.runQuery(serviceClientQueryType, params);\r\n }\r\n } else {\r\n queries.push({\r\n params,\r\n resolved: false,\r\n loading: true,\r\n data: {},\r\n resolvers: [{ resolve, reject }],\r\n });\r\n this.queries.set(serviceClientQueryType, queries);\r\n\r\n return this.runQuery(serviceClientQueryType, params);\r\n }\r\n }).then((res) => deepClone(res));\r\n }\r\n\r\n // query the cached data\r\n public read(\r\n type: DataType,\r\n options: {\r\n select?: (data: any) => any; // either return all data by the DataType, or use an selector\r\n }\r\n ) {\r\n const { select } = options;\r\n const serviceClientQueryType = determineServiceClientQueryType(type);\r\n const queries = this.queries.get(serviceClientQueryType) || [];\r\n\r\n const result = queries.reduce<any[]>((acc, query) => {\r\n if (typeof select === 'function') {\r\n const match = select(query.data);\r\n if (match) {\r\n acc.push(match);\r\n }\r\n } else {\r\n acc.push(query.data);\r\n }\r\n return acc;\r\n }, []);\r\n return result;\r\n }\r\n\r\n public feedback(id: string, connection: string, feedback: FeedbackType): Promise<any> {\r\n return this.matchingClient.giveFeedback(id, connection, feedback);\r\n }\r\n\r\n private setLoadingStatus(\r\n type: ServiceClientQueryType,\r\n params: QueryParameters,\r\n loading: boolean\r\n ) {\r\n const queries = this.queries.get(type) || [];\r\n const query = queries.find((q) => shallowCompare(q.params, params));\r\n\r\n if (query) {\r\n query.loading = loading;\r\n }\r\n this.queries.set(type, queries);\r\n }\r\n\r\n private async runQuery(type: ServiceClientQueryType, params: QueryParameters) {\r\n const {\r\n searchPhrase = '',\r\n categories = '0',\r\n contactMethodCategoryId = '0',\r\n contactMethodId = '0',\r\n tagId = undefined,\r\n take = 5,\r\n connection = '',\r\n guideId,\r\n expandCategories = 'descendants',\r\n currentCategory,\r\n sorting = SortingType.POPULARITY_DESCENDING,\r\n guideIds = [],\r\n } = params;\r\n\r\n const trimmedPhrase = searchPhrase.toString().trim();\r\n if (await widgetIsHidden(this.container)) {\r\n return Promise.resolve();\r\n }\r\n\r\n switch (type) {\r\n case ServiceClientQueryType.Match: {\r\n const formatSortingValues = (sorting: string) => {\r\n const [type, direction] = sorting.split('-');\r\n const sortKeysMap = new Map([\r\n ['popularity', 'popularity'],\r\n ['alphabetic', 'title'],\r\n ['modified', 'lastModified'],\r\n ['published', 'firstPublished'],\r\n ]);\r\n\r\n return {\r\n type: sortKeysMap.get(type),\r\n direction: direction,\r\n };\r\n };\r\n\r\n if (guideIds.length) {\r\n return this.matchingClient\r\n .customRequest('guides', 'POST', {\r\n configuration: { ids: guideIds, take: +take },\r\n })\r\n .then((matches) => matches && this.handleResponse(matches, type, params));\r\n }\r\n\r\n return this.matchingClient\r\n .match(trimmedPhrase, {\r\n categories:\r\n categories === '0'\r\n ? []\r\n : Array.isArray(categories)\r\n ? categories\r\n : [+categories],\r\n take: +take,\r\n tags: tagId,\r\n sorting: formatSortingValues(sorting),\r\n ids: guideIds,\r\n })\r\n .then((matches) => matches && this.handleResponse(matches, type, params));\r\n }\r\n case ServiceClientQueryType.MatchByCategory: {\r\n return this.matchingClient\r\n .match(trimmedPhrase, {\r\n groupByCategory: true,\r\n categories:\r\n categories === '0'\r\n ? []\r\n : Array.isArray(categories)\r\n ? categories\r\n : [+categories],\r\n take: +take,\r\n tags: tagId,\r\n })\r\n .then((matches) => matches && this.handleResponse(matches, type, params));\r\n }\r\n case ServiceClientQueryType.Guide: {\r\n return this.matchingClient\r\n .getGuide(guideId, { connectionId: connection })\r\n .then((guide) => {\r\n if (guide) {\r\n this.handleResponse(guide, type, params);\r\n }\r\n })\r\n .catch((e) => {\r\n const error = {\r\n message: 'Something went wrong.',\r\n status: e.status || 400,\r\n };\r\n if (error.status === 404) {\r\n error.message = 'The guide could not be found.';\r\n }\r\n this.handleResponse({}, type, params, error);\r\n });\r\n }\r\n case ServiceClientQueryType.Categories: {\r\n return this.matchingClient\r\n .getCategories({ phrase: trimmedPhrase, expand: expandCategories, tags: tagId })\r\n .then(\r\n (categories) => categories && this.handleResponse(categories, type, params)\r\n );\r\n }\r\n case ServiceClientQueryType.Contacts: {\r\n if (guideId) {\r\n return this.matchingClient\r\n .contactMethods(+guideId, { phrase: trimmedPhrase })\r\n .then((result) => result && this.handleResponse(result, type, params));\r\n }\r\n return this.matchingClient\r\n .contacts(+contactMethodCategoryId, { phrase: trimmedPhrase })\r\n .then((result) => result && this.handleResponse(result, type, params));\r\n }\r\n case ServiceClientQueryType.ContactMethod: {\r\n return this.matchingClient\r\n .getContactMethod(+contactMethodId, { guideId, currentCategory })\r\n .then((result) => result && this.handleResponse(result, type, params));\r\n }\r\n case ServiceClientQueryType.Tags: {\r\n return this.matchingClient\r\n .customRequest('tags', 'GET', {\r\n configuration: {\r\n take: 999999,\r\n phrase: trimmedPhrase,\r\n categories:\r\n categories === '0'\r\n ? []\r\n : Array.isArray(categories)\r\n ? categories\r\n : [+categories],\r\n },\r\n })\r\n .then((result) => result && this.handleResponse(result, type, params));\r\n }\r\n case ServiceClientQueryType.TagsOnGuides: {\r\n return this.matchingClient\r\n .customRequest('tagsonguides', 'GET', {\r\n configuration: {\r\n take: 999999,\r\n phrase: trimmedPhrase,\r\n categories:\r\n categories === '0'\r\n ? []\r\n : Array.isArray(categories)\r\n ? categories\r\n : [+categories],\r\n tags: tagId,\r\n },\r\n })\r\n .then((result) => result && this.handleResponse(result, type, params));\r\n }\r\n case ServiceClientQueryType.Notifications: {\r\n return this.matchingClient\r\n .customRequest('notices', 'GET', {\r\n configuration: {\r\n phrase: trimmedPhrase,\r\n categories:\r\n categories === '0'\r\n ? []\r\n : Array.isArray(categories)\r\n ? categories\r\n : [+categories],\r\n },\r\n })\r\n .then((result) => result && this.handleResponse(result, type, params));\r\n }\r\n }\r\n }\r\n\r\n handleResponse(\r\n data: any = {},\r\n type: ServiceClientQueryType,\r\n params: QueryParameters,\r\n error?: DataError\r\n ) {\r\n const queries = this.queries.get(type) || [];\r\n const existing = queries.find((q) => shallowCompare(q.params, params));\r\n if (existing) {\r\n const formatted = error ? error : formatLegacyData(type, data);\r\n this.track(formatted, type, error);\r\n existing.resolvers.forEach((r) => {\r\n if (error) {\r\n r.reject({ error: formatted });\r\n } else {\r\n r.resolve(formatted);\r\n }\r\n });\r\n\r\n const index = queries.indexOf(existing);\r\n if (index > -1) {\r\n queries.splice(index, 1);\r\n }\r\n queries.push({ ...existing, error, resolvers: [], data: formatted, resolved: true });\r\n this.setLoadingStatus(type, params, false);\r\n this.queries.set(type, queries);\r\n if (!error) {\r\n this.events.dispatch('data-client:fetched', {\r\n type,\r\n params,\r\n response: formatted,\r\n unresolvedQueries: this.getUnresolvedQueries(),\r\n });\r\n }\r\n }\r\n }\r\n\r\n private fetchAllUnresolvedQueries() {\r\n for (const [queryType, queries] of this.queries) {\r\n queries\r\n .filter((query: Query) => !query.resolved)\r\n .forEach((query) => {\r\n this.runQuery(queryType, query.params);\r\n });\r\n }\r\n }\r\n\r\n private track(data: any = {}, type: ServiceClientQueryType, error?: DataError) {\r\n const widget = this.container.get('$widget');\r\n if (widget && !error) {\r\n widget.events.dispatch('tracking:service-client-response', {\r\n type,\r\n data,\r\n });\r\n } else if (widget) {\r\n widget.events.dispatch('tracking:service-client-error', {\r\n type,\r\n error,\r\n });\r\n }\r\n }\r\n\r\n static create(container: Container): Promise<DataClient> {\r\n return container\r\n .getAsync('matchingClient')\r\n .then((matchingClient) => new DataClient(container, matchingClient));\r\n }\r\n}\r\n","import { Container } from '@webprovisions/platform';\r\n\r\nexport const createContactMethodPlatform = (container: Container) => {\r\n return import('@telia-ace/knowledge-widget-adapters').then(({ ContactMethodPlatform }) => {\r\n return ContactMethodPlatform.create(container);\r\n });\r\n};\r\n\r\nexport const createDataClient = (container: Container) => {\r\n return import('../data').then(({ DataClient }) => {\r\n return DataClient.create(container);\r\n });\r\n};\r\n","import { Widget } from '@telia-ace/widget-types-grid';\r\nimport { Container } from '@webprovisions/platform';\r\nimport { createContactMethodPlatform, createDataClient } from './services';\r\n\r\nexport default class ExtendedWidget extends Widget {\r\n constructor(container: Container) {\r\n super(container);\r\n\r\n this.container.registerAsync('contactMethods', () =>\r\n createContactMethodPlatform(this.container)\r\n );\r\n this.container.registerAsync('dataClient', () => createDataClient(this.container));\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/data/legacy-conversion.ts","../src/data/data-client.ts","../src/widget/services.ts","../src/widget/extended-widget.ts"],"sourcesContent":["import {\r\n CategoryApiResponse,\r\n ContactApiResponse,\r\n ContactCategoriesApiResponse,\r\n ContactMethodApiResponse,\r\n GuideApiResponse,\r\n GuideCategoriesApiResponse,\r\n GuideMatchApiResponse,\r\n GuideViewApiResponse,\r\n NoticeApiResponse,\r\n NoticeListApiResponse,\r\n TagListApiResponse,\r\n ValidationApiResult,\r\n} from '@telia-ace/knowledge-serviceclient';\r\nimport { ContactMethodType as ContactMethod } from '@telia-ace/knowledge-widget-adapters';\r\nimport {\r\n Category,\r\n DialogItem,\r\n DialogItemType,\r\n Guide,\r\n Notification,\r\n NotificationList,\r\n Symbol,\r\n Tag,\r\n} from '@telia-ace/knowledge-widget-core';\r\nimport { FormBuilder } from '@telia-ace/widget-forms';\r\nimport { DataError, ServiceClientQueryType } from './data-client';\r\n\r\nexport type MatchResult = {\r\n guides: Guide[];\r\n matches: number;\r\n topNotifications: Notification[];\r\n middleNotifications: Notification[];\r\n bottomNotifications: Notification[];\r\n notificationLists: NotificationList[];\r\n tags: Tag[];\r\n byCategory: { id: string; guides: Guide[]; matches: number }[];\r\n};\r\n\r\nexport type TagsResult = Tag[];\r\n\r\nexport type CategoriesResult = {\r\n categories: Category[];\r\n matches: number;\r\n};\r\n\r\nexport type NotificationResults = Pick<\r\n MatchResult,\r\n 'topNotifications' | 'middleNotifications' | 'bottomNotifications' | 'notificationLists'\r\n>;\r\n\r\nexport type GuideResult = {\r\n guide: {\r\n id: string;\r\n title: string;\r\n body: string;\r\n modified: string;\r\n modifiedBy: string | null;\r\n publishedBy: string | null;\r\n published: string;\r\n connection: string;\r\n categories: number[];\r\n hasHandover: boolean;\r\n allowFeedback: boolean;\r\n seoMetaDescription: string | null;\r\n seoAllowIndex: boolean | null;\r\n perspective: string | null;\r\n perspectives: { [key: string]: string };\r\n translations?: { [key: string]: string };\r\n };\r\n related: Guide[];\r\n dialog: DialogItem[];\r\n contactMethods: ContactMethod[];\r\n tags: Tag[];\r\n error?: DataError;\r\n};\r\n\r\nexport type ContactsResult = {\r\n categories: Category[];\r\n contactMethods: ContactMethod[];\r\n topNotifications: Notification[];\r\n middleNotifications: Notification[];\r\n bottomNotifications: Notification[];\r\n notificationLists: NotificationList[];\r\n};\r\n\r\nexport type SubmissionResult = {\r\n contactMethod?: ContactMethod;\r\n valid: boolean;\r\n};\r\n\r\nconst convertLegacySymbol = (symbol?: { Type: string; Content: string }): Symbol | undefined => {\r\n if (symbol) {\r\n const { Type, Content } = symbol;\r\n if (Type && Content) {\r\n return { type: Type, content: Content };\r\n }\r\n }\r\n};\r\n\r\nconst mapLegacyCategoriesRecursively = (categories: CategoryApiResponse[]): Category[] => {\r\n return categories.map((c) => {\r\n const category: Category = {\r\n id: c.Id.toString(),\r\n title: c.Name,\r\n symbol: convertLegacySymbol(c.DefaultIcon),\r\n activeSymbol: c.ActiveIcon && convertLegacySymbol(c.ActiveIcon),\r\n description: c.Description || (c.Attributes && c.Attributes.description) || '',\r\n matches: c.GuidesCount,\r\n };\r\n if (c.Children && c.Children.length) {\r\n category.items = mapLegacyCategoriesRecursively(c.Children);\r\n }\r\n return category;\r\n });\r\n};\r\n\r\nconst mapNotices = (source: NoticeApiResponse[], type: string): Notification[] => {\r\n return source\r\n .filter(({ Type }) => Type === type)\r\n .map(({ Id, Title, Body }) => ({\r\n id: Id.toString(),\r\n title: Title,\r\n body: Body,\r\n }));\r\n};\r\n\r\nconst mapNotificationLists = (source: NoticeListApiResponse[]): NotificationList[] => {\r\n return source.map(({ Id, Title, DefaultIcon, ListNotices, Notices }) => ({\r\n id: Id.toString(),\r\n title: Title,\r\n symbol: convertLegacySymbol(DefaultIcon),\r\n defaultHeaderOptions: {\r\n visible: !!ListNotices.length,\r\n },\r\n notifications: (ListNotices || [])\r\n .concat(Notices || [])\r\n .map(({ Id, Title, Body, Type, Modified }) => ({\r\n id: Id.toString(),\r\n title: Title,\r\n body: Body,\r\n modified: Modified,\r\n expandable: Type === 'listNotice',\r\n })),\r\n }));\r\n};\r\n\r\nconst mapContactMethodSettings = (\r\n {\r\n Id,\r\n Title,\r\n DefaultIcon,\r\n Exits: [Exit],\r\n ExitType,\r\n ConfirmationText,\r\n ExpandFormAutomatically,\r\n Form,\r\n Description,\r\n }: ContactApiResponse,\r\n Validation?: ValidationApiResult\r\n): ContactMethod => {\r\n const { Adapter } = Exit || { Adapter: {} };\r\n const { ClientName = '', Settings = {}, CustomClientName = '' } = Adapter;\r\n\r\n const settings: ContactMethod = {\r\n id: Id.toString(),\r\n title: Title,\r\n description: Description,\r\n symbol: convertLegacySymbol(DefaultIcon),\r\n clientName: ClientName === 'custom.adapter' ? CustomClientName : ClientName,\r\n expanded: true,\r\n inline: true,\r\n body: {},\r\n };\r\n\r\n if (ClientName.indexOf('phone') > -1 || ClientName.indexOf('freetext') > -1) {\r\n const { displayTextBeforeClick, textBeforeClick } = Settings;\r\n if (displayTextBeforeClick === 'true') {\r\n settings.expanded = false;\r\n settings.title = textBeforeClick;\r\n }\r\n\r\n if (ClientName.indexOf('phone.text') > -1) {\r\n settings.body.phoneNumber = Settings.phoneNumber;\r\n } else {\r\n settings.body.freetext = Settings.freetext;\r\n }\r\n }\r\n\r\n if (\r\n ClientName.indexOf('chat.popup') > -1 ||\r\n ClientName.indexOf('link') > -1 ||\r\n (ClientName === 'custom.adapter' && ExitType === 'custom')\r\n ) {\r\n settings.body = Settings;\r\n settings.body.confirmationFallback = ConfirmationText;\r\n }\r\n\r\n if (ClientName.indexOf('ace') > -1) {\r\n settings.body = Settings;\r\n }\r\n\r\n if (Form && Form.HasValueComponents) {\r\n if (Validation) {\r\n settings.body.form = FormBuilder.fromLegacyForm(Id.toString(), Form, Validation).get();\r\n } else {\r\n settings.body.form = FormBuilder.fromLegacyForm(Id.toString(), Form).get();\r\n }\r\n if (!ExpandFormAutomatically) {\r\n settings.expanded = settings.inline = false;\r\n }\r\n }\r\n\r\n return settings;\r\n};\r\n\r\ntype Modify<T, R> = Omit<T, keyof R> & R;\r\ntype ExtendedGuideMatchApiResponse = Modify<\r\n GuideMatchApiResponse,\r\n {\r\n ByCategory: { Id: string; Matches: GuideApiResponse[]; TotalMatches: number }[];\r\n }\r\n>;\r\n\r\nconst mapTags = (tags: TagListApiResponse[] = []): Tag[] => {\r\n return tags.map(({ Id, Title, TotalMatches, Symbol, DefaultIcon, ActiveIcon }) => ({\r\n id: Id.toString(),\r\n title: Title,\r\n matches: TotalMatches,\r\n symbol: convertLegacySymbol(DefaultIcon || Symbol),\r\n defaultIcon: convertLegacySymbol(DefaultIcon),\r\n activeIcon: convertLegacySymbol(ActiveIcon),\r\n }));\r\n};\r\n\r\nconst mapGuides = (guides: GuideApiResponse[]) => {\r\n return guides.map(({ Id, Title, Tags, FirstPublishedDate, Modified }) => ({\r\n id: Id.toString(),\r\n title: Title,\r\n tags: mapTags(Tags),\r\n published: FirstPublishedDate,\r\n modified: Modified,\r\n }));\r\n};\r\n\r\nexport const formatLegacyData = (type: ServiceClientQueryType, data: any) => {\r\n switch (type) {\r\n case ServiceClientQueryType.MatchByCategory:\r\n case ServiceClientQueryType.Match: {\r\n const result: MatchResult = {\r\n guides: [],\r\n matches: 0,\r\n topNotifications: [],\r\n middleNotifications: [],\r\n bottomNotifications: [],\r\n notificationLists: [],\r\n tags: [],\r\n byCategory: [],\r\n };\r\n const {\r\n Matches,\r\n TotalMatches,\r\n Notices,\r\n NoticeLists,\r\n Tags,\r\n ByCategory,\r\n }: ExtendedGuideMatchApiResponse = data;\r\n\r\n result.guides = mapGuides(Matches);\r\n\r\n result.matches = TotalMatches;\r\n\r\n result.byCategory = (ByCategory || []).map(({ Id, Matches, TotalMatches }) => ({\r\n id: Id,\r\n guides: mapGuides(Matches),\r\n matches: TotalMatches,\r\n }));\r\n\r\n result.tags = mapTags(Tags);\r\n\r\n result.notificationLists = mapNotificationLists(NoticeLists || []);\r\n\r\n result.topNotifications = mapNotices(Notices || [], 'noticeRowTop');\r\n\r\n result.middleNotifications = mapNotices(Notices || [], 'noticeRowMiddle');\r\n\r\n result.bottomNotifications = mapNotices(Notices || [], 'footerNotice');\r\n\r\n return result;\r\n }\r\n case ServiceClientQueryType.Categories: {\r\n const { Children, GuidesCountTotal }: GuideCategoriesApiResponse = data;\r\n\r\n const result: CategoriesResult = {\r\n categories: mapLegacyCategoriesRecursively(Children || []),\r\n matches: GuidesCountTotal,\r\n };\r\n\r\n return result;\r\n }\r\n case ServiceClientQueryType.Guide: {\r\n const {\r\n Id,\r\n Title,\r\n Body,\r\n Related,\r\n Options,\r\n ConnectionId,\r\n ContactMethods,\r\n EnableFeedback,\r\n HandoverExists,\r\n FirstPublishedDate,\r\n Modified,\r\n ModifiedByDisplayName,\r\n FirstPublishedByDisplayName,\r\n Categories,\r\n Tags,\r\n SeoMetaDescription,\r\n SeoAllowIndex,\r\n Perspectives,\r\n PerspectiveKey,\r\n Translations,\r\n }: GuideViewApiResponse = data;\r\n\r\n /* \r\n PerspectiveKey is always null when on the \"top level\" of a dialog tree\r\n OR when navigating down a dialog tree in the \"Default answer version\"\r\n Note: The \"Default answer version\" is not the same as a given guides\r\n default answer version. The \"Default answer version\" is always the answer\r\n version in Perspectives with the key \"Default\".\r\n */\r\n const perspective =\r\n PerspectiveKey ||\r\n Object.values(Perspectives).find((connection) => connection === ConnectionId) ||\r\n Perspectives['Default'] ||\r\n null;\r\n\r\n const result: GuideResult = {\r\n guide: {\r\n id: Id.toString(),\r\n title: Title,\r\n body: Body,\r\n modified: Modified,\r\n published: FirstPublishedDate,\r\n modifiedBy: ModifiedByDisplayName,\r\n publishedBy: FirstPublishedByDisplayName,\r\n connection: ConnectionId,\r\n categories: Categories,\r\n hasHandover: HandoverExists,\r\n allowFeedback: EnableFeedback,\r\n seoMetaDescription: SeoMetaDescription,\r\n seoAllowIndex: SeoAllowIndex,\r\n perspectives: Perspectives,\r\n perspective,\r\n translations: Object.keys(Translations || {}).reduce<{\r\n [key: string]: string;\r\n }>((acc, key) => {\r\n acc[key] = Translations[key].toString();\r\n return acc;\r\n }, {}),\r\n },\r\n related: mapGuides(Related || []),\r\n dialog: [],\r\n contactMethods: (ContactMethods || []).map((cm) => mapContactMethodSettings(cm)),\r\n tags: mapTags(Tags),\r\n };\r\n\r\n (Options || []).forEach(({ CanAccess, Description, ConnectionId, Properties }) => {\r\n if (!CanAccess) {\r\n return;\r\n }\r\n\r\n const item: DialogItem = {\r\n id: Id.toString(),\r\n title: Description,\r\n connection: ConnectionId,\r\n type: DialogItemType.default,\r\n parent: {\r\n id: Id.toString(),\r\n title: Title,\r\n tags: mapTags(Tags),\r\n },\r\n };\r\n\r\n if (Properties.Type === 'Guide' || Properties.Type === 'Link') {\r\n Properties.Id && (item.id = Properties.Id.toString());\r\n Properties.Uri && (item.href = Properties.Uri);\r\n Properties.Target && (item.target = Properties.Target);\r\n switch (Properties.Type) {\r\n case 'Guide':\r\n item.type = DialogItemType.guide;\r\n break;\r\n case 'Link':\r\n item.type = DialogItemType.link;\r\n break;\r\n }\r\n }\r\n\r\n result.dialog.push(item);\r\n });\r\n\r\n return result;\r\n }\r\n case ServiceClientQueryType.Contacts: {\r\n const { Children, Matches, Notices, NoticeLists }: ContactCategoriesApiResponse = data;\r\n\r\n const result: ContactsResult = {\r\n contactMethods: (Matches || []).map((cm) => mapContactMethodSettings(cm)),\r\n categories: mapLegacyCategoriesRecursively(Children || []),\r\n topNotifications: mapNotices(Notices || [], 'noticeRowTop'),\r\n middleNotifications: mapNotices(Notices || [], 'noticeRowMiddle'),\r\n bottomNotifications: mapNotices(Notices || [], 'footerNotice'),\r\n notificationLists: mapNotificationLists(NoticeLists || []),\r\n };\r\n\r\n return result;\r\n }\r\n case ServiceClientQueryType.ContactMethod: {\r\n const { ContactMethod }: ContactMethodApiResponse = data;\r\n\r\n return mapContactMethodSettings(ContactMethod || {});\r\n }\r\n case ServiceClientQueryType.Tags:\r\n case ServiceClientQueryType.TagsOnGuides: {\r\n return mapTags(data || []);\r\n }\r\n case ServiceClientQueryType.Notifications: {\r\n const { Notices, NoticeLists } = data;\r\n\r\n return {\r\n topNotifications: mapNotices(Notices || [], 'noticeRowTop'),\r\n middleNotifications: mapNotices(Notices || [], 'noticeRowMiddle'),\r\n bottomNotifications: mapNotices(Notices || [], 'footerNotice'),\r\n notificationLists: mapNotificationLists(NoticeLists || []),\r\n };\r\n }\r\n default:\r\n return {};\r\n }\r\n};\r\n","import { ServiceClient } from '@telia-ace/knowledge-serviceclient';\r\nimport { WidgetRenderState } from '@telia-ace/knowledge-widget-core';\r\nimport {\r\n deepClone,\r\n removeNullAndUndefinedValues,\r\n shallowCompare,\r\n} from '@telia-ace/widget-utilities';\r\nimport { Container, EventManager, Widget } from '@webprovisions/platform';\r\nimport { formatLegacyData } from './legacy-conversion';\r\n\r\nexport type Subscriber = (...args: any[]) => void;\r\n\r\nexport enum DataType {\r\n Guide = 'guide',\r\n Guides = 'guides',\r\n GuidesByCategory = 'guides-by-category',\r\n RowNotifications = 'row-notices',\r\n NotificationLists = 'notification-lists',\r\n GuideCategories = 'guide-categories',\r\n ContactMethodCategories = 'contact-method-categories',\r\n ContactMethod = 'contact-method',\r\n ContactMethods = 'contact-methods',\r\n Tags = 'tags',\r\n TagsOnGuides = 'tagsonguides',\r\n}\r\n\r\nexport type DataError = {\r\n status: number;\r\n message: string;\r\n};\r\n\r\nexport enum ServiceClientQueryType {\r\n Match = 'match',\r\n Categories = 'categories',\r\n Guide = 'guide',\r\n Contacts = 'contacts',\r\n ContactMethod = 'contact-method',\r\n MatchByCategory = 'match-by-category',\r\n Tags = 'tags',\r\n TagsOnGuides = 'tagsonguides',\r\n Notifications = 'notifications',\r\n}\r\n\r\nexport enum FeedbackType {\r\n Positive = 'Positive',\r\n Negative = 'Negative',\r\n}\r\n\r\nexport type QueryParameters = {\r\n guideId?: string | number;\r\n categories?: string | number | string[] | number[];\r\n tagId?: string | number;\r\n connection?: string;\r\n\r\n contactMethodCategoryId?: string | number;\r\n contactMethodId?: string | number;\r\n\r\n searchPhrase?: string | number;\r\n take?: string | number;\r\n [key: string]: any;\r\n\r\n expandCategories?: 'none' | 'children' | 'descendants';\r\n sorting?: SortingType;\r\n guideIds?: string[];\r\n};\r\n\r\nexport enum SortingType {\r\n POPULARITY_DESCENDING = 'popularity-descending',\r\n ALPHABETIC_ASCENDING = 'alphabetic-ascending',\r\n ALPHABETIC_DESCENDING = 'alphabetic-descending',\r\n MODIFIED_ASCENDING = 'modified-ascending',\r\n MODIFIED_DESCENDING = 'modified-descending',\r\n PUBLISHED_ASCENDING = 'published-ascending',\r\n PUBLISHED_DESCENDING = 'published-descending',\r\n}\r\n\r\nexport type Query = {\r\n params: QueryParameters;\r\n resolved: boolean;\r\n loading: boolean;\r\n error?: DataError;\r\n data: any;\r\n resolvers: {\r\n resolve: (data: any) => void;\r\n reject: (data: any) => void;\r\n }[];\r\n};\r\n\r\nexport const determineServiceClientQueryType = (type: DataType): ServiceClientQueryType => {\r\n switch (type) {\r\n case DataType.Guides:\r\n return ServiceClientQueryType.Match;\r\n case DataType.GuidesByCategory:\r\n return ServiceClientQueryType.MatchByCategory;\r\n case DataType.Guide:\r\n return ServiceClientQueryType.Guide;\r\n case DataType.GuideCategories:\r\n return ServiceClientQueryType.Categories;\r\n case DataType.ContactMethodCategories:\r\n case DataType.ContactMethods:\r\n return ServiceClientQueryType.Contacts;\r\n case DataType.ContactMethod:\r\n return ServiceClientQueryType.ContactMethod;\r\n case DataType.Tags:\r\n return ServiceClientQueryType.Tags;\r\n case DataType.TagsOnGuides:\r\n return ServiceClientQueryType.TagsOnGuides;\r\n case DataType.NotificationLists:\r\n case DataType.RowNotifications:\r\n return ServiceClientQueryType.Notifications;\r\n default:\r\n throw 'error';\r\n }\r\n};\r\n\r\nconst widgetIsHidden = async (container: Container) => {\r\n const { invoke } = container.get('$widget');\r\n const renderState = await invoke('renderState');\r\n return renderState === WidgetRenderState.hidden;\r\n};\r\n\r\nexport default class DataClient {\r\n private queries: Map<ServiceClientQueryType, Query[]> = new Map();\r\n private lastTake: number = 0;\r\n public events: EventManager;\r\n constructor(private container: Container, private matchingClient: ServiceClient) {\r\n this.events = (<Widget>container.get('$widget')).events;\r\n\r\n this.events.subscribe('widget:settings-updated', () => (this.queries = new Map()));\r\n\r\n this.events.subscribe('widget:render-state-changed', (event, { next, previous }) => {\r\n if (previous === WidgetRenderState.hidden && next === WidgetRenderState.open) {\r\n this.fetchAllUnresolvedQueries();\r\n }\r\n });\r\n }\r\n\r\n static getInstance(container: Container): Promise<DataClient> {\r\n return container.getAsync('dataClient');\r\n }\r\n\r\n private getUnresolvedQueries = () => {\r\n let unresolvedCount = 0;\r\n this.queries.forEach((queries, type) => {\r\n const hasUnresolved = queries.some((query: Query) => !query.resolved);\r\n if (hasUnresolved) {\r\n unresolvedCount = +1;\r\n }\r\n });\r\n return unresolvedCount;\r\n };\r\n\r\n public fetch(type: DataType, params: QueryParameters): Promise<any> {\r\n return new Promise((resolve, reject) => {\r\n if (params.take) {\r\n this.lastTake = +(params.take || 0);\r\n }\r\n\r\n removeNullAndUndefinedValues(params);\r\n const serviceClientQueryType = determineServiceClientQueryType(type);\r\n const queries = this.queries.get(serviceClientQueryType) || [];\r\n const query = queries.find((q) => shallowCompare(q.params, params));\r\n\r\n if (query) {\r\n const index = queries.indexOf(query);\r\n if (query.resolved) {\r\n this.events.dispatch('data-client:fetched', {\r\n params,\r\n type: serviceClientQueryType,\r\n response: query.data,\r\n unresolvedQueries: this.getUnresolvedQueries(),\r\n });\r\n this.track(query.data, serviceClientQueryType, query.error);\r\n if (query.data && query.error) {\r\n reject({ error: query.error });\r\n } else {\r\n resolve(query.data);\r\n }\r\n } else {\r\n query.resolvers.push({ resolve, reject });\r\n }\r\n queries.splice(index, 1);\r\n queries.push(query);\r\n this.queries.set(serviceClientQueryType, queries);\r\n if (!query.loading && !query.resolved) {\r\n return this.runQuery(serviceClientQueryType, params);\r\n }\r\n } else {\r\n queries.push({\r\n params,\r\n resolved: false,\r\n loading: true,\r\n data: {},\r\n resolvers: [{ resolve, reject }],\r\n });\r\n this.queries.set(serviceClientQueryType, queries);\r\n\r\n return this.runQuery(serviceClientQueryType, params);\r\n }\r\n }).then((res) => deepClone(res));\r\n }\r\n\r\n // query the cached data\r\n public read(\r\n type: DataType,\r\n options: {\r\n select?: (data: any) => any; // either return all data by the DataType, or use an selector\r\n }\r\n ) {\r\n const { select } = options;\r\n const serviceClientQueryType = determineServiceClientQueryType(type);\r\n const queries = this.queries.get(serviceClientQueryType) || [];\r\n\r\n const result = queries.reduce<any[]>((acc, query) => {\r\n if (typeof select === 'function') {\r\n const match = select(query.data);\r\n if (match) {\r\n acc.push(match);\r\n }\r\n } else {\r\n acc.push(query.data);\r\n }\r\n return acc;\r\n }, []);\r\n return result;\r\n }\r\n\r\n public feedback(id: string, connection: string, feedback: FeedbackType): Promise<any> {\r\n return this.matchingClient.giveFeedback(id, connection, feedback);\r\n }\r\n\r\n private setLoadingStatus(\r\n type: ServiceClientQueryType,\r\n params: QueryParameters,\r\n loading: boolean\r\n ) {\r\n const queries = this.queries.get(type) || [];\r\n const query = queries.find((q) => shallowCompare(q.params, params));\r\n\r\n if (query) {\r\n query.loading = loading;\r\n }\r\n this.queries.set(type, queries);\r\n }\r\n\r\n private async runQuery(type: ServiceClientQueryType, params: QueryParameters) {\r\n const {\r\n searchPhrase = '',\r\n categories = '0',\r\n contactMethodCategoryId = '0',\r\n contactMethodId = '0',\r\n tagId = undefined,\r\n take = 5,\r\n connection = '',\r\n guideId,\r\n expandCategories = 'descendants',\r\n currentCategory,\r\n sorting = SortingType.POPULARITY_DESCENDING,\r\n guideIds = [],\r\n } = params;\r\n\r\n const trimmedPhrase = searchPhrase.toString().trim();\r\n if (await widgetIsHidden(this.container)) {\r\n return Promise.resolve();\r\n }\r\n\r\n switch (type) {\r\n case ServiceClientQueryType.Match: {\r\n const formatSortingValues = (sorting: string) => {\r\n const [type, direction] = sorting.split('-');\r\n const sortKeysMap = new Map([\r\n ['popularity', 'popularity'],\r\n ['alphabetic', 'title'],\r\n ['modified', 'lastModified'],\r\n ['published', 'firstPublished'],\r\n ]);\r\n\r\n return {\r\n type: sortKeysMap.get(type),\r\n direction: direction,\r\n };\r\n };\r\n\r\n if (guideIds.length) {\r\n return this.matchingClient\r\n .customRequest('guides', 'POST', {\r\n configuration: { ids: guideIds, take: +take },\r\n })\r\n .then((matches) => matches && this.handleResponse(matches, type, params));\r\n }\r\n\r\n return this.matchingClient\r\n .match(trimmedPhrase, {\r\n categories:\r\n categories === '0'\r\n ? []\r\n : Array.isArray(categories)\r\n ? categories\r\n : [+categories],\r\n take: +take,\r\n tags: tagId,\r\n sorting: formatSortingValues(sorting),\r\n ids: guideIds,\r\n })\r\n .then((matches) => matches && this.handleResponse(matches, type, params));\r\n }\r\n case ServiceClientQueryType.MatchByCategory: {\r\n return this.matchingClient\r\n .match(trimmedPhrase, {\r\n groupByCategory: true,\r\n categories:\r\n categories === '0'\r\n ? []\r\n : Array.isArray(categories)\r\n ? categories\r\n : [+categories],\r\n take: +take,\r\n tags: tagId,\r\n })\r\n .then((matches) => matches && this.handleResponse(matches, type, params));\r\n }\r\n case ServiceClientQueryType.Guide: {\r\n return this.matchingClient\r\n .getGuide(guideId, { connectionId: connection })\r\n .then((guide) => {\r\n if (guide) {\r\n this.handleResponse(guide, type, params);\r\n }\r\n })\r\n .catch((e) => {\r\n const error = {\r\n message: 'Something went wrong.',\r\n status: e.status || 400,\r\n };\r\n if (error.status === 404) {\r\n error.message = 'The guide could not be found.';\r\n }\r\n this.handleResponse({}, type, params, error);\r\n });\r\n }\r\n case ServiceClientQueryType.Categories: {\r\n return this.matchingClient\r\n .getCategories({ phrase: trimmedPhrase, expand: expandCategories, tags: tagId })\r\n .then(\r\n (categories) => categories && this.handleResponse(categories, type, params)\r\n );\r\n }\r\n case ServiceClientQueryType.Contacts: {\r\n if (guideId) {\r\n return this.matchingClient\r\n .contactMethods(+guideId, { phrase: trimmedPhrase })\r\n .then((result) => result && this.handleResponse(result, type, params));\r\n }\r\n return this.matchingClient\r\n .contacts(+contactMethodCategoryId, { phrase: trimmedPhrase })\r\n .then((result) => result && this.handleResponse(result, type, params));\r\n }\r\n case ServiceClientQueryType.ContactMethod: {\r\n return this.matchingClient\r\n .getContactMethod(+contactMethodId, { guideId, currentCategory })\r\n .then((result) => result && this.handleResponse(result, type, params));\r\n }\r\n case ServiceClientQueryType.Tags: {\r\n return this.matchingClient\r\n .customRequest('tags', 'GET', {\r\n configuration: {\r\n take: 999999,\r\n phrase: trimmedPhrase,\r\n categories:\r\n categories === '0'\r\n ? []\r\n : Array.isArray(categories)\r\n ? categories\r\n : [+categories],\r\n },\r\n })\r\n .then((result) => result && this.handleResponse(result, type, params));\r\n }\r\n case ServiceClientQueryType.TagsOnGuides: {\r\n return this.matchingClient\r\n .customRequest('tagsonguides', 'GET', {\r\n configuration: {\r\n take: 999999,\r\n phrase: trimmedPhrase,\r\n categories:\r\n categories === '0'\r\n ? []\r\n : Array.isArray(categories)\r\n ? categories\r\n : [+categories],\r\n tags: tagId,\r\n },\r\n })\r\n .then((result) => result && this.handleResponse(result, type, params));\r\n }\r\n case ServiceClientQueryType.Notifications: {\r\n return this.matchingClient\r\n .customRequest('notices', 'GET', {\r\n configuration: {\r\n phrase: trimmedPhrase,\r\n categories:\r\n categories === '0'\r\n ? []\r\n : Array.isArray(categories)\r\n ? categories\r\n : [+categories],\r\n },\r\n })\r\n .then((result) => result && this.handleResponse(result, type, params));\r\n }\r\n }\r\n }\r\n\r\n handleResponse(\r\n data: any = {},\r\n type: ServiceClientQueryType,\r\n params: QueryParameters,\r\n error?: DataError\r\n ) {\r\n const queries = this.queries.get(type) || [];\r\n const existing = queries.find((q) => shallowCompare(q.params, params));\r\n if (existing) {\r\n const formatted = error ? error : formatLegacyData(type, data);\r\n this.track(formatted, type, error);\r\n existing.resolvers.forEach((r) => {\r\n if (error) {\r\n r.reject({ error: formatted });\r\n } else {\r\n r.resolve(formatted);\r\n }\r\n });\r\n\r\n const index = queries.indexOf(existing);\r\n if (index > -1) {\r\n queries.splice(index, 1);\r\n }\r\n queries.push({ ...existing, error, resolvers: [], data: formatted, resolved: true });\r\n this.setLoadingStatus(type, params, false);\r\n this.queries.set(type, queries);\r\n if (!error) {\r\n this.events.dispatch('data-client:fetched', {\r\n type,\r\n params,\r\n response: formatted,\r\n unresolvedQueries: this.getUnresolvedQueries(),\r\n });\r\n }\r\n }\r\n }\r\n\r\n private fetchAllUnresolvedQueries() {\r\n for (const [queryType, queries] of this.queries) {\r\n queries\r\n .filter((query: Query) => !query.resolved)\r\n .forEach((query) => {\r\n this.runQuery(queryType, query.params);\r\n });\r\n }\r\n }\r\n\r\n private track(data: any = {}, type: ServiceClientQueryType, error?: DataError) {\r\n const widget = this.container.get('$widget');\r\n if (widget && !error) {\r\n widget.events.dispatch('tracking:service-client-response', {\r\n type,\r\n data,\r\n });\r\n } else if (widget) {\r\n widget.events.dispatch('tracking:service-client-error', {\r\n type,\r\n error,\r\n });\r\n }\r\n }\r\n\r\n static create(container: Container): Promise<DataClient> {\r\n return container\r\n .getAsync('matchingClient')\r\n .then((matchingClient) => new DataClient(container, matchingClient));\r\n }\r\n}\r\n","import { Container } from '@webprovisions/platform';\r\n\r\nexport const createContactMethodPlatform = (container: Container) => {\r\n return import('@telia-ace/knowledge-widget-adapters').then(({ ContactMethodPlatform }) => {\r\n return ContactMethodPlatform.create(container);\r\n });\r\n};\r\n\r\nexport const createDataClient = (container: Container) => {\r\n return import('../data').then(({ DataClient }) => {\r\n return DataClient.create(container);\r\n });\r\n};\r\n","import { Widget } from '@telia-ace/widget-types-grid';\r\nimport { Container } from '@webprovisions/platform';\r\nimport { createContactMethodPlatform, createDataClient } from './services';\r\n\r\nexport default class ExtendedWidget extends Widget {\r\n constructor(container: Container) {\r\n super(container);\r\n\r\n this.container.registerAsync('contactMethods', () =>\r\n createContactMethodPlatform(this.container)\r\n );\r\n this.container.registerAsync('dataClient', () => createDataClient(this.container));\r\n }\r\n}\r\n"],"names":["convertLegacySymbol","symbol","Type","Content","mapLegacyCategoriesRecursively","categories","c","category","mapNotices","source","type","Id","Title","Body","mapNotificationLists","DefaultIcon","ListNotices","Notices","Modified","mapContactMethodSettings","Exit","ExitType","ConfirmationText","ExpandFormAutomatically","Form","Description","Validation","Adapter","ClientName","Settings","CustomClientName","settings","displayTextBeforeClick","textBeforeClick","FormBuilder","mapTags","tags","TotalMatches","Symbol","ActiveIcon","mapGuides","guides","Tags","FirstPublishedDate","formatLegacyData","data","ServiceClientQueryType","result","Matches","NoticeLists","ByCategory","Children","GuidesCountTotal","Related","Options","ConnectionId","ContactMethods","EnableFeedback","HandoverExists","ModifiedByDisplayName","FirstPublishedByDisplayName","Categories","SeoMetaDescription","SeoAllowIndex","Perspectives","PerspectiveKey","Translations","perspective","connection","acc","key","cm","CanAccess","Properties","item","DialogItemType","ContactMethod","DataType","FeedbackType","SortingType","determineServiceClientQueryType","widgetIsHidden","container","__async","invoke","WidgetRenderState","DataClient","matchingClient","__publicField","unresolvedCount","queries","query","event","next","previous","params","resolve","reject","removeNullAndUndefinedValues","serviceClientQueryType","q","shallowCompare","index","res","deepClone","options","select","match","id","feedback","loading","searchPhrase","contactMethodCategoryId","contactMethodId","tagId","take","guideId","expandCategories","currentCategory","sorting","guideIds","trimmedPhrase","formatSortingValues","direction","matches","guide","e","error","existing","formatted","r","__spreadProps","__spreadValues","queryType","widget","createContactMethodPlatform","ContactMethodPlatform","createDataClient","ExtendedWidget","Widget"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@telia-ace/knowledge-widget-types-grid",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.30",
|
|
4
4
|
"description": "Extended type definition for Grid widget.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
6
6
|
"author": "Telia Company AB",
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
"telia"
|
|
9
9
|
],
|
|
10
10
|
"main": "dist/index.js",
|
|
11
|
+
"sourceMain": "src/index.ts",
|
|
11
12
|
"type": "module",
|
|
12
13
|
"types": "dist/index.d.ts",
|
|
13
14
|
"files": [
|
|
@@ -25,13 +26,13 @@
|
|
|
25
26
|
},
|
|
26
27
|
"sideEffects": false,
|
|
27
28
|
"dependencies": {
|
|
28
|
-
"@telia-ace/knowledge-serviceclient": "^1.0.
|
|
29
|
-
"@telia-ace/knowledge-widget-adapters": "^1.0.
|
|
30
|
-
"@telia-ace/knowledge-widget-core": "^1.0.
|
|
31
|
-
"@telia-ace/widget-forms": "^1.0.
|
|
32
|
-
"@telia-ace/widget-types-grid": "^1.0.
|
|
33
|
-
"@telia-ace/widget-utilities": "^1.0.
|
|
29
|
+
"@telia-ace/knowledge-serviceclient": "^1.0.8",
|
|
30
|
+
"@telia-ace/knowledge-widget-adapters": "^1.0.29",
|
|
31
|
+
"@telia-ace/knowledge-widget-core": "^1.0.19",
|
|
32
|
+
"@telia-ace/widget-forms": "^1.0.22",
|
|
33
|
+
"@telia-ace/widget-types-grid": "^1.0.24",
|
|
34
|
+
"@telia-ace/widget-utilities": "^1.0.4",
|
|
34
35
|
"@webprovisions/platform": "^1.1.2"
|
|
35
36
|
},
|
|
36
|
-
"gitHead": "
|
|
37
|
+
"gitHead": "dc024eefcfc33ad8e67b35e5f266bf4a58eb2c48"
|
|
37
38
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.a2cdbc37.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
|