@telia-ace/knowledge-widget-types-grid 1.0.45-experimental.0 → 1.0.45-experimental.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,3 @@
1
- import { ContactMethodType as ContactMethod } from '@telia-ace/knowledge-widget-adapters';
2
1
  import { Category, DialogItem, Guide, Notification, NotificationList, Tag } from '@telia-ace/knowledge-widget-core';
3
2
  import { DataError, ServiceClientQueryType } from './data-client';
4
3
  export type MatchResult = {
@@ -16,6 +15,7 @@ export type MatchResult = {
16
15
  }[];
17
16
  };
18
17
  export type TagsResult = Tag[];
18
+ type ContactMethod = any;
19
19
  export type CategoriesResult = {
20
20
  categories: Category[];
21
21
  matches: number;
@@ -62,14 +62,5 @@ export type SubmissionResult = {
62
62
  contactMethod?: ContactMethod;
63
63
  valid: boolean;
64
64
  };
65
- export declare const formatLegacyData: (type: ServiceClientQueryType, data: any) => Tag[] | MatchResult | CategoriesResult | ContactMethod | GuideResult | ContactsResult | {
66
- topNotifications: Notification[];
67
- middleNotifications: Notification[];
68
- bottomNotifications: Notification[];
69
- notificationLists: NotificationList[];
70
- } | {
71
- topNotifications?: undefined;
72
- middleNotifications?: undefined;
73
- bottomNotifications?: undefined;
74
- notificationLists?: undefined;
75
- };
65
+ export declare const formatLegacyData: (type: ServiceClientQueryType, data: any) => any;
66
+ export {};
@@ -12,4 +12,4 @@ export {
12
12
  c as determineServiceClientQueryType,
13
13
  l as formatLegacyData
14
14
  };
15
- //# sourceMappingURL=index.58cbb369.js.map
15
+ //# sourceMappingURL=index.2e394839.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.2e394839.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
package/dist/index.js CHANGED
@@ -1,44 +1,43 @@
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 k = (i, t, e) => t in i ? Y(i, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : i[t] = e, _ = (i, t) => {
1
+ var V = Object.defineProperty, Y = Object.defineProperties;
2
+ var z = Object.getOwnPropertyDescriptors;
3
+ var P = Object.getOwnPropertySymbols;
4
+ var J = Object.prototype.hasOwnProperty, X = Object.prototype.propertyIsEnumerable;
5
+ var H = (i, t, e) => t in i ? V(i, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : i[t] = e, F = (i, t) => {
6
6
  for (var e in t || (t = {}))
7
- X.call(t, e) && k(i, e, t[e]);
8
- if (F)
9
- for (var e of F(t))
10
- Z.call(t, e) && k(i, e, t[e]);
7
+ J.call(t, e) && H(i, e, t[e]);
8
+ if (P)
9
+ for (var e of P(t))
10
+ X.call(t, e) && H(i, e, t[e]);
11
11
  return i;
12
- }, Q = (i, t) => z(i, J(t));
13
- var x = (i, t, e) => (k(i, typeof t != "symbol" ? t + "" : t, e), e);
14
- var R = (i, t, e) => new Promise((n, s) => {
12
+ }, _ = (i, t) => Y(i, z(t));
13
+ var k = (i, t, e) => new Promise((n, s) => {
15
14
  var r = (d) => {
16
15
  try {
17
16
  o(e.next(d));
18
- } catch (u) {
19
- s(u);
17
+ } catch (h) {
18
+ s(h);
20
19
  }
21
20
  }, c = (d) => {
22
21
  try {
23
22
  o(e.throw(d));
24
- } catch (u) {
25
- s(u);
23
+ } catch (h) {
24
+ s(h);
26
25
  }
27
26
  }, o = (d) => d.done ? n(d.value) : Promise.resolve(d.value).then(r, c);
28
27
  o((e = e.apply(i, t)).next());
29
28
  });
30
- import { Widget as ee } from "@telia-ace/widget-types-grid";
31
- import { Component as ve, DetachedComponent as Ne, NotFound as Me, genericComponentStyling as we } from "@telia-ace/widget-types-grid";
32
- import { DialogItemType as G, WidgetRenderState as D } from "@telia-ace/knowledge-widget-core";
33
- import { removeNullAndUndefinedValues as te, shallowCompare as q, deepClone as ie } from "@telia-ace/widget-utilities";
34
- import { FormBuilder as j } from "@telia-ace/widget-forms";
29
+ import { Widget as Z } from "@telia-ace/widget-types-grid";
30
+ import { Component as ye, DetachedComponent as ve, NotFound as Ne, genericComponentStyling as we } from "@telia-ace/widget-types-grid";
31
+ import { DialogItemType as E, WidgetRenderState as O } from "@telia-ace/knowledge-widget-core";
32
+ import { removeNullAndUndefinedValues as ee, shallowCompare as R, deepClone as te } from "@telia-ace/widget-utilities";
33
+ import { FormBuilder as Q } from "@telia-ace/widget-forms";
35
34
  const N = (i) => {
36
35
  if (i) {
37
36
  const { Type: t, Content: e } = i;
38
37
  if (t && e)
39
38
  return { type: t, content: e };
40
39
  }
41
- }, T = (i) => i.map((t) => {
40
+ }, B = (i) => i.map((t) => {
42
41
  const e = {
43
42
  id: t.Id.toString(),
44
43
  title: t.Name,
@@ -47,26 +46,26 @@ const N = (i) => {
47
46
  description: t.Description || t.Attributes && t.Attributes.description || "",
48
47
  matches: t.GuidesCount
49
48
  };
50
- return t.Children && t.Children.length && (e.items = T(t.Children)), e;
49
+ return t.Children && t.Children.length && (e.items = B(t.Children)), e;
51
50
  }), y = (i, t) => i.filter(({ Type: e }) => e === t).map(({ Id: e, Title: n, Body: s }) => ({
52
51
  id: e.toString(),
53
52
  title: n,
54
53
  body: s
55
- })), L = (i) => i.map(({ Id: t, Title: e, DefaultIcon: n, ListNotices: s, Notices: r }) => ({
54
+ })), G = (i) => i.map(({ Id: t, Title: e, DefaultIcon: n, ListNotices: s, Notices: r }) => ({
56
55
  id: t.toString(),
57
56
  title: e,
58
57
  symbol: N(n),
59
58
  defaultHeaderOptions: {
60
59
  visible: !!s.length
61
60
  },
62
- notifications: (s || []).concat(r || []).map(({ Id: c, Title: o, Body: d, Type: u, Modified: l }) => ({
61
+ notifications: (s || []).concat(r || []).map(({ Id: c, Title: o, Body: d, Type: h, Modified: l }) => ({
63
62
  id: c.toString(),
64
63
  title: o,
65
64
  body: d,
66
65
  modified: l,
67
- expandable: u === "listNotice"
66
+ expandable: h === "listNotice"
68
67
  }))
69
- })), O = ({
68
+ })), q = ({
70
69
  Id: i,
71
70
  Title: t,
72
71
  DefaultIcon: e,
@@ -76,22 +75,22 @@ const N = (i) => {
76
75
  ExpandFormAutomatically: c,
77
76
  Form: o,
78
77
  Description: d
79
- }, u) => {
80
- const { Adapter: l } = n || { Adapter: {} }, { ClientName: g = "", Settings: f = {}, CustomClientName: w = "" } = l, h = {
78
+ }, h) => {
79
+ const { Adapter: l } = n || { Adapter: {} }, { ClientName: g = "", Settings: f = {}, CustomClientName: M = "" } = l, u = {
81
80
  id: i.toString(),
82
81
  title: t,
83
82
  description: d,
84
83
  symbol: N(e),
85
- clientName: g === "custom.adapter" ? w : g,
84
+ clientName: g === "custom.adapter" ? M : g,
86
85
  expanded: !0,
87
86
  inline: !0,
88
87
  body: {}
89
88
  };
90
89
  if (g.indexOf("phone") > -1 || g.indexOf("freetext") > -1) {
91
90
  const { displayTextBeforeClick: p, textBeforeClick: a } = f;
92
- p === "true" && (h.expanded = !1, h.title = a), g.indexOf("phone.text") > -1 ? h.body.phoneNumber = f.phoneNumber : h.body.freetext = f.freetext;
91
+ p === "true" && (u.expanded = !1, u.title = a), g.indexOf("phone.text") > -1 ? u.body.phoneNumber = f.phoneNumber : u.body.freetext = f.freetext;
93
92
  }
94
- return (g.indexOf("chat.popup") > -1 || g.indexOf("link") > -1 || g === "custom.adapter" && s === "custom") && (h.body = f, h.body.confirmationFallback = r), g.indexOf("ace") > -1 && (h.body = f), o && o.HasValueComponents && (u ? h.body.form = j.fromLegacyForm(i.toString(), o, u).get() : h.body.form = j.fromLegacyForm(i.toString(), o).get(), c || (h.expanded = h.inline = !1)), h;
93
+ return (g.indexOf("chat.popup") > -1 || g.indexOf("link") > -1 || g === "custom.adapter" && s === "custom") && (u.body = f, u.body.confirmationFallback = r), g.indexOf("ace") > -1 && (u.body = f), o && o.HasValueComponents && (h ? u.body.form = Q.fromLegacyForm(i.toString(), o, h).get() : u.body.form = Q.fromLegacyForm(i.toString(), o).get(), c || (u.expanded = u.inline = !1)), u;
95
94
  }, A = (i = []) => i.map(({ Id: t, Title: e, TotalMatches: n, Symbol: s, DefaultIcon: r, ActiveIcon: c }) => ({
96
95
  id: t.toString(),
97
96
  title: e,
@@ -99,13 +98,13 @@ const N = (i) => {
99
98
  symbol: N(r || s),
100
99
  defaultIcon: N(r),
101
100
  activeIcon: N(c)
102
- })), B = (i) => i.map(({ Id: t, Title: e, Tags: n, FirstPublishedDate: s, Modified: r }) => ({
101
+ })), L = (i) => i.map(({ Id: t, Title: e, Tags: n, FirstPublishedDate: s, Modified: r }) => ({
103
102
  id: t.toString(),
104
103
  title: e,
105
104
  tags: A(n),
106
105
  published: s,
107
106
  modified: r
108
- })), se = (i, t) => {
107
+ })), ie = (i, t) => {
109
108
  switch (i) {
110
109
  case C.MatchByCategory:
111
110
  case C.Match: {
@@ -126,16 +125,16 @@ const N = (i) => {
126
125
  Tags: o,
127
126
  ByCategory: d
128
127
  } = t;
129
- return e.guides = B(n), e.matches = s, e.byCategory = (d || []).map(({ Id: u, Matches: l, TotalMatches: g }) => ({
130
- id: u,
131
- guides: B(l),
128
+ return e.guides = L(n), e.matches = s, e.byCategory = (d || []).map(({ Id: h, Matches: l, TotalMatches: g }) => ({
129
+ id: h,
130
+ guides: L(l),
132
131
  matches: g
133
- })), e.tags = A(o), e.notificationLists = L(c || []), e.topNotifications = y(r || [], "noticeRowTop"), e.middleNotifications = y(r || [], "noticeRowMiddle"), e.bottomNotifications = y(r || [], "footerNotice"), e;
132
+ })), e.tags = A(o), e.notificationLists = G(c || []), e.topNotifications = y(r || [], "noticeRowTop"), e.middleNotifications = y(r || [], "noticeRowMiddle"), e.bottomNotifications = y(r || [], "footerNotice"), e;
134
133
  }
135
134
  case C.Categories: {
136
135
  const { Children: e, GuidesCountTotal: n } = t;
137
136
  return {
138
- categories: T(e || []),
137
+ categories: B(e || []),
139
138
  matches: n
140
139
  };
141
140
  }
@@ -148,51 +147,51 @@ const N = (i) => {
148
147
  Options: c,
149
148
  ConnectionId: o,
150
149
  ContactMethods: d,
151
- EnableFeedback: u,
150
+ EnableFeedback: h,
152
151
  HandoverExists: l,
153
152
  FirstPublishedDate: g,
154
153
  Modified: f,
155
- ModifiedByDisplayName: w,
156
- FirstPublishedByDisplayName: h,
154
+ ModifiedByDisplayName: M,
155
+ FirstPublishedByDisplayName: u,
157
156
  Categories: p,
158
157
  Tags: a,
159
158
  SeoMetaDescription: m,
160
159
  SeoAllowIndex: S,
161
160
  Perspectives: I,
162
- PerspectiveKey: U,
163
- Translations: P
164
- } = t, K = U || Object.values(I).find((v) => v === o) || I.Default || null, H = {
161
+ PerspectiveKey: D,
162
+ Translations: T
163
+ } = t, $ = D || Object.values(I).find((v) => v === o) || I.Default || null, U = {
165
164
  guide: {
166
165
  id: e.toString(),
167
166
  title: n,
168
167
  body: s,
169
168
  modified: f,
170
169
  published: g,
171
- modifiedBy: w,
172
- publishedBy: h,
170
+ modifiedBy: M,
171
+ publishedBy: u,
173
172
  connection: o,
174
173
  categories: p,
175
174
  hasHandover: l,
176
- allowFeedback: u,
175
+ allowFeedback: h,
177
176
  seoMetaDescription: m,
178
177
  seoAllowIndex: S,
179
178
  perspectives: I,
180
- perspective: K,
181
- translations: Object.keys(P || {}).reduce((v, E) => (v[E] = P[E].toString(), v), {})
179
+ perspective: $,
180
+ translations: Object.keys(T || {}).reduce((v, x) => (v[x] = T[x].toString(), v), {})
182
181
  },
183
- related: B(r || []),
182
+ related: L(r || []),
184
183
  dialog: [],
185
- contactMethods: (d || []).map((v) => O(v)),
184
+ contactMethods: (d || []).map((v) => q(v)),
186
185
  tags: A(a)
187
186
  };
188
- return (c || []).forEach(({ CanAccess: v, Description: E, ConnectionId: V, Properties: b }) => {
187
+ return (c || []).forEach(({ CanAccess: v, Description: x, ConnectionId: K, Properties: b }) => {
189
188
  if (!v)
190
189
  return;
191
- const M = {
190
+ const w = {
192
191
  id: e.toString(),
193
- title: E,
194
- connection: V,
195
- type: G.default,
192
+ title: x,
193
+ connection: K,
194
+ type: E.default,
196
195
  parent: {
197
196
  id: e.toString(),
198
197
  title: n,
@@ -200,31 +199,31 @@ const N = (i) => {
200
199
  }
201
200
  };
202
201
  if (b.Type === "Guide" || b.Type === "Link")
203
- switch (b.Id && (M.id = b.Id.toString()), b.Uri && (M.href = b.Uri), b.Target && (M.target = b.Target), b.Type) {
202
+ switch (b.Id && (w.id = b.Id.toString()), b.Uri && (w.href = b.Uri), b.Target && (w.target = b.Target), b.Type) {
204
203
  case "Guide":
205
- M.type = G.guide;
204
+ w.type = E.guide;
206
205
  break;
207
206
  case "Link":
208
- M.type = G.link;
207
+ w.type = E.link;
209
208
  break;
210
209
  }
211
- H.dialog.push(M);
212
- }), H;
210
+ U.dialog.push(w);
211
+ }), U;
213
212
  }
214
213
  case C.Contacts: {
215
214
  const { Children: e, Matches: n, Notices: s, NoticeLists: r } = t;
216
215
  return {
217
- contactMethods: (n || []).map((o) => O(o)),
218
- categories: T(e || []),
216
+ contactMethods: (n || []).map((o) => q(o)),
217
+ categories: B(e || []),
219
218
  topNotifications: y(s || [], "noticeRowTop"),
220
219
  middleNotifications: y(s || [], "noticeRowMiddle"),
221
220
  bottomNotifications: y(s || [], "footerNotice"),
222
- notificationLists: L(r || [])
221
+ notificationLists: G(r || [])
223
222
  };
224
223
  }
225
224
  case C.ContactMethod: {
226
225
  const { ContactMethod: e } = t;
227
- return O(e || {});
226
+ return q(e || {});
228
227
  }
229
228
  case C.Tags:
230
229
  case C.TagsOnGuides:
@@ -235,15 +234,15 @@ const N = (i) => {
235
234
  topNotifications: y(e || [], "noticeRowTop"),
236
235
  middleNotifications: y(e || [], "noticeRowMiddle"),
237
236
  bottomNotifications: y(e || [], "footerNotice"),
238
- notificationLists: L(n || [])
237
+ notificationLists: G(n || [])
239
238
  };
240
239
  }
241
240
  default:
242
241
  return {};
243
242
  }
244
243
  };
245
- var ne = /* @__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))(ne || {}), C = /* @__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))(C || {}), oe = /* @__PURE__ */ ((i) => (i.Positive = "Positive", i.Negative = "Negative", i))(oe || {}), re = /* @__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))(re || {});
246
- const W = (i) => {
244
+ var se = /* @__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))(se || {}), C = /* @__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))(C || {}), ne = /* @__PURE__ */ ((i) => (i.Positive = "Positive", i.Negative = "Negative", i))(ne || {}), oe = /* @__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))(oe || {});
245
+ const j = (i) => {
247
246
  switch (i) {
248
247
  case "guides":
249
248
  return "match";
@@ -268,23 +267,19 @@ const W = (i) => {
268
267
  default:
269
268
  throw "error";
270
269
  }
271
- }, ae = (i) => R(void 0, null, function* () {
270
+ }, re = (i) => k(void 0, null, function* () {
272
271
  const { invoke: t } = i.get("$widget");
273
- return (yield t("renderState")) === D.hidden;
272
+ return (yield t("renderState")) === O.hidden;
274
273
  });
275
- class $ {
274
+ class W {
276
275
  constructor(t, e) {
277
- x(this, "queries", /* @__PURE__ */ new Map());
278
- x(this, "lastTake", 0);
279
- x(this, "events");
280
- x(this, "getUnresolvedQueries", () => {
281
- let t = 0;
282
- return this.queries.forEach((e, n) => {
283
- e.some((r) => !r.resolved) && (t = 1);
284
- }), t;
285
- });
286
- this.container = t, this.matchingClient = e, console.log("Experimental123"), this.events = t.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: r }) => {
287
- r === D.hidden && s === D.open && this.fetchAllUnresolvedQueries();
276
+ this.container = t, this.matchingClient = e, this.queries = /* @__PURE__ */ new Map(), this.lastTake = 0, this.getUnresolvedQueries = () => {
277
+ let n = 0;
278
+ return this.queries.forEach((s, r) => {
279
+ s.some((o) => !o.resolved) && (n = 1);
280
+ }), n;
281
+ }, this.events = t.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: r }) => {
282
+ r === O.hidden && s === O.open && this.fetchAllUnresolvedQueries();
288
283
  });
289
284
  }
290
285
  static getInstance(t) {
@@ -292,8 +287,8 @@ class $ {
292
287
  }
293
288
  fetch(t, e) {
294
289
  return new Promise((n, s) => {
295
- e.take && (this.lastTake = +(e.take || 0)), te(e);
296
- const r = W(t), c = this.queries.get(r) || [], o = c.find((d) => q(d.params, e));
290
+ e.take && (this.lastTake = +(e.take || 0)), ee(e);
291
+ const r = j(t), c = this.queries.get(r) || [], o = c.find((d) => R(d.params, e));
297
292
  if (o) {
298
293
  const d = c.indexOf(o);
299
294
  if (o.resolved ? (this.events.dispatch("data-client:fetched", {
@@ -311,14 +306,14 @@ class $ {
311
306
  data: {},
312
307
  resolvers: [{ resolve: n, reject: s }]
313
308
  }), this.queries.set(r, c), this.runQuery(r, e);
314
- }).then((n) => ie(n));
309
+ }).then((n) => te(n));
315
310
  }
316
311
  read(t, e) {
317
- const { select: n } = e, s = W(t);
312
+ const { select: n } = e, s = j(t);
318
313
  return (this.queries.get(s) || []).reduce((o, d) => {
319
314
  if (typeof n == "function") {
320
- const u = n(d.data);
321
- u && o.push(u);
315
+ const h = n(d.data);
316
+ h && o.push(h);
322
317
  } else
323
318
  o.push(d.data);
324
319
  return o;
@@ -328,11 +323,11 @@ class $ {
328
323
  return this.matchingClient.giveFeedback(t, e, n);
329
324
  }
330
325
  setLoadingStatus(t, e, n) {
331
- const s = this.queries.get(t) || [], r = s.find((c) => q(c.params, e));
326
+ const s = this.queries.get(t) || [], r = s.find((c) => R(c.params, e));
332
327
  r && (r.loading = n), this.queries.set(t, s);
333
328
  }
334
329
  runQuery(t, e) {
335
- return R(this, null, function* () {
330
+ return k(this, null, function* () {
336
331
  const {
337
332
  searchPhrase: n = "",
338
333
  categories: s = "0",
@@ -340,14 +335,14 @@ class $ {
340
335
  contactMethodId: c = "0",
341
336
  tagId: o = void 0,
342
337
  take: d = 5,
343
- connection: u = "",
338
+ connection: h = "",
344
339
  guideId: l,
345
340
  expandCategories: g = "descendants",
346
341
  currentCategory: f,
347
- sorting: w = "popularity-descending",
348
- guideIds: h = []
342
+ sorting: M = "popularity-descending",
343
+ guideIds: u = []
349
344
  } = e, p = n.toString().trim();
350
- if (yield ae(this.container))
345
+ if (yield re(this.container))
351
346
  return Promise.resolve();
352
347
  switch (t) {
353
348
  case "match": {
@@ -363,14 +358,14 @@ class $ {
363
358
  direction: I
364
359
  };
365
360
  };
366
- return h.length ? this.matchingClient.customRequest("guides", "POST", {
367
- configuration: { ids: h, take: +d }
361
+ return u.length ? this.matchingClient.customRequest("guides", "POST", {
362
+ configuration: { ids: u, take: +d }
368
363
  }).then((m) => m && this.handleResponse(m, t, e)) : this.matchingClient.match(p, {
369
364
  categories: s === "0" ? [] : Array.isArray(s) ? s : [+s],
370
365
  take: +d,
371
366
  tags: o,
372
- sorting: a(w),
373
- ids: h
367
+ sorting: a(M),
368
+ ids: u
374
369
  }).then((m) => m && this.handleResponse(m, t, e));
375
370
  }
376
371
  case "match-by-category":
@@ -381,7 +376,7 @@ class $ {
381
376
  tags: o
382
377
  }).then((a) => a && this.handleResponse(a, t, e));
383
378
  case "guide":
384
- return this.matchingClient.getGuide(l, { connectionId: u }).then((a) => {
379
+ return this.matchingClient.getGuide(l, { connectionId: h }).then((a) => {
385
380
  a && this.handleResponse(a, t, e);
386
381
  }).catch((a) => {
387
382
  const m = {
@@ -426,14 +421,14 @@ class $ {
426
421
  });
427
422
  }
428
423
  handleResponse(t = {}, e, n, s) {
429
- const r = this.queries.get(e) || [], c = r.find((o) => q(o.params, n));
424
+ const r = this.queries.get(e) || [], c = r.find((o) => R(o.params, n));
430
425
  if (c) {
431
- const o = s || se(e, t);
432
- this.track(o, e, s), c.resolvers.forEach((u) => {
433
- s ? u.reject({ error: o }) : u.resolve(o);
426
+ const o = s || ie(e, t);
427
+ this.track(o, e, s), c.resolvers.forEach((h) => {
428
+ s ? h.reject({ error: o }) : h.resolve(o);
434
429
  });
435
430
  const d = r.indexOf(c);
436
- d > -1 && r.splice(d, 1), r.push(Q(_({}, c), { error: s, resolvers: [], data: o, resolved: !0 })), this.setLoadingStatus(e, n, !1), this.queries.set(e, r), s || this.events.dispatch("data-client:fetched", {
431
+ d > -1 && r.splice(d, 1), r.push(_(F({}, c), { error: s, resolvers: [], data: o, resolved: !0 })), this.setLoadingStatus(e, n, !1), this.queries.set(e, r), s || this.events.dispatch("data-client:fetched", {
437
432
  type: e,
438
433
  params: n,
439
434
  response: o,
@@ -458,14 +453,14 @@ class $ {
458
453
  });
459
454
  }
460
455
  static create(t) {
461
- return t.getAsync("matchingClient").then((e) => new $(t, e));
456
+ return t.getAsync("matchingClient").then((e) => new W(t, e));
462
457
  }
463
458
  }
464
- const ce = (i) => import("@telia-ace/knowledge-widget-adapters").then(({ ContactMethodPlatform: t }) => t.create(i)), de = (i) => import("./index.58cbb369.js").then(({ DataClient: t }) => t.create(i)), ue = (i) => import("@telia-ace/knowledge-serviceclient").then(({ ServiceClient: t, ServiceProxy: e }) => i.get("settings").then((n) => {
459
+ const ae = (i) => import("@telia-ace/knowledge-widget-adapters").then(({ ContactMethodPlatform: t }) => t.create(i)), ce = (i) => import("./index.2e394839.js").then(({ DataClient: t }) => t.create(i)), de = (i) => import("@telia-ace/knowledge-serviceclient").then(({ ServiceClient: t, ServiceProxy: e }) => i.get("settings").then((n) => {
465
460
  const { name: s, events: r } = i.get("$widget"), {
466
461
  data: { projection: c = "", site: o = "current", forceHttps: d = !1 }
467
- } = n, u = new e(c, { credentials: "same-origin" }), l = new t(
468
- u,
462
+ } = n, h = new e(c, { credentials: "same-origin" }), l = new t(
463
+ h,
469
464
  {
470
465
  funnel: s.replace("_contact-method", "").replace("_contact", ""),
471
466
  site: he(o, d)
@@ -484,26 +479,26 @@ const ce = (i) => import("@telia-ace/knowledge-widget-adapters").then(({ Contact
484
479
  let n = window.location;
485
480
  return i === "referrer" && document.referrer && (n = e(document.referrer)), [t ? "https:" : "", "//", n.host, n.pathname].join("");
486
481
  };
487
- class Ce extends ee {
482
+ class pe extends Z {
488
483
  constructor(t) {
489
- super(t), this.container.registerAsync("matchingClient", () => ue(this.container)), this.container.registerAsync(
484
+ super(t), this.container.registerAsync("matchingClient", () => de(this.container)), this.container.registerAsync(
490
485
  "contactMethods",
491
- () => ce(this.container)
492
- ), this.container.registerAsync("dataClient", () => de(this.container));
486
+ () => ae(this.container)
487
+ ), this.container.registerAsync("dataClient", () => ce(this.container));
493
488
  }
494
489
  }
495
490
  export {
496
- ve as Component,
497
- $ as DataClient,
498
- ne as DataType,
499
- Ne as DetachedComponent,
500
- oe as FeedbackType,
501
- Ce as GridWidget,
502
- Me as NotFound,
491
+ ye as Component,
492
+ W as DataClient,
493
+ se as DataType,
494
+ ve as DetachedComponent,
495
+ ne as FeedbackType,
496
+ pe as GridWidget,
497
+ Ne as NotFound,
503
498
  C as ServiceClientQueryType,
504
- re as SortingType,
505
- W as determineServiceClientQueryType,
506
- se as formatLegacyData,
499
+ oe as SortingType,
500
+ j as determineServiceClientQueryType,
501
+ ie as formatLegacyData,
507
502
  we as genericComponentStyling
508
503
  };
509
504
  //# 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 {\n CategoryApiResponse,\n ContactApiResponse,\n ContactCategoriesApiResponse,\n ContactMethodApiResponse,\n GuideApiResponse,\n GuideCategoriesApiResponse,\n GuideMatchApiResponse,\n GuideViewApiResponse,\n NoticeApiResponse,\n NoticeListApiResponse,\n TagListApiResponse,\n ValidationApiResult,\n} from '@telia-ace/knowledge-serviceclient';\nimport { ContactMethodType as ContactMethod } from '@telia-ace/knowledge-widget-adapters';\nimport {\n Category,\n DialogItem,\n DialogItemType,\n Guide,\n Notification,\n NotificationList,\n Symbol,\n Tag,\n} from '@telia-ace/knowledge-widget-core';\nimport { FormBuilder } from '@telia-ace/widget-forms';\nimport { DataError, ServiceClientQueryType } from './data-client';\n\nexport type MatchResult = {\n guides: Guide[];\n matches: number;\n topNotifications: Notification[];\n middleNotifications: Notification[];\n bottomNotifications: Notification[];\n notificationLists: NotificationList[];\n tags: Tag[];\n byCategory: { id: string; guides: Guide[]; matches: number }[];\n};\n\nexport type TagsResult = Tag[];\n\nexport type CategoriesResult = {\n categories: Category[];\n matches: number;\n};\n\nexport type NotificationResults = Pick<\n MatchResult,\n 'topNotifications' | 'middleNotifications' | 'bottomNotifications' | 'notificationLists'\n>;\n\nexport type GuideResult = {\n guide: {\n id: string;\n title: string;\n body: string;\n modified: string;\n modifiedBy: string | null;\n publishedBy: string | null;\n published: string;\n connection: string;\n categories: number[];\n hasHandover: boolean;\n allowFeedback: boolean;\n seoMetaDescription: string | null;\n seoAllowIndex: boolean | null;\n perspective: string | null;\n perspectives: { [key: string]: string };\n translations?: { [key: string]: string };\n };\n related: Guide[];\n dialog: DialogItem[];\n contactMethods: ContactMethod[];\n tags: Tag[];\n error?: DataError;\n};\n\nexport type ContactsResult = {\n categories: Category[];\n contactMethods: ContactMethod[];\n topNotifications: Notification[];\n middleNotifications: Notification[];\n bottomNotifications: Notification[];\n notificationLists: NotificationList[];\n};\n\nexport type SubmissionResult = {\n contactMethod?: ContactMethod;\n valid: boolean;\n};\n\nconst convertLegacySymbol = (symbol?: { Type: string; Content: string }): Symbol | undefined => {\n if (symbol) {\n const { Type, Content } = symbol;\n if (Type && Content) {\n return { type: Type, content: Content };\n }\n }\n};\n\nconst mapLegacyCategoriesRecursively = (categories: CategoryApiResponse[]): Category[] => {\n return categories.map((c) => {\n const category: Category = {\n id: c.Id.toString(),\n title: c.Name,\n symbol: convertLegacySymbol(c.DefaultIcon),\n activeSymbol: c.ActiveIcon && convertLegacySymbol(c.ActiveIcon),\n description: c.Description || (c.Attributes && c.Attributes.description) || '',\n matches: c.GuidesCount,\n };\n if (c.Children && c.Children.length) {\n category.items = mapLegacyCategoriesRecursively(c.Children);\n }\n return category;\n });\n};\n\nconst mapNotices = (source: NoticeApiResponse[], type: string): Notification[] => {\n return source\n .filter(({ Type }) => Type === type)\n .map(({ Id, Title, Body }) => ({\n id: Id.toString(),\n title: Title,\n body: Body,\n }));\n};\n\nconst mapNotificationLists = (source: NoticeListApiResponse[]): NotificationList[] => {\n return source.map(({ Id, Title, DefaultIcon, ListNotices, Notices }) => ({\n id: Id.toString(),\n title: Title,\n symbol: convertLegacySymbol(DefaultIcon),\n defaultHeaderOptions: {\n visible: !!ListNotices.length,\n },\n notifications: (ListNotices || [])\n .concat(Notices || [])\n .map(({ Id, Title, Body, Type, Modified }) => ({\n id: Id.toString(),\n title: Title,\n body: Body,\n modified: Modified,\n expandable: Type === 'listNotice',\n })),\n }));\n};\n\nconst mapContactMethodSettings = (\n {\n Id,\n Title,\n DefaultIcon,\n Exits: [Exit],\n ExitType,\n ConfirmationText,\n ExpandFormAutomatically,\n Form,\n Description,\n }: ContactApiResponse,\n Validation?: ValidationApiResult\n): ContactMethod => {\n const { Adapter } = Exit || { Adapter: {} };\n const { ClientName = '', Settings = {}, CustomClientName = '' } = Adapter;\n\n const settings: ContactMethod = {\n id: Id.toString(),\n title: Title,\n description: Description,\n symbol: convertLegacySymbol(DefaultIcon),\n clientName: ClientName === 'custom.adapter' ? CustomClientName : ClientName,\n expanded: true,\n inline: true,\n body: {},\n };\n\n if (ClientName.indexOf('phone') > -1 || ClientName.indexOf('freetext') > -1) {\n const { displayTextBeforeClick, textBeforeClick } = Settings;\n if (displayTextBeforeClick === 'true') {\n settings.expanded = false;\n settings.title = textBeforeClick;\n }\n\n if (ClientName.indexOf('phone.text') > -1) {\n settings.body.phoneNumber = Settings.phoneNumber;\n } else {\n settings.body.freetext = Settings.freetext;\n }\n }\n\n if (\n ClientName.indexOf('chat.popup') > -1 ||\n ClientName.indexOf('link') > -1 ||\n (ClientName === 'custom.adapter' && ExitType === 'custom')\n ) {\n settings.body = Settings;\n settings.body.confirmationFallback = ConfirmationText;\n }\n\n if (ClientName.indexOf('ace') > -1) {\n settings.body = Settings;\n }\n\n if (Form && Form.HasValueComponents) {\n if (Validation) {\n settings.body.form = FormBuilder.fromLegacyForm(Id.toString(), Form, Validation).get();\n } else {\n settings.body.form = FormBuilder.fromLegacyForm(Id.toString(), Form).get();\n }\n if (!ExpandFormAutomatically) {\n settings.expanded = settings.inline = false;\n }\n }\n\n return settings;\n};\n\ntype Modify<T, R> = Omit<T, keyof R> & R;\ntype ExtendedGuideMatchApiResponse = Modify<\n GuideMatchApiResponse,\n {\n ByCategory: { Id: string; Matches: GuideApiResponse[]; TotalMatches: number }[];\n }\n>;\n\nconst mapTags = (tags: TagListApiResponse[] = []): Tag[] => {\n return tags.map(({ Id, Title, TotalMatches, Symbol, DefaultIcon, ActiveIcon }) => ({\n id: Id.toString(),\n title: Title,\n matches: TotalMatches,\n symbol: convertLegacySymbol(DefaultIcon || Symbol),\n defaultIcon: convertLegacySymbol(DefaultIcon),\n activeIcon: convertLegacySymbol(ActiveIcon),\n }));\n};\n\nconst mapGuides = (guides: GuideApiResponse[]) => {\n return guides.map(({ Id, Title, Tags, FirstPublishedDate, Modified }) => ({\n id: Id.toString(),\n title: Title,\n tags: mapTags(Tags),\n published: FirstPublishedDate,\n modified: Modified,\n }));\n};\n\nexport const formatLegacyData = (type: ServiceClientQueryType, data: any) => {\n switch (type) {\n case ServiceClientQueryType.MatchByCategory:\n case ServiceClientQueryType.Match: {\n const result: MatchResult = {\n guides: [],\n matches: 0,\n topNotifications: [],\n middleNotifications: [],\n bottomNotifications: [],\n notificationLists: [],\n tags: [],\n byCategory: [],\n };\n const {\n Matches,\n TotalMatches,\n Notices,\n NoticeLists,\n Tags,\n ByCategory,\n }: ExtendedGuideMatchApiResponse = data;\n\n result.guides = mapGuides(Matches);\n\n result.matches = TotalMatches;\n\n result.byCategory = (ByCategory || []).map(({ Id, Matches, TotalMatches }) => ({\n id: Id,\n guides: mapGuides(Matches),\n matches: TotalMatches,\n }));\n\n result.tags = mapTags(Tags);\n\n result.notificationLists = mapNotificationLists(NoticeLists || []);\n\n result.topNotifications = mapNotices(Notices || [], 'noticeRowTop');\n\n result.middleNotifications = mapNotices(Notices || [], 'noticeRowMiddle');\n\n result.bottomNotifications = mapNotices(Notices || [], 'footerNotice');\n\n return result;\n }\n case ServiceClientQueryType.Categories: {\n const { Children, GuidesCountTotal }: GuideCategoriesApiResponse = data;\n\n const result: CategoriesResult = {\n categories: mapLegacyCategoriesRecursively(Children || []),\n matches: GuidesCountTotal,\n };\n\n return result;\n }\n case ServiceClientQueryType.Guide: {\n const {\n Id,\n Title,\n Body,\n Related,\n Options,\n ConnectionId,\n ContactMethods,\n EnableFeedback,\n HandoverExists,\n FirstPublishedDate,\n Modified,\n ModifiedByDisplayName,\n FirstPublishedByDisplayName,\n Categories,\n Tags,\n SeoMetaDescription,\n SeoAllowIndex,\n Perspectives,\n PerspectiveKey,\n Translations,\n }: GuideViewApiResponse = data;\n\n /* \n PerspectiveKey is always null when on the \"top level\" of a dialog tree\n OR when navigating down a dialog tree in the \"Default answer version\"\n Note: The \"Default answer version\" is not the same as a given guides\n default answer version. The \"Default answer version\" is always the answer\n version in Perspectives with the key \"Default\".\n */\n const perspective =\n PerspectiveKey ||\n Object.values(Perspectives).find((connection) => connection === ConnectionId) ||\n Perspectives['Default'] ||\n null;\n\n const result: GuideResult = {\n guide: {\n id: Id.toString(),\n title: Title,\n body: Body,\n modified: Modified,\n published: FirstPublishedDate,\n modifiedBy: ModifiedByDisplayName,\n publishedBy: FirstPublishedByDisplayName,\n connection: ConnectionId,\n categories: Categories,\n hasHandover: HandoverExists,\n allowFeedback: EnableFeedback,\n seoMetaDescription: SeoMetaDescription,\n seoAllowIndex: SeoAllowIndex,\n perspectives: Perspectives,\n perspective,\n translations: Object.keys(Translations || {}).reduce<{\n [key: string]: string;\n }>((acc, key) => {\n acc[key] = Translations[key].toString();\n return acc;\n }, {}),\n },\n related: mapGuides(Related || []),\n dialog: [],\n contactMethods: (ContactMethods || []).map((cm) => mapContactMethodSettings(cm)),\n tags: mapTags(Tags),\n };\n\n (Options || []).forEach(({ CanAccess, Description, ConnectionId, Properties }) => {\n if (!CanAccess) {\n return;\n }\n\n const item: DialogItem = {\n id: Id.toString(),\n title: Description,\n connection: ConnectionId,\n type: DialogItemType.default,\n parent: {\n id: Id.toString(),\n title: Title,\n tags: mapTags(Tags),\n },\n };\n\n if (Properties.Type === 'Guide' || Properties.Type === 'Link') {\n Properties.Id && (item.id = Properties.Id.toString());\n Properties.Uri && (item.href = Properties.Uri);\n Properties.Target && (item.target = Properties.Target);\n switch (Properties.Type) {\n case 'Guide':\n item.type = DialogItemType.guide;\n break;\n case 'Link':\n item.type = DialogItemType.link;\n break;\n }\n }\n\n result.dialog.push(item);\n });\n\n return result;\n }\n case ServiceClientQueryType.Contacts: {\n const { Children, Matches, Notices, NoticeLists }: ContactCategoriesApiResponse = data;\n\n const result: ContactsResult = {\n contactMethods: (Matches || []).map((cm) => mapContactMethodSettings(cm)),\n categories: mapLegacyCategoriesRecursively(Children || []),\n topNotifications: mapNotices(Notices || [], 'noticeRowTop'),\n middleNotifications: mapNotices(Notices || [], 'noticeRowMiddle'),\n bottomNotifications: mapNotices(Notices || [], 'footerNotice'),\n notificationLists: mapNotificationLists(NoticeLists || []),\n };\n\n return result;\n }\n case ServiceClientQueryType.ContactMethod: {\n const { ContactMethod }: ContactMethodApiResponse = data;\n\n return mapContactMethodSettings(ContactMethod || {});\n }\n case ServiceClientQueryType.Tags:\n case ServiceClientQueryType.TagsOnGuides: {\n return mapTags(data || []);\n }\n case ServiceClientQueryType.Notifications: {\n const { Notices, NoticeLists } = data;\n\n return {\n topNotifications: mapNotices(Notices || [], 'noticeRowTop'),\n middleNotifications: mapNotices(Notices || [], 'noticeRowMiddle'),\n bottomNotifications: mapNotices(Notices || [], 'footerNotice'),\n notificationLists: mapNotificationLists(NoticeLists || []),\n };\n }\n default:\n return {};\n }\n};\n","import { ServiceClient } from '@telia-ace/knowledge-serviceclient';\nimport { WidgetRenderState } from '@telia-ace/knowledge-widget-core';\nimport {\n deepClone,\n removeNullAndUndefinedValues,\n shallowCompare,\n} from '@telia-ace/widget-utilities';\nimport { Container, EventManager, Widget } from '@webprovisions/platform';\nimport { formatLegacyData } from './legacy-conversion';\n\nexport type Subscriber = (...args: any[]) => void;\n\nexport enum DataType {\n Guide = 'guide',\n Guides = 'guides',\n GuidesByCategory = 'guides-by-category',\n RowNotifications = 'row-notices',\n NotificationLists = 'notification-lists',\n GuideCategories = 'guide-categories',\n ContactMethodCategories = 'contact-method-categories',\n ContactMethod = 'contact-method',\n ContactMethods = 'contact-methods',\n Tags = 'tags',\n TagsOnGuides = 'tagsonguides',\n}\n\nexport type DataError = {\n status: number;\n message: string;\n};\n\nexport enum ServiceClientQueryType {\n Match = 'match',\n Categories = 'categories',\n Guide = 'guide',\n Contacts = 'contacts',\n ContactMethod = 'contact-method',\n MatchByCategory = 'match-by-category',\n Tags = 'tags',\n TagsOnGuides = 'tagsonguides',\n Notifications = 'notifications',\n}\n\nexport enum FeedbackType {\n Positive = 'Positive',\n Negative = 'Negative',\n}\n\nexport type QueryParameters = {\n guideId?: string | number;\n categories?: string | number | string[] | number[];\n tagId?: string | number;\n connection?: string;\n\n contactMethodCategoryId?: string | number;\n contactMethodId?: string | number;\n\n searchPhrase?: string | number;\n take?: string | number;\n [key: string]: any;\n\n expandCategories?: 'none' | 'children' | 'descendants';\n sorting?: SortingType;\n guideIds?: string[];\n};\n\nexport enum SortingType {\n POPULARITY_DESCENDING = 'popularity-descending',\n ALPHABETIC_ASCENDING = 'alphabetic-ascending',\n ALPHABETIC_DESCENDING = 'alphabetic-descending',\n MODIFIED_ASCENDING = 'modified-ascending',\n MODIFIED_DESCENDING = 'modified-descending',\n PUBLISHED_ASCENDING = 'published-ascending',\n PUBLISHED_DESCENDING = 'published-descending',\n}\n\nexport type Query = {\n params: QueryParameters;\n resolved: boolean;\n loading: boolean;\n error?: DataError;\n data: any;\n resolvers: {\n resolve: (data: any) => void;\n reject: (data: any) => void;\n }[];\n};\n\nexport const determineServiceClientQueryType = (type: DataType): ServiceClientQueryType => {\n switch (type) {\n case DataType.Guides:\n return ServiceClientQueryType.Match;\n case DataType.GuidesByCategory:\n return ServiceClientQueryType.MatchByCategory;\n case DataType.Guide:\n return ServiceClientQueryType.Guide;\n case DataType.GuideCategories:\n return ServiceClientQueryType.Categories;\n case DataType.ContactMethodCategories:\n case DataType.ContactMethods:\n return ServiceClientQueryType.Contacts;\n case DataType.ContactMethod:\n return ServiceClientQueryType.ContactMethod;\n case DataType.Tags:\n return ServiceClientQueryType.Tags;\n case DataType.TagsOnGuides:\n return ServiceClientQueryType.TagsOnGuides;\n case DataType.NotificationLists:\n case DataType.RowNotifications:\n return ServiceClientQueryType.Notifications;\n default:\n throw 'error';\n }\n};\n\nconst widgetIsHidden = async (container: Container) => {\n const { invoke } = container.get('$widget');\n const renderState = await invoke('renderState');\n return renderState === WidgetRenderState.hidden;\n};\n\nexport default class DataClient {\n private queries: Map<ServiceClientQueryType, Query[]> = new Map();\n private lastTake: number = 0;\n public events: EventManager;\n constructor(private container: Container, private matchingClient: ServiceClient) {\n console.log('Experimental123'); // TODO: remove\n this.events = (<Widget>container.get('$widget')).events;\n\n this.events.subscribe('widget:settings-updated', () => (this.queries = new Map()));\n\n this.events.subscribe('widget:render-state-changed', (event, { next, previous }) => {\n if (previous === WidgetRenderState.hidden && next === WidgetRenderState.open) {\n this.fetchAllUnresolvedQueries();\n }\n });\n }\n\n static getInstance(container: Container): Promise<DataClient> {\n return container.getAsync('dataClient');\n }\n\n private getUnresolvedQueries = () => {\n let unresolvedCount = 0;\n this.queries.forEach((queries, type) => {\n const hasUnresolved = queries.some((query: Query) => !query.resolved);\n if (hasUnresolved) {\n unresolvedCount = +1;\n }\n });\n return unresolvedCount;\n };\n\n public fetch(type: DataType, params: QueryParameters): Promise<any> {\n return new Promise((resolve, reject) => {\n if (params.take) {\n this.lastTake = +(params.take || 0);\n }\n\n removeNullAndUndefinedValues(params);\n const serviceClientQueryType = determineServiceClientQueryType(type);\n const queries = this.queries.get(serviceClientQueryType) || [];\n const query = queries.find((q) => shallowCompare(q.params, params));\n\n if (query) {\n const index = queries.indexOf(query);\n if (query.resolved) {\n this.events.dispatch('data-client:fetched', {\n params,\n type: serviceClientQueryType,\n response: query.data,\n unresolvedQueries: this.getUnresolvedQueries(),\n });\n this.track(query.data, serviceClientQueryType, query.error);\n if (query.data && query.error) {\n reject({ error: query.error });\n } else {\n resolve(query.data);\n }\n } else {\n query.resolvers.push({ resolve, reject });\n }\n queries.splice(index, 1);\n queries.push(query);\n this.queries.set(serviceClientQueryType, queries);\n if (!query.loading && !query.resolved) {\n return this.runQuery(serviceClientQueryType, params);\n }\n } else {\n queries.push({\n params,\n resolved: false,\n loading: true,\n data: {},\n resolvers: [{ resolve, reject }],\n });\n this.queries.set(serviceClientQueryType, queries);\n\n return this.runQuery(serviceClientQueryType, params);\n }\n }).then((res) => deepClone(res));\n }\n\n // query the cached data\n public read(\n type: DataType,\n options: {\n select?: (data: any) => any; // either return all data by the DataType, or use an selector\n }\n ) {\n const { select } = options;\n const serviceClientQueryType = determineServiceClientQueryType(type);\n const queries = this.queries.get(serviceClientQueryType) || [];\n\n const result = queries.reduce<any[]>((acc, query) => {\n if (typeof select === 'function') {\n const match = select(query.data);\n if (match) {\n acc.push(match);\n }\n } else {\n acc.push(query.data);\n }\n return acc;\n }, []);\n return result;\n }\n\n public feedback(id: string, connection: string, feedback: FeedbackType): Promise<any> {\n return this.matchingClient.giveFeedback(id, connection, feedback);\n }\n\n private setLoadingStatus(\n type: ServiceClientQueryType,\n params: QueryParameters,\n loading: boolean\n ) {\n const queries = this.queries.get(type) || [];\n const query = queries.find((q) => shallowCompare(q.params, params));\n\n if (query) {\n query.loading = loading;\n }\n this.queries.set(type, queries);\n }\n\n private async runQuery(type: ServiceClientQueryType, params: QueryParameters) {\n const {\n searchPhrase = '',\n categories = '0',\n contactMethodCategoryId = '0',\n contactMethodId = '0',\n tagId = undefined,\n take = 5,\n connection = '',\n guideId,\n expandCategories = 'descendants',\n currentCategory,\n sorting = SortingType.POPULARITY_DESCENDING,\n guideIds = [],\n } = params;\n\n const trimmedPhrase = searchPhrase.toString().trim();\n if (await widgetIsHidden(this.container)) {\n return Promise.resolve();\n }\n\n switch (type) {\n case ServiceClientQueryType.Match: {\n const formatSortingValues = (sorting: string) => {\n const [type, direction] = sorting.split('-');\n const sortKeysMap = new Map([\n ['popularity', 'popularity'],\n ['alphabetic', 'title'],\n ['modified', 'lastModified'],\n ['published', 'firstPublished'],\n ]);\n\n return {\n type: sortKeysMap.get(type),\n direction: direction,\n };\n };\n\n if (guideIds.length) {\n return this.matchingClient\n .customRequest('guides', 'POST', {\n configuration: { ids: guideIds, take: +take },\n })\n .then((matches) => matches && this.handleResponse(matches, type, params));\n }\n\n return this.matchingClient\n .match(trimmedPhrase, {\n categories:\n categories === '0'\n ? []\n : Array.isArray(categories)\n ? categories\n : [+categories],\n take: +take,\n tags: tagId,\n sorting: formatSortingValues(sorting),\n ids: guideIds,\n })\n .then((matches) => matches && this.handleResponse(matches, type, params));\n }\n case ServiceClientQueryType.MatchByCategory: {\n return this.matchingClient\n .match(trimmedPhrase, {\n groupByCategory: true,\n categories:\n categories === '0'\n ? []\n : Array.isArray(categories)\n ? categories\n : [+categories],\n take: +take,\n tags: tagId,\n })\n .then((matches) => matches && this.handleResponse(matches, type, params));\n }\n case ServiceClientQueryType.Guide: {\n return this.matchingClient\n .getGuide(guideId, { connectionId: connection })\n .then((guide) => {\n if (guide) {\n this.handleResponse(guide, type, params);\n }\n })\n .catch((e) => {\n const error = {\n message: 'Something went wrong.',\n status: e.status || 400,\n };\n if (error.status === 404) {\n error.message = 'The guide could not be found.';\n }\n this.handleResponse({}, type, params, error);\n });\n }\n case ServiceClientQueryType.Categories: {\n return this.matchingClient\n .getCategories({ phrase: trimmedPhrase, expand: expandCategories, tags: tagId })\n .then(\n (categories) => categories && this.handleResponse(categories, type, params)\n );\n }\n case ServiceClientQueryType.Contacts: {\n if (guideId) {\n return this.matchingClient\n .contactMethods(+guideId, { phrase: trimmedPhrase })\n .then((result) => result && this.handleResponse(result, type, params));\n }\n return this.matchingClient\n .contacts(+contactMethodCategoryId, { phrase: trimmedPhrase })\n .then((result) => result && this.handleResponse(result, type, params));\n }\n case ServiceClientQueryType.ContactMethod: {\n return this.matchingClient\n .getContactMethod(+contactMethodId, { guideId, currentCategory })\n .then((result) => result && this.handleResponse(result, type, params));\n }\n case ServiceClientQueryType.Tags: {\n return this.matchingClient\n .customRequest('tags', 'GET', {\n configuration: {\n take: 999999,\n phrase: trimmedPhrase,\n categories:\n categories === '0'\n ? []\n : Array.isArray(categories)\n ? categories\n : [+categories],\n },\n })\n .then((result) => result && this.handleResponse(result, type, params));\n }\n case ServiceClientQueryType.TagsOnGuides: {\n return this.matchingClient\n .customRequest('tagsonguides', 'GET', {\n configuration: {\n take: 999999,\n phrase: trimmedPhrase,\n categories:\n categories === '0'\n ? []\n : Array.isArray(categories)\n ? categories\n : [+categories],\n tags: tagId,\n },\n })\n .then((result) => result && this.handleResponse(result, type, params));\n }\n case ServiceClientQueryType.Notifications: {\n return this.matchingClient\n .customRequest('notices', 'GET', {\n configuration: {\n phrase: trimmedPhrase,\n categories:\n categories === '0'\n ? []\n : Array.isArray(categories)\n ? categories\n : [+categories],\n },\n })\n .then((result) => result && this.handleResponse(result, type, params));\n }\n }\n }\n\n handleResponse(\n data: any = {},\n type: ServiceClientQueryType,\n params: QueryParameters,\n error?: DataError\n ) {\n const queries = this.queries.get(type) || [];\n const existing = queries.find((q) => shallowCompare(q.params, params));\n if (existing) {\n const formatted = error ? error : formatLegacyData(type, data);\n this.track(formatted, type, error);\n existing.resolvers.forEach((r) => {\n if (error) {\n r.reject({ error: formatted });\n } else {\n r.resolve(formatted);\n }\n });\n\n const index = queries.indexOf(existing);\n if (index > -1) {\n queries.splice(index, 1);\n }\n queries.push({ ...existing, error, resolvers: [], data: formatted, resolved: true });\n this.setLoadingStatus(type, params, false);\n this.queries.set(type, queries);\n if (!error) {\n this.events.dispatch('data-client:fetched', {\n type,\n params,\n response: formatted,\n unresolvedQueries: this.getUnresolvedQueries(),\n });\n }\n }\n }\n\n private fetchAllUnresolvedQueries() {\n for (const [queryType, queries] of this.queries) {\n queries\n .filter((query: Query) => !query.resolved)\n .forEach((query) => {\n this.runQuery(queryType, query.params);\n });\n }\n }\n\n private track(data: any = {}, type: ServiceClientQueryType, error?: DataError) {\n const widget = this.container.get('$widget');\n if (widget && !error) {\n widget.events.dispatch('tracking:service-client-response', {\n type,\n data,\n });\n } else if (widget) {\n widget.events.dispatch('tracking:service-client-error', {\n type,\n error,\n });\n }\n }\n\n static create(container: Container): Promise<DataClient> {\n return container\n .getAsync('matchingClient')\n .then((matchingClient) => new DataClient(container, matchingClient));\n }\n}\n","import { WidgetSettings } from '@telia-ace/knowledge-widget-core';\nimport { Container, Widget } from '@webprovisions/platform';\n\nexport const createContactMethodPlatform = (container: Container) => {\n return import('@telia-ace/knowledge-widget-adapters').then(({ ContactMethodPlatform }) => {\n return ContactMethodPlatform.create(container);\n });\n};\n\nexport const createDataClient = (container: Container) => {\n return import('../data').then(({ DataClient }) => {\n return DataClient.create(container);\n });\n};\n\nexport const createServiceClient = (container: Container) => {\n return import('@telia-ace/knowledge-serviceclient').then(({ ServiceClient, ServiceProxy }) => {\n return container.get('settings').then((settings: WidgetSettings) => {\n const { name, events }: Widget = container.get('$widget');\n const {\n data: { projection = '', site = 'current', forceHttps = false },\n } = settings;\n\n const proxy = new ServiceProxy(projection, { credentials: 'same-origin' });\n\n // Replacing '_contact' & '_contact-method' while\n // still using the shadow widget concept\n const client = new ServiceClient(\n proxy,\n {\n funnel: name.replace('_contact-method', '').replace('_contact', ''),\n site: createSiteProvider(site, forceHttps),\n },\n null,\n container\n );\n\n events.subscribe('widget:settings-updated', (event, { data }: WidgetSettings) => {\n if (data && data.projection !== projection) {\n client.proxy.setBaseUrl(data.projection);\n }\n });\n\n return client;\n });\n });\n};\n\ntype SiteLocation = {\n host: string;\n pathname: string;\n};\n\nconst createSiteProvider = (site: 'current' | 'referrer', forceHttps: boolean): (() => string) => {\n return () => {\n const parseLocation = (href: string): SiteLocation => {\n const link = document.createElement('a');\n link.href = href;\n return link;\n };\n\n let location: SiteLocation = window.location;\n if (site === 'referrer' && document.referrer) {\n location = parseLocation(document.referrer);\n }\n return [forceHttps ? 'https:' : '', '//', location.host, location.pathname].join('');\n };\n};\n","import { Widget } from '@telia-ace/widget-types-grid';\nimport { Container } from '@webprovisions/platform';\nimport { createContactMethodPlatform, createDataClient, createServiceClient } from './services';\n\nexport default class ExtendedWidget extends Widget {\n constructor(container: Container) {\n super(container);\n\n this.container.registerAsync('matchingClient', () => createServiceClient(this.container));\n this.container.registerAsync('contactMethods', () =>\n createContactMethodPlatform(this.container)\n );\n this.container.registerAsync('dataClient', () => createDataClient(this.container));\n }\n}\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","createServiceClient","ServiceClient","ServiceProxy","name","events","projection","site","forceHttps","proxy","client","createSiteProvider","parseLocation","href","link","location","ExtendedWidget","Widget"],"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 {\n CategoryApiResponse,\n ContactApiResponse,\n ContactCategoriesApiResponse,\n ContactMethodApiResponse,\n GuideApiResponse,\n GuideCategoriesApiResponse,\n GuideMatchApiResponse,\n GuideViewApiResponse,\n NoticeApiResponse,\n NoticeListApiResponse,\n TagListApiResponse,\n ValidationApiResult,\n} from '@telia-ace/knowledge-serviceclient';\n// import { ContactMethodType as ContactMethod } from '@telia-ace/knowledge-widget-adapters';\nimport {\n Category,\n DialogItem,\n DialogItemType,\n Guide,\n Notification,\n NotificationList,\n Symbol,\n Tag,\n} from '@telia-ace/knowledge-widget-core';\nimport { FormBuilder } from '@telia-ace/widget-forms';\nimport { DataError, ServiceClientQueryType } from './data-client';\n\nexport type MatchResult = {\n guides: Guide[];\n matches: number;\n topNotifications: Notification[];\n middleNotifications: Notification[];\n bottomNotifications: Notification[];\n notificationLists: NotificationList[];\n tags: Tag[];\n byCategory: { id: string; guides: Guide[]; matches: number }[];\n};\n\nexport type TagsResult = Tag[];\n\ntype ContactMethod = any;\n\nexport type CategoriesResult = {\n categories: Category[];\n matches: number;\n};\n\nexport type NotificationResults = Pick<\n MatchResult,\n 'topNotifications' | 'middleNotifications' | 'bottomNotifications' | 'notificationLists'\n>;\n\nexport type GuideResult = {\n guide: {\n id: string;\n title: string;\n body: string;\n modified: string;\n modifiedBy: string | null;\n publishedBy: string | null;\n published: string;\n connection: string;\n categories: number[];\n hasHandover: boolean;\n allowFeedback: boolean;\n seoMetaDescription: string | null;\n seoAllowIndex: boolean | null;\n perspective: string | null;\n perspectives: { [key: string]: string };\n translations?: { [key: string]: string };\n };\n related: Guide[];\n dialog: DialogItem[];\n contactMethods: ContactMethod[];\n tags: Tag[];\n error?: DataError;\n};\n\nexport type ContactsResult = {\n categories: Category[];\n contactMethods: ContactMethod[];\n topNotifications: Notification[];\n middleNotifications: Notification[];\n bottomNotifications: Notification[];\n notificationLists: NotificationList[];\n};\n\nexport type SubmissionResult = {\n contactMethod?: ContactMethod;\n valid: boolean;\n};\n\nconst convertLegacySymbol = (symbol?: { Type: string; Content: string }): Symbol | undefined => {\n if (symbol) {\n const { Type, Content } = symbol;\n if (Type && Content) {\n return { type: Type, content: Content };\n }\n }\n};\n\nconst mapLegacyCategoriesRecursively = (categories: CategoryApiResponse[]): Category[] => {\n return categories.map((c) => {\n const category: Category = {\n id: c.Id.toString(),\n title: c.Name,\n symbol: convertLegacySymbol(c.DefaultIcon),\n activeSymbol: c.ActiveIcon && convertLegacySymbol(c.ActiveIcon),\n description: c.Description || (c.Attributes && c.Attributes.description) || '',\n matches: c.GuidesCount,\n };\n if (c.Children && c.Children.length) {\n category.items = mapLegacyCategoriesRecursively(c.Children);\n }\n return category;\n });\n};\n\nconst mapNotices = (source: NoticeApiResponse[], type: string): Notification[] => {\n return source\n .filter(({ Type }) => Type === type)\n .map(({ Id, Title, Body }) => ({\n id: Id.toString(),\n title: Title,\n body: Body,\n }));\n};\n\nconst mapNotificationLists = (source: NoticeListApiResponse[]): NotificationList[] => {\n return source.map(({ Id, Title, DefaultIcon, ListNotices, Notices }) => ({\n id: Id.toString(),\n title: Title,\n symbol: convertLegacySymbol(DefaultIcon),\n defaultHeaderOptions: {\n visible: !!ListNotices.length,\n },\n notifications: (ListNotices || [])\n .concat(Notices || [])\n .map(({ Id, Title, Body, Type, Modified }) => ({\n id: Id.toString(),\n title: Title,\n body: Body,\n modified: Modified,\n expandable: Type === 'listNotice',\n })),\n }));\n};\n\nconst mapContactMethodSettings = (\n {\n Id,\n Title,\n DefaultIcon,\n Exits: [Exit],\n ExitType,\n ConfirmationText,\n ExpandFormAutomatically,\n Form,\n Description,\n }: ContactApiResponse,\n Validation?: ValidationApiResult\n): ContactMethod => {\n const { Adapter } = Exit || { Adapter: {} };\n const { ClientName = '', Settings = {}, CustomClientName = '' } = Adapter;\n\n const settings: ContactMethod = {\n id: Id.toString(),\n title: Title,\n description: Description,\n symbol: convertLegacySymbol(DefaultIcon),\n clientName: ClientName === 'custom.adapter' ? CustomClientName : ClientName,\n expanded: true,\n inline: true,\n body: {},\n };\n\n if (ClientName.indexOf('phone') > -1 || ClientName.indexOf('freetext') > -1) {\n const { displayTextBeforeClick, textBeforeClick } = Settings;\n if (displayTextBeforeClick === 'true') {\n settings.expanded = false;\n settings.title = textBeforeClick;\n }\n\n if (ClientName.indexOf('phone.text') > -1) {\n settings.body.phoneNumber = Settings.phoneNumber;\n } else {\n settings.body.freetext = Settings.freetext;\n }\n }\n\n if (\n ClientName.indexOf('chat.popup') > -1 ||\n ClientName.indexOf('link') > -1 ||\n (ClientName === 'custom.adapter' && ExitType === 'custom')\n ) {\n settings.body = Settings;\n settings.body.confirmationFallback = ConfirmationText;\n }\n\n if (ClientName.indexOf('ace') > -1) {\n settings.body = Settings;\n }\n\n if (Form && Form.HasValueComponents) {\n if (Validation) {\n settings.body.form = FormBuilder.fromLegacyForm(Id.toString(), Form, Validation).get();\n } else {\n settings.body.form = FormBuilder.fromLegacyForm(Id.toString(), Form).get();\n }\n if (!ExpandFormAutomatically) {\n settings.expanded = settings.inline = false;\n }\n }\n\n return settings;\n};\n\ntype Modify<T, R> = Omit<T, keyof R> & R;\ntype ExtendedGuideMatchApiResponse = Modify<\n GuideMatchApiResponse,\n {\n ByCategory: { Id: string; Matches: GuideApiResponse[]; TotalMatches: number }[];\n }\n>;\n\nconst mapTags = (tags: TagListApiResponse[] = []): Tag[] => {\n return tags.map(({ Id, Title, TotalMatches, Symbol, DefaultIcon, ActiveIcon }) => ({\n id: Id.toString(),\n title: Title,\n matches: TotalMatches,\n symbol: convertLegacySymbol(DefaultIcon || Symbol),\n defaultIcon: convertLegacySymbol(DefaultIcon),\n activeIcon: convertLegacySymbol(ActiveIcon),\n }));\n};\n\nconst mapGuides = (guides: GuideApiResponse[]) => {\n return guides.map(({ Id, Title, Tags, FirstPublishedDate, Modified }) => ({\n id: Id.toString(),\n title: Title,\n tags: mapTags(Tags),\n published: FirstPublishedDate,\n modified: Modified,\n }));\n};\n\nexport const formatLegacyData = (type: ServiceClientQueryType, data: any) => {\n switch (type) {\n case ServiceClientQueryType.MatchByCategory:\n case ServiceClientQueryType.Match: {\n const result: MatchResult = {\n guides: [],\n matches: 0,\n topNotifications: [],\n middleNotifications: [],\n bottomNotifications: [],\n notificationLists: [],\n tags: [],\n byCategory: [],\n };\n const {\n Matches,\n TotalMatches,\n Notices,\n NoticeLists,\n Tags,\n ByCategory,\n }: ExtendedGuideMatchApiResponse = data;\n\n result.guides = mapGuides(Matches);\n\n result.matches = TotalMatches;\n\n result.byCategory = (ByCategory || []).map(({ Id, Matches, TotalMatches }) => ({\n id: Id,\n guides: mapGuides(Matches),\n matches: TotalMatches,\n }));\n\n result.tags = mapTags(Tags);\n\n result.notificationLists = mapNotificationLists(NoticeLists || []);\n\n result.topNotifications = mapNotices(Notices || [], 'noticeRowTop');\n\n result.middleNotifications = mapNotices(Notices || [], 'noticeRowMiddle');\n\n result.bottomNotifications = mapNotices(Notices || [], 'footerNotice');\n\n return result;\n }\n case ServiceClientQueryType.Categories: {\n const { Children, GuidesCountTotal }: GuideCategoriesApiResponse = data;\n\n const result: CategoriesResult = {\n categories: mapLegacyCategoriesRecursively(Children || []),\n matches: GuidesCountTotal,\n };\n\n return result;\n }\n case ServiceClientQueryType.Guide: {\n const {\n Id,\n Title,\n Body,\n Related,\n Options,\n ConnectionId,\n ContactMethods,\n EnableFeedback,\n HandoverExists,\n FirstPublishedDate,\n Modified,\n ModifiedByDisplayName,\n FirstPublishedByDisplayName,\n Categories,\n Tags,\n SeoMetaDescription,\n SeoAllowIndex,\n Perspectives,\n PerspectiveKey,\n Translations,\n }: GuideViewApiResponse = data;\n\n /* \n PerspectiveKey is always null when on the \"top level\" of a dialog tree\n OR when navigating down a dialog tree in the \"Default answer version\"\n Note: The \"Default answer version\" is not the same as a given guides\n default answer version. The \"Default answer version\" is always the answer\n version in Perspectives with the key \"Default\".\n */\n const perspective =\n PerspectiveKey ||\n Object.values(Perspectives).find((connection) => connection === ConnectionId) ||\n Perspectives['Default'] ||\n null;\n\n const result: GuideResult = {\n guide: {\n id: Id.toString(),\n title: Title,\n body: Body,\n modified: Modified,\n published: FirstPublishedDate,\n modifiedBy: ModifiedByDisplayName,\n publishedBy: FirstPublishedByDisplayName,\n connection: ConnectionId,\n categories: Categories,\n hasHandover: HandoverExists,\n allowFeedback: EnableFeedback,\n seoMetaDescription: SeoMetaDescription,\n seoAllowIndex: SeoAllowIndex,\n perspectives: Perspectives,\n perspective,\n translations: Object.keys(Translations || {}).reduce<{\n [key: string]: string;\n }>((acc, key) => {\n acc[key] = Translations[key].toString();\n return acc;\n }, {}),\n },\n related: mapGuides(Related || []),\n dialog: [],\n contactMethods: (ContactMethods || []).map((cm) => mapContactMethodSettings(cm)),\n tags: mapTags(Tags),\n };\n\n (Options || []).forEach(({ CanAccess, Description, ConnectionId, Properties }) => {\n if (!CanAccess) {\n return;\n }\n\n const item: DialogItem = {\n id: Id.toString(),\n title: Description,\n connection: ConnectionId,\n type: DialogItemType.default,\n parent: {\n id: Id.toString(),\n title: Title,\n tags: mapTags(Tags),\n },\n };\n\n if (Properties.Type === 'Guide' || Properties.Type === 'Link') {\n Properties.Id && (item.id = Properties.Id.toString());\n Properties.Uri && (item.href = Properties.Uri);\n Properties.Target && (item.target = Properties.Target);\n switch (Properties.Type) {\n case 'Guide':\n item.type = DialogItemType.guide;\n break;\n case 'Link':\n item.type = DialogItemType.link;\n break;\n }\n }\n\n result.dialog.push(item);\n });\n\n return result;\n }\n case ServiceClientQueryType.Contacts: {\n const { Children, Matches, Notices, NoticeLists }: ContactCategoriesApiResponse = data;\n\n const result: ContactsResult = {\n contactMethods: (Matches || []).map((cm) => mapContactMethodSettings(cm)),\n categories: mapLegacyCategoriesRecursively(Children || []),\n topNotifications: mapNotices(Notices || [], 'noticeRowTop'),\n middleNotifications: mapNotices(Notices || [], 'noticeRowMiddle'),\n bottomNotifications: mapNotices(Notices || [], 'footerNotice'),\n notificationLists: mapNotificationLists(NoticeLists || []),\n };\n\n return result;\n }\n case ServiceClientQueryType.ContactMethod: {\n const { ContactMethod }: ContactMethodApiResponse = data;\n\n return mapContactMethodSettings(ContactMethod || {});\n }\n case ServiceClientQueryType.Tags:\n case ServiceClientQueryType.TagsOnGuides: {\n return mapTags(data || []);\n }\n case ServiceClientQueryType.Notifications: {\n const { Notices, NoticeLists } = data;\n\n return {\n topNotifications: mapNotices(Notices || [], 'noticeRowTop'),\n middleNotifications: mapNotices(Notices || [], 'noticeRowMiddle'),\n bottomNotifications: mapNotices(Notices || [], 'footerNotice'),\n notificationLists: mapNotificationLists(NoticeLists || []),\n };\n }\n default:\n return {};\n }\n};\n","import { ServiceClient } from '@telia-ace/knowledge-serviceclient';\nimport { WidgetRenderState } from '@telia-ace/knowledge-widget-core';\nimport {\n deepClone,\n removeNullAndUndefinedValues,\n shallowCompare,\n} from '@telia-ace/widget-utilities';\nimport { Container, EventManager, Widget } from '@webprovisions/platform';\nimport { formatLegacyData } from './legacy-conversion';\n\nexport type Subscriber = (...args: any[]) => void;\n\nexport enum DataType {\n Guide = 'guide',\n Guides = 'guides',\n GuidesByCategory = 'guides-by-category',\n RowNotifications = 'row-notices',\n NotificationLists = 'notification-lists',\n GuideCategories = 'guide-categories',\n ContactMethodCategories = 'contact-method-categories',\n ContactMethod = 'contact-method',\n ContactMethods = 'contact-methods',\n Tags = 'tags',\n TagsOnGuides = 'tagsonguides',\n}\n\nexport type DataError = {\n status: number;\n message: string;\n};\n\nexport enum ServiceClientQueryType {\n Match = 'match',\n Categories = 'categories',\n Guide = 'guide',\n Contacts = 'contacts',\n ContactMethod = 'contact-method',\n MatchByCategory = 'match-by-category',\n Tags = 'tags',\n TagsOnGuides = 'tagsonguides',\n Notifications = 'notifications',\n}\n\nexport enum FeedbackType {\n Positive = 'Positive',\n Negative = 'Negative',\n}\n\nexport type QueryParameters = {\n guideId?: string | number;\n categories?: string | number | string[] | number[];\n tagId?: string | number;\n connection?: string;\n\n contactMethodCategoryId?: string | number;\n contactMethodId?: string | number;\n\n searchPhrase?: string | number;\n take?: string | number;\n [key: string]: any;\n\n expandCategories?: 'none' | 'children' | 'descendants';\n sorting?: SortingType;\n guideIds?: string[];\n};\n\nexport enum SortingType {\n POPULARITY_DESCENDING = 'popularity-descending',\n ALPHABETIC_ASCENDING = 'alphabetic-ascending',\n ALPHABETIC_DESCENDING = 'alphabetic-descending',\n MODIFIED_ASCENDING = 'modified-ascending',\n MODIFIED_DESCENDING = 'modified-descending',\n PUBLISHED_ASCENDING = 'published-ascending',\n PUBLISHED_DESCENDING = 'published-descending',\n}\n\nexport type Query = {\n params: QueryParameters;\n resolved: boolean;\n loading: boolean;\n error?: DataError;\n data: any;\n resolvers: {\n resolve: (data: any) => void;\n reject: (data: any) => void;\n }[];\n};\n\nexport const determineServiceClientQueryType = (type: DataType): ServiceClientQueryType => {\n switch (type) {\n case DataType.Guides:\n return ServiceClientQueryType.Match;\n case DataType.GuidesByCategory:\n return ServiceClientQueryType.MatchByCategory;\n case DataType.Guide:\n return ServiceClientQueryType.Guide;\n case DataType.GuideCategories:\n return ServiceClientQueryType.Categories;\n case DataType.ContactMethodCategories:\n case DataType.ContactMethods:\n return ServiceClientQueryType.Contacts;\n case DataType.ContactMethod:\n return ServiceClientQueryType.ContactMethod;\n case DataType.Tags:\n return ServiceClientQueryType.Tags;\n case DataType.TagsOnGuides:\n return ServiceClientQueryType.TagsOnGuides;\n case DataType.NotificationLists:\n case DataType.RowNotifications:\n return ServiceClientQueryType.Notifications;\n default:\n throw 'error';\n }\n};\n\nconst widgetIsHidden = async (container: Container) => {\n const { invoke } = container.get('$widget');\n const renderState = await invoke('renderState');\n return renderState === WidgetRenderState.hidden;\n};\n\nexport default class DataClient {\n private queries: Map<ServiceClientQueryType, Query[]> = new Map();\n private lastTake: number = 0;\n public events: EventManager;\n constructor(private container: Container, private matchingClient: ServiceClient) {\n this.events = (<Widget>container.get('$widget')).events;\n\n this.events.subscribe('widget:settings-updated', () => (this.queries = new Map()));\n\n this.events.subscribe('widget:render-state-changed', (event, { next, previous }) => {\n if (previous === WidgetRenderState.hidden && next === WidgetRenderState.open) {\n this.fetchAllUnresolvedQueries();\n }\n });\n }\n\n static getInstance(container: Container): Promise<DataClient> {\n return container.getAsync('dataClient');\n }\n\n private getUnresolvedQueries = () => {\n let unresolvedCount = 0;\n this.queries.forEach((queries, type) => {\n const hasUnresolved = queries.some((query: Query) => !query.resolved);\n if (hasUnresolved) {\n unresolvedCount = +1;\n }\n });\n return unresolvedCount;\n };\n\n public fetch(type: DataType, params: QueryParameters): Promise<any> {\n return new Promise((resolve, reject) => {\n if (params.take) {\n this.lastTake = +(params.take || 0);\n }\n\n removeNullAndUndefinedValues(params);\n const serviceClientQueryType = determineServiceClientQueryType(type);\n const queries = this.queries.get(serviceClientQueryType) || [];\n const query = queries.find((q) => shallowCompare(q.params, params));\n\n if (query) {\n const index = queries.indexOf(query);\n if (query.resolved) {\n this.events.dispatch('data-client:fetched', {\n params,\n type: serviceClientQueryType,\n response: query.data,\n unresolvedQueries: this.getUnresolvedQueries(),\n });\n this.track(query.data, serviceClientQueryType, query.error);\n if (query.data && query.error) {\n reject({ error: query.error });\n } else {\n resolve(query.data);\n }\n } else {\n query.resolvers.push({ resolve, reject });\n }\n queries.splice(index, 1);\n queries.push(query);\n this.queries.set(serviceClientQueryType, queries);\n if (!query.loading && !query.resolved) {\n return this.runQuery(serviceClientQueryType, params);\n }\n } else {\n queries.push({\n params,\n resolved: false,\n loading: true,\n data: {},\n resolvers: [{ resolve, reject }],\n });\n this.queries.set(serviceClientQueryType, queries);\n\n return this.runQuery(serviceClientQueryType, params);\n }\n }).then((res) => deepClone(res));\n }\n\n // query the cached data\n public read(\n type: DataType,\n options: {\n select?: (data: any) => any; // either return all data by the DataType, or use an selector\n }\n ) {\n const { select } = options;\n const serviceClientQueryType = determineServiceClientQueryType(type);\n const queries = this.queries.get(serviceClientQueryType) || [];\n\n const result = queries.reduce<any[]>((acc, query) => {\n if (typeof select === 'function') {\n const match = select(query.data);\n if (match) {\n acc.push(match);\n }\n } else {\n acc.push(query.data);\n }\n return acc;\n }, []);\n return result;\n }\n\n public feedback(id: string, connection: string, feedback: FeedbackType): Promise<any> {\n return this.matchingClient.giveFeedback(id, connection, feedback);\n }\n\n private setLoadingStatus(\n type: ServiceClientQueryType,\n params: QueryParameters,\n loading: boolean\n ) {\n const queries = this.queries.get(type) || [];\n const query = queries.find((q) => shallowCompare(q.params, params));\n\n if (query) {\n query.loading = loading;\n }\n this.queries.set(type, queries);\n }\n\n private async runQuery(type: ServiceClientQueryType, params: QueryParameters) {\n const {\n searchPhrase = '',\n categories = '0',\n contactMethodCategoryId = '0',\n contactMethodId = '0',\n tagId = undefined,\n take = 5,\n connection = '',\n guideId,\n expandCategories = 'descendants',\n currentCategory,\n sorting = SortingType.POPULARITY_DESCENDING,\n guideIds = [],\n } = params;\n\n const trimmedPhrase = searchPhrase.toString().trim();\n if (await widgetIsHidden(this.container)) {\n return Promise.resolve();\n }\n\n switch (type) {\n case ServiceClientQueryType.Match: {\n const formatSortingValues = (sorting: string) => {\n const [type, direction] = sorting.split('-');\n const sortKeysMap = new Map([\n ['popularity', 'popularity'],\n ['alphabetic', 'title'],\n ['modified', 'lastModified'],\n ['published', 'firstPublished'],\n ]);\n\n return {\n type: sortKeysMap.get(type),\n direction: direction,\n };\n };\n\n if (guideIds.length) {\n return this.matchingClient\n .customRequest('guides', 'POST', {\n configuration: { ids: guideIds, take: +take },\n })\n .then((matches) => matches && this.handleResponse(matches, type, params));\n }\n\n return this.matchingClient\n .match(trimmedPhrase, {\n categories:\n categories === '0'\n ? []\n : Array.isArray(categories)\n ? categories\n : [+categories],\n take: +take,\n tags: tagId,\n sorting: formatSortingValues(sorting),\n ids: guideIds,\n })\n .then((matches) => matches && this.handleResponse(matches, type, params));\n }\n case ServiceClientQueryType.MatchByCategory: {\n return this.matchingClient\n .match(trimmedPhrase, {\n groupByCategory: true,\n categories:\n categories === '0'\n ? []\n : Array.isArray(categories)\n ? categories\n : [+categories],\n take: +take,\n tags: tagId,\n })\n .then((matches) => matches && this.handleResponse(matches, type, params));\n }\n case ServiceClientQueryType.Guide: {\n return this.matchingClient\n .getGuide(guideId, { connectionId: connection })\n .then((guide) => {\n if (guide) {\n this.handleResponse(guide, type, params);\n }\n })\n .catch((e) => {\n const error = {\n message: 'Something went wrong.',\n status: e.status || 400,\n };\n if (error.status === 404) {\n error.message = 'The guide could not be found.';\n }\n this.handleResponse({}, type, params, error);\n });\n }\n case ServiceClientQueryType.Categories: {\n return this.matchingClient\n .getCategories({ phrase: trimmedPhrase, expand: expandCategories, tags: tagId })\n .then(\n (categories) => categories && this.handleResponse(categories, type, params)\n );\n }\n case ServiceClientQueryType.Contacts: {\n if (guideId) {\n return this.matchingClient\n .contactMethods(+guideId, { phrase: trimmedPhrase })\n .then((result) => result && this.handleResponse(result, type, params));\n }\n return this.matchingClient\n .contacts(+contactMethodCategoryId, { phrase: trimmedPhrase })\n .then((result) => result && this.handleResponse(result, type, params));\n }\n case ServiceClientQueryType.ContactMethod: {\n return this.matchingClient\n .getContactMethod(+contactMethodId, { guideId, currentCategory })\n .then((result) => result && this.handleResponse(result, type, params));\n }\n case ServiceClientQueryType.Tags: {\n return this.matchingClient\n .customRequest('tags', 'GET', {\n configuration: {\n take: 999999,\n phrase: trimmedPhrase,\n categories:\n categories === '0'\n ? []\n : Array.isArray(categories)\n ? categories\n : [+categories],\n },\n })\n .then((result) => result && this.handleResponse(result, type, params));\n }\n case ServiceClientQueryType.TagsOnGuides: {\n return this.matchingClient\n .customRequest('tagsonguides', 'GET', {\n configuration: {\n take: 999999,\n phrase: trimmedPhrase,\n categories:\n categories === '0'\n ? []\n : Array.isArray(categories)\n ? categories\n : [+categories],\n tags: tagId,\n },\n })\n .then((result) => result && this.handleResponse(result, type, params));\n }\n case ServiceClientQueryType.Notifications: {\n return this.matchingClient\n .customRequest('notices', 'GET', {\n configuration: {\n phrase: trimmedPhrase,\n categories:\n categories === '0'\n ? []\n : Array.isArray(categories)\n ? categories\n : [+categories],\n },\n })\n .then((result) => result && this.handleResponse(result, type, params));\n }\n }\n }\n\n handleResponse(\n data: any = {},\n type: ServiceClientQueryType,\n params: QueryParameters,\n error?: DataError\n ) {\n const queries = this.queries.get(type) || [];\n const existing = queries.find((q) => shallowCompare(q.params, params));\n if (existing) {\n const formatted = error ? error : formatLegacyData(type, data);\n this.track(formatted, type, error);\n existing.resolvers.forEach((r) => {\n if (error) {\n r.reject({ error: formatted });\n } else {\n r.resolve(formatted);\n }\n });\n\n const index = queries.indexOf(existing);\n if (index > -1) {\n queries.splice(index, 1);\n }\n queries.push({ ...existing, error, resolvers: [], data: formatted, resolved: true });\n this.setLoadingStatus(type, params, false);\n this.queries.set(type, queries);\n if (!error) {\n this.events.dispatch('data-client:fetched', {\n type,\n params,\n response: formatted,\n unresolvedQueries: this.getUnresolvedQueries(),\n });\n }\n }\n }\n\n private fetchAllUnresolvedQueries() {\n for (const [queryType, queries] of this.queries) {\n queries\n .filter((query: Query) => !query.resolved)\n .forEach((query) => {\n this.runQuery(queryType, query.params);\n });\n }\n }\n\n private track(data: any = {}, type: ServiceClientQueryType, error?: DataError) {\n const widget = this.container.get('$widget');\n if (widget && !error) {\n widget.events.dispatch('tracking:service-client-response', {\n type,\n data,\n });\n } else if (widget) {\n widget.events.dispatch('tracking:service-client-error', {\n type,\n error,\n });\n }\n }\n\n static create(container: Container): Promise<DataClient> {\n return container\n .getAsync('matchingClient')\n .then((matchingClient) => new DataClient(container, matchingClient));\n }\n}\n","import { WidgetSettings } from '@telia-ace/knowledge-widget-core';\nimport { Container, Widget } from '@webprovisions/platform';\n\nexport const createContactMethodPlatform = (container: Container) => {\n return import('@telia-ace/knowledge-widget-adapters').then(({ ContactMethodPlatform }) => {\n return ContactMethodPlatform.create(container);\n });\n};\n\nexport const createDataClient = (container: Container) => {\n return import('../data').then(({ DataClient }) => {\n return DataClient.create(container);\n });\n};\n\nexport const createServiceClient = (container: Container) => {\n return import('@telia-ace/knowledge-serviceclient').then(({ ServiceClient, ServiceProxy }) => {\n return container.get('settings').then((settings: WidgetSettings) => {\n const { name, events }: Widget = container.get('$widget');\n const {\n data: { projection = '', site = 'current', forceHttps = false },\n } = settings;\n\n const proxy = new ServiceProxy(projection, { credentials: 'same-origin' });\n\n // Replacing '_contact' & '_contact-method' while\n // still using the shadow widget concept\n const client = new ServiceClient(\n proxy,\n {\n funnel: name.replace('_contact-method', '').replace('_contact', ''),\n site: createSiteProvider(site, forceHttps),\n },\n null,\n container\n );\n\n events.subscribe('widget:settings-updated', (event, { data }: WidgetSettings) => {\n if (data && data.projection !== projection) {\n client.proxy.setBaseUrl(data.projection);\n }\n });\n\n return client;\n });\n });\n};\n\ntype SiteLocation = {\n host: string;\n pathname: string;\n};\n\nconst createSiteProvider = (site: 'current' | 'referrer', forceHttps: boolean): (() => string) => {\n return () => {\n const parseLocation = (href: string): SiteLocation => {\n const link = document.createElement('a');\n link.href = href;\n return link;\n };\n\n let location: SiteLocation = window.location;\n if (site === 'referrer' && document.referrer) {\n location = parseLocation(document.referrer);\n }\n return [forceHttps ? 'https:' : '', '//', location.host, location.pathname].join('');\n };\n};\n","import { Widget } from '@telia-ace/widget-types-grid';\nimport { Container } from '@webprovisions/platform';\nimport { createContactMethodPlatform, createDataClient, createServiceClient } from './services';\n\nexport default class ExtendedWidget extends Widget {\n constructor(container: Container) {\n super(container);\n\n this.container.registerAsync('matchingClient', () => createServiceClient(this.container));\n this.container.registerAsync('contactMethods', () =>\n createContactMethodPlatform(this.container)\n );\n this.container.registerAsync('dataClient', () => createDataClient(this.container));\n }\n}\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","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","createServiceClient","ServiceClient","ServiceProxy","name","events","projection","site","forceHttps","proxy","client","createSiteProvider","parseLocation","href","link","location","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.45-experimental.0",
3
+ "version": "1.0.45-experimental.1",
4
4
  "description": "Extended type definition for Grid widget.",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "author": "Telia Company AB",
@@ -21,12 +21,12 @@
21
21
  },
22
22
  "sideEffects": false,
23
23
  "dependencies": {
24
- "@telia-ace/knowledge-serviceclient": "^1.0.23-experimental.0",
25
- "@telia-ace/knowledge-widget-adapters": "^1.0.44-experimental.0",
26
- "@telia-ace/knowledge-widget-core": "^1.0.34-experimental.0",
27
- "@telia-ace/widget-forms": "^1.0.28-experimental.0",
28
- "@telia-ace/widget-types-grid": "^1.0.30-experimental.0",
29
- "@telia-ace/widget-utilities": "^1.0.10-experimental.0",
24
+ "@telia-ace/knowledge-serviceclient": "1.0.23-experimental.1",
25
+ "@telia-ace/knowledge-widget-adapters": "1.0.44-experimental.1",
26
+ "@telia-ace/knowledge-widget-core": "1.0.34-experimental.1",
27
+ "@telia-ace/widget-forms": "^1.0.28-experimental.13",
28
+ "@telia-ace/widget-types-grid": "^1.0.30-experimental.13",
29
+ "@telia-ace/widget-utilities": "^1.0.10-experimental.13",
30
30
  "@webprovisions/platform": "^1.1.2"
31
31
  },
32
32
  "scripts": {
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.58cbb369.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}