@telia-ace/knowledge-widget-types-grid 1.0.43-next.0 → 1.0.43-next.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.
@@ -12,4 +12,4 @@ export {
12
12
  c as determineServiceClientQueryType,
13
13
  l as formatLegacyData
14
14
  };
15
- //# sourceMappingURL=index.16c71d67.js.map
15
+ //# sourceMappingURL=index.d1c8bb33.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d1c8bb33.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 C.MatchByCategory:
111
- case C.Match: {
110
+ case b.MatchByCategory:
111
+ case b.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 C.Categories: {
135
+ case b.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 C.Guide: {
142
+ case b.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, K = U || Object.values(I).find((v) => v === o) || I.Default || null, H = {
164
+ } = t, $ = 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: K,
180
+ perspective: $,
181
181
  translations: Object.keys(P || {}).reduce((v, S) => (v[S] = P[S].toString(), v), {})
182
182
  },
183
183
  related: B(r || []),
@@ -185,13 +185,14 @@ 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: b }) => {
188
+ return (c || []).forEach(({ CanAccess: v, Description: S, ConnectionId: V, Properties: C }) => {
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,
195
196
  type: G.default,
196
197
  parent: {
197
198
  id: e.toString(),
@@ -199,8 +200,8 @@ const N = (i) => {
199
200
  tags: x(a)
200
201
  }
201
202
  };
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) {
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) {
204
205
  case "Guide":
205
206
  M.type = G.guide;
206
207
  break;
@@ -211,7 +212,7 @@ const N = (i) => {
211
212
  H.dialog.push(M);
212
213
  }), H;
213
214
  }
214
- case C.Contacts: {
215
+ case b.Contacts: {
215
216
  const { Children: e, Matches: n, Notices: s, NoticeLists: r } = t;
216
217
  return {
217
218
  contactMethods: (n || []).map((o) => O(o)),
@@ -222,14 +223,14 @@ const N = (i) => {
222
223
  notificationLists: L(r || [])
223
224
  };
224
225
  }
225
- case C.ContactMethod: {
226
+ case b.ContactMethod: {
226
227
  const { ContactMethod: e } = t;
227
228
  return O(e || {});
228
229
  }
229
- case C.Tags:
230
- case C.TagsOnGuides:
230
+ case b.Tags:
231
+ case b.TagsOnGuides:
231
232
  return x(t || []);
232
- case C.Notifications: {
233
+ case b.Notifications: {
233
234
  const { Notices: e, NoticeLists: n } = t;
234
235
  return {
235
236
  topNotifications: y(e || [], "noticeRowTop"),
@@ -242,8 +243,8 @@ const N = (i) => {
242
243
  return {};
243
244
  }
244
245
  };
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) => {
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) => {
247
248
  switch (i) {
248
249
  case "guides":
249
250
  return "match";
@@ -272,7 +273,7 @@ const W = (i) => {
272
273
  const { invoke: t } = i.get("$widget");
273
274
  return (yield t("renderState")) === D.hidden;
274
275
  });
275
- class $ {
276
+ class W {
276
277
  constructor(t, e) {
277
278
  A(this, "queries", /* @__PURE__ */ new Map());
278
279
  A(this, "lastTake", 0);
@@ -293,7 +294,7 @@ class $ {
293
294
  fetch(t, e) {
294
295
  return new Promise((n, s) => {
295
296
  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));
297
+ const r = K(t), c = this.queries.get(r) || [], o = c.find((d) => q(d.params, e));
297
298
  if (o) {
298
299
  const d = c.indexOf(o);
299
300
  if (o.resolved ? (this.events.dispatch("data-client:fetched", {
@@ -314,7 +315,7 @@ class $ {
314
315
  }).then((n) => ie(n));
315
316
  }
316
317
  read(t, e) {
317
- const { select: n } = e, s = W(t);
318
+ const { select: n } = e, s = K(t);
318
319
  return (this.queries.get(s) || []).reduce((o, d) => {
319
320
  if (typeof n == "function") {
320
321
  const u = n(d.data);
@@ -458,10 +459,10 @@ class $ {
458
459
  });
459
460
  }
460
461
  static create(t) {
461
- return t.getAsync("matchingClient").then((e) => new $(t, e));
462
+ return t.getAsync("matchingClient").then((e) => new W(t, e));
462
463
  }
463
464
  }
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) => {
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) => {
465
466
  const { name: s, events: r } = i.get("$widget"), {
466
467
  data: { projection: c = "", site: o = "current", forceHttps: d = !1 }
467
468
  } = n, u = new e(c, { credentials: "same-origin" }), l = new t(
@@ -494,15 +495,15 @@ class Ce extends ee {
494
495
  }
495
496
  export {
496
497
  ve as Component,
497
- $ as DataClient,
498
+ W as DataClient,
498
499
  ne as DataType,
499
500
  Ne as DetachedComponent,
500
501
  oe as FeedbackType,
501
502
  Ce as GridWidget,
502
503
  Me as NotFound,
503
- C as ServiceClientQueryType,
504
+ b as ServiceClientQueryType,
504
505
  re as SortingType,
505
- W as determineServiceClientQueryType,
506
+ K as determineServiceClientQueryType,
506
507
  se as formatLegacyData,
507
508
  we as genericComponentStyling
508
509
  };
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 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 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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@telia-ace/knowledge-widget-types-grid",
3
- "version": "1.0.43-next.0",
3
+ "version": "1.0.43-next.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,9 +21,9 @@
21
21
  },
22
22
  "sideEffects": false,
23
23
  "dependencies": {
24
- "@telia-ace/knowledge-serviceclient": "^1.0.21-next.0",
25
- "@telia-ace/knowledge-widget-adapters": "^1.0.42-next.0",
26
- "@telia-ace/knowledge-widget-core": "^1.0.32-next.0",
24
+ "@telia-ace/knowledge-serviceclient": "^1.0.21-next.1",
25
+ "@telia-ace/knowledge-widget-adapters": "^1.0.42-next.1",
26
+ "@telia-ace/knowledge-widget-core": "^1.0.32-next.1",
27
27
  "@telia-ace/widget-forms": "^1.0.27-next.0",
28
28
  "@telia-ace/widget-types-grid": "^1.0.29-next.0",
29
29
  "@telia-ace/widget-utilities": "^1.0.9-next.0",
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.16c71d67.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}