@telia-ace/knowledge-widget-types-grid 1.0.33 → 1.0.34

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.
@@ -12,4 +12,4 @@ export {
12
12
  c as determineServiceClientQueryType,
13
13
  l as formatLegacyData
14
14
  };
15
- //# sourceMappingURL=index.d1c8bb33.js.map
15
+ //# sourceMappingURL=index.16c71d67.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.16c71d67.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
package/dist/index.js CHANGED
@@ -107,8 +107,8 @@ const N = (i) => {
107
107
  modified: r
108
108
  })), se = (i, t) => {
109
109
  switch (i) {
110
- case b.MatchByCategory:
111
- case b.Match: {
110
+ case C.MatchByCategory:
111
+ case C.Match: {
112
112
  const e = {
113
113
  guides: [],
114
114
  matches: 0,
@@ -132,14 +132,14 @@ const N = (i) => {
132
132
  matches: g
133
133
  })), e.tags = x(o), e.notificationLists = L(c || []), e.topNotifications = y(r || [], "noticeRowTop"), e.middleNotifications = y(r || [], "noticeRowMiddle"), e.bottomNotifications = y(r || [], "footerNotice"), e;
134
134
  }
135
- case b.Categories: {
135
+ case C.Categories: {
136
136
  const { Children: e, GuidesCountTotal: n } = t;
137
137
  return {
138
138
  categories: T(e || []),
139
139
  matches: n
140
140
  };
141
141
  }
142
- case b.Guide: {
142
+ case C.Guide: {
143
143
  const {
144
144
  Id: e,
145
145
  Title: n,
@@ -161,7 +161,7 @@ const N = (i) => {
161
161
  Perspectives: I,
162
162
  PerspectiveKey: U,
163
163
  Translations: P
164
- } = t, $ = U || Object.values(I).find((v) => v === o) || I.Default || null, H = {
164
+ } = t, K = U || Object.values(I).find((v) => v === o) || I.Default || null, H = {
165
165
  guide: {
166
166
  id: e.toString(),
167
167
  title: n,
@@ -177,7 +177,7 @@ const N = (i) => {
177
177
  seoMetaDescription: m,
178
178
  seoAllowIndex: k,
179
179
  perspectives: I,
180
- perspective: $,
180
+ perspective: K,
181
181
  translations: Object.keys(P || {}).reduce((v, S) => (v[S] = P[S].toString(), v), {})
182
182
  },
183
183
  related: B(r || []),
@@ -185,14 +185,13 @@ const N = (i) => {
185
185
  contactMethods: (d || []).map((v) => O(v)),
186
186
  tags: x(a)
187
187
  };
188
- return (c || []).forEach(({ CanAccess: v, Description: S, ConnectionId: V, Properties: C }) => {
188
+ return (c || []).forEach(({ CanAccess: v, Description: S, ConnectionId: V, Properties: b }) => {
189
189
  if (!v)
190
190
  return;
191
191
  const M = {
192
192
  id: e.toString(),
193
193
  title: S,
194
194
  connection: V,
195
- connectionKey: C.ConnectionKey,
196
195
  type: G.default,
197
196
  parent: {
198
197
  id: e.toString(),
@@ -200,8 +199,8 @@ const N = (i) => {
200
199
  tags: x(a)
201
200
  }
202
201
  };
203
- if (C.Type === "Guide" || C.Type === "Link")
204
- switch (C.Id && (M.id = C.Id.toString()), C.Uri && (M.href = C.Uri), C.Target && (M.target = C.Target), C.Type) {
202
+ 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) {
205
204
  case "Guide":
206
205
  M.type = G.guide;
207
206
  break;
@@ -212,7 +211,7 @@ const N = (i) => {
212
211
  H.dialog.push(M);
213
212
  }), H;
214
213
  }
215
- case b.Contacts: {
214
+ case C.Contacts: {
216
215
  const { Children: e, Matches: n, Notices: s, NoticeLists: r } = t;
217
216
  return {
218
217
  contactMethods: (n || []).map((o) => O(o)),
@@ -223,14 +222,14 @@ const N = (i) => {
223
222
  notificationLists: L(r || [])
224
223
  };
225
224
  }
226
- case b.ContactMethod: {
225
+ case C.ContactMethod: {
227
226
  const { ContactMethod: e } = t;
228
227
  return O(e || {});
229
228
  }
230
- case b.Tags:
231
- case b.TagsOnGuides:
229
+ case C.Tags:
230
+ case C.TagsOnGuides:
232
231
  return x(t || []);
233
- case b.Notifications: {
232
+ case C.Notifications: {
234
233
  const { Notices: e, NoticeLists: n } = t;
235
234
  return {
236
235
  topNotifications: y(e || [], "noticeRowTop"),
@@ -243,8 +242,8 @@ const N = (i) => {
243
242
  return {};
244
243
  }
245
244
  };
246
- 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 || {}), b = /* @__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))(b || {}), 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 || {});
247
- const K = (i) => {
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) => {
248
247
  switch (i) {
249
248
  case "guides":
250
249
  return "match";
@@ -273,7 +272,7 @@ const K = (i) => {
273
272
  const { invoke: t } = i.get("$widget");
274
273
  return (yield t("renderState")) === D.hidden;
275
274
  });
276
- class W {
275
+ class $ {
277
276
  constructor(t, e) {
278
277
  A(this, "queries", /* @__PURE__ */ new Map());
279
278
  A(this, "lastTake", 0);
@@ -294,7 +293,7 @@ class W {
294
293
  fetch(t, e) {
295
294
  return new Promise((n, s) => {
296
295
  e.take && (this.lastTake = +(e.take || 0)), te(e);
297
- const r = K(t), c = this.queries.get(r) || [], o = c.find((d) => q(d.params, e));
296
+ const r = W(t), c = this.queries.get(r) || [], o = c.find((d) => q(d.params, e));
298
297
  if (o) {
299
298
  const d = c.indexOf(o);
300
299
  if (o.resolved ? (this.events.dispatch("data-client:fetched", {
@@ -315,7 +314,7 @@ class W {
315
314
  }).then((n) => ie(n));
316
315
  }
317
316
  read(t, e) {
318
- const { select: n } = e, s = K(t);
317
+ const { select: n } = e, s = W(t);
319
318
  return (this.queries.get(s) || []).reduce((o, d) => {
320
319
  if (typeof n == "function") {
321
320
  const u = n(d.data);
@@ -459,10 +458,10 @@ class W {
459
458
  });
460
459
  }
461
460
  static create(t) {
462
- return t.getAsync("matchingClient").then((e) => new W(t, e));
461
+ return t.getAsync("matchingClient").then((e) => new $(t, e));
463
462
  }
464
463
  }
465
- const ce = (i) => import("@telia-ace/knowledge-widget-adapters").then(({ ContactMethodPlatform: t }) => t.create(i)), de = (i) => import("./index.d1c8bb33.js").then(({ DataClient: t }) => t.create(i)), ue = (i) => import("@telia-ace/knowledge-serviceclient").then(({ ServiceClient: t, ServiceProxy: e }) => i.get("settings").then((n) => {
464
+ const ce = (i) => import("@telia-ace/knowledge-widget-adapters").then(({ ContactMethodPlatform: t }) => t.create(i)), de = (i) => import("./index.16c71d67.js").then(({ DataClient: t }) => t.create(i)), ue = (i) => import("@telia-ace/knowledge-serviceclient").then(({ ServiceClient: t, ServiceProxy: e }) => i.get("settings").then((n) => {
466
465
  const { name: s, events: r } = i.get("$widget"), {
467
466
  data: { projection: c = "", site: o = "current", forceHttps: d = !1 }
468
467
  } = n, u = new e(c, { credentials: "same-origin" }), l = new t(
@@ -495,15 +494,15 @@ class Ce extends ee {
495
494
  }
496
495
  export {
497
496
  ve as Component,
498
- W as DataClient,
497
+ $ as DataClient,
499
498
  ne as DataType,
500
499
  Ne as DetachedComponent,
501
500
  oe as FeedbackType,
502
501
  Ce as GridWidget,
503
502
  Me as NotFound,
504
- b as ServiceClientQueryType,
503
+ C as ServiceClientQueryType,
505
504
  re as SortingType,
506
- K as determineServiceClientQueryType,
505
+ W as determineServiceClientQueryType,
507
506
  se as formatLegacyData,
508
507
  we as genericComponentStyling
509
508
  };
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 connectionKey: (Properties as any).ConnectionKey,\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","__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';\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 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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@telia-ace/knowledge-widget-types-grid",
3
- "version": "1.0.33",
3
+ "version": "1.0.34",
4
4
  "description": "Extended type definition for Grid widget.",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "author": "Telia Company AB",
@@ -21,9 +21,9 @@
21
21
  },
22
22
  "sideEffects": false,
23
23
  "dependencies": {
24
- "@telia-ace/knowledge-serviceclient": "^1.0.11",
25
- "@telia-ace/knowledge-widget-adapters": "^1.0.32",
26
- "@telia-ace/knowledge-widget-core": "^1.0.22",
24
+ "@telia-ace/knowledge-serviceclient": "^1.0.12",
25
+ "@telia-ace/knowledge-widget-adapters": "^1.0.33",
26
+ "@telia-ace/knowledge-widget-core": "^1.0.23",
27
27
  "@telia-ace/widget-forms": "^1.0.24",
28
28
  "@telia-ace/widget-types-grid": "^1.0.26",
29
29
  "@telia-ace/widget-utilities": "^1.0.6",
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d1c8bb33.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}