@telia-ace/knowledge-widget-plugins 1.0.12 → 1.0.15

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.
Files changed (51) hide show
  1. package/{lib-esm → dist}/favorite/favorite-platform.d.ts +0 -0
  2. package/{lib-esm → dist}/favorite/favorite.d.ts +0 -0
  3. package/{lib-esm → dist}/favorite/index.d.ts +0 -0
  4. package/{lib-esm → dist}/favorite/utils.d.ts +0 -0
  5. package/{lib-esm → dist}/index.d.ts +0 -0
  6. package/dist/index.js +321 -0
  7. package/dist/index.js.map +1 -0
  8. package/{lib-esm → dist}/legacy-resources/index.d.ts +0 -0
  9. package/{lib-esm → dist}/legacy-resources/legacy-resources.d.ts +0 -0
  10. package/{lib-esm → dist}/misc-behavior/deny-auto-expand-contact-methods-handler.d.ts +0 -0
  11. package/{lib-esm → dist}/misc-behavior/hide-back-on-single-contact-method-handler.d.ts +0 -0
  12. package/{lib-esm → dist}/misc-behavior/index.d.ts +0 -0
  13. package/{lib-esm → dist}/misc-behavior/plugin.d.ts +0 -0
  14. package/{lib-esm → dist}/misc-behavior/search-guide-list-keyboard-navigation-handler.d.ts +0 -0
  15. package/package.json +14 -15
  16. package/lib/favorite/favorite-platform.d.ts +0 -9
  17. package/lib/favorite/favorite-platform.js +0 -97
  18. package/lib/favorite/favorite.d.ts +0 -9
  19. package/lib/favorite/favorite.js +0 -34
  20. package/lib/favorite/index.d.ts +0 -2
  21. package/lib/favorite/index.js +0 -7
  22. package/lib/favorite/utils.d.ts +0 -8
  23. package/lib/favorite/utils.js +0 -131
  24. package/lib/index.d.ts +0 -3
  25. package/lib/index.js +0 -12
  26. package/lib/legacy-resources/index.d.ts +0 -2
  27. package/lib/legacy-resources/index.js +0 -7
  28. package/lib/legacy-resources/legacy-resources.d.ts +0 -14
  29. package/lib/legacy-resources/legacy-resources.js +0 -56
  30. package/lib/misc-behavior/deny-auto-expand-contact-methods-handler.d.ts +0 -9
  31. package/lib/misc-behavior/deny-auto-expand-contact-methods-handler.js +0 -70
  32. package/lib/misc-behavior/hide-back-on-single-contact-method-handler.d.ts +0 -8
  33. package/lib/misc-behavior/hide-back-on-single-contact-method-handler.js +0 -126
  34. package/lib/misc-behavior/index.d.ts +0 -2
  35. package/lib/misc-behavior/index.js +0 -7
  36. package/lib/misc-behavior/plugin.d.ts +0 -19
  37. package/lib/misc-behavior/plugin.js +0 -105
  38. package/lib/misc-behavior/search-guide-list-keyboard-navigation-handler.d.ts +0 -7
  39. package/lib/misc-behavior/search-guide-list-keyboard-navigation-handler.js +0 -141
  40. package/lib-esm/favorite/favorite-platform.js +0 -95
  41. package/lib-esm/favorite/favorite.js +0 -29
  42. package/lib-esm/favorite/index.js +0 -2
  43. package/lib-esm/favorite/utils.js +0 -123
  44. package/lib-esm/index.js +0 -3
  45. package/lib-esm/legacy-resources/index.js +0 -2
  46. package/lib-esm/legacy-resources/legacy-resources.js +0 -54
  47. package/lib-esm/misc-behavior/deny-auto-expand-contact-methods-handler.js +0 -68
  48. package/lib-esm/misc-behavior/hide-back-on-single-contact-method-handler.js +0 -124
  49. package/lib-esm/misc-behavior/index.js +0 -2
  50. package/lib-esm/misc-behavior/plugin.js +0 -100
  51. package/lib-esm/misc-behavior/search-guide-list-keyboard-navigation-handler.js +0 -139
File without changes
File without changes
File without changes
File without changes
package/dist/index.js ADDED
@@ -0,0 +1,321 @@
1
+ var __async = (__this, __arguments, generator) => {
2
+ return new Promise((resolve, reject) => {
3
+ var fulfilled = (value) => {
4
+ try {
5
+ step(generator.next(value));
6
+ } catch (e) {
7
+ reject(e);
8
+ }
9
+ };
10
+ var rejected = (value) => {
11
+ try {
12
+ step(generator.throw(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ };
17
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
+ step((generator = generator.apply(__this, __arguments)).next());
19
+ });
20
+ };
21
+ import { Plugin, extendComponent } from "@telia-ace/knowledge-widget-core";
22
+ import { createStorageWriter, StorageCategory, StorageMedium, readStorage } from "@telia-ace/widget-services";
23
+ import { ResourceLoader } from "@telia-ace/knowledge-resource-loader";
24
+ import { DataType } from "@telia-ace/knowledge-widget-types-grid";
25
+ const storageKey = "favorites";
26
+ const createWriter = (container) => __async(this, null, function* () {
27
+ return yield createStorageWriter(container, storageKey, StorageCategory.Necessary, {
28
+ medium: StorageMedium.Local
29
+ });
30
+ });
31
+ const getStoredFavorites = (container) => __async(this, null, function* () {
32
+ return (yield readStorage(container, storageKey, StorageMedium.Local)) || [];
33
+ });
34
+ const addFavoriteToStorage = (guideId, container) => __async(this, null, function* () {
35
+ const write = yield createWriter(container);
36
+ const favorites = yield getStoredFavorites(container);
37
+ if (favorites.indexOf(guideId) > -1) {
38
+ return favorites;
39
+ }
40
+ const updated = favorites.concat(guideId);
41
+ write(updated);
42
+ return updated;
43
+ });
44
+ const removeFavoriteFromStorage = (guideId, container) => __async(this, null, function* () {
45
+ const write = yield createWriter(container);
46
+ const favorites = yield getStoredFavorites(container);
47
+ const updated = favorites.filter((id) => id !== guideId);
48
+ write(updated);
49
+ return updated;
50
+ });
51
+ const readFavoritesFromStorage = (container) => __async(this, null, function* () {
52
+ try {
53
+ const favorites = yield getStoredFavorites(container);
54
+ return favorites;
55
+ } catch (e) {
56
+ return [];
57
+ }
58
+ });
59
+ const removeAllFavoritesFromStorage = (container) => __async(this, null, function* () {
60
+ const write = yield createWriter(container);
61
+ write([]);
62
+ return [];
63
+ });
64
+ const notifyListeners = (container, data) => {
65
+ const { updated } = data;
66
+ const { events } = container.get("$widget");
67
+ events.dispatch("widget:favorites-updated", { updated });
68
+ };
69
+ const createFavoritePlatform = (container) => {
70
+ let favorites = [];
71
+ const initialize = () => {
72
+ readFavoritesFromStorage(container).then((items) => {
73
+ favorites = items;
74
+ });
75
+ };
76
+ const get = () => {
77
+ return favorites;
78
+ };
79
+ const add = (guideId) => __async(this, null, function* () {
80
+ const updated = yield addFavoriteToStorage(guideId, container);
81
+ favorites = updated;
82
+ notifyListeners(container, { updated });
83
+ return updated;
84
+ });
85
+ const clear = () => __async(this, null, function* () {
86
+ const updated = yield removeAllFavoritesFromStorage(container);
87
+ favorites = updated;
88
+ notifyListeners(container, { updated });
89
+ return updated;
90
+ });
91
+ const remove = (guideId) => __async(this, null, function* () {
92
+ const updated = yield removeFavoriteFromStorage(guideId, container);
93
+ favorites = updated;
94
+ notifyListeners(container, { updated });
95
+ return updated;
96
+ });
97
+ initialize();
98
+ return {
99
+ add,
100
+ get,
101
+ clear,
102
+ remove
103
+ };
104
+ };
105
+ class FavoritePlugin extends Plugin {
106
+ constructor(container, settings) {
107
+ super(container);
108
+ this.settings = settings;
109
+ this.handler = createFavoritePlatform(container);
110
+ container.register("favorites", this.handler);
111
+ }
112
+ }
113
+ const getHostFromUrl = (url) => {
114
+ const parser = document.createElement("a");
115
+ parser.href = url;
116
+ return `//${parser.hostname}/`;
117
+ };
118
+ class LegacyResourcesPlugin extends Plugin {
119
+ constructor(container, settings = {}) {
120
+ super(container);
121
+ this.widget.events.subscribeOnce("widget:attached", () => {
122
+ var _a;
123
+ const {
124
+ data: { projection }
125
+ } = this.container.get("$settings");
126
+ if (projection) {
127
+ const host = getHostFromUrl(projection);
128
+ const loader = new ResourceLoader();
129
+ loader.add(`${host}ClientLibraries/Supplementary/font-awesome-4.7.0/css/font-awesome.min.css`);
130
+ loader.add(`${host}${(_a = this.container.parent) == null ? void 0 : _a.name}/widgets.css`);
131
+ loader.load();
132
+ }
133
+ const { initialCss = "" } = settings;
134
+ if (initialCss.length) {
135
+ const style = document.createElement("style");
136
+ style.innerHTML = initialCss;
137
+ document.head.appendChild(style);
138
+ }
139
+ });
140
+ }
141
+ }
142
+ var denyAutoExpandContactMethodsHandler = (container, settings) => __async(this, null, function* () {
143
+ const { denyAutoExpandContactMethods } = settings;
144
+ if (denyAutoExpandContactMethods) {
145
+ const regExp = new RegExp(denyAutoExpandContactMethods);
146
+ extendComponent(container, "contact-list", (component) => {
147
+ component.properties(({ contactMethods = [] }) => {
148
+ const deniedContactMethods = contactMethods.filter(({ clientName }) => regExp.test(clientName));
149
+ if (deniedContactMethods.length) {
150
+ deniedContactMethods.forEach((cm) => {
151
+ cm.expanded = false;
152
+ cm.inline = false;
153
+ });
154
+ return { contactMethods };
155
+ }
156
+ });
157
+ });
158
+ }
159
+ return [];
160
+ });
161
+ const STORAGE_KEY = "misc-behavior:hideBackValue";
162
+ var hideBackOnSingleContactMethodHandler = (container, settings) => __async(this, null, function* () {
163
+ const writeToStorage = (mainWidget, hideBackValue) => {
164
+ return container.getAsync("dataClient").then((dataClient) => {
165
+ return dataClient.fetch(DataType.ContactMethodCategories, {}).then((result) => {
166
+ if (result) {
167
+ const { categories = [], contactMethods = [] } = result;
168
+ if (hideBackValue === null) {
169
+ hideBackValue = categories.length === 0 && contactMethods.length === 1;
170
+ return createStorageWriter(mainWidget.container, STORAGE_KEY, StorageCategory.Functional).then((write) => write(hideBackValue));
171
+ }
172
+ }
173
+ });
174
+ });
175
+ };
176
+ const { events } = container.get("$widget");
177
+ events.subscribe("widget:render-state-changed", (event, data) => __async(this, null, function* () {
178
+ if (event.target.state === "activated" && data.next === "open") {
179
+ const { hideBackOnSingleContactMethod } = settings;
180
+ let mainWidget;
181
+ const widget = container.get("$widget");
182
+ const { name, implementation } = widget;
183
+ if (name.endsWith("_contact")) {
184
+ mainWidget = implementation.widgets.get(name.replace("_contact", ""));
185
+ } else if (!name.endsWith("_contact-method")) {
186
+ mainWidget = widget;
187
+ }
188
+ if (mainWidget) {
189
+ let hideBackValue = null;
190
+ const storedHideBackValue = yield readStorage(mainWidget.container, STORAGE_KEY);
191
+ const componentPlatform = yield mainWidget.container.getAsync("components");
192
+ const widgetHeaders = componentPlatform.components().ofType("widget-header").select();
193
+ if (typeof storedHideBackValue === "boolean") {
194
+ hideBackValue = storedHideBackValue;
195
+ } else if (hideBackOnSingleContactMethod) {
196
+ yield writeToStorage(mainWidget, hideBackValue);
197
+ }
198
+ if (hideBackOnSingleContactMethod || typeof hideBackValue === "boolean") {
199
+ if (hideBackValue) {
200
+ widgetHeaders.actions.dispatch("show-back", false);
201
+ }
202
+ widgetHeaders.actions.watch("show-back", (data2, next) => {
203
+ if (hideBackValue && data2) {
204
+ return next(false);
205
+ }
206
+ return next(data2);
207
+ });
208
+ }
209
+ }
210
+ }
211
+ }));
212
+ return [];
213
+ });
214
+ const isQuickFilterOpen = (searchElements) => {
215
+ return searchElements.reduce((acc, current) => {
216
+ if (acc) {
217
+ return acc;
218
+ }
219
+ const [element] = Array.from((current == null ? void 0 : current.getElementsByClassName("humany-quick-filter-dropdown")) || []);
220
+ if (element) {
221
+ return true;
222
+ }
223
+ return false;
224
+ }, false);
225
+ };
226
+ const isSearchElementFocused = (searchElements) => {
227
+ return searchElements.reduce((acc, current) => {
228
+ if (acc) {
229
+ return acc;
230
+ }
231
+ const [input] = Array.from((current == null ? void 0 : current.getElementsByTagName("input")) || []);
232
+ if (input && input === document.activeElement) {
233
+ return true;
234
+ }
235
+ return false;
236
+ }, false);
237
+ };
238
+ const getGuideListLinks = () => {
239
+ return Array.from(document.querySelectorAll('[data-component-type="guide-list"]')).reduce((acc, current) => {
240
+ const links = Array.from(current.getElementsByTagName("a"));
241
+ links.forEach((l) => acc.push(l));
242
+ return acc;
243
+ }, []);
244
+ };
245
+ var searchGuideListKeyboardNavigationHandler = (container, settings) => __async(this, null, function* () {
246
+ const { searchToGuideListArrowKeyNavigation = false } = settings;
247
+ if (searchToGuideListArrowKeyNavigation) {
248
+ return container.getAsync("components").then((platform) => {
249
+ const {
250
+ nodes: { all }
251
+ } = platform;
252
+ const searchComponentIds = all.filter((n) => n.type === "search").map((n) => n.id);
253
+ const listeners = [];
254
+ listeners.push({
255
+ parent: window,
256
+ type: "keydown",
257
+ handler: (e) => {
258
+ var _a, _b, _c, _d;
259
+ const searchComponentElements = [];
260
+ searchComponentIds.forEach((id) => {
261
+ const element = document.getElementById(id);
262
+ if (element) {
263
+ searchComponentElements.push(element);
264
+ }
265
+ });
266
+ const quickFilterDropdownOpen = isQuickFilterOpen(searchComponentElements);
267
+ const searchElementIsFocused = isSearchElementFocused(searchComponentElements);
268
+ const guideListLinks = getGuideListLinks();
269
+ const guideListLinkFocusIndex = guideListLinks.indexOf(document.activeElement);
270
+ if ((e.key === "ArrowDown" || e.key === "ArrowUp") && (searchElementIsFocused || guideListLinkFocusIndex > -1)) {
271
+ e.preventDefault();
272
+ }
273
+ if (e.key === "ArrowDown" && searchElementIsFocused && !quickFilterDropdownOpen) {
274
+ guideListLinks[0].focus();
275
+ } else {
276
+ if (e.key === "ArrowUp" && guideListLinkFocusIndex === 0) {
277
+ (_b = (_a = searchComponentElements[0]) == null ? void 0 : _a.getElementsByTagName("input")[0]) == null ? void 0 : _b.focus();
278
+ } else if (e.key === "ArrowUp" && guideListLinkFocusIndex > -1) {
279
+ (_c = guideListLinks[guideListLinkFocusIndex - 1]) == null ? void 0 : _c.focus();
280
+ } else if (e.key === "ArrowDown" && guideListLinkFocusIndex > -1) {
281
+ (_d = guideListLinks[guideListLinkFocusIndex + 1]) == null ? void 0 : _d.focus();
282
+ }
283
+ }
284
+ }
285
+ });
286
+ return listeners;
287
+ });
288
+ }
289
+ return Promise.resolve([]);
290
+ });
291
+ class MiscBehaviorPlugin extends Plugin {
292
+ constructor(container, settings = {}) {
293
+ super(container);
294
+ this.settings = settings;
295
+ this.listeners = [];
296
+ }
297
+ initialize() {
298
+ return __async(this, null, function* () {
299
+ this.listeners = yield Promise.all([
300
+ Promise.resolve(hideBackOnSingleContactMethodHandler(this.container, this.settings)),
301
+ Promise.resolve(denyAutoExpandContactMethodsHandler(this.container, this.settings)),
302
+ Promise.resolve(searchGuideListKeyboardNavigationHandler(this.container, this.settings))
303
+ ]).then((listenerArray) => {
304
+ const listeners = [];
305
+ listenerArray.forEach((a) => a.forEach((l) => listeners.push(l)));
306
+ listeners.forEach(({ parent, type, handler }) => {
307
+ parent.addEventListener(type, handler);
308
+ });
309
+ return listeners;
310
+ });
311
+ });
312
+ }
313
+ deactivate() {
314
+ this.listeners.forEach((listener) => {
315
+ const { parent, handler, type } = listener;
316
+ parent.removeEventListener(type, handler);
317
+ });
318
+ }
319
+ }
320
+ export { FavoritePlugin, LegacyResourcesPlugin, MiscBehaviorPlugin };
321
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/favorite/utils.ts","../src/favorite/favorite-platform.ts","../src/favorite/favorite.ts","../src/legacy-resources/legacy-resources.ts","../src/misc-behavior/deny-auto-expand-contact-methods-handler.ts","../src/misc-behavior/hide-back-on-single-contact-method-handler.ts","../src/misc-behavior/search-guide-list-keyboard-navigation-handler.ts","../src/misc-behavior/plugin.ts"],"sourcesContent":["import {\r\n createStorageWriter,\r\n readStorage,\r\n StorageCategory,\r\n StorageMedium,\r\n} from '@telia-ace/widget-services';\r\nimport { Container, Widget } from '@webprovisions/platform';\r\n\r\nconst storageKey = 'favorites';\r\n\r\nconst createWriter = async (container: Container) =>\r\n await createStorageWriter(container, storageKey, StorageCategory.Necessary, {\r\n medium: StorageMedium.Local,\r\n });\r\n\r\nconst getStoredFavorites = async (container: Container) =>\r\n (await readStorage<string[]>(container, storageKey, StorageMedium.Local)) || [];\r\n\r\nexport const addFavoriteToStorage = async (guideId: string, container: Container) => {\r\n const write = await createWriter(container);\r\n const favorites = await getStoredFavorites(container);\r\n if (favorites.indexOf(guideId) > -1) {\r\n return favorites;\r\n }\r\n const updated = favorites.concat(guideId);\r\n write(updated);\r\n return updated;\r\n};\r\n\r\nexport const removeFavoriteFromStorage = async (guideId: string, container: Container) => {\r\n const write = await createWriter(container);\r\n const favorites = await getStoredFavorites(container);\r\n const updated = favorites.filter((id) => id !== guideId);\r\n write(updated);\r\n return updated;\r\n};\r\n\r\nexport const readFavoritesFromStorage = async (container: Container) => {\r\n try {\r\n const favorites = await getStoredFavorites(container);\r\n return favorites;\r\n } catch (e) {\r\n return [];\r\n }\r\n};\r\n\r\nexport const removeAllFavoritesFromStorage = async (container: Container) => {\r\n const write = await createWriter(container);\r\n write([]);\r\n return [];\r\n};\r\n\r\nexport const notifyListeners = (container: Container, data: { updated: string[] }) => {\r\n const { updated } = data;\r\n const { events } = container.get('$widget') as Widget;\r\n events.dispatch('widget:favorites-updated', { updated });\r\n};\r\n","import { Container } from '@webprovisions/platform';\r\nimport {\r\n addFavoriteToStorage,\r\n notifyListeners,\r\n readFavoritesFromStorage,\r\n removeAllFavoritesFromStorage,\r\n removeFavoriteFromStorage,\r\n} from './utils';\r\n\r\nexport type FavoritePlatform = {\r\n add: (guideId: string) => Promise<string[]>;\r\n remove: (guideId: string) => Promise<string[]>;\r\n clear: () => Promise<string[]>;\r\n get: () => string[];\r\n};\r\n\r\nconst createFavoritePlatform = (container: Container): FavoritePlatform => {\r\n let favorites: string[] = [];\r\n const initialize = () => {\r\n readFavoritesFromStorage(container).then((items) => {\r\n favorites = items;\r\n });\r\n };\r\n\r\n const get = () => {\r\n return favorites;\r\n };\r\n\r\n const add = async (guideId: string) => {\r\n const updated = await addFavoriteToStorage(guideId, container);\r\n favorites = updated;\r\n notifyListeners(container, { updated });\r\n return updated;\r\n };\r\n\r\n const clear = async () => {\r\n const updated = await removeAllFavoritesFromStorage(container);\r\n favorites = updated;\r\n notifyListeners(container, { updated });\r\n return updated;\r\n };\r\n\r\n const remove = async (guideId: string) => {\r\n const updated = await removeFavoriteFromStorage(guideId, container);\r\n favorites = updated;\r\n notifyListeners(container, { updated });\r\n return updated;\r\n };\r\n\r\n initialize();\r\n return {\r\n add,\r\n get,\r\n clear,\r\n remove,\r\n };\r\n};\r\n\r\nexport default createFavoritePlatform;\r\n","import { Plugin } from '@telia-ace/knowledge-widget-core';\r\nimport { Container } from '@webprovisions/platform';\r\nimport createFavoritePlatform, { FavoritePlatform } from './favorite-platform';\r\n\r\nexport type FavoritePluginSettings = {};\r\n\r\nexport default class FavoritePlugin extends Plugin {\r\n handler: FavoritePlatform;\r\n\r\n constructor(container: Container, public settings: FavoritePluginSettings) {\r\n super(container);\r\n\r\n this.handler = createFavoritePlatform(container);\r\n container.register('favorites', this.handler);\r\n }\r\n}\r\n","import { ResourceLoader } from '@telia-ace/knowledge-resource-loader';\r\nimport { Plugin } from '@telia-ace/knowledge-widget-core';\r\nimport { Container } from '@webprovisions/platform';\r\n\r\nconst getHostFromUrl = (url: string) => {\r\n const parser = document.createElement('a');\r\n parser.href = url;\r\n return `//${parser.hostname}/`;\r\n};\r\n\r\ntype Settings = {\r\n initialCss?: string;\r\n};\r\n\r\n/**\r\n * Downloads legacy resources for a widget. These resources are to be treated as legacy. When the\r\n * Webprovisions bundling service is available these resources should be included as their own\r\n * plugins and be part of the output.\r\n */\r\nexport default class LegacyResourcesPlugin extends Plugin {\r\n constructor(container: Container, settings: Settings = {}) {\r\n super(container);\r\n this.widget.events.subscribeOnce('widget:attached', () => {\r\n const {\r\n data: { projection },\r\n } = this.container.get('$settings');\r\n\r\n if (projection) {\r\n const host = getHostFromUrl(projection);\r\n const loader = new ResourceLoader();\r\n loader.add(\r\n `${host}ClientLibraries/Supplementary/font-awesome-4.7.0/css/font-awesome.min.css`\r\n ); // tslint:disable-line max-line-length\r\n loader.add(`${host}${this.container.parent?.name}/widgets.css`);\r\n loader.load();\r\n }\r\n\r\n const { initialCss = '' } = settings;\r\n\r\n if (initialCss.length) {\r\n const style = document.createElement('style');\r\n style.innerHTML = initialCss;\r\n document.head.appendChild(style);\r\n }\r\n });\r\n }\r\n}\r\n","import { extendComponent } from '@telia-ace/knowledge-widget-core';\r\nimport { Container } from '@webprovisions/platform';\r\nimport { Settings } from './plugin';\r\n\r\n/**\r\n * Sets contactMethod.expanded and contactMethod.inline for contactMethods\r\n * with a clientName that match the regular expression passed in\r\n * the denyAutoExpandContactMethods-setting\r\n */\r\nexport default async (container: Container, settings: Settings) => {\r\n const { denyAutoExpandContactMethods } = settings;\r\n\r\n if (denyAutoExpandContactMethods) {\r\n const regExp = new RegExp(denyAutoExpandContactMethods);\r\n\r\n extendComponent(container, 'contact-list', (component) => {\r\n component.properties(({ contactMethods = [] }) => {\r\n const deniedContactMethods = contactMethods.filter(({ clientName }: any) =>\r\n regExp.test(clientName)\r\n );\r\n\r\n if (deniedContactMethods.length) {\r\n deniedContactMethods.forEach((cm: any) => {\r\n cm.expanded = false;\r\n cm.inline = false;\r\n });\r\n\r\n return { contactMethods };\r\n }\r\n });\r\n });\r\n }\r\n\r\n return [];\r\n};\r\n","import { ComponentPlatform } from '@telia-ace/knowledge-widget-core';\r\nimport { ContactsResult, DataType } from '@telia-ace/knowledge-widget-types-grid';\r\nimport { createStorageWriter, readStorage, StorageCategory } from '@telia-ace/widget-services';\r\nimport { Container, Widget } from '@webprovisions/platform';\r\nimport { Settings } from './plugin';\r\n\r\nconst STORAGE_KEY = 'misc-behavior:hideBackValue';\r\n\r\n/**\r\n * Will hide the back-button in the widget-header back-button if there\r\n * is only a single contact method in the contact-list.\r\n */\r\nexport default async (container: Container, settings: Settings) => {\r\n const writeToStorage = (mainWidget: Widget, hideBackValue: any) => {\r\n return container.getAsync('dataClient').then((dataClient) => {\r\n return dataClient\r\n .fetch(DataType.ContactMethodCategories, {})\r\n .then((result: ContactsResult) => {\r\n if (result) {\r\n const { categories = [], contactMethods = [] } = result;\r\n\r\n if (hideBackValue === null) {\r\n hideBackValue = categories.length === 0 && contactMethods.length === 1;\r\n return createStorageWriter(\r\n mainWidget.container,\r\n STORAGE_KEY,\r\n StorageCategory.Functional\r\n ).then((write) => write(hideBackValue));\r\n }\r\n }\r\n });\r\n });\r\n };\r\n\r\n const { events } = container.get('$widget');\r\n events.subscribe('widget:render-state-changed', async (event: any, data: any) => {\r\n if (event.target.state === 'activated' && data.next === 'open') {\r\n const { hideBackOnSingleContactMethod } = settings;\r\n\r\n let mainWidget: Widget | undefined;\r\n\r\n const widget: Widget = container.get('$widget');\r\n const { name, implementation } = widget;\r\n\r\n if (name.endsWith('_contact')) {\r\n mainWidget = implementation.widgets.get(name.replace('_contact', ''));\r\n } else if (!name.endsWith('_contact-method')) {\r\n mainWidget = widget;\r\n }\r\n\r\n if (mainWidget) {\r\n let hideBackValue: boolean | null = null;\r\n const storedHideBackValue = await readStorage<boolean>(\r\n mainWidget.container,\r\n STORAGE_KEY\r\n );\r\n\r\n const componentPlatform: ComponentPlatform = await mainWidget.container.getAsync(\r\n 'components'\r\n );\r\n const widgetHeaders = componentPlatform\r\n .components()\r\n .ofType('widget-header')\r\n .select();\r\n\r\n /* if we have a value stored in the main widgets session storage:\r\n * use that\r\n *\r\n * if not and the current widget has hideBackOnSingleContactMethod == true:\r\n * fetch value and save on mainWidget session storage\r\n */\r\n if (typeof storedHideBackValue === 'boolean') {\r\n hideBackValue = storedHideBackValue;\r\n } else if (hideBackOnSingleContactMethod) {\r\n await writeToStorage(mainWidget, hideBackValue);\r\n }\r\n\r\n /* if hideBackOnSingleContactMethod == true\r\n * or if we have a hideBackValue (from session storage)\r\n * hide back if hideBackValue == true\r\n * and add show-back action watcher\r\n */\r\n if (hideBackOnSingleContactMethod || typeof hideBackValue === 'boolean') {\r\n if (hideBackValue) {\r\n widgetHeaders.actions.dispatch('show-back', false);\r\n }\r\n\r\n widgetHeaders.actions.watch('show-back', (data, next) => {\r\n if (hideBackValue && data) {\r\n return next(false);\r\n }\r\n\r\n return next(data);\r\n });\r\n }\r\n }\r\n }\r\n });\r\n\r\n return [];\r\n};\r\n","import { ComponentPlatform } from '@telia-ace/knowledge-widget-core';\r\nimport { Container } from '@webprovisions/platform';\r\nimport { Listerners, Settings } from './plugin';\r\n\r\nconst isQuickFilterOpen = (searchElements: HTMLElement[]) => {\r\n return searchElements.reduce((acc, current) => {\r\n if (acc) {\r\n return acc;\r\n }\r\n\r\n const [element] = Array.from(\r\n current?.getElementsByClassName('humany-quick-filter-dropdown') || []\r\n );\r\n\r\n if (element) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }, false);\r\n};\r\n\r\nconst isSearchElementFocused = (searchElements: HTMLElement[]) => {\r\n return searchElements.reduce((acc, current) => {\r\n if (acc) {\r\n return acc;\r\n }\r\n\r\n const [input] = Array.from(current?.getElementsByTagName('input') || []);\r\n\r\n if (input && input === document.activeElement) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }, false);\r\n};\r\n\r\nconst getGuideListLinks = () => {\r\n return Array.from(document.querySelectorAll('[data-component-type=\"guide-list\"]')).reduce<\r\n HTMLAnchorElement[]\r\n >((acc, current) => {\r\n const links = Array.from(current.getElementsByTagName('a'));\r\n links.forEach((l) => acc.push(l));\r\n return acc;\r\n }, []);\r\n};\r\n\r\n/**\r\n * Will focus guide-list when focusing search-input and pressing arrow-down key\r\n */\r\nexport default async (container: Container, settings: Settings) => {\r\n const { searchToGuideListArrowKeyNavigation = false } = settings;\r\n\r\n if (searchToGuideListArrowKeyNavigation) {\r\n return container.getAsync('components').then((platform: ComponentPlatform) => {\r\n const {\r\n nodes: { all },\r\n } = platform;\r\n\r\n const searchComponentIds = all.filter((n) => n.type === 'search').map((n) => n.id);\r\n\r\n const listeners: Listerners = [];\r\n\r\n listeners.push({\r\n parent: window,\r\n type: 'keydown',\r\n handler: (e: KeyboardEvent) => {\r\n const searchComponentElements: HTMLElement[] = [];\r\n searchComponentIds.forEach((id) => {\r\n const element = document.getElementById(id);\r\n if (element) {\r\n searchComponentElements.push(element);\r\n }\r\n });\r\n const quickFilterDropdownOpen = isQuickFilterOpen(searchComponentElements);\r\n const searchElementIsFocused = isSearchElementFocused(searchComponentElements);\r\n const guideListLinks = getGuideListLinks();\r\n const guideListLinkFocusIndex = guideListLinks.indexOf(\r\n document.activeElement as HTMLAnchorElement\r\n );\r\n\r\n if (\r\n (e.key === 'ArrowDown' || e.key === 'ArrowUp') &&\r\n (searchElementIsFocused || guideListLinkFocusIndex > -1)\r\n ) {\r\n e.preventDefault();\r\n }\r\n\r\n if (\r\n e.key === 'ArrowDown' &&\r\n searchElementIsFocused &&\r\n !quickFilterDropdownOpen\r\n ) {\r\n guideListLinks[0].focus();\r\n } else {\r\n if (e.key === 'ArrowUp' && guideListLinkFocusIndex === 0) {\r\n searchComponentElements[0]?.getElementsByTagName('input')[0]?.focus();\r\n } else if (e.key === 'ArrowUp' && guideListLinkFocusIndex > -1) {\r\n guideListLinks[guideListLinkFocusIndex - 1]?.focus();\r\n } else if (e.key === 'ArrowDown' && guideListLinkFocusIndex > -1) {\r\n guideListLinks[guideListLinkFocusIndex + 1]?.focus();\r\n }\r\n }\r\n },\r\n });\r\n\r\n return listeners;\r\n });\r\n }\r\n\r\n return Promise.resolve([]);\r\n};\r\n","import { Plugin } from '@telia-ace/knowledge-widget-core';\r\nimport { Container } from '@webprovisions/platform';\r\nimport denyAutoExpandContactMethodsHandler from './deny-auto-expand-contact-methods-handler';\r\nimport hideBackOnSingleContactMethodHandler from './hide-back-on-single-contact-method-handler';\r\nimport searchGuideListKeyboardNavigationHandler from './search-guide-list-keyboard-navigation-handler';\r\n\r\nexport type Settings = {\r\n denyAutoExpandContactMethods?: string;\r\n hideBackOnSingleContactMethod?: boolean;\r\n searchToGuideListArrowKeyNavigation?: boolean;\r\n};\r\n\r\nexport type Listerners = {\r\n parent: HTMLElement | Window;\r\n handler: (...args: any[]) => void;\r\n type: string;\r\n}[];\r\n\r\nexport default class MiscBehaviorPlugin extends Plugin {\r\n listeners: Listerners = [];\r\n\r\n constructor(container: Container, public settings: Settings = {}) {\r\n super(container);\r\n }\r\n\r\n async initialize() {\r\n this.listeners = await Promise.all([\r\n Promise.resolve(hideBackOnSingleContactMethodHandler(this.container, this.settings)),\r\n Promise.resolve(denyAutoExpandContactMethodsHandler(this.container, this.settings)),\r\n Promise.resolve(\r\n searchGuideListKeyboardNavigationHandler(this.container, this.settings)\r\n ),\r\n ]).then((listenerArray) => {\r\n const listeners: Listerners = [];\r\n listenerArray.forEach((a) => (a as Listerners).forEach((l) => listeners.push(l)));\r\n\r\n listeners.forEach(({ parent, type, handler }) => {\r\n parent.addEventListener(type, handler);\r\n });\r\n\r\n return listeners;\r\n });\r\n }\r\n\r\n deactivate() {\r\n this.listeners.forEach((listener) => {\r\n const { parent, handler, type } = listener;\r\n parent.removeEventListener(type, handler);\r\n });\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAQA,MAAM,aAAa;AAEnB,MAAM,eAAe,CAAO;AACxB,eAAM,oBAAoB,WAAW,YAAY,gBAAgB,WAAW;AAAA,IACxE,QAAQ,cAAc;AAAA,EAC1B,CAAC;AAAA;AAEL,MAAM,qBAAqB,CAAO,cAC7B;AAAA,gBAAM,YAAsB,WAAW,YAAY,cAAc,KAAK,MAAM;;AAEpE,MAAA,uBAAuB,CAAO,SAAiB,cAAyB;AAC3E,QAAA,QAAQ,MAAM,aAAa,SAAS;AACpC,QAAA,YAAY,MAAM,mBAAmB,SAAS;AACpD,MAAI,UAAU,QAAQ,OAAO,IAAI,IAAI;AAC1B,WAAA;AAAA,EACX;AACM,QAAA,UAAU,UAAU,OAAO,OAAO;AACxC,QAAM,OAAO;AACN,SAAA;AACX;AAEa,MAAA,4BAA4B,CAAO,SAAiB,cAAyB;AAChF,QAAA,QAAQ,MAAM,aAAa,SAAS;AACpC,QAAA,YAAY,MAAM,mBAAmB,SAAS;AACpD,QAAM,UAAU,UAAU,OAAO,CAAC,OAAO,OAAO,OAAO;AACvD,QAAM,OAAO;AACN,SAAA;AACX;AAEa,MAAA,2BAA2B,CAAO,cAAyB;AAChE,MAAA;AACM,UAAA,YAAY,MAAM,mBAAmB,SAAS;AAC7C,WAAA;AAAA,WACF;AACL,WAAO;EACX;AACJ;AAEa,MAAA,gCAAgC,CAAO,cAAyB;AACnE,QAAA,QAAQ,MAAM,aAAa,SAAS;AAC1C,QAAM,CAAE,CAAA;AACR,SAAO;AACX;AAEa,MAAA,kBAAkB,CAAC,WAAsB,SAAgC;AAClF,QAAM,EAAE,YAAY;AACpB,QAAM,EAAE,WAAW,UAAU,IAAI,SAAS;AAC1C,SAAO,SAAS,4BAA4B,EAAE,QAAS,CAAA;AAC3D;ACxCA,MAAM,yBAAyB,CAAC,cAA2C;AACvE,MAAI,YAAsB,CAAA;AAC1B,QAAM,aAAa,MAAM;AACrB,6BAAyB,SAAS,EAAE,KAAK,CAAC,UAAU;AACpC,kBAAA;AAAA,IAAA,CACf;AAAA,EAAA;AAGL,QAAM,MAAM,MAAM;AACP,WAAA;AAAA,EAAA;AAGL,QAAA,MAAM,CAAO,YAAoB;AACnC,UAAM,UAAU,MAAM,qBAAqB,SAAS,SAAS;AACjD,gBAAA;AACI,oBAAA,WAAW,EAAE,QAAA,CAAS;AAC/B,WAAA;AAAA,EAAA;AAGX,QAAM,QAAQ,MAAY;AAChB,UAAA,UAAU,MAAM,8BAA8B,SAAS;AACjD,gBAAA;AACI,oBAAA,WAAW,EAAE,QAAA,CAAS;AAC/B,WAAA;AAAA,EAAA;AAGL,QAAA,SAAS,CAAO,YAAoB;AACtC,UAAM,UAAU,MAAM,0BAA0B,SAAS,SAAS;AACtD,gBAAA;AACI,oBAAA,WAAW,EAAE,QAAA,CAAS;AAC/B,WAAA;AAAA,EAAA;AAGA;AACJ,SAAA;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAER;AClDA,MAAqB,uBAAuB,OAAO;AAAA,EAG/C,YAAY,WAA6B,UAAkC;AACvE,UAAM,SAAS;AADsB,SAAA,WAAA;AAGhC,SAAA,UAAU,uBAAuB,SAAS;AACrC,cAAA,SAAS,aAAa,KAAK,OAAO;AAAA,EAChD;AACJ;ACXA,MAAM,iBAAiB,CAAC,QAAgB;AAC9B,QAAA,SAAS,SAAS,cAAc,GAAG;AACzC,SAAO,OAAO;AACd,SAAO,KAAK,OAAO;AACvB;AAWA,MAAqB,8BAA8B,OAAO;AAAA,EACtD,YAAY,WAAsB,WAAqB,IAAI;AACvD,UAAM,SAAS;AACf,SAAK,OAAO,OAAO,cAAc,mBAAmB,MAAM;;AAChD,YAAA;AAAA,QACF,MAAM,EAAE;AAAA,UACR,KAAK,UAAU,IAAI,WAAW;AAElC,UAAI,YAAY;AACN,cAAA,OAAO,eAAe,UAAU;AAChC,cAAA,SAAS,IAAI;AACZ,eAAA,IACH,GAAG,+EACP;AACA,eAAO,IAAI,GAAG,OAAO,WAAK,UAAU,WAAf,mBAAuB,kBAAkB;AAC9D,eAAO,KAAK;AAAA,MAChB;AAEM,YAAA,EAAE,aAAa,OAAO;AAE5B,UAAI,WAAW,QAAQ;AACb,cAAA,QAAQ,SAAS,cAAc,OAAO;AAC5C,cAAM,YAAY;AACT,iBAAA,KAAK,YAAY,KAAK;AAAA,MACnC;AAAA,IAAA,CACH;AAAA,EACL;AACJ;ACrCA,IAAA,sCAAe,CAAO,WAAsB,aAAuB;AAC/D,QAAM,EAAE,iCAAiC;AAEzC,MAAI,8BAA8B;AACxB,UAAA,SAAS,IAAI,OAAO,4BAA4B;AAEtC,oBAAA,WAAW,gBAAgB,CAAC,cAAc;AACtD,gBAAU,WAAW,CAAC,EAAE,iBAAiB,CAAS,QAAA;AACxC,cAAA,uBAAuB,eAAe,OAAO,CAAC,EAAE,iBAClD,OAAO,KAAK,UAAU,CAC1B;AAEA,YAAI,qBAAqB,QAAQ;AACR,+BAAA,QAAQ,CAAC,OAAY;AACtC,eAAG,WAAW;AACd,eAAG,SAAS;AAAA,UAAA,CACf;AAED,iBAAO,EAAE,eAAe;AAAA,QAC5B;AAAA,MAAA,CACH;AAAA,IAAA,CACJ;AAAA,EACL;AAEA,SAAO;AACX;AC5BA,MAAM,cAAc;AAMpB,IAAA,uCAAe,CAAO,WAAsB,aAAuB;AACzD,QAAA,iBAAiB,CAAC,YAAoB,kBAAuB;AAC/D,WAAO,UAAU,SAAS,YAAY,EAAE,KAAK,CAAC,eAAe;AAClD,aAAA,WACF,MAAM,SAAS,yBAAyB,CAAA,CAAE,EAC1C,KAAK,CAAC,WAA2B;AAC9B,YAAI,QAAQ;AACR,gBAAM,EAAE,aAAa,CAAI,GAAA,iBAAiB,CAAO,MAAA;AAEjD,cAAI,kBAAkB,MAAM;AACxB,4BAAgB,WAAW,WAAW,KAAK,eAAe,WAAW;AACrE,mBAAO,oBACH,WAAW,WACX,aACA,gBAAgB,UACpB,EAAE,KAAK,CAAC,UAAU,MAAM,aAAa,CAAC;AAAA,UAC1C;AAAA,QACJ;AAAA,MAAA,CACH;AAAA,IAAA,CACR;AAAA,EAAA;AAGL,QAAM,EAAE,WAAW,UAAU,IAAI,SAAS;AAC1C,SAAO,UAAU,+BAA+B,CAAO,OAAY,SAAc;AAC7E,QAAI,MAAM,OAAO,UAAU,eAAe,KAAK,SAAS,QAAQ;AAC5D,YAAM,EAAE,kCAAkC;AAEtC,UAAA;AAEE,YAAA,SAAiB,UAAU,IAAI,SAAS;AACxC,YAAA,EAAE,MAAM,mBAAmB;AAE7B,UAAA,KAAK,SAAS,UAAU,GAAG;AAC3B,qBAAa,eAAe,QAAQ,IAAI,KAAK,QAAQ,YAAY,EAAE,CAAC;AAAA,MAC7D,WAAA,CAAC,KAAK,SAAS,iBAAiB,GAAG;AAC7B,qBAAA;AAAA,MACjB;AAEA,UAAI,YAAY;AACZ,YAAI,gBAAgC;AACpC,cAAM,sBAAsB,MAAM,YAC9B,WAAW,WACX,WACJ;AAEA,cAAM,oBAAuC,MAAM,WAAW,UAAU,SACpE,YACJ;AACA,cAAM,gBAAgB,kBACjB,WAAA,EACA,OAAO,eAAe,EACtB;AAQD,YAAA,OAAO,wBAAwB,WAAW;AAC1B,0BAAA;AAAA,mBACT,+BAA+B;AAChC,gBAAA,eAAe,YAAY,aAAa;AAAA,QAClD;AAOI,YAAA,iCAAiC,OAAO,kBAAkB,WAAW;AACrE,cAAI,eAAe;AACD,0BAAA,QAAQ,SAAS,aAAa,KAAK;AAAA,UACrD;AAEA,wBAAc,QAAQ,MAAM,aAAa,CAAC,OAAM,SAAS;AACrD,gBAAI,iBAAiB,OAAM;AACvB,qBAAO,KAAK,KAAK;AAAA,YACrB;AAEA,mBAAO,KAAK,KAAI;AAAA,UAAA,CACnB;AAAA,QACL;AAAA,MACJ;AAAA,IACJ;AAAA,EAAA,EACH;AAED,SAAO;AACX;AChGA,MAAM,oBAAoB,CAAC,mBAAkC;AACzD,SAAO,eAAe,OAAO,CAAC,KAAK,YAAY;AAC3C,QAAI,KAAK;AACE,aAAA;AAAA,IACX;AAEM,UAAA,CAAC,WAAW,MAAM,KACpB,oCAAS,uBAAuB,oCAAmC,CAAA,CACvE;AAEA,QAAI,SAAS;AACF,aAAA;AAAA,IACX;AAEO,WAAA;AAAA,KACR,KAAK;AACZ;AAEA,MAAM,yBAAyB,CAAC,mBAAkC;AAC9D,SAAO,eAAe,OAAO,CAAC,KAAK,YAAY;AAC3C,QAAI,KAAK;AACE,aAAA;AAAA,IACX;AAEM,UAAA,CAAC,SAAS,MAAM,KAAK,oCAAS,qBAAqB,aAAY,CAAA,CAAE;AAEnE,QAAA,SAAS,UAAU,SAAS,eAAe;AACpC,aAAA;AAAA,IACX;AAEO,WAAA;AAAA,KACR,KAAK;AACZ;AAEA,MAAM,oBAAoB,MAAM;AACrB,SAAA,MAAM,KAAK,SAAS,iBAAiB,oCAAoC,CAAC,EAAE,OAEjF,CAAC,KAAK,YAAY;AAChB,UAAM,QAAQ,MAAM,KAAK,QAAQ,qBAAqB,GAAG,CAAC;AAC1D,UAAM,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC;AACzB,WAAA;AAAA,EACX,GAAG,CAAE,CAAA;AACT;AAKA,IAAA,2CAAe,CAAO,WAAsB,aAAuB;AACzD,QAAA,EAAE,sCAAsC,UAAU;AAExD,MAAI,qCAAqC;AACrC,WAAO,UAAU,SAAS,YAAY,EAAE,KAAK,CAAC,aAAgC;AACpE,YAAA;AAAA,QACF,OAAO,EAAE;AAAA,UACT;AAEJ,YAAM,qBAAqB,IAAI,OAAO,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE;AAEjF,YAAM,YAAwB,CAAA;AAE9B,gBAAU,KAAK;AAAA,QACX,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,SAAS,CAAC,MAAqB;;AAC3B,gBAAM,0BAAyC,CAAA;AAC5B,6BAAA,QAAQ,CAAC,OAAO;AACzB,kBAAA,UAAU,SAAS,eAAe,EAAE;AAC1C,gBAAI,SAAS;AACT,sCAAwB,KAAK,OAAO;AAAA,YACxC;AAAA,UAAA,CACH;AACK,gBAAA,0BAA0B,kBAAkB,uBAAuB;AACnE,gBAAA,yBAAyB,uBAAuB,uBAAuB;AAC7E,gBAAM,iBAAiB;AACvB,gBAAM,0BAA0B,eAAe,QAC3C,SAAS,aACb;AAGK,cAAA,GAAE,QAAQ,eAAe,EAAE,QAAQ,cACnC,2BAA0B,0BAA0B,KACvD;AACE,cAAE,eAAe;AAAA,UACrB;AAEA,cACI,EAAE,QAAQ,eACV,0BACA,CAAC,yBACH;AACE,2BAAe,GAAG;UAAM,OACrB;AACH,gBAAI,EAAE,QAAQ,aAAa,4BAA4B,GAAG;AACtD,kDAAwB,OAAxB,mBAA4B,qBAAqB,SAAS,OAA1D,mBAA8D;AAAA,YAAM,WAC7D,EAAE,QAAQ,aAAa,0BAA0B,IAAI;AAC7C,mCAAA,0BAA0B,OAA1B,mBAA8B;AAAA,YAAM,WAC5C,EAAE,QAAQ,eAAe,0BAA0B,IAAI;AAC/C,mCAAA,0BAA0B,OAA1B,mBAA8B;AAAA,YACjD;AAAA,UACJ;AAAA,QACJ;AAAA,MAAA,CACH;AAEM,aAAA;AAAA,IAAA,CACV;AAAA,EACL;AAEO,SAAA,QAAQ,QAAQ,CAAA,CAAE;AAC7B;AC9FA,MAAqB,2BAA2B,OAAO;AAAA,EAGnD,YAAY,WAA6B,WAAqB,IAAI;AAC9D,UAAM,SAAS;AADsB,SAAA,WAAA;AAFzC,SAAA,YAAwB;EAIxB;AAAA,EAEA,AAAM,aAAa;AAAA;AACV,WAAA,YAAY,MAAM,QAAQ,IAAI;AAAA,QAC/B,QAAQ,QAAQ,qCAAqC,KAAK,WAAW,KAAK,QAAQ,CAAC;AAAA,QACnF,QAAQ,QAAQ,oCAAoC,KAAK,WAAW,KAAK,QAAQ,CAAC;AAAA,QAClF,QAAQ,QACJ,yCAAyC,KAAK,WAAW,KAAK,QAAQ,CAC1E;AAAA,MAAA,CACH,EAAE,KAAK,CAAC,kBAAkB;AACvB,cAAM,YAAwB,CAAA;AAChB,sBAAA,QAAQ,CAAC,MAAO,EAAiB,QAAQ,CAAC,MAAM,UAAU,KAAK,CAAC,CAAC,CAAC;AAEhF,kBAAU,QAAQ,CAAC,EAAE,QAAQ,MAAM,cAAc;AACtC,iBAAA,iBAAiB,MAAM,OAAO;AAAA,QAAA,CACxC;AAEM,eAAA;AAAA,MAAA,CACV;AAAA,IACL;AAAA;AAAA,EAEA,aAAa;AACJ,SAAA,UAAU,QAAQ,CAAC,aAAa;AAC3B,YAAA,EAAE,QAAQ,SAAS,SAAS;AAC3B,aAAA,oBAAoB,MAAM,OAAO;AAAA,IAAA,CAC3C;AAAA,EACL;AACJ;;"}
File without changes
File without changes
File without changes
package/package.json CHANGED
@@ -1,39 +1,38 @@
1
1
  {
2
2
  "name": "@telia-ace/knowledge-widget-plugins",
3
- "version": "1.0.12",
3
+ "version": "1.0.15",
4
4
  "description": "Plugins for ACE Knowledge Widgets.",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "author": "Telia Company AB",
7
7
  "keywords": [
8
8
  "telia"
9
9
  ],
10
- "main": "lib/index.js",
11
- "module": "lib-esm/index.js",
10
+ "module": "dist/index.js",
11
+ "types": "dist/index.d.ts",
12
12
  "files": [
13
13
  "LICENSE.txt",
14
14
  "README.md",
15
- "lib/",
16
- "lib-esm/"
15
+ "dist/"
17
16
  ],
18
17
  "publishConfig": {
19
18
  "access": "public"
20
19
  },
21
20
  "scripts": {
22
- "clean": "cleandir lib && cleandir lib-esm",
23
- "compile": "tsc -p tsconfig.cjs.json && tsc -p tsconfig.esm.json"
21
+ "clean": "rimraf ./dist",
22
+ "precompile": "tsc -emitDeclarationOnly",
23
+ "compile": "vite build"
24
24
  },
25
25
  "sideEffects": false,
26
- "typings": "lib/index.d.ts",
27
26
  "dependencies": {
28
27
  "@telia-ace/knowledge-resource-loader": "^1.0.0",
29
- "@telia-ace/knowledge-widget-adapters": "^1.0.11",
30
- "@telia-ace/knowledge-widget-core": "^1.0.6",
31
- "@telia-ace/knowledge-widget-types-grid": "^1.0.11",
32
- "@telia-ace/knowledge-widget-ui": "^1.0.8",
33
- "@telia-ace/widget-routing": "^1.0.5",
34
- "@telia-ace/widget-services": "^1.0.4",
28
+ "@telia-ace/knowledge-widget-adapters": "^1.0.14",
29
+ "@telia-ace/knowledge-widget-core": "^1.0.7",
30
+ "@telia-ace/knowledge-widget-types-grid": "^1.0.14",
31
+ "@telia-ace/knowledge-widget-ui": "^1.0.11",
32
+ "@telia-ace/widget-routing": "^1.0.6",
33
+ "@telia-ace/widget-services": "^1.0.5",
35
34
  "@telia-ace/widget-utilities": "^1.0.1",
36
35
  "@webprovisions/platform": "^1.1.2"
37
36
  },
38
- "gitHead": "5c7beb5d15b048dfc70489486ae597f891f1d691"
37
+ "gitHead": "97a688fe894038d305e52cde3d2ca25b0eae8651"
39
38
  }
@@ -1,9 +0,0 @@
1
- import { Container } from '@webprovisions/platform';
2
- export declare type FavoritePlatform = {
3
- add: (guideId: string) => Promise<string[]>;
4
- remove: (guideId: string) => Promise<string[]>;
5
- clear: () => Promise<string[]>;
6
- get: () => string[];
7
- };
8
- declare const createFavoritePlatform: (container: Container) => FavoritePlatform;
9
- export default createFavoritePlatform;
@@ -1,97 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (_) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- var utils_1 = require("./utils");
40
- var createFavoritePlatform = function (container) {
41
- var favorites = [];
42
- var initialize = function () {
43
- (0, utils_1.readFavoritesFromStorage)(container).then(function (items) {
44
- favorites = items;
45
- });
46
- };
47
- var get = function () {
48
- return favorites;
49
- };
50
- var add = function (guideId) { return __awaiter(void 0, void 0, void 0, function () {
51
- var updated;
52
- return __generator(this, function (_a) {
53
- switch (_a.label) {
54
- case 0: return [4 /*yield*/, (0, utils_1.addFavoriteToStorage)(guideId, container)];
55
- case 1:
56
- updated = _a.sent();
57
- favorites = updated;
58
- (0, utils_1.notifyListeners)(container, { updated: updated });
59
- return [2 /*return*/, updated];
60
- }
61
- });
62
- }); };
63
- var clear = function () { return __awaiter(void 0, void 0, void 0, function () {
64
- var updated;
65
- return __generator(this, function (_a) {
66
- switch (_a.label) {
67
- case 0: return [4 /*yield*/, (0, utils_1.removeAllFavoritesFromStorage)(container)];
68
- case 1:
69
- updated = _a.sent();
70
- favorites = updated;
71
- (0, utils_1.notifyListeners)(container, { updated: updated });
72
- return [2 /*return*/, updated];
73
- }
74
- });
75
- }); };
76
- var remove = function (guideId) { return __awaiter(void 0, void 0, void 0, function () {
77
- var updated;
78
- return __generator(this, function (_a) {
79
- switch (_a.label) {
80
- case 0: return [4 /*yield*/, (0, utils_1.removeFavoriteFromStorage)(guideId, container)];
81
- case 1:
82
- updated = _a.sent();
83
- favorites = updated;
84
- (0, utils_1.notifyListeners)(container, { updated: updated });
85
- return [2 /*return*/, updated];
86
- }
87
- });
88
- }); };
89
- initialize();
90
- return {
91
- add: add,
92
- get: get,
93
- clear: clear,
94
- remove: remove,
95
- };
96
- };
97
- exports.default = createFavoritePlatform;
@@ -1,9 +0,0 @@
1
- import { Plugin } from '@telia-ace/knowledge-widget-core';
2
- import { Container } from '@webprovisions/platform';
3
- import { FavoritePlatform } from './favorite-platform';
4
- export declare type FavoritePluginSettings = {};
5
- export default class FavoritePlugin extends Plugin {
6
- settings: FavoritePluginSettings;
7
- handler: FavoritePlatform;
8
- constructor(container: Container, settings: FavoritePluginSettings);
9
- }
@@ -1,34 +0,0 @@
1
- "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- if (typeof b !== "function" && b !== null)
11
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
- extendStatics(d, b);
13
- function __() { this.constructor = d; }
14
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
- };
16
- })();
17
- var __importDefault = (this && this.__importDefault) || function (mod) {
18
- return (mod && mod.__esModule) ? mod : { "default": mod };
19
- };
20
- Object.defineProperty(exports, "__esModule", { value: true });
21
- var knowledge_widget_core_1 = require("@telia-ace/knowledge-widget-core");
22
- var favorite_platform_1 = __importDefault(require("./favorite-platform"));
23
- var FavoritePlugin = /** @class */ (function (_super) {
24
- __extends(FavoritePlugin, _super);
25
- function FavoritePlugin(container, settings) {
26
- var _this = _super.call(this, container) || this;
27
- _this.settings = settings;
28
- _this.handler = (0, favorite_platform_1.default)(container);
29
- container.register('favorites', _this.handler);
30
- return _this;
31
- }
32
- return FavoritePlugin;
33
- }(knowledge_widget_core_1.Plugin));
34
- exports.default = FavoritePlugin;
@@ -1,2 +0,0 @@
1
- import FavoritePlugin from './favorite';
2
- export default FavoritePlugin;
@@ -1,7 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- var favorite_1 = __importDefault(require("./favorite"));
7
- exports.default = favorite_1.default;
@@ -1,8 +0,0 @@
1
- import { Container } from '@webprovisions/platform';
2
- export declare const addFavoriteToStorage: (guideId: string, container: Container) => Promise<string[]>;
3
- export declare const removeFavoriteFromStorage: (guideId: string, container: Container) => Promise<string[]>;
4
- export declare const readFavoritesFromStorage: (container: Container) => Promise<string[]>;
5
- export declare const removeAllFavoritesFromStorage: (container: Container) => Promise<never[]>;
6
- export declare const notifyListeners: (container: Container, data: {
7
- updated: string[];
8
- }) => void;