@telia-ace/knowledge-widget-types-grid 1.0.30 → 1.0.31-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.txt +5 -5
- package/README.md +4 -4
- package/dist/data/data-client.d.ts +91 -91
- package/dist/data/index.d.ts +3 -3
- package/dist/data/legacy-conversion.d.ts +75 -75
- package/dist/index.d.ts +3 -3
- package/dist/index.js.map +1 -1
- package/dist/widget/extended-widget.d.ts +5 -5
- package/dist/widget/index.d.ts +1 -1
- package/dist/widget/services.d.ts +3 -3
- package/package.json +8 -8
package/LICENSE.txt
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Copyright © 2021, Telia Company AB. All rights reserved.
|
|
2
|
-
|
|
3
|
-
THIS PACKAGE AND CONTAINING SOFTWARE IS PART OF
|
|
4
|
-
THE HUMANY SERVICE. BY USING THIS SOFTWARE YOU
|
|
5
|
-
AGREE TO THE FOLLOWING TERMS AND CONDITIONS:
|
|
1
|
+
Copyright © 2021, Telia Company AB. All rights reserved.
|
|
2
|
+
|
|
3
|
+
THIS PACKAGE AND CONTAINING SOFTWARE IS PART OF
|
|
4
|
+
THE HUMANY SERVICE. BY USING THIS SOFTWARE YOU
|
|
5
|
+
AGREE TO THE FOLLOWING TERMS AND CONDITIONS:
|
|
6
6
|
http://www.humany.com/legal
|
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# `@telia-ace/knowledge-widget-types-grid`
|
|
2
|
-
|
|
3
|
-
Extended type definition for ACE One Widget (exported as `GridWidget`).
|
|
4
|
-
Adds DataClient and ContactMethodPlatform to the grid widget type.
|
|
1
|
+
# `@telia-ace/knowledge-widget-types-grid`
|
|
2
|
+
|
|
3
|
+
Extended type definition for ACE One Widget (exported as `GridWidget`).
|
|
4
|
+
Adds DataClient and ContactMethodPlatform to the grid widget type.
|
|
@@ -1,91 +1,91 @@
|
|
|
1
|
-
import { ServiceClient } from '@telia-ace/knowledge-serviceclient';
|
|
2
|
-
import { Container, EventManager } from '@webprovisions/platform';
|
|
3
|
-
export declare type Subscriber = (...args: any[]) => void;
|
|
4
|
-
export declare enum DataType {
|
|
5
|
-
Guide = "guide",
|
|
6
|
-
Guides = "guides",
|
|
7
|
-
GuidesByCategory = "guides-by-category",
|
|
8
|
-
RowNotifications = "row-notices",
|
|
9
|
-
NotificationLists = "notification-lists",
|
|
10
|
-
GuideCategories = "guide-categories",
|
|
11
|
-
ContactMethodCategories = "contact-method-categories",
|
|
12
|
-
ContactMethod = "contact-method",
|
|
13
|
-
ContactMethods = "contact-methods",
|
|
14
|
-
Tags = "tags",
|
|
15
|
-
TagsOnGuides = "tagsonguides"
|
|
16
|
-
}
|
|
17
|
-
export declare type DataError = {
|
|
18
|
-
status: number;
|
|
19
|
-
message: string;
|
|
20
|
-
};
|
|
21
|
-
export declare enum ServiceClientQueryType {
|
|
22
|
-
Match = "match",
|
|
23
|
-
Categories = "categories",
|
|
24
|
-
Guide = "guide",
|
|
25
|
-
Contacts = "contacts",
|
|
26
|
-
ContactMethod = "contact-method",
|
|
27
|
-
MatchByCategory = "match-by-category",
|
|
28
|
-
Tags = "tags",
|
|
29
|
-
TagsOnGuides = "tagsonguides",
|
|
30
|
-
Notifications = "notifications"
|
|
31
|
-
}
|
|
32
|
-
export declare enum FeedbackType {
|
|
33
|
-
Positive = "Positive",
|
|
34
|
-
Negative = "Negative"
|
|
35
|
-
}
|
|
36
|
-
export declare type QueryParameters = {
|
|
37
|
-
guideId?: string | number;
|
|
38
|
-
categories?: string | number | string[] | number[];
|
|
39
|
-
tagId?: string | number;
|
|
40
|
-
connection?: string;
|
|
41
|
-
contactMethodCategoryId?: string | number;
|
|
42
|
-
contactMethodId?: string | number;
|
|
43
|
-
searchPhrase?: string | number;
|
|
44
|
-
take?: string | number;
|
|
45
|
-
[key: string]: any;
|
|
46
|
-
expandCategories?: 'none' | 'children' | 'descendants';
|
|
47
|
-
sorting?: SortingType;
|
|
48
|
-
guideIds?: string[];
|
|
49
|
-
};
|
|
50
|
-
export declare enum SortingType {
|
|
51
|
-
POPULARITY_DESCENDING = "popularity-descending",
|
|
52
|
-
ALPHABETIC_ASCENDING = "alphabetic-ascending",
|
|
53
|
-
ALPHABETIC_DESCENDING = "alphabetic-descending",
|
|
54
|
-
MODIFIED_ASCENDING = "modified-ascending",
|
|
55
|
-
MODIFIED_DESCENDING = "modified-descending",
|
|
56
|
-
PUBLISHED_ASCENDING = "published-ascending",
|
|
57
|
-
PUBLISHED_DESCENDING = "published-descending"
|
|
58
|
-
}
|
|
59
|
-
export declare type Query = {
|
|
60
|
-
params: QueryParameters;
|
|
61
|
-
resolved: boolean;
|
|
62
|
-
loading: boolean;
|
|
63
|
-
error?: DataError;
|
|
64
|
-
data: any;
|
|
65
|
-
resolvers: {
|
|
66
|
-
resolve: (data: any) => void;
|
|
67
|
-
reject: (data: any) => void;
|
|
68
|
-
}[];
|
|
69
|
-
};
|
|
70
|
-
export declare const determineServiceClientQueryType: (type: DataType) => ServiceClientQueryType;
|
|
71
|
-
export default class DataClient {
|
|
72
|
-
private container;
|
|
73
|
-
private matchingClient;
|
|
74
|
-
private queries;
|
|
75
|
-
private lastTake;
|
|
76
|
-
events: EventManager;
|
|
77
|
-
constructor(container: Container, matchingClient: ServiceClient);
|
|
78
|
-
static getInstance(container: Container): Promise<DataClient>;
|
|
79
|
-
private getUnresolvedQueries;
|
|
80
|
-
fetch(type: DataType, params: QueryParameters): Promise<any>;
|
|
81
|
-
read(type: DataType, options: {
|
|
82
|
-
select?: (data: any) => any;
|
|
83
|
-
}): any[];
|
|
84
|
-
feedback(id: string, connection: string, feedback: FeedbackType): Promise<any>;
|
|
85
|
-
private setLoadingStatus;
|
|
86
|
-
private runQuery;
|
|
87
|
-
handleResponse(data: any, type: ServiceClientQueryType, params: QueryParameters, error?: DataError): void;
|
|
88
|
-
private fetchAllUnresolvedQueries;
|
|
89
|
-
private track;
|
|
90
|
-
static create(container: Container): Promise<DataClient>;
|
|
91
|
-
}
|
|
1
|
+
import { ServiceClient } from '@telia-ace/knowledge-serviceclient';
|
|
2
|
+
import { Container, EventManager } from '@webprovisions/platform';
|
|
3
|
+
export declare type Subscriber = (...args: any[]) => void;
|
|
4
|
+
export declare enum DataType {
|
|
5
|
+
Guide = "guide",
|
|
6
|
+
Guides = "guides",
|
|
7
|
+
GuidesByCategory = "guides-by-category",
|
|
8
|
+
RowNotifications = "row-notices",
|
|
9
|
+
NotificationLists = "notification-lists",
|
|
10
|
+
GuideCategories = "guide-categories",
|
|
11
|
+
ContactMethodCategories = "contact-method-categories",
|
|
12
|
+
ContactMethod = "contact-method",
|
|
13
|
+
ContactMethods = "contact-methods",
|
|
14
|
+
Tags = "tags",
|
|
15
|
+
TagsOnGuides = "tagsonguides"
|
|
16
|
+
}
|
|
17
|
+
export declare type DataError = {
|
|
18
|
+
status: number;
|
|
19
|
+
message: string;
|
|
20
|
+
};
|
|
21
|
+
export declare enum ServiceClientQueryType {
|
|
22
|
+
Match = "match",
|
|
23
|
+
Categories = "categories",
|
|
24
|
+
Guide = "guide",
|
|
25
|
+
Contacts = "contacts",
|
|
26
|
+
ContactMethod = "contact-method",
|
|
27
|
+
MatchByCategory = "match-by-category",
|
|
28
|
+
Tags = "tags",
|
|
29
|
+
TagsOnGuides = "tagsonguides",
|
|
30
|
+
Notifications = "notifications"
|
|
31
|
+
}
|
|
32
|
+
export declare enum FeedbackType {
|
|
33
|
+
Positive = "Positive",
|
|
34
|
+
Negative = "Negative"
|
|
35
|
+
}
|
|
36
|
+
export declare type QueryParameters = {
|
|
37
|
+
guideId?: string | number;
|
|
38
|
+
categories?: string | number | string[] | number[];
|
|
39
|
+
tagId?: string | number;
|
|
40
|
+
connection?: string;
|
|
41
|
+
contactMethodCategoryId?: string | number;
|
|
42
|
+
contactMethodId?: string | number;
|
|
43
|
+
searchPhrase?: string | number;
|
|
44
|
+
take?: string | number;
|
|
45
|
+
[key: string]: any;
|
|
46
|
+
expandCategories?: 'none' | 'children' | 'descendants';
|
|
47
|
+
sorting?: SortingType;
|
|
48
|
+
guideIds?: string[];
|
|
49
|
+
};
|
|
50
|
+
export declare enum SortingType {
|
|
51
|
+
POPULARITY_DESCENDING = "popularity-descending",
|
|
52
|
+
ALPHABETIC_ASCENDING = "alphabetic-ascending",
|
|
53
|
+
ALPHABETIC_DESCENDING = "alphabetic-descending",
|
|
54
|
+
MODIFIED_ASCENDING = "modified-ascending",
|
|
55
|
+
MODIFIED_DESCENDING = "modified-descending",
|
|
56
|
+
PUBLISHED_ASCENDING = "published-ascending",
|
|
57
|
+
PUBLISHED_DESCENDING = "published-descending"
|
|
58
|
+
}
|
|
59
|
+
export declare type Query = {
|
|
60
|
+
params: QueryParameters;
|
|
61
|
+
resolved: boolean;
|
|
62
|
+
loading: boolean;
|
|
63
|
+
error?: DataError;
|
|
64
|
+
data: any;
|
|
65
|
+
resolvers: {
|
|
66
|
+
resolve: (data: any) => void;
|
|
67
|
+
reject: (data: any) => void;
|
|
68
|
+
}[];
|
|
69
|
+
};
|
|
70
|
+
export declare const determineServiceClientQueryType: (type: DataType) => ServiceClientQueryType;
|
|
71
|
+
export default class DataClient {
|
|
72
|
+
private container;
|
|
73
|
+
private matchingClient;
|
|
74
|
+
private queries;
|
|
75
|
+
private lastTake;
|
|
76
|
+
events: EventManager;
|
|
77
|
+
constructor(container: Container, matchingClient: ServiceClient);
|
|
78
|
+
static getInstance(container: Container): Promise<DataClient>;
|
|
79
|
+
private getUnresolvedQueries;
|
|
80
|
+
fetch(type: DataType, params: QueryParameters): Promise<any>;
|
|
81
|
+
read(type: DataType, options: {
|
|
82
|
+
select?: (data: any) => any;
|
|
83
|
+
}): any[];
|
|
84
|
+
feedback(id: string, connection: string, feedback: FeedbackType): Promise<any>;
|
|
85
|
+
private setLoadingStatus;
|
|
86
|
+
private runQuery;
|
|
87
|
+
handleResponse(data: any, type: ServiceClientQueryType, params: QueryParameters, error?: DataError): void;
|
|
88
|
+
private fetchAllUnresolvedQueries;
|
|
89
|
+
private track;
|
|
90
|
+
static create(container: Container): Promise<DataClient>;
|
|
91
|
+
}
|
package/dist/data/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from './data-client';
|
|
2
|
-
export { default as DataClient } from './data-client';
|
|
3
|
-
export * from './legacy-conversion';
|
|
1
|
+
export * from './data-client';
|
|
2
|
+
export { default as DataClient } from './data-client';
|
|
3
|
+
export * from './legacy-conversion';
|
|
@@ -1,75 +1,75 @@
|
|
|
1
|
-
import { ContactMethodType as ContactMethod } from '@telia-ace/knowledge-widget-adapters';
|
|
2
|
-
import { Category, DialogItem, Guide, Notification, NotificationList, Tag } from '@telia-ace/knowledge-widget-core';
|
|
3
|
-
import { DataError, ServiceClientQueryType } from './data-client';
|
|
4
|
-
export declare type MatchResult = {
|
|
5
|
-
guides: Guide[];
|
|
6
|
-
matches: number;
|
|
7
|
-
topNotifications: Notification[];
|
|
8
|
-
middleNotifications: Notification[];
|
|
9
|
-
bottomNotifications: Notification[];
|
|
10
|
-
notificationLists: NotificationList[];
|
|
11
|
-
tags: Tag[];
|
|
12
|
-
byCategory: {
|
|
13
|
-
id: string;
|
|
14
|
-
guides: Guide[];
|
|
15
|
-
matches: number;
|
|
16
|
-
}[];
|
|
17
|
-
};
|
|
18
|
-
export declare type TagsResult = Tag[];
|
|
19
|
-
export declare type CategoriesResult = {
|
|
20
|
-
categories: Category[];
|
|
21
|
-
matches: number;
|
|
22
|
-
};
|
|
23
|
-
export declare type NotificationResults = Pick<MatchResult, 'topNotifications' | 'middleNotifications' | 'bottomNotifications' | 'notificationLists'>;
|
|
24
|
-
export declare type GuideResult = {
|
|
25
|
-
guide: {
|
|
26
|
-
id: string;
|
|
27
|
-
title: string;
|
|
28
|
-
body: string;
|
|
29
|
-
modified: string;
|
|
30
|
-
modifiedBy: string | null;
|
|
31
|
-
publishedBy: string | null;
|
|
32
|
-
published: string;
|
|
33
|
-
connection: string;
|
|
34
|
-
categories: number[];
|
|
35
|
-
hasHandover: boolean;
|
|
36
|
-
allowFeedback: boolean;
|
|
37
|
-
seoMetaDescription: string | null;
|
|
38
|
-
seoAllowIndex: boolean | null;
|
|
39
|
-
perspective: string | null;
|
|
40
|
-
perspectives: {
|
|
41
|
-
[key: string]: string;
|
|
42
|
-
};
|
|
43
|
-
translations?: {
|
|
44
|
-
[key: string]: string;
|
|
45
|
-
};
|
|
46
|
-
};
|
|
47
|
-
related: Guide[];
|
|
48
|
-
dialog: DialogItem[];
|
|
49
|
-
contactMethods: ContactMethod[];
|
|
50
|
-
tags: Tag[];
|
|
51
|
-
error?: DataError;
|
|
52
|
-
};
|
|
53
|
-
export declare type ContactsResult = {
|
|
54
|
-
categories: Category[];
|
|
55
|
-
contactMethods: ContactMethod[];
|
|
56
|
-
topNotifications: Notification[];
|
|
57
|
-
middleNotifications: Notification[];
|
|
58
|
-
bottomNotifications: Notification[];
|
|
59
|
-
notificationLists: NotificationList[];
|
|
60
|
-
};
|
|
61
|
-
export declare type SubmissionResult = {
|
|
62
|
-
contactMethod?: ContactMethod;
|
|
63
|
-
valid: boolean;
|
|
64
|
-
};
|
|
65
|
-
export declare const formatLegacyData: (type: ServiceClientQueryType, data: any) => Tag[] | MatchResult | CategoriesResult | ContactMethod | GuideResult | ContactsResult | {
|
|
66
|
-
topNotifications: Notification[];
|
|
67
|
-
middleNotifications: Notification[];
|
|
68
|
-
bottomNotifications: Notification[];
|
|
69
|
-
notificationLists: NotificationList[];
|
|
70
|
-
} | {
|
|
71
|
-
topNotifications?: undefined;
|
|
72
|
-
middleNotifications?: undefined;
|
|
73
|
-
bottomNotifications?: undefined;
|
|
74
|
-
notificationLists?: undefined;
|
|
75
|
-
};
|
|
1
|
+
import { ContactMethodType as ContactMethod } from '@telia-ace/knowledge-widget-adapters';
|
|
2
|
+
import { Category, DialogItem, Guide, Notification, NotificationList, Tag } from '@telia-ace/knowledge-widget-core';
|
|
3
|
+
import { DataError, ServiceClientQueryType } from './data-client';
|
|
4
|
+
export declare type MatchResult = {
|
|
5
|
+
guides: Guide[];
|
|
6
|
+
matches: number;
|
|
7
|
+
topNotifications: Notification[];
|
|
8
|
+
middleNotifications: Notification[];
|
|
9
|
+
bottomNotifications: Notification[];
|
|
10
|
+
notificationLists: NotificationList[];
|
|
11
|
+
tags: Tag[];
|
|
12
|
+
byCategory: {
|
|
13
|
+
id: string;
|
|
14
|
+
guides: Guide[];
|
|
15
|
+
matches: number;
|
|
16
|
+
}[];
|
|
17
|
+
};
|
|
18
|
+
export declare type TagsResult = Tag[];
|
|
19
|
+
export declare type CategoriesResult = {
|
|
20
|
+
categories: Category[];
|
|
21
|
+
matches: number;
|
|
22
|
+
};
|
|
23
|
+
export declare type NotificationResults = Pick<MatchResult, 'topNotifications' | 'middleNotifications' | 'bottomNotifications' | 'notificationLists'>;
|
|
24
|
+
export declare type GuideResult = {
|
|
25
|
+
guide: {
|
|
26
|
+
id: string;
|
|
27
|
+
title: string;
|
|
28
|
+
body: string;
|
|
29
|
+
modified: string;
|
|
30
|
+
modifiedBy: string | null;
|
|
31
|
+
publishedBy: string | null;
|
|
32
|
+
published: string;
|
|
33
|
+
connection: string;
|
|
34
|
+
categories: number[];
|
|
35
|
+
hasHandover: boolean;
|
|
36
|
+
allowFeedback: boolean;
|
|
37
|
+
seoMetaDescription: string | null;
|
|
38
|
+
seoAllowIndex: boolean | null;
|
|
39
|
+
perspective: string | null;
|
|
40
|
+
perspectives: {
|
|
41
|
+
[key: string]: string;
|
|
42
|
+
};
|
|
43
|
+
translations?: {
|
|
44
|
+
[key: string]: string;
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
related: Guide[];
|
|
48
|
+
dialog: DialogItem[];
|
|
49
|
+
contactMethods: ContactMethod[];
|
|
50
|
+
tags: Tag[];
|
|
51
|
+
error?: DataError;
|
|
52
|
+
};
|
|
53
|
+
export declare type ContactsResult = {
|
|
54
|
+
categories: Category[];
|
|
55
|
+
contactMethods: ContactMethod[];
|
|
56
|
+
topNotifications: Notification[];
|
|
57
|
+
middleNotifications: Notification[];
|
|
58
|
+
bottomNotifications: Notification[];
|
|
59
|
+
notificationLists: NotificationList[];
|
|
60
|
+
};
|
|
61
|
+
export declare type SubmissionResult = {
|
|
62
|
+
contactMethod?: ContactMethod;
|
|
63
|
+
valid: boolean;
|
|
64
|
+
};
|
|
65
|
+
export declare const formatLegacyData: (type: ServiceClientQueryType, data: any) => Tag[] | MatchResult | CategoriesResult | ContactMethod | GuideResult | ContactsResult | {
|
|
66
|
+
topNotifications: Notification[];
|
|
67
|
+
middleNotifications: Notification[];
|
|
68
|
+
bottomNotifications: Notification[];
|
|
69
|
+
notificationLists: NotificationList[];
|
|
70
|
+
} | {
|
|
71
|
+
topNotifications?: undefined;
|
|
72
|
+
middleNotifications?: undefined;
|
|
73
|
+
bottomNotifications?: undefined;
|
|
74
|
+
notificationLists?: undefined;
|
|
75
|
+
};
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { Component, DetachedComponent, genericComponentStyling, NotFound, } from '@telia-ace/widget-types-grid';
|
|
2
|
-
export * from './data';
|
|
3
|
-
export { GridWidget } from './widget';
|
|
1
|
+
export { Component, DetachedComponent, genericComponentStyling, NotFound, } from '@telia-ace/widget-types-grid';
|
|
2
|
+
export * from './data';
|
|
3
|
+
export { GridWidget } from './widget';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/data/legacy-conversion.ts","../src/data/data-client.ts","../src/widget/services.ts","../src/widget/extended-widget.ts"],"sourcesContent":["import {\r\n CategoryApiResponse,\r\n ContactApiResponse,\r\n ContactCategoriesApiResponse,\r\n ContactMethodApiResponse,\r\n GuideApiResponse,\r\n GuideCategoriesApiResponse,\r\n GuideMatchApiResponse,\r\n GuideViewApiResponse,\r\n NoticeApiResponse,\r\n NoticeListApiResponse,\r\n TagListApiResponse,\r\n ValidationApiResult,\r\n} from '@telia-ace/knowledge-serviceclient';\r\nimport { ContactMethodType as ContactMethod } from '@telia-ace/knowledge-widget-adapters';\r\nimport {\r\n Category,\r\n DialogItem,\r\n DialogItemType,\r\n Guide,\r\n Notification,\r\n NotificationList,\r\n Symbol,\r\n Tag,\r\n} from '@telia-ace/knowledge-widget-core';\r\nimport { FormBuilder } from '@telia-ace/widget-forms';\r\nimport { DataError, ServiceClientQueryType } from './data-client';\r\n\r\nexport type MatchResult = {\r\n guides: Guide[];\r\n matches: number;\r\n topNotifications: Notification[];\r\n middleNotifications: Notification[];\r\n bottomNotifications: Notification[];\r\n notificationLists: NotificationList[];\r\n tags: Tag[];\r\n byCategory: { id: string; guides: Guide[]; matches: number }[];\r\n};\r\n\r\nexport type TagsResult = Tag[];\r\n\r\nexport type CategoriesResult = {\r\n categories: Category[];\r\n matches: number;\r\n};\r\n\r\nexport type NotificationResults = Pick<\r\n MatchResult,\r\n 'topNotifications' | 'middleNotifications' | 'bottomNotifications' | 'notificationLists'\r\n>;\r\n\r\nexport type GuideResult = {\r\n guide: {\r\n id: string;\r\n title: string;\r\n body: string;\r\n modified: string;\r\n modifiedBy: string | null;\r\n publishedBy: string | null;\r\n published: string;\r\n connection: string;\r\n categories: number[];\r\n hasHandover: boolean;\r\n allowFeedback: boolean;\r\n seoMetaDescription: string | null;\r\n seoAllowIndex: boolean | null;\r\n perspective: string | null;\r\n perspectives: { [key: string]: string };\r\n translations?: { [key: string]: string };\r\n };\r\n related: Guide[];\r\n dialog: DialogItem[];\r\n contactMethods: ContactMethod[];\r\n tags: Tag[];\r\n error?: DataError;\r\n};\r\n\r\nexport type ContactsResult = {\r\n categories: Category[];\r\n contactMethods: ContactMethod[];\r\n topNotifications: Notification[];\r\n middleNotifications: Notification[];\r\n bottomNotifications: Notification[];\r\n notificationLists: NotificationList[];\r\n};\r\n\r\nexport type SubmissionResult = {\r\n contactMethod?: ContactMethod;\r\n valid: boolean;\r\n};\r\n\r\nconst convertLegacySymbol = (symbol?: { Type: string; Content: string }): Symbol | undefined => {\r\n if (symbol) {\r\n const { Type, Content } = symbol;\r\n if (Type && Content) {\r\n return { type: Type, content: Content };\r\n }\r\n }\r\n};\r\n\r\nconst mapLegacyCategoriesRecursively = (categories: CategoryApiResponse[]): Category[] => {\r\n return categories.map((c) => {\r\n const category: Category = {\r\n id: c.Id.toString(),\r\n title: c.Name,\r\n symbol: convertLegacySymbol(c.DefaultIcon),\r\n activeSymbol: c.ActiveIcon && convertLegacySymbol(c.ActiveIcon),\r\n description: c.Description || (c.Attributes && c.Attributes.description) || '',\r\n matches: c.GuidesCount,\r\n };\r\n if (c.Children && c.Children.length) {\r\n category.items = mapLegacyCategoriesRecursively(c.Children);\r\n }\r\n return category;\r\n });\r\n};\r\n\r\nconst mapNotices = (source: NoticeApiResponse[], type: string): Notification[] => {\r\n return source\r\n .filter(({ Type }) => Type === type)\r\n .map(({ Id, Title, Body }) => ({\r\n id: Id.toString(),\r\n title: Title,\r\n body: Body,\r\n }));\r\n};\r\n\r\nconst mapNotificationLists = (source: NoticeListApiResponse[]): NotificationList[] => {\r\n return source.map(({ Id, Title, DefaultIcon, ListNotices, Notices }) => ({\r\n id: Id.toString(),\r\n title: Title,\r\n symbol: convertLegacySymbol(DefaultIcon),\r\n defaultHeaderOptions: {\r\n visible: !!ListNotices.length,\r\n },\r\n notifications: (ListNotices || [])\r\n .concat(Notices || [])\r\n .map(({ Id, Title, Body, Type, Modified }) => ({\r\n id: Id.toString(),\r\n title: Title,\r\n body: Body,\r\n modified: Modified,\r\n expandable: Type === 'listNotice',\r\n })),\r\n }));\r\n};\r\n\r\nconst mapContactMethodSettings = (\r\n {\r\n Id,\r\n Title,\r\n DefaultIcon,\r\n Exits: [Exit],\r\n ExitType,\r\n ConfirmationText,\r\n ExpandFormAutomatically,\r\n Form,\r\n Description,\r\n }: ContactApiResponse,\r\n Validation?: ValidationApiResult\r\n): ContactMethod => {\r\n const { Adapter } = Exit || { Adapter: {} };\r\n const { ClientName = '', Settings = {}, CustomClientName = '' } = Adapter;\r\n\r\n const settings: ContactMethod = {\r\n id: Id.toString(),\r\n title: Title,\r\n description: Description,\r\n symbol: convertLegacySymbol(DefaultIcon),\r\n clientName: ClientName === 'custom.adapter' ? CustomClientName : ClientName,\r\n expanded: true,\r\n inline: true,\r\n body: {},\r\n };\r\n\r\n if (ClientName.indexOf('phone') > -1 || ClientName.indexOf('freetext') > -1) {\r\n const { displayTextBeforeClick, textBeforeClick } = Settings;\r\n if (displayTextBeforeClick === 'true') {\r\n settings.expanded = false;\r\n settings.title = textBeforeClick;\r\n }\r\n\r\n if (ClientName.indexOf('phone.text') > -1) {\r\n settings.body.phoneNumber = Settings.phoneNumber;\r\n } else {\r\n settings.body.freetext = Settings.freetext;\r\n }\r\n }\r\n\r\n if (\r\n ClientName.indexOf('chat.popup') > -1 ||\r\n ClientName.indexOf('link') > -1 ||\r\n (ClientName === 'custom.adapter' && ExitType === 'custom')\r\n ) {\r\n settings.body = Settings;\r\n settings.body.confirmationFallback = ConfirmationText;\r\n }\r\n\r\n if (ClientName.indexOf('ace') > -1) {\r\n settings.body = Settings;\r\n }\r\n\r\n if (Form && Form.HasValueComponents) {\r\n if (Validation) {\r\n settings.body.form = FormBuilder.fromLegacyForm(Id.toString(), Form, Validation).get();\r\n } else {\r\n settings.body.form = FormBuilder.fromLegacyForm(Id.toString(), Form).get();\r\n }\r\n if (!ExpandFormAutomatically) {\r\n settings.expanded = settings.inline = false;\r\n }\r\n }\r\n\r\n return settings;\r\n};\r\n\r\ntype Modify<T, R> = Omit<T, keyof R> & R;\r\ntype ExtendedGuideMatchApiResponse = Modify<\r\n GuideMatchApiResponse,\r\n {\r\n ByCategory: { Id: string; Matches: GuideApiResponse[]; TotalMatches: number }[];\r\n }\r\n>;\r\n\r\nconst mapTags = (tags: TagListApiResponse[] = []): Tag[] => {\r\n return tags.map(({ Id, Title, TotalMatches, Symbol, DefaultIcon, ActiveIcon }) => ({\r\n id: Id.toString(),\r\n title: Title,\r\n matches: TotalMatches,\r\n symbol: convertLegacySymbol(DefaultIcon || Symbol),\r\n defaultIcon: convertLegacySymbol(DefaultIcon),\r\n activeIcon: convertLegacySymbol(ActiveIcon),\r\n }));\r\n};\r\n\r\nconst mapGuides = (guides: GuideApiResponse[]) => {\r\n return guides.map(({ Id, Title, Tags, FirstPublishedDate, Modified }) => ({\r\n id: Id.toString(),\r\n title: Title,\r\n tags: mapTags(Tags),\r\n published: FirstPublishedDate,\r\n modified: Modified,\r\n }));\r\n};\r\n\r\nexport const formatLegacyData = (type: ServiceClientQueryType, data: any) => {\r\n switch (type) {\r\n case ServiceClientQueryType.MatchByCategory:\r\n case ServiceClientQueryType.Match: {\r\n const result: MatchResult = {\r\n guides: [],\r\n matches: 0,\r\n topNotifications: [],\r\n middleNotifications: [],\r\n bottomNotifications: [],\r\n notificationLists: [],\r\n tags: [],\r\n byCategory: [],\r\n };\r\n const {\r\n Matches,\r\n TotalMatches,\r\n Notices,\r\n NoticeLists,\r\n Tags,\r\n ByCategory,\r\n }: ExtendedGuideMatchApiResponse = data;\r\n\r\n result.guides = mapGuides(Matches);\r\n\r\n result.matches = TotalMatches;\r\n\r\n result.byCategory = (ByCategory || []).map(({ Id, Matches, TotalMatches }) => ({\r\n id: Id,\r\n guides: mapGuides(Matches),\r\n matches: TotalMatches,\r\n }));\r\n\r\n result.tags = mapTags(Tags);\r\n\r\n result.notificationLists = mapNotificationLists(NoticeLists || []);\r\n\r\n result.topNotifications = mapNotices(Notices || [], 'noticeRowTop');\r\n\r\n result.middleNotifications = mapNotices(Notices || [], 'noticeRowMiddle');\r\n\r\n result.bottomNotifications = mapNotices(Notices || [], 'footerNotice');\r\n\r\n return result;\r\n }\r\n case ServiceClientQueryType.Categories: {\r\n const { Children, GuidesCountTotal }: GuideCategoriesApiResponse = data;\r\n\r\n const result: CategoriesResult = {\r\n categories: mapLegacyCategoriesRecursively(Children || []),\r\n matches: GuidesCountTotal,\r\n };\r\n\r\n return result;\r\n }\r\n case ServiceClientQueryType.Guide: {\r\n const {\r\n Id,\r\n Title,\r\n Body,\r\n Related,\r\n Options,\r\n ConnectionId,\r\n ContactMethods,\r\n EnableFeedback,\r\n HandoverExists,\r\n FirstPublishedDate,\r\n Modified,\r\n ModifiedByDisplayName,\r\n FirstPublishedByDisplayName,\r\n Categories,\r\n Tags,\r\n SeoMetaDescription,\r\n SeoAllowIndex,\r\n Perspectives,\r\n PerspectiveKey,\r\n Translations,\r\n }: GuideViewApiResponse = data;\r\n\r\n /* \r\n PerspectiveKey is always null when on the \"top level\" of a dialog tree\r\n OR when navigating down a dialog tree in the \"Default answer version\"\r\n Note: The \"Default answer version\" is not the same as a given guides\r\n default answer version. The \"Default answer version\" is always the answer\r\n version in Perspectives with the key \"Default\".\r\n */\r\n const perspective =\r\n PerspectiveKey ||\r\n Object.values(Perspectives).find((connection) => connection === ConnectionId) ||\r\n Perspectives['Default'] ||\r\n null;\r\n\r\n const result: GuideResult = {\r\n guide: {\r\n id: Id.toString(),\r\n title: Title,\r\n body: Body,\r\n modified: Modified,\r\n published: FirstPublishedDate,\r\n modifiedBy: ModifiedByDisplayName,\r\n publishedBy: FirstPublishedByDisplayName,\r\n connection: ConnectionId,\r\n categories: Categories,\r\n hasHandover: HandoverExists,\r\n allowFeedback: EnableFeedback,\r\n seoMetaDescription: SeoMetaDescription,\r\n seoAllowIndex: SeoAllowIndex,\r\n perspectives: Perspectives,\r\n perspective,\r\n translations: Object.keys(Translations || {}).reduce<{\r\n [key: string]: string;\r\n }>((acc, key) => {\r\n acc[key] = Translations[key].toString();\r\n return acc;\r\n }, {}),\r\n },\r\n related: mapGuides(Related || []),\r\n dialog: [],\r\n contactMethods: (ContactMethods || []).map((cm) => mapContactMethodSettings(cm)),\r\n tags: mapTags(Tags),\r\n };\r\n\r\n (Options || []).forEach(({ CanAccess, Description, ConnectionId, Properties }) => {\r\n if (!CanAccess) {\r\n return;\r\n }\r\n\r\n const item: DialogItem = {\r\n id: Id.toString(),\r\n title: Description,\r\n connection: ConnectionId,\r\n type: DialogItemType.default,\r\n parent: {\r\n id: Id.toString(),\r\n title: Title,\r\n tags: mapTags(Tags),\r\n },\r\n };\r\n\r\n if (Properties.Type === 'Guide' || Properties.Type === 'Link') {\r\n Properties.Id && (item.id = Properties.Id.toString());\r\n Properties.Uri && (item.href = Properties.Uri);\r\n Properties.Target && (item.target = Properties.Target);\r\n switch (Properties.Type) {\r\n case 'Guide':\r\n item.type = DialogItemType.guide;\r\n break;\r\n case 'Link':\r\n item.type = DialogItemType.link;\r\n break;\r\n }\r\n }\r\n\r\n result.dialog.push(item);\r\n });\r\n\r\n return result;\r\n }\r\n case ServiceClientQueryType.Contacts: {\r\n const { Children, Matches, Notices, NoticeLists }: ContactCategoriesApiResponse = data;\r\n\r\n const result: ContactsResult = {\r\n contactMethods: (Matches || []).map((cm) => mapContactMethodSettings(cm)),\r\n categories: mapLegacyCategoriesRecursively(Children || []),\r\n topNotifications: mapNotices(Notices || [], 'noticeRowTop'),\r\n middleNotifications: mapNotices(Notices || [], 'noticeRowMiddle'),\r\n bottomNotifications: mapNotices(Notices || [], 'footerNotice'),\r\n notificationLists: mapNotificationLists(NoticeLists || []),\r\n };\r\n\r\n return result;\r\n }\r\n case ServiceClientQueryType.ContactMethod: {\r\n const { ContactMethod }: ContactMethodApiResponse = data;\r\n\r\n return mapContactMethodSettings(ContactMethod || {});\r\n }\r\n case ServiceClientQueryType.Tags:\r\n case ServiceClientQueryType.TagsOnGuides: {\r\n return mapTags(data || []);\r\n }\r\n case ServiceClientQueryType.Notifications: {\r\n const { Notices, NoticeLists } = data;\r\n\r\n return {\r\n topNotifications: mapNotices(Notices || [], 'noticeRowTop'),\r\n middleNotifications: mapNotices(Notices || [], 'noticeRowMiddle'),\r\n bottomNotifications: mapNotices(Notices || [], 'footerNotice'),\r\n notificationLists: mapNotificationLists(NoticeLists || []),\r\n };\r\n }\r\n default:\r\n return {};\r\n }\r\n};\r\n","import { ServiceClient } from '@telia-ace/knowledge-serviceclient';\r\nimport { WidgetRenderState } from '@telia-ace/knowledge-widget-core';\r\nimport {\r\n deepClone,\r\n removeNullAndUndefinedValues,\r\n shallowCompare,\r\n} from '@telia-ace/widget-utilities';\r\nimport { Container, EventManager, Widget } from '@webprovisions/platform';\r\nimport { formatLegacyData } from './legacy-conversion';\r\n\r\nexport type Subscriber = (...args: any[]) => void;\r\n\r\nexport enum DataType {\r\n Guide = 'guide',\r\n Guides = 'guides',\r\n GuidesByCategory = 'guides-by-category',\r\n RowNotifications = 'row-notices',\r\n NotificationLists = 'notification-lists',\r\n GuideCategories = 'guide-categories',\r\n ContactMethodCategories = 'contact-method-categories',\r\n ContactMethod = 'contact-method',\r\n ContactMethods = 'contact-methods',\r\n Tags = 'tags',\r\n TagsOnGuides = 'tagsonguides',\r\n}\r\n\r\nexport type DataError = {\r\n status: number;\r\n message: string;\r\n};\r\n\r\nexport enum ServiceClientQueryType {\r\n Match = 'match',\r\n Categories = 'categories',\r\n Guide = 'guide',\r\n Contacts = 'contacts',\r\n ContactMethod = 'contact-method',\r\n MatchByCategory = 'match-by-category',\r\n Tags = 'tags',\r\n TagsOnGuides = 'tagsonguides',\r\n Notifications = 'notifications',\r\n}\r\n\r\nexport enum FeedbackType {\r\n Positive = 'Positive',\r\n Negative = 'Negative',\r\n}\r\n\r\nexport type QueryParameters = {\r\n guideId?: string | number;\r\n categories?: string | number | string[] | number[];\r\n tagId?: string | number;\r\n connection?: string;\r\n\r\n contactMethodCategoryId?: string | number;\r\n contactMethodId?: string | number;\r\n\r\n searchPhrase?: string | number;\r\n take?: string | number;\r\n [key: string]: any;\r\n\r\n expandCategories?: 'none' | 'children' | 'descendants';\r\n sorting?: SortingType;\r\n guideIds?: string[];\r\n};\r\n\r\nexport enum SortingType {\r\n POPULARITY_DESCENDING = 'popularity-descending',\r\n ALPHABETIC_ASCENDING = 'alphabetic-ascending',\r\n ALPHABETIC_DESCENDING = 'alphabetic-descending',\r\n MODIFIED_ASCENDING = 'modified-ascending',\r\n MODIFIED_DESCENDING = 'modified-descending',\r\n PUBLISHED_ASCENDING = 'published-ascending',\r\n PUBLISHED_DESCENDING = 'published-descending',\r\n}\r\n\r\nexport type Query = {\r\n params: QueryParameters;\r\n resolved: boolean;\r\n loading: boolean;\r\n error?: DataError;\r\n data: any;\r\n resolvers: {\r\n resolve: (data: any) => void;\r\n reject: (data: any) => void;\r\n }[];\r\n};\r\n\r\nexport const determineServiceClientQueryType = (type: DataType): ServiceClientQueryType => {\r\n switch (type) {\r\n case DataType.Guides:\r\n return ServiceClientQueryType.Match;\r\n case DataType.GuidesByCategory:\r\n return ServiceClientQueryType.MatchByCategory;\r\n case DataType.Guide:\r\n return ServiceClientQueryType.Guide;\r\n case DataType.GuideCategories:\r\n return ServiceClientQueryType.Categories;\r\n case DataType.ContactMethodCategories:\r\n case DataType.ContactMethods:\r\n return ServiceClientQueryType.Contacts;\r\n case DataType.ContactMethod:\r\n return ServiceClientQueryType.ContactMethod;\r\n case DataType.Tags:\r\n return ServiceClientQueryType.Tags;\r\n case DataType.TagsOnGuides:\r\n return ServiceClientQueryType.TagsOnGuides;\r\n case DataType.NotificationLists:\r\n case DataType.RowNotifications:\r\n return ServiceClientQueryType.Notifications;\r\n default:\r\n throw 'error';\r\n }\r\n};\r\n\r\nconst widgetIsHidden = async (container: Container) => {\r\n const { invoke } = container.get('$widget');\r\n const renderState = await invoke('renderState');\r\n return renderState === WidgetRenderState.hidden;\r\n};\r\n\r\nexport default class DataClient {\r\n private queries: Map<ServiceClientQueryType, Query[]> = new Map();\r\n private lastTake: number = 0;\r\n public events: EventManager;\r\n constructor(private container: Container, private matchingClient: ServiceClient) {\r\n this.events = (<Widget>container.get('$widget')).events;\r\n\r\n this.events.subscribe('widget:settings-updated', () => (this.queries = new Map()));\r\n\r\n this.events.subscribe('widget:render-state-changed', (event, { next, previous }) => {\r\n if (previous === WidgetRenderState.hidden && next === WidgetRenderState.open) {\r\n this.fetchAllUnresolvedQueries();\r\n }\r\n });\r\n }\r\n\r\n static getInstance(container: Container): Promise<DataClient> {\r\n return container.getAsync('dataClient');\r\n }\r\n\r\n private getUnresolvedQueries = () => {\r\n let unresolvedCount = 0;\r\n this.queries.forEach((queries, type) => {\r\n const hasUnresolved = queries.some((query: Query) => !query.resolved);\r\n if (hasUnresolved) {\r\n unresolvedCount = +1;\r\n }\r\n });\r\n return unresolvedCount;\r\n };\r\n\r\n public fetch(type: DataType, params: QueryParameters): Promise<any> {\r\n return new Promise((resolve, reject) => {\r\n if (params.take) {\r\n this.lastTake = +(params.take || 0);\r\n }\r\n\r\n removeNullAndUndefinedValues(params);\r\n const serviceClientQueryType = determineServiceClientQueryType(type);\r\n const queries = this.queries.get(serviceClientQueryType) || [];\r\n const query = queries.find((q) => shallowCompare(q.params, params));\r\n\r\n if (query) {\r\n const index = queries.indexOf(query);\r\n if (query.resolved) {\r\n this.events.dispatch('data-client:fetched', {\r\n params,\r\n type: serviceClientQueryType,\r\n response: query.data,\r\n unresolvedQueries: this.getUnresolvedQueries(),\r\n });\r\n this.track(query.data, serviceClientQueryType, query.error);\r\n if (query.data && query.error) {\r\n reject({ error: query.error });\r\n } else {\r\n resolve(query.data);\r\n }\r\n } else {\r\n query.resolvers.push({ resolve, reject });\r\n }\r\n queries.splice(index, 1);\r\n queries.push(query);\r\n this.queries.set(serviceClientQueryType, queries);\r\n if (!query.loading && !query.resolved) {\r\n return this.runQuery(serviceClientQueryType, params);\r\n }\r\n } else {\r\n queries.push({\r\n params,\r\n resolved: false,\r\n loading: true,\r\n data: {},\r\n resolvers: [{ resolve, reject }],\r\n });\r\n this.queries.set(serviceClientQueryType, queries);\r\n\r\n return this.runQuery(serviceClientQueryType, params);\r\n }\r\n }).then((res) => deepClone(res));\r\n }\r\n\r\n // query the cached data\r\n public read(\r\n type: DataType,\r\n options: {\r\n select?: (data: any) => any; // either return all data by the DataType, or use an selector\r\n }\r\n ) {\r\n const { select } = options;\r\n const serviceClientQueryType = determineServiceClientQueryType(type);\r\n const queries = this.queries.get(serviceClientQueryType) || [];\r\n\r\n const result = queries.reduce<any[]>((acc, query) => {\r\n if (typeof select === 'function') {\r\n const match = select(query.data);\r\n if (match) {\r\n acc.push(match);\r\n }\r\n } else {\r\n acc.push(query.data);\r\n }\r\n return acc;\r\n }, []);\r\n return result;\r\n }\r\n\r\n public feedback(id: string, connection: string, feedback: FeedbackType): Promise<any> {\r\n return this.matchingClient.giveFeedback(id, connection, feedback);\r\n }\r\n\r\n private setLoadingStatus(\r\n type: ServiceClientQueryType,\r\n params: QueryParameters,\r\n loading: boolean\r\n ) {\r\n const queries = this.queries.get(type) || [];\r\n const query = queries.find((q) => shallowCompare(q.params, params));\r\n\r\n if (query) {\r\n query.loading = loading;\r\n }\r\n this.queries.set(type, queries);\r\n }\r\n\r\n private async runQuery(type: ServiceClientQueryType, params: QueryParameters) {\r\n const {\r\n searchPhrase = '',\r\n categories = '0',\r\n contactMethodCategoryId = '0',\r\n contactMethodId = '0',\r\n tagId = undefined,\r\n take = 5,\r\n connection = '',\r\n guideId,\r\n expandCategories = 'descendants',\r\n currentCategory,\r\n sorting = SortingType.POPULARITY_DESCENDING,\r\n guideIds = [],\r\n } = params;\r\n\r\n const trimmedPhrase = searchPhrase.toString().trim();\r\n if (await widgetIsHidden(this.container)) {\r\n return Promise.resolve();\r\n }\r\n\r\n switch (type) {\r\n case ServiceClientQueryType.Match: {\r\n const formatSortingValues = (sorting: string) => {\r\n const [type, direction] = sorting.split('-');\r\n const sortKeysMap = new Map([\r\n ['popularity', 'popularity'],\r\n ['alphabetic', 'title'],\r\n ['modified', 'lastModified'],\r\n ['published', 'firstPublished'],\r\n ]);\r\n\r\n return {\r\n type: sortKeysMap.get(type),\r\n direction: direction,\r\n };\r\n };\r\n\r\n if (guideIds.length) {\r\n return this.matchingClient\r\n .customRequest('guides', 'POST', {\r\n configuration: { ids: guideIds, take: +take },\r\n })\r\n .then((matches) => matches && this.handleResponse(matches, type, params));\r\n }\r\n\r\n return this.matchingClient\r\n .match(trimmedPhrase, {\r\n categories:\r\n categories === '0'\r\n ? []\r\n : Array.isArray(categories)\r\n ? categories\r\n : [+categories],\r\n take: +take,\r\n tags: tagId,\r\n sorting: formatSortingValues(sorting),\r\n ids: guideIds,\r\n })\r\n .then((matches) => matches && this.handleResponse(matches, type, params));\r\n }\r\n case ServiceClientQueryType.MatchByCategory: {\r\n return this.matchingClient\r\n .match(trimmedPhrase, {\r\n groupByCategory: true,\r\n categories:\r\n categories === '0'\r\n ? []\r\n : Array.isArray(categories)\r\n ? categories\r\n : [+categories],\r\n take: +take,\r\n tags: tagId,\r\n })\r\n .then((matches) => matches && this.handleResponse(matches, type, params));\r\n }\r\n case ServiceClientQueryType.Guide: {\r\n return this.matchingClient\r\n .getGuide(guideId, { connectionId: connection })\r\n .then((guide) => {\r\n if (guide) {\r\n this.handleResponse(guide, type, params);\r\n }\r\n })\r\n .catch((e) => {\r\n const error = {\r\n message: 'Something went wrong.',\r\n status: e.status || 400,\r\n };\r\n if (error.status === 404) {\r\n error.message = 'The guide could not be found.';\r\n }\r\n this.handleResponse({}, type, params, error);\r\n });\r\n }\r\n case ServiceClientQueryType.Categories: {\r\n return this.matchingClient\r\n .getCategories({ phrase: trimmedPhrase, expand: expandCategories, tags: tagId })\r\n .then(\r\n (categories) => categories && this.handleResponse(categories, type, params)\r\n );\r\n }\r\n case ServiceClientQueryType.Contacts: {\r\n if (guideId) {\r\n return this.matchingClient\r\n .contactMethods(+guideId, { phrase: trimmedPhrase })\r\n .then((result) => result && this.handleResponse(result, type, params));\r\n }\r\n return this.matchingClient\r\n .contacts(+contactMethodCategoryId, { phrase: trimmedPhrase })\r\n .then((result) => result && this.handleResponse(result, type, params));\r\n }\r\n case ServiceClientQueryType.ContactMethod: {\r\n return this.matchingClient\r\n .getContactMethod(+contactMethodId, { guideId, currentCategory })\r\n .then((result) => result && this.handleResponse(result, type, params));\r\n }\r\n case ServiceClientQueryType.Tags: {\r\n return this.matchingClient\r\n .customRequest('tags', 'GET', {\r\n configuration: {\r\n take: 999999,\r\n phrase: trimmedPhrase,\r\n categories:\r\n categories === '0'\r\n ? []\r\n : Array.isArray(categories)\r\n ? categories\r\n : [+categories],\r\n },\r\n })\r\n .then((result) => result && this.handleResponse(result, type, params));\r\n }\r\n case ServiceClientQueryType.TagsOnGuides: {\r\n return this.matchingClient\r\n .customRequest('tagsonguides', 'GET', {\r\n configuration: {\r\n take: 999999,\r\n phrase: trimmedPhrase,\r\n categories:\r\n categories === '0'\r\n ? []\r\n : Array.isArray(categories)\r\n ? categories\r\n : [+categories],\r\n tags: tagId,\r\n },\r\n })\r\n .then((result) => result && this.handleResponse(result, type, params));\r\n }\r\n case ServiceClientQueryType.Notifications: {\r\n return this.matchingClient\r\n .customRequest('notices', 'GET', {\r\n configuration: {\r\n phrase: trimmedPhrase,\r\n categories:\r\n categories === '0'\r\n ? []\r\n : Array.isArray(categories)\r\n ? categories\r\n : [+categories],\r\n },\r\n })\r\n .then((result) => result && this.handleResponse(result, type, params));\r\n }\r\n }\r\n }\r\n\r\n handleResponse(\r\n data: any = {},\r\n type: ServiceClientQueryType,\r\n params: QueryParameters,\r\n error?: DataError\r\n ) {\r\n const queries = this.queries.get(type) || [];\r\n const existing = queries.find((q) => shallowCompare(q.params, params));\r\n if (existing) {\r\n const formatted = error ? error : formatLegacyData(type, data);\r\n this.track(formatted, type, error);\r\n existing.resolvers.forEach((r) => {\r\n if (error) {\r\n r.reject({ error: formatted });\r\n } else {\r\n r.resolve(formatted);\r\n }\r\n });\r\n\r\n const index = queries.indexOf(existing);\r\n if (index > -1) {\r\n queries.splice(index, 1);\r\n }\r\n queries.push({ ...existing, error, resolvers: [], data: formatted, resolved: true });\r\n this.setLoadingStatus(type, params, false);\r\n this.queries.set(type, queries);\r\n if (!error) {\r\n this.events.dispatch('data-client:fetched', {\r\n type,\r\n params,\r\n response: formatted,\r\n unresolvedQueries: this.getUnresolvedQueries(),\r\n });\r\n }\r\n }\r\n }\r\n\r\n private fetchAllUnresolvedQueries() {\r\n for (const [queryType, queries] of this.queries) {\r\n queries\r\n .filter((query: Query) => !query.resolved)\r\n .forEach((query) => {\r\n this.runQuery(queryType, query.params);\r\n });\r\n }\r\n }\r\n\r\n private track(data: any = {}, type: ServiceClientQueryType, error?: DataError) {\r\n const widget = this.container.get('$widget');\r\n if (widget && !error) {\r\n widget.events.dispatch('tracking:service-client-response', {\r\n type,\r\n data,\r\n });\r\n } else if (widget) {\r\n widget.events.dispatch('tracking:service-client-error', {\r\n type,\r\n error,\r\n });\r\n }\r\n }\r\n\r\n static create(container: Container): Promise<DataClient> {\r\n return container\r\n .getAsync('matchingClient')\r\n .then((matchingClient) => new DataClient(container, matchingClient));\r\n }\r\n}\r\n","import { Container } from '@webprovisions/platform';\r\n\r\nexport const createContactMethodPlatform = (container: Container) => {\r\n return import('@telia-ace/knowledge-widget-adapters').then(({ ContactMethodPlatform }) => {\r\n return ContactMethodPlatform.create(container);\r\n });\r\n};\r\n\r\nexport const createDataClient = (container: Container) => {\r\n return import('../data').then(({ DataClient }) => {\r\n return DataClient.create(container);\r\n });\r\n};\r\n","import { Widget } from '@telia-ace/widget-types-grid';\r\nimport { Container } from '@webprovisions/platform';\r\nimport { createContactMethodPlatform, createDataClient } from './services';\r\n\r\nexport default class ExtendedWidget extends Widget {\r\n constructor(container: Container) {\r\n super(container);\r\n\r\n this.container.registerAsync('contactMethods', () =>\r\n createContactMethodPlatform(this.container)\r\n );\r\n this.container.registerAsync('dataClient', () => createDataClient(this.container));\r\n }\r\n}\r\n"],"names":["convertLegacySymbol","symbol","Type","Content","mapLegacyCategoriesRecursively","categories","c","category","mapNotices","source","type","Id","Title","Body","mapNotificationLists","DefaultIcon","ListNotices","Notices","Modified","mapContactMethodSettings","Exit","ExitType","ConfirmationText","ExpandFormAutomatically","Form","Description","Validation","Adapter","ClientName","Settings","CustomClientName","settings","displayTextBeforeClick","textBeforeClick","FormBuilder","mapTags","tags","TotalMatches","Symbol","ActiveIcon","mapGuides","guides","Tags","FirstPublishedDate","formatLegacyData","data","ServiceClientQueryType","result","Matches","NoticeLists","ByCategory","Children","GuidesCountTotal","Related","Options","ConnectionId","ContactMethods","EnableFeedback","HandoverExists","ModifiedByDisplayName","FirstPublishedByDisplayName","Categories","SeoMetaDescription","SeoAllowIndex","Perspectives","PerspectiveKey","Translations","perspective","connection","acc","key","cm","CanAccess","Properties","item","DialogItemType","ContactMethod","DataType","FeedbackType","SortingType","determineServiceClientQueryType","widgetIsHidden","container","__async","invoke","WidgetRenderState","DataClient","matchingClient","__publicField","unresolvedCount","queries","query","event","next","previous","params","resolve","reject","removeNullAndUndefinedValues","serviceClientQueryType","q","shallowCompare","index","res","deepClone","options","select","match","id","feedback","loading","searchPhrase","contactMethodCategoryId","contactMethodId","tagId","take","guideId","expandCategories","currentCategory","sorting","guideIds","trimmedPhrase","formatSortingValues","direction","matches","guide","e","error","existing","formatted","r","__spreadProps","__spreadValues","queryType","widget","createContactMethodPlatform","ContactMethodPlatform","createDataClient","ExtendedWidget","Widget"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2FA,MAAMA,IAAsB,CAACC,MAAmE;AAC5F,MAAIA,GAAQ;AACF,UAAA,EAAE,MAAAC,GAAM,SAAAC,EAAY,IAAAF;AAC1B,QAAIC,KAAQC;AACR,aAAO,EAAE,MAAMD,GAAM,SAASC,EAAQ;AAAA,EAE9C;AACJ,GAEMC,IAAiC,CAACC,MAC7BA,EAAW,IAAI,CAACC,MAAM;AACzB,QAAMC,IAAqB;AAAA,IACvB,IAAID,EAAE,GAAG,SAAS;AAAA,IAClB,OAAOA,EAAE;AAAA,IACT,QAAQN,EAAoBM,EAAE,WAAW;AAAA,IACzC,cAAcA,EAAE,cAAcN,EAAoBM,EAAE,UAAU;AAAA,IAC9D,aAAaA,EAAE,eAAgBA,EAAE,cAAcA,EAAE,WAAW,eAAgB;AAAA,IAC5E,SAASA,EAAE;AAAA,EAAA;AAEf,SAAIA,EAAE,YAAYA,EAAE,SAAS,WAChBC,EAAA,QAAQH,EAA+BE,EAAE,QAAQ,IAEvDC;AAAA,CACV,GAGCC,IAAa,CAACC,GAA6BC,MACtCD,EACF,OAAO,CAAC,EAAE,MAAAP,EAAW,MAAAA,MAASQ,CAAI,EAClC,IAAI,CAAC,EAAE,IAAAC,GAAI,OAAAC,GAAO,MAAAC,SAAY;AAAA,EAC3B,IAAIF,EAAG,SAAS;AAAA,EAChB,OAAOC;AAAA,EACP,MAAMC;AACR,EAAA,GAGJC,IAAuB,CAACL,MACnBA,EAAO,IAAI,CAAC,EAAE,IAAAE,GAAI,OAAAC,GAAO,aAAAG,GAAa,aAAAC,GAAa,SAAAC,SAAe;AAAA,EACrE,IAAIN,EAAG,SAAS;AAAA,EAChB,OAAOC;AAAA,EACP,QAAQZ,EAAoBe,CAAW;AAAA,EACvC,sBAAsB;AAAA,IAClB,SAAS,CAAC,CAACC,EAAY;AAAA,EAC3B;AAAA,EACA,gBAAgBA,KAAe,IAC1B,OAAOC,KAAW,CAAE,CAAA,EACpB,IAAI,CAAC,EAAE,IAAAN,GAAI,OAAAC,GAAO,MAAAC,GAAM,MAAAX,GAAM,UAAAgB,SAAgB;AAAA,IAC3C,IAAIP,EAAG,SAAS;AAAA,IAChB,OAAOC;AAAAA,IACP,MAAMC;AAAA,IACN,UAAUK;AAAA,IACV,YAAYhB,MAAS;AAAA,EAAA,EACvB;AACR,EAAA,GAGAiB,IAA2B,CAC7B;AAAA,EACI,IAAAR;AAAA,EACA,OAAAC;AAAA,EACA,aAAAG;AAAA,EACA,OAAO,CAACK,CAAI;AAAA,EACZ,UAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,yBAAAC;AAAA,EACA,MAAAC;AAAA,EACA,aAAAC;AACJ,GACAC,MACgB;AAChB,QAAM,EAAE,SAAAC,EAAQ,IAAIP,KAAQ,EAAE,SAAS,CAAG,EAAA,GACpC,EAAE,YAAAQ,IAAa,IAAI,UAAAC,IAAW,CAAI,GAAA,kBAAAC,IAAmB,GAAO,IAAAH,GAE5DI,IAA0B;AAAA,IAC5B,IAAIpB,EAAG,SAAS;AAAA,IAChB,OAAOC;AAAA,IACP,aAAaa;AAAA,IACb,QAAQzB,EAAoBe,CAAW;AAAA,IACvC,YAAYa,MAAe,mBAAmBE,IAAmBF;AAAA,IACjE,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,MAAM,CAAC;AAAA,EAAA;AAGP,MAAAA,EAAW,QAAQ,OAAO,IAAI,MAAMA,EAAW,QAAQ,UAAU,IAAI,IAAI;AACnE,UAAA,EAAE,wBAAAI,GAAwB,iBAAAC,EAAoB,IAAAJ;AACpD,IAAIG,MAA2B,WAC3BD,EAAS,WAAW,IACpBA,EAAS,QAAQE,IAGjBL,EAAW,QAAQ,YAAY,IAAI,KAC1BG,EAAA,KAAK,cAAcF,EAAS,cAE5BE,EAAA,KAAK,WAAWF,EAAS;AAAA,EAE1C;AAEA,UACID,EAAW,QAAQ,YAAY,IAAI,MACnCA,EAAW,QAAQ,MAAM,IAAI,MAC5BA,MAAe,oBAAoBP,MAAa,cAEjDU,EAAS,OAAOF,GAChBE,EAAS,KAAK,uBAAuBT,IAGrCM,EAAW,QAAQ,KAAK,IAAI,OAC5BG,EAAS,OAAOF,IAGhBL,KAAQA,EAAK,uBACTE,IACSK,EAAA,KAAK,OAAOG,EAAY,eAAevB,EAAG,YAAYa,GAAME,CAAU,EAAE,IAAI,IAE5EK,EAAA,KAAK,OAAOG,EAAY,eAAevB,EAAG,YAAYa,CAAI,EAAE,OAEpED,MACQQ,EAAA,WAAWA,EAAS,SAAS,MAIvCA;AACX,GAUMI,IAAU,CAACC,IAA6B,OACnCA,EAAK,IAAI,CAAC,EAAE,IAAAzB,GAAI,OAAAC,GAAO,cAAAyB,GAAc,QAAAC,GAAQ,aAAAvB,GAAa,YAAAwB,EAAA,OAAkB;AAAA,EAC/E,IAAI5B,EAAG,SAAS;AAAA,EAChB,OAAOC;AAAA,EACP,SAASyB;AAAA,EACT,QAAQrC,EAAoBe,KAAeuB,CAAM;AAAA,EACjD,aAAatC,EAAoBe,CAAW;AAAA,EAC5C,YAAYf,EAAoBuC,CAAU;AAC5C,EAAA,GAGAC,IAAY,CAACC,MACRA,EAAO,IAAI,CAAC,EAAE,IAAA9B,GAAI,OAAAC,GAAO,MAAA8B,GAAM,oBAAAC,GAAoB,UAAAzB,SAAgB;AAAA,EACtE,IAAIP,EAAG,SAAS;AAAA,EAChB,OAAOC;AAAA,EACP,MAAMuB,EAAQO,CAAI;AAAA,EAClB,WAAWC;AAAA,EACX,UAAUzB;AACZ,EAAA,GAGO0B,KAAmB,CAAClC,GAA8BmC,MAAc;AACzE,UAAQnC,GAAM;AAAA,IACV,KAAKoC,EAAuB;AAAA,IAC5B,KAAKA,EAAuB,OAAO;AAC/B,YAAMC,IAAsB;AAAA,QACxB,QAAQ,CAAC;AAAA,QACT,SAAS;AAAA,QACT,kBAAkB,CAAC;AAAA,QACnB,qBAAqB,CAAC;AAAA,QACtB,qBAAqB,CAAC;AAAA,QACtB,mBAAmB,CAAC;AAAA,QACpB,MAAM,CAAC;AAAA,QACP,YAAY,CAAC;AAAA,MAAA,GAEX;AAAA,QACF,SAAAC;AAAA,QACA,cAAAX;AAAA,QACA,SAAApB;AAAA,QACA,aAAAgC;AAAA,QACA,MAAAP;AAAA,QACA,YAAAQ;AAAA,MAC+B,IAAAL;AAE5B,aAAAE,EAAA,SAASP,EAAUQ,CAAO,GAEjCD,EAAO,UAAUV,GAEjBU,EAAO,cAAcG,KAAc,CAAC,GAAG,IAAI,CAAC,EAAE,IAAAvC,GAAI,SAAAqC,GAAS,cAAAX,EAAAA,OAAoB;AAAA,QAC3E,IAAI1B;AAAA,QACJ,QAAQ6B,EAAUQ,CAAO;AAAA,QACzB,SAASX;AAAAA,MACX,EAAA,GAEKU,EAAA,OAAOZ,EAAQO,CAAI,GAE1BK,EAAO,oBAAoBjC,EAAqBmC,KAAe,CAAE,CAAA,GAEjEF,EAAO,mBAAmBvC,EAAWS,KAAW,IAAI,cAAc,GAElE8B,EAAO,sBAAsBvC,EAAWS,KAAW,IAAI,iBAAiB,GAExE8B,EAAO,sBAAsBvC,EAAWS,KAAW,IAAI,cAAc,GAE9D8B;AAAA,IACX;AAAA,IACA,KAAKD,EAAuB,YAAY;AAC9B,YAAA,EAAE,UAAAK,GAAU,kBAAAC,EAAiD,IAAAP;AAO5D,aAL0B;AAAA,QAC7B,YAAYzC,EAA+B+C,KAAY,EAAE;AAAA,QACzD,SAASC;AAAA,MAAA;AAAA,IAIjB;AAAA,IACA,KAAKN,EAAuB,OAAO;AACzB,YAAA;AAAA,QACF,IAAAnC;AAAA,QACA,OAAAC;AAAA,QACA,MAAAC;AAAA,QACA,SAAAwC;AAAA,QACA,SAAAC;AAAA,QACA,cAAAC;AAAA,QACA,gBAAAC;AAAA,QACA,gBAAAC;AAAA,QACA,gBAAAC;AAAA,QACA,oBAAAf;AAAA,QACA,UAAAzB;AAAA,QACA,uBAAAyC;AAAA,QACA,6BAAAC;AAAA,QACA,YAAAC;AAAA,QACA,MAAAnB;AAAA,QACA,oBAAAoB;AAAA,QACA,eAAAC;AAAA,QACA,cAAAC;AAAA,QACA,gBAAAC;AAAA,QACA,cAAAC;AAAA,MACsB,IAAArB,GASpBsB,IACFF,KACA,OAAO,OAAOD,CAAY,EAAE,KAAK,CAACI,MAAeA,MAAeb,CAAY,KAC5ES,EAAa,WACb,MAEEjB,IAAsB;AAAA,QACxB,OAAO;AAAA,UACH,IAAIpC,EAAG,SAAS;AAAA,UAChB,OAAOC;AAAA,UACP,MAAMC;AAAA,UACN,UAAUK;AAAA,UACV,WAAWyB;AAAA,UACX,YAAYgB;AAAA,UACZ,aAAaC;AAAA,UACb,YAAYL;AAAA,UACZ,YAAYM;AAAA,UACZ,aAAaH;AAAA,UACb,eAAeD;AAAA,UACf,oBAAoBK;AAAA,UACpB,eAAeC;AAAA,UACf,cAAcC;AAAA,UACd,aAAAG;AAAA,UACA,cAAc,OAAO,KAAKD,KAAgB,CAAE,CAAA,EAAE,OAE3C,CAACG,GAAKC,OACDD,EAAAC,KAAOJ,EAAaI,GAAK,SAAS,GAC/BD,IACR,EAAE;AAAA,QACT;AAAA,QACA,SAAS7B,EAAUa,KAAW,EAAE;AAAA,QAChC,QAAQ,CAAC;AAAA,QACT,iBAAiBG,KAAkB,IAAI,IAAI,CAACe,MAAOpD,EAAyBoD,CAAE,CAAC;AAAA,QAC/E,MAAMpC,EAAQO,CAAI;AAAA,MAAA;AAGrB,cAAAY,KAAW,IAAI,QAAQ,CAAC,EAAE,WAAAkB,GAAW,aAAA/C,GAAa,cAAA8B,GAAc,YAAAkB,QAAiB;AAC9E,YAAI,CAACD;AACD;AAGJ,cAAME,IAAmB;AAAA,UACrB,IAAI/D,EAAG,SAAS;AAAA,UAChB,OAAOc;AAAA,UACP,YAAY8B;AAAAA,UACZ,MAAMoB,EAAe;AAAA,UACrB,QAAQ;AAAA,YACJ,IAAIhE,EAAG,SAAS;AAAA,YAChB,OAAOC;AAAA,YACP,MAAMuB,EAAQO,CAAI;AAAA,UACtB;AAAA,QAAA;AAGJ,YAAI+B,EAAW,SAAS,WAAWA,EAAW,SAAS;AAInD,kBAHAA,EAAW,OAAOC,EAAK,KAAKD,EAAW,GAAG,SAAS,IACxCA,EAAA,QAAQC,EAAK,OAAOD,EAAW,MAC/BA,EAAA,WAAWC,EAAK,SAASD,EAAW,SACvCA,EAAW,MAAM;AAAA,YACrB,KAAK;AACD,cAAAC,EAAK,OAAOC,EAAe;AAC3B;AAAA,YACJ,KAAK;AACD,cAAAD,EAAK,OAAOC,EAAe;AAC3B;AAAA,UACR;AAGG,QAAA5B,EAAA,OAAO,KAAK2B,CAAI;AAAA,MAAA,CAC1B,GAEM3B;AAAA,IACX;AAAA,IACA,KAAKD,EAAuB,UAAU;AAClC,YAAM,EAAE,UAAAK,GAAU,SAAAH,GAAS,SAAA/B,GAAS,aAAAgC,MAA8CJ;AAW3E,aATwB;AAAA,QAC3B,iBAAiBG,KAAW,IAAI,IAAI,CAACuB,MAAOpD,EAAyBoD,CAAE,CAAC;AAAA,QACxE,YAAYnE,EAA+B+C,KAAY,EAAE;AAAA,QACzD,kBAAkB3C,EAAWS,KAAW,CAAA,GAAI,cAAc;AAAA,QAC1D,qBAAqBT,EAAWS,KAAW,CAAA,GAAI,iBAAiB;AAAA,QAChE,qBAAqBT,EAAWS,KAAW,CAAA,GAAI,cAAc;AAAA,QAC7D,mBAAmBH,EAAqBmC,KAAe,EAAE;AAAA,MAAA;AAAA,IAIjE;AAAA,IACA,KAAKH,EAAuB,eAAe;AACjC,YAAA,EAAE,eAAA8B,EAA4C,IAAA/B;AAE7C,aAAA1B,EAAyByD,KAAiB,CAAA,CAAE;AAAA,IACvD;AAAA,IACA,KAAK9B,EAAuB;AAAA,IAC5B,KAAKA,EAAuB;AACjB,aAAAX,EAAQU,KAAQ,CAAA,CAAE;AAAA,IAE7B,KAAKC,EAAuB,eAAe;AACjC,YAAA,EAAE,SAAA7B,GAAS,aAAAgC,EAAgB,IAAAJ;AAE1B,aAAA;AAAA,QACH,kBAAkBrC,EAAWS,KAAW,CAAA,GAAI,cAAc;AAAA,QAC1D,qBAAqBT,EAAWS,KAAW,CAAA,GAAI,iBAAiB;AAAA,QAChE,qBAAqBT,EAAWS,KAAW,CAAA,GAAI,cAAc;AAAA,QAC7D,mBAAmBH,EAAqBmC,KAAe,EAAE;AAAA,MAAA;AAAA,IAEjE;AAAA,IACA;AACI,aAAO;EACf;AACJ;AC3aY,IAAA4B,uBAAAA,OACRA,EAAA,QAAQ,SACRA,EAAA,SAAS,UACTA,EAAA,mBAAmB,sBACnBA,EAAA,mBAAmB,eACnBA,EAAA,oBAAoB,sBACpBA,EAAA,kBAAkB,oBAClBA,EAAA,0BAA0B,6BAC1BA,EAAA,gBAAgB,kBAChBA,EAAA,iBAAiB,mBACjBA,EAAA,OAAO,QACPA,EAAA,eAAe,gBAXPA,IAAAA,MAAA,CAAA,CAAA,GAmBA/B,sBAAAA,OACRA,EAAA,QAAQ,SACRA,EAAA,aAAa,cACbA,EAAA,QAAQ,SACRA,EAAA,WAAW,YACXA,EAAA,gBAAgB,kBAChBA,EAAA,kBAAkB,qBAClBA,EAAA,OAAO,QACPA,EAAA,eAAe,gBACfA,EAAA,gBAAgB,iBATRA,IAAAA,KAAA,CAAA,CAAA,GAYAgC,uBAAAA,OACRA,EAAA,WAAW,YACXA,EAAA,WAAW,YAFHA,IAAAA,MAAA,CAAA,CAAA,GAuBAC,uBAAAA,OACRA,EAAA,wBAAwB,yBACxBA,EAAA,uBAAuB,wBACvBA,EAAA,wBAAwB,yBACxBA,EAAA,qBAAqB,sBACrBA,EAAA,sBAAsB,uBACtBA,EAAA,sBAAsB,uBACtBA,EAAA,uBAAuB,wBAPfA,IAAAA,MAAA,CAAA,CAAA;AAsBC,MAAAC,IAAkC,CAACtE,MAA2C;AACvF,UAAQA,GAAM;AAAA,IACV,KAAK;AACM,aAAA;AAAA,IACX,KAAK;AACM,aAAA;AAAA,IACX,KAAK;AACM,aAAA;AAAA,IACX,KAAK;AACM,aAAA;AAAA,IACX,KAAK;AAAA,IACL,KAAK;AACM,aAAA;AAAA,IACX,KAAK;AACM,aAAA;AAAA,IACX,KAAK;AACM,aAAA;AAAA,IACX,KAAK;AACM,aAAA;AAAA,IACX,KAAK;AAAA,IACL,KAAK;AACM,aAAA;AAAA,IACX;AACU,YAAA;AAAA,EACd;AACJ,GAEMuE,KAAiB,CAAOC,MAAyBC,EAAA;AACnD,QAAM,EAAE,QAAAC,EAAW,IAAAF,EAAU,IAAI,SAAS;AAE1C,UADoB,MAAME,EAAO,aAAa,OACvBC,EAAkB;AAC7C;AAEA,MAAqBC,EAAW;AAAA,EAI5B,YAAoBJ,GAA8BK,GAA+B;AAHzE,IAAAC,EAAA,qCAAoD;AACpD,IAAAA,EAAA,kBAAmB;AACpB,IAAAA,EAAA;AAiBC,IAAAA,EAAA,8BAAuB,MAAM;AACjC,UAAIC,IAAkB;AACtB,kBAAK,QAAQ,QAAQ,CAACC,GAAShF,MAAS;AAEpC,QADsBgF,EAAQ,KAAK,CAACC,MAAiB,CAACA,EAAM,QAAQ,MAE9CF,IAAA;AAAA,MACtB,CACH,GACMA;AAAA,IAAA;AAxBS,SAAA,YAAAP,GAA8B,KAAA,iBAAAK,GAC9C,KAAK,SAAkBL,EAAU,IAAI,SAAS,EAAG,QAE5C,KAAA,OAAO,UAAU,2BAA2B,MAAO,KAAK,UAAU,oBAAI,KAAM,GAE5E,KAAA,OAAO,UAAU,+BAA+B,CAACU,GAAO,EAAE,MAAAC,GAAM,UAAAC,QAAe;AAChF,MAAIA,MAAaT,EAAkB,UAAUQ,MAASR,EAAkB,QACpE,KAAK,0BAA0B;AAAA,IACnC,CACH;AAAA,EACL;AAAA,EAEA,OAAO,YAAYH,GAA2C;AACnD,WAAAA,EAAU,SAAS,YAAY;AAAA,EAC1C;AAAA,EAaO,MAAMxE,GAAgBqF,GAAuC;AAChE,WAAO,IAAI,QAAQ,CAACC,GAASC,MAAW;AACpC,MAAIF,EAAO,SACF,KAAA,WAAW,EAAEA,EAAO,QAAQ,KAGrCG,GAA6BH,CAAM;AAC7B,YAAAI,IAAyBnB,EAAgCtE,CAAI,GAC7DgF,IAAU,KAAK,QAAQ,IAAIS,CAAsB,KAAK,IACtDR,IAAQD,EAAQ,KAAK,CAACU,MAAMC,EAAeD,EAAE,QAAQL,CAAM,CAAC;AAElE,UAAIJ,GAAO;AACD,cAAAW,IAAQZ,EAAQ,QAAQC,CAAK;AAoBnC,YAnBIA,EAAM,YACD,KAAA,OAAO,SAAS,uBAAuB;AAAA,UACxC,QAAAI;AAAA,UACA,MAAMI;AAAA,UACN,UAAUR,EAAM;AAAA,UAChB,mBAAmB,KAAK,qBAAqB;AAAA,QAAA,CAChD,GACD,KAAK,MAAMA,EAAM,MAAMQ,GAAwBR,EAAM,KAAK,GACtDA,EAAM,QAAQA,EAAM,QACpBM,EAAO,EAAE,OAAON,EAAM,MAAO,CAAA,IAE7BK,EAAQL,EAAM,IAAI,KAGtBA,EAAM,UAAU,KAAK,EAAE,SAAAK,GAAS,QAAAC,EAAQ,CAAA,GAEpCP,EAAA,OAAOY,GAAO,CAAC,GACvBZ,EAAQ,KAAKC,CAAK,GACb,KAAA,QAAQ,IAAIQ,GAAwBT,CAAO,GAC5C,CAACC,EAAM,WAAW,CAACA,EAAM;AAClB,iBAAA,KAAK,SAASQ,GAAwBJ,CAAM;AAAA,MACvD;AAEA,eAAAL,EAAQ,KAAK;AAAA,UACT,QAAAK;AAAA,UACA,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAC;AAAA,UACP,WAAW,CAAC,EAAE,SAAAC,GAAS,QAAAC,GAAQ;AAAA,QAAA,CAClC,GACI,KAAA,QAAQ,IAAIE,GAAwBT,CAAO,GAEzC,KAAK,SAASS,GAAwBJ,CAAM;AAAA,IACvD,CACH,EAAE,KAAK,CAACQ,MAAQC,GAAUD,CAAG,CAAC;AAAA,EACnC;AAAA,EAGO,KACH7F,GACA+F,GAGF;AACQ,UAAA,EAAE,QAAAC,EAAW,IAAAD,GACbN,IAAyBnB,EAAgCtE,CAAI;AAc5D,YAbS,KAAK,QAAQ,IAAIyF,CAAsB,KAAK,IAErC,OAAc,CAAC9B,GAAKsB,MAAU;AAC7C,UAAA,OAAOe,KAAW,YAAY;AACxB,cAAAC,IAAQD,EAAOf,EAAM,IAAI;AAC/B,QAAIgB,KACAtC,EAAI,KAAKsC,CAAK;AAAA,MAClB;AAEI,QAAAtC,EAAA,KAAKsB,EAAM,IAAI;AAEhB,aAAAtB;AAAA,IACX,GAAG,CAAE,CAAA;AAAA,EAET;AAAA,EAEO,SAASuC,GAAYxC,GAAoByC,GAAsC;AAClF,WAAO,KAAK,eAAe,aAAaD,GAAIxC,GAAYyC,CAAQ;AAAA,EACpE;AAAA,EAEQ,iBACJnG,GACAqF,GACAe,GACF;AACE,UAAMpB,IAAU,KAAK,QAAQ,IAAIhF,CAAI,KAAK,IACpCiF,IAAQD,EAAQ,KAAK,CAACU,MAAMC,EAAeD,EAAE,QAAQL,CAAM,CAAC;AAElE,IAAIJ,MACAA,EAAM,UAAUmB,IAEf,KAAA,QAAQ,IAAIpG,GAAMgF,CAAO;AAAA,EAClC;AAAA,EAEc,SAAShF,GAA8BqF,GAAyB;AAAA,WAAAZ,EAAA;AACpE,YAAA;AAAA,QACF,cAAA4B,IAAe;AAAA,QACf,YAAA1G,IAAa;AAAA,QACb,yBAAA2G,IAA0B;AAAA,QAC1B,iBAAAC,IAAkB;AAAA,QAClB,OAAAC,IAAQ;AAAA,QACR,MAAAC,IAAO;AAAA,QACP,YAAA/C,IAAa;AAAA,QACb,SAAAgD;AAAA,QACA,kBAAAC,IAAmB;AAAA,QACnB,iBAAAC;AAAA,QACA,SAAAC,IAAU;AAAA,QACV,UAAAC,IAAW,CAAC;AAAA,MACZ,IAAAzB,GAEE0B,IAAgBV,EAAa,SAAS,EAAE,KAAK;AACnD,UAAI,MAAM9B,GAAe,KAAK,SAAS;AACnC,eAAO,QAAQ;AAGnB,cAAQvE,GAAM;AAAA,QACV,KAAK,SAA8B;AACzB,gBAAAgH,IAAsB,CAACH,MAAoB;AAC7C,kBAAM,CAAC7G,GAAMiH,CAAS,IAAIJ,EAAQ,MAAM,GAAG;AAQpC,mBAAA;AAAA,cACH,2BARoB,IAAI;AAAA,gBACxB,CAAC,cAAc,YAAY;AAAA,gBAC3B,CAAC,cAAc,OAAO;AAAA,gBACtB,CAAC,YAAY,cAAc;AAAA,gBAC3B,CAAC,aAAa,gBAAgB;AAAA,cAAA,CACjC,GAGqB,IAAI7G,CAAI;AAAA,cAC1B,WAAAiH;AAAA,YAAA;AAAA,UACJ;AAGJ,iBAAIH,EAAS,SACF,KAAK,eACP,cAAc,UAAU,QAAQ;AAAA,YAC7B,eAAe,EAAE,KAAKA,GAAU,MAAM,CAACL,EAAK;AAAA,UAC/C,CAAA,EACA,KAAK,CAACS,MAAYA,KAAW,KAAK,eAAeA,GAASlH,GAAMqF,CAAM,CAAC,IAGzE,KAAK,eACP,MAAM0B,GAAe;AAAA,YAClB,YACIpH,MAAe,MACT,CAAA,IACA,MAAM,QAAQA,CAAU,IACxBA,IACA,CAAC,CAACA,CAAU;AAAA,YACtB,MAAM,CAAC8G;AAAA,YACP,MAAMD;AAAA,YACN,SAASQ,EAAoBH,CAAO;AAAA,YACpC,KAAKC;AAAA,UACR,CAAA,EACA,KAAK,CAACI,MAAYA,KAAW,KAAK,eAAeA,GAASlH,GAAMqF,CAAM,CAAC;AAAA,QAChF;AAAA,QACA,KAAK;AACM,iBAAA,KAAK,eACP,MAAM0B,GAAe;AAAA,YAClB,iBAAiB;AAAA,YACjB,YACIpH,MAAe,MACT,CAAA,IACA,MAAM,QAAQA,CAAU,IACxBA,IACA,CAAC,CAACA,CAAU;AAAA,YACtB,MAAM,CAAC8G;AAAA,YACP,MAAMD;AAAA,UACT,CAAA,EACA,KAAK,CAACU,MAAYA,KAAW,KAAK,eAAeA,GAASlH,GAAMqF,CAAM,CAAC;AAAA,QAEhF,KAAK;AACM,iBAAA,KAAK,eACP,SAASqB,GAAS,EAAE,cAAchD,GAAY,EAC9C,KAAK,CAACyD,MAAU;AACb,YAAIA,KACK,KAAA,eAAeA,GAAOnH,GAAMqF,CAAM;AAAA,UAC3C,CACH,EACA,MAAM,CAAC+B,MAAM;AACV,kBAAMC,IAAQ;AAAA,cACV,SAAS;AAAA,cACT,QAAQD,EAAE,UAAU;AAAA,YAAA;AAEpB,YAAAC,EAAM,WAAW,QACjBA,EAAM,UAAU,kCAEpB,KAAK,eAAe,CAAI,GAAArH,GAAMqF,GAAQgC,CAAK;AAAA,UAAA,CAC9C;AAAA,QAET,KAAK;AACM,iBAAA,KAAK,eACP,cAAc,EAAE,QAAQN,GAAe,QAAQJ,GAAkB,MAAMH,EAAM,CAAC,EAC9E;AAAA,YACG,CAAC7G,MAAeA,KAAc,KAAK,eAAeA,GAAYK,GAAMqF,CAAM;AAAA,UAAA;AAAA,QAGtF,KAAK;AACD,iBAAIqB,IACO,KAAK,eACP,eAAe,CAACA,GAAS,EAAE,QAAQK,GAAe,EAClD,KAAK,CAAC1E,MAAWA,KAAU,KAAK,eAAeA,GAAQrC,GAAMqF,CAAM,CAAC,IAEtE,KAAK,eACP,SAAS,CAACiB,GAAyB,EAAE,QAAQS,GAAe,EAC5D,KAAK,CAAC1E,MAAWA,KAAU,KAAK,eAAeA,GAAQrC,GAAMqF,CAAM,CAAC;AAAA,QAE7E,KAAK;AACD,iBAAO,KAAK,eACP,iBAAiB,CAACkB,GAAiB,EAAE,SAAAG,GAAS,iBAAAE,GAAiB,EAC/D,KAAK,CAACvE,MAAWA,KAAU,KAAK,eAAeA,GAAQrC,GAAMqF,CAAM,CAAC;AAAA,QAE7E,KAAK;AACD,iBAAO,KAAK,eACP,cAAc,QAAQ,OAAO;AAAA,YAC1B,eAAe;AAAA,cACX,MAAM;AAAA,cACN,QAAQ0B;AAAA,cACR,YACIpH,MAAe,MACT,CAAA,IACA,MAAM,QAAQA,CAAU,IACxBA,IACA,CAAC,CAACA,CAAU;AAAA,YAC1B;AAAA,UACH,CAAA,EACA,KAAK,CAAC0C,MAAWA,KAAU,KAAK,eAAeA,GAAQrC,GAAMqF,CAAM,CAAC;AAAA,QAE7E,KAAK;AACD,iBAAO,KAAK,eACP,cAAc,gBAAgB,OAAO;AAAA,YAClC,eAAe;AAAA,cACX,MAAM;AAAA,cACN,QAAQ0B;AAAA,cACR,YACIpH,MAAe,MACT,CAAA,IACA,MAAM,QAAQA,CAAU,IACxBA,IACA,CAAC,CAACA,CAAU;AAAA,cACtB,MAAM6G;AAAA,YACV;AAAA,UACH,CAAA,EACA,KAAK,CAACnE,MAAWA,KAAU,KAAK,eAAeA,GAAQrC,GAAMqF,CAAM,CAAC;AAAA,QAE7E,KAAK;AACD,iBAAO,KAAK,eACP,cAAc,WAAW,OAAO;AAAA,YAC7B,eAAe;AAAA,cACX,QAAQ0B;AAAA,cACR,YACIpH,MAAe,MACT,CAAA,IACA,MAAM,QAAQA,CAAU,IACxBA,IACA,CAAC,CAACA,CAAU;AAAA,YAC1B;AAAA,UACH,CAAA,EACA,KAAK,CAAC0C,MAAWA,KAAU,KAAK,eAAeA,GAAQrC,GAAMqF,CAAM,CAAC;AAAA,MAEjF;AAAA,IACJ;AAAA;AAAA,EAEA,eACIlD,IAAY,CAAA,GACZnC,GACAqF,GACAgC,GACF;AACE,UAAMrC,IAAU,KAAK,QAAQ,IAAIhF,CAAI,KAAK,IACpCsH,IAAWtC,EAAQ,KAAK,CAACU,MAAMC,EAAeD,EAAE,QAAQL,CAAM,CAAC;AACrE,QAAIiC,GAAU;AACV,YAAMC,IAAYF,KAAgBnF,GAAiBlC,GAAMmC,CAAI;AACxD,WAAA,MAAMoF,GAAWvH,GAAMqH,CAAK,GACxBC,EAAA,UAAU,QAAQ,CAACE,MAAM;AAC9B,QAAIH,IACAG,EAAE,OAAO,EAAE,OAAOD,EAAW,CAAA,IAE7BC,EAAE,QAAQD,CAAS;AAAA,MACvB,CACH;AAEK,YAAA3B,IAAQZ,EAAQ,QAAQsC,CAAQ;AACtC,MAAI1B,IAAQ,MACAZ,EAAA,OAAOY,GAAO,CAAC,GAE3BZ,EAAQ,KAAKyC,EAAAC,EAAA,IAAKJ,IAAL,EAAe,OAAAD,GAAO,WAAW,CAAC,GAAG,MAAME,GAAW,UAAU,GAAM,EAAA,GAC9E,KAAA,iBAAiBvH,GAAMqF,GAAQ,EAAK,GACpC,KAAA,QAAQ,IAAIrF,GAAMgF,CAAO,GACzBqC,KACI,KAAA,OAAO,SAAS,uBAAuB;AAAA,QACxC,MAAArH;AAAA,QACA,QAAAqF;AAAA,QACA,UAAUkC;AAAA,QACV,mBAAmB,KAAK,qBAAqB;AAAA,MAAA,CAChD;AAAA,IAET;AAAA,EACJ;AAAA,EAEQ,4BAA4B;AAChC,eAAW,CAACI,GAAW3C,CAAO,KAAK,KAAK;AAE/B,MAAAA,EAAA,OAAO,CAACC,MAAiB,CAACA,EAAM,QAAQ,EACxC,QAAQ,CAACA,MAAU;AACX,aAAA,SAAS0C,GAAW1C,EAAM,MAAM;AAAA,MAAA,CACxC;AAAA,EAEb;AAAA,EAEQ,MAAM9C,IAAY,IAAInC,GAA8BqH,GAAmB;AAC3E,UAAMO,IAAS,KAAK,UAAU,IAAI,SAAS;AACvC,IAAAA,KAAU,CAACP,IACJO,EAAA,OAAO,SAAS,oCAAoC;AAAA,MACvD,MAAA5H;AAAA,MACA,MAAAmC;AAAA,IAAA,CACH,IACMyF,KACAA,EAAA,OAAO,SAAS,iCAAiC;AAAA,MACpD,MAAA5H;AAAA,MACA,OAAAqH;AAAA,IAAA,CACH;AAAA,EAET;AAAA,EAEA,OAAO,OAAO7C,GAA2C;AAC9C,WAAAA,EACF,SAAS,gBAAgB,EACzB,KAAK,CAACK,MAAmB,IAAID,EAAWJ,GAAWK,CAAc,CAAC;AAAA,EAC3E;AACJ;AC9da,MAAAgD,KAA8B,CAACrD,MACjC,OAAO,wCAAwC,KAAK,CAAC,EAAE,uBAAAsD,QACnDA,EAAsB,OAAOtD,CAAS,CAChD,GAGQuD,KAAmB,CAACvD,MACtB,OAAO,uBAAW,KAAK,CAAC,EAAE,YAAAI,QACtBA,EAAW,OAAOJ,CAAS,CACrC;ACPL,MAAqBwD,WAAuBC,GAAO;AAAA,EAC/C,YAAYzD,GAAsB;AAC9B,UAAMA,CAAS,GAEf,KAAK,UAAU;AAAA,MAAc;AAAA,MAAkB,MAC3CqD,GAA4B,KAAK,SAAS;AAAA,IAAA,GAE9C,KAAK,UAAU,cAAc,cAAc,MAAME,GAAiB,KAAK,SAAS,CAAC;AAAA,EACrF;AACJ;"}
|
|
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 { Container } 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","import { Widget } from '@telia-ace/widget-types-grid';\nimport { Container } from '@webprovisions/platform';\nimport { createContactMethodPlatform, createDataClient } from './services';\n\nexport default class ExtendedWidget extends Widget {\n constructor(container: Container) {\n super(container);\n\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","ExtendedWidget","Widget"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Widget } from '@telia-ace/widget-types-grid';
|
|
2
|
-
import { Container } from '@webprovisions/platform';
|
|
3
|
-
export default class ExtendedWidget extends Widget {
|
|
4
|
-
constructor(container: Container);
|
|
5
|
-
}
|
|
1
|
+
import { Widget } from '@telia-ace/widget-types-grid';
|
|
2
|
+
import { Container } from '@webprovisions/platform';
|
|
3
|
+
export default class ExtendedWidget extends Widget {
|
|
4
|
+
constructor(container: Container);
|
|
5
|
+
}
|
package/dist/widget/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default as GridWidget } from './extended-widget';
|
|
1
|
+
export { default as GridWidget } from './extended-widget';
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { Container } from '@webprovisions/platform';
|
|
2
|
-
export declare const createContactMethodPlatform: (container: Container) => Promise<import("@telia-ace/knowledge-widget-adapters/dist/contact-methods/platform").default>;
|
|
3
|
-
export declare const createDataClient: (container: Container) => Promise<import("../data").DataClient>;
|
|
1
|
+
import { Container } from '@webprovisions/platform';
|
|
2
|
+
export declare const createContactMethodPlatform: (container: Container) => Promise<import("@telia-ace/knowledge-widget-adapters/dist/contact-methods/platform").default>;
|
|
3
|
+
export declare const createDataClient: (container: Container) => Promise<import("../data").DataClient>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@telia-ace/knowledge-widget-types-grid",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.31-next.0",
|
|
4
4
|
"description": "Extended type definition for Grid widget.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
6
6
|
"author": "Telia Company AB",
|
|
@@ -26,13 +26,13 @@
|
|
|
26
26
|
},
|
|
27
27
|
"sideEffects": false,
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@telia-ace/knowledge-serviceclient": "^1.0.
|
|
30
|
-
"@telia-ace/knowledge-widget-adapters": "^1.0.
|
|
31
|
-
"@telia-ace/knowledge-widget-core": "^1.0.
|
|
32
|
-
"@telia-ace/widget-forms": "^1.0.
|
|
33
|
-
"@telia-ace/widget-types-grid": "^1.0.
|
|
34
|
-
"@telia-ace/widget-utilities": "^1.0.
|
|
29
|
+
"@telia-ace/knowledge-serviceclient": "^1.0.9-next.1",
|
|
30
|
+
"@telia-ace/knowledge-widget-adapters": "^1.0.30-next.0",
|
|
31
|
+
"@telia-ace/knowledge-widget-core": "^1.0.20-next.0",
|
|
32
|
+
"@telia-ace/widget-forms": "^1.0.23-next.1",
|
|
33
|
+
"@telia-ace/widget-types-grid": "^1.0.25-next.1",
|
|
34
|
+
"@telia-ace/widget-utilities": "^1.0.5-next.1",
|
|
35
35
|
"@webprovisions/platform": "^1.1.2"
|
|
36
36
|
},
|
|
37
|
-
"gitHead": "
|
|
37
|
+
"gitHead": "c5292af54730ccab639703aaffc0acd9a015975e"
|
|
38
38
|
}
|