@telia-ace/widget-utilities 1.0.5-next.3 → 1.0.5-next.5

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/dist/index.js CHANGED
@@ -1,18 +1,18 @@
1
- var z = Object.defineProperty;
2
- var T = Object.getOwnPropertySymbols;
3
- var W = Object.prototype.hasOwnProperty, I = Object.prototype.propertyIsEnumerable;
4
- var M = (o, t, e) => t in o ? z(o, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : o[t] = e;
5
- var E = (o, t) => {
1
+ var I = Object.defineProperty;
2
+ var x = Object.getOwnPropertySymbols;
3
+ var U = Object.prototype.hasOwnProperty, z = Object.prototype.propertyIsEnumerable;
4
+ var V = (o, t, e) => t in o ? I(o, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : o[t] = e;
5
+ var T = (o, t) => {
6
6
  var e = {};
7
7
  for (var r in o)
8
- W.call(o, r) && t.indexOf(r) < 0 && (e[r] = o[r]);
9
- if (o != null && T)
10
- for (var r of T(o))
11
- t.indexOf(r) < 0 && I.call(o, r) && (e[r] = o[r]);
8
+ U.call(o, r) && t.indexOf(r) < 0 && (e[r] = o[r]);
9
+ if (o != null && x)
10
+ for (var r of x(o))
11
+ t.indexOf(r) < 0 && z.call(o, r) && (e[r] = o[r]);
12
12
  return e;
13
13
  };
14
- var a = (o, t, e) => (M(o, typeof t != "symbol" ? t + "" : t, e), e);
15
- function V(o) {
14
+ var u = (o, t, e) => (V(o, typeof t != "symbol" ? t + "" : t, e), e);
15
+ function W(o) {
16
16
  const t = [];
17
17
  return o.forEach((e) => {
18
18
  t.indexOf(e) === -1 && t.push(e);
@@ -20,9 +20,9 @@ function V(o) {
20
20
  }
21
21
  function w(o = "", t = "") {
22
22
  const e = o.split(" ").concat(t.split(" "));
23
- return V(e).join(" ").trim();
23
+ return W(e).join(" ").trim();
24
24
  }
25
- function Y(o, t) {
25
+ function L(o, t) {
26
26
  if (Boolean(o)) {
27
27
  if (typeof t == "string")
28
28
  return t;
@@ -32,27 +32,27 @@ function Y(o, t) {
32
32
  }
33
33
  }
34
34
  }
35
- function Q(...o) {
35
+ function ot(...o) {
36
36
  let t = "";
37
37
  return o.length && o.forEach((e) => {
38
- typeof e == "string" ? t = w(t, e) : Array.isArray(e) ? t = w(t, Y(...e)) : typeof e != "undefined" && e !== null && process.env.NODE_ENV !== "production" && p.warn(
38
+ typeof e == "string" ? t = w(t, e) : Array.isArray(e) ? t = w(t, L(...e)) : typeof e != "undefined" && e !== null && process.env.NODE_ENV !== "production" && p.warn(
39
39
  "appendClassNames: arguments either haveto be a string or [boolean, ...string[]]. Passed args:",
40
40
  ...o
41
41
  );
42
42
  }), t;
43
43
  }
44
- const H = (o, t) => {
44
+ const M = (o, t) => {
45
45
  let e, r = [];
46
- return (i) => (clearTimeout(e), new Promise((n, c) => {
47
- r.push([i, n, c]), e = setTimeout(() => {
46
+ return (i) => (clearTimeout(e), new Promise((n, a) => {
47
+ r.push([i, n, a]), e = setTimeout(() => {
48
48
  let f = t();
49
- r.forEach(([u, g, d]) => {
50
- f = u(f);
49
+ r.forEach(([c, g, d]) => {
50
+ f = c(f);
51
51
  }), r = [], n(f);
52
52
  }, o);
53
53
  }));
54
- };
55
- function j(o) {
54
+ }, rt = M;
55
+ function N(o) {
56
56
  const t = {};
57
57
  if (typeof o == "number" || typeof o == "string")
58
58
  return o;
@@ -61,29 +61,29 @@ function j(o) {
61
61
  const r = o[e], i = e.substring(0, 1).toLowerCase() + e.substring(1);
62
62
  if (Object.prototype.toString.call(r) === "[object Array]") {
63
63
  t[i] = [];
64
- for (let n = 0, c = r.length; n < c; n++)
65
- t[i].push(j(r[n]));
64
+ for (let n = 0, a = r.length; n < a; n++)
65
+ t[i].push(N(r[n]));
66
66
  } else
67
- r !== null && typeof r == "object" ? t[i] = j(r) : t[i] = r;
67
+ r !== null && typeof r == "object" ? t[i] = N(r) : t[i] = r;
68
68
  }
69
69
  return t;
70
70
  }
71
- function N(o = {}) {
72
- const x = o, {
71
+ function E(o = {}) {
72
+ const O = o, {
73
73
  phrase: t = "",
74
74
  category: e,
75
75
  guideCategory: r,
76
76
  contactCategory: i,
77
77
  take: n,
78
- connectionKey: c,
78
+ connectionKey: a,
79
79
  accordion: f,
80
- id: u,
80
+ id: c,
81
81
  uriName: g,
82
82
  sorting: d,
83
83
  tag: m,
84
84
  tagId: l,
85
85
  tagTitle: y
86
- } = x, D = E(x, [
86
+ } = O, B = T(O, [
87
87
  "phrase",
88
88
  "category",
89
89
  "guideCategory",
@@ -98,9 +98,9 @@ function N(o = {}) {
98
98
  "tagId",
99
99
  "tagTitle"
100
100
  ]), s = {};
101
- return Object.keys(D).forEach((k) => {
102
- typeof o[k] == "string" && (s[k] = o[k]);
103
- }), typeof t == "string" && t.length && (s.phrase = t), t === null && (s.phrase = t), typeof r == "string" && r !== "0" && (s.guideCategory = r), typeof r == "number" && r !== 0 && (s.guideCategory = r), typeof r == "object" && r !== null && (typeof r.id == "string" && r.id !== "0" && (s.guideCategory = r.id), typeof r.id == "number" && r.id !== 0 && (s.guideCategory = r.id)), typeof i == "string" && i !== "0" && (s.contactCategory = i), typeof i == "number" && i !== 0 && (s.contactCategory = i), typeof i == "object" && i !== null && (typeof i.id == "string" && i.id !== "0" && (s.contactCategory = i.id), typeof i.id == "number" && i.id !== 0 && (s.contactCategory = i.id)), typeof e == "string" && e !== "0" && (s.category = e), typeof e == "number" && e !== 0 && (s.category = e), typeof e == "object" && e !== null && (typeof e.id == "string" && e.id !== "0" && (s.category = e.id), typeof e.id == "number" && e.id !== 0 && (s.category = e.id)), u && (s.id = u), g && (!!+s.category || !!+s.guideCategory || !!+s.guide || !!+s.contactCategory || !!+s.contactMethod) && (s.uriName = g), c && (s.connectionKey = c), n && (s.take = n), d && (s.sorting = d), typeof f == "string" && f.length > 0 && (s.accordion = f), typeof m == "string" && m !== "0" && (s.tag = m), typeof m == "number" && m !== 0 && (s.tag = m), (typeof l == "string" || typeof l == "number") && (s.tagId = l), typeof y == "string" && (s.tagTitle = y), s;
101
+ return Object.keys(B).forEach((v) => {
102
+ typeof o[v] == "string" && (s[v] = o[v]);
103
+ }), typeof t == "string" && t.length && (s.phrase = t), t === null && (s.phrase = t), typeof r == "string" && r !== "0" && (s.guideCategory = r), typeof r == "number" && r !== 0 && (s.guideCategory = r), typeof r == "object" && r !== null && (typeof r.id == "string" && r.id !== "0" && (s.guideCategory = r.id), typeof r.id == "number" && r.id !== 0 && (s.guideCategory = r.id)), typeof i == "string" && i !== "0" && (s.contactCategory = i), typeof i == "number" && i !== 0 && (s.contactCategory = i), typeof i == "object" && i !== null && (typeof i.id == "string" && i.id !== "0" && (s.contactCategory = i.id), typeof i.id == "number" && i.id !== 0 && (s.contactCategory = i.id)), typeof e == "string" && e !== "0" && (s.category = e), typeof e == "number" && e !== 0 && (s.category = e), typeof e == "object" && e !== null && (typeof e.id == "string" && e.id !== "0" && (s.category = e.id), typeof e.id == "number" && e.id !== 0 && (s.category = e.id)), c && (s.id = c), g && (!!+s.category || !!+s.guideCategory || !!+s.guide || !!+s.contactCategory || !!+s.contactMethod) && (s.uriName = g), a && (s.connectionKey = a), n && (s.take = n), d && (s.sorting = d), typeof f == "string" && f.length > 0 && (s.accordion = f), typeof m == "string" && m !== "0" && (s.tag = m), typeof m == "number" && m !== 0 && (s.tag = m), (typeof l == "string" || typeof l == "number") && (s.tagId = l), typeof y == "string" && (s.tagTitle = y), s;
104
104
  }
105
105
  function* S(o) {
106
106
  if (!!o)
@@ -109,13 +109,13 @@ function* S(o) {
109
109
  yield e, e.items && (yield* S(e.items));
110
110
  }
111
111
  }
112
- const B = (o, t) => {
112
+ const Y = (o, t) => {
113
113
  const e = S(t);
114
114
  let r = e.next(), i = null;
115
115
  for (; !r.done; )
116
116
  r.value.id === o && (i = r.value), r = e.next();
117
117
  return i;
118
- }, q = (o) => {
118
+ }, F = Y, K = (o) => {
119
119
  if (!o)
120
120
  return "";
121
121
  const t = [
@@ -213,86 +213,86 @@ const B = (o, t) => {
213
213
  for (const n in t)
214
214
  t.hasOwnProperty(n) && t[n].from.test(o) && (i = i.replace(t[n].from, t[n].to));
215
215
  return i = i.replace(e, "-"), i = i.replace(r, ""), i = i.toLowerCase(), i || "humany";
216
- };
217
- function P(o, t = {}, e) {
216
+ }, j = K;
217
+ function D(o, t = {}, e) {
218
218
  return o.forEach((r) => {
219
- e && (t[+r.id] = e), r.items && P(r.items, t, r.id);
219
+ e && (t[+r.id] = e), r.items && D(r.items, t, r.id);
220
220
  }), t;
221
221
  }
222
- function F(o, t, e = [o], r = P(t)) {
223
- const i = (c) => {
224
- const f = r[+c];
222
+ function Z(o, t, e = [o], r = D(t)) {
223
+ const i = (a) => {
224
+ const f = r[+a];
225
225
  f && (e.unshift(f), i(f));
226
226
  }, n = r[+o];
227
227
  return n && (e.unshift(n), i(n)), e;
228
228
  }
229
- const K = (o, t) => typeof o == "undefined" || typeof t == "undefined" ? /* @__PURE__ */ new Map() : new Map(
229
+ const J = (o, t) => typeof o == "undefined" || typeof t == "undefined" ? /* @__PURE__ */ new Map() : new Map(
230
230
  o.map((e) => {
231
- const r = B(e, t);
231
+ const r = F(e, t);
232
232
  return [e, r];
233
233
  })
234
- ), G = (o, t, e, r = "guide-categories") => e.getAsync("dataClient").then((i) => i.fetch(r, { expandCategories: "descendants" }).then(({ categories: n }) => {
235
- const c = (f) => {
236
- const u = F(f, n), g = K(u, n), d = [];
237
- return u.forEach((m) => {
234
+ ), it = (o, t, e, r = "guide-categories") => e.getAsync("dataClient").then((i) => i.fetch(r, { expandCategories: "descendants" }).then(({ categories: n }) => {
235
+ const a = (f) => {
236
+ const c = Z(f, n), g = J(c, n), d = [];
237
+ return c.forEach((m) => {
238
238
  const l = g.get(m);
239
239
  l && d.push({
240
240
  routeName: o,
241
241
  title: l.title,
242
242
  symbol: l.symbol,
243
243
  id: l.id,
244
- routeParams: N(r === "contact-method-categories" ? {
244
+ routeParams: E(r === "contact-method-categories" ? {
245
245
  contactCategory: l.id,
246
- uriName: q(l.title)
246
+ uriName: j(l.title)
247
247
  } : {
248
248
  guideCategory: l.id,
249
- uriName: q(l.title)
249
+ uriName: j(l.title)
250
250
  })
251
251
  });
252
252
  }), d;
253
253
  };
254
- return Array.isArray(t) ? t.reduce((f, u) => {
255
- const g = c(u);
254
+ return Array.isArray(t) ? t.reduce((f, c) => {
255
+ const g = a(c);
256
256
  return g.length > 0 && f.push(g), f;
257
- }, []) : c(t);
258
- })), R = (o) => {
257
+ }, []) : a(t);
258
+ })), Q = (o) => {
259
259
  let t, e;
260
260
  o.split(",")[0].indexOf("base64") !== -1 ? t = atob(o.split(",")[1]) : t = decodeURI(o.split(",")[1]), e = o.split(",")[0].split(":")[1].split(";")[0];
261
261
  const r = [];
262
262
  for (let i = 0; i < t.length; i++)
263
263
  r[i] = t.charCodeAt(i);
264
264
  return new Blob([new Uint8Array(r)], { type: e });
265
- };
266
- function _(...o) {
265
+ }, nt = Q;
266
+ function st(...o) {
267
267
  return process.env.NODE_ENV !== "production" && console && console.warn(...o);
268
268
  }
269
269
  const C = (o, t, ...e) => typeof t == "string" ? o(`[humany] ${t}`, ...e) : o(t, ...e), b = class {
270
270
  constructor() {
271
- a(this, "keys", []);
272
- a(this, "log", (t, ...e) => this.lookup(t, () => b.log(...e)));
273
- a(this, "warn", (t, ...e) => this.lookup(t, () => b.warn(...e)));
274
- a(this, "error", (t, ...e) => this.lookup(t, () => b.error(...e)));
275
- a(this, "info", (t, ...e) => this.lookup(t, () => b.info(...e)));
271
+ u(this, "keys", []);
272
+ u(this, "log", (t, ...e) => this.lookup(t, () => b.log(...e)));
273
+ u(this, "warn", (t, ...e) => this.lookup(t, () => b.warn(...e)));
274
+ u(this, "error", (t, ...e) => this.lookup(t, () => b.error(...e)));
275
+ u(this, "info", (t, ...e) => this.lookup(t, () => b.info(...e)));
276
276
  }
277
277
  lookup(t, e) {
278
278
  this.keys.indexOf(t) === -1 && (this.keys.push(t), e());
279
279
  }
280
280
  };
281
281
  let p = b;
282
- a(p, "log", (...t) => C(console.log, ...t)), a(p, "warn", (...t) => C(console.warn, ...t)), a(p, "error", (...t) => C(console.error, ...t)), a(p, "info", (...t) => C(console.info, ...t));
283
- const O = (o) => {
282
+ u(p, "log", (...t) => C(console.log, ...t)), u(p, "warn", (...t) => C(console.warn, ...t)), u(p, "error", (...t) => C(console.error, ...t)), u(p, "info", (...t) => C(console.info, ...t));
283
+ const P = (o) => {
284
284
  let t = {}, e, r;
285
285
  if (typeof o != "object" || o === null)
286
286
  return o;
287
287
  t = Array.isArray(o) ? [] : {};
288
288
  for (r in o)
289
- e = o[r], t[r] = typeof e == "object" && e !== null ? O(e) : e;
289
+ e = o[r], t[r] = typeof e == "object" && e !== null ? P(e) : e;
290
290
  return t;
291
- }, X = (o) => {
291
+ }, q = P, ft = (o) => {
292
292
  if (!o)
293
293
  return null;
294
294
  const t = localStorage.getItem(
295
- `humany_${L(o.tenant + o.name)}`
295
+ `humany_${R(o.tenant + o.name)}`
296
296
  );
297
297
  if (t) {
298
298
  const { activeStickyWidget: e } = JSON.parse(t);
@@ -304,17 +304,17 @@ const O = (o) => {
304
304
  ), document.body.appendChild(i);
305
305
  }
306
306
  }
307
- }, tt = (o, t = !1) => {
307
+ }, at = (o, t = !1) => {
308
308
  const e = new Date(o);
309
309
  let r = `${e.getMonth() + 1}`, i = `${e.getDate()}`;
310
310
  const n = e.getFullYear();
311
311
  if (r.length < 2 && (r = `0${r}`), i.length < 2 && (i = `0${i}`), t) {
312
- let c = `${e.getHours()}`, f = `${e.getMinutes()}`;
313
- return c.length < 2 && (c = `0${c}`), f.length < 2 && (f = `0${f}`), `${[n, r, i].join("-")} ${[c, f].join(":")}`;
312
+ let a = `${e.getHours()}`, f = `${e.getMinutes()}`;
313
+ return a.length < 2 && (a = `0${a}`), f.length < 2 && (f = `0${f}`), `${[n, r, i].join("-")} ${[a, f].join(":")}`;
314
314
  }
315
315
  return [n, r, i].join("-");
316
316
  };
317
- function et(o) {
317
+ function ct(o) {
318
318
  const t = document.cookie;
319
319
  if (t.length > 0) {
320
320
  let e = t.indexOf(`${o}=`);
@@ -326,7 +326,7 @@ function et(o) {
326
326
  }
327
327
  return null;
328
328
  }
329
- function L(o) {
329
+ function R(o) {
330
330
  let t = 0;
331
331
  if (o.length === 0)
332
332
  return t.toString();
@@ -336,7 +336,7 @@ function L(o) {
336
336
  }
337
337
  return t.toString();
338
338
  }
339
- const ot = (o, t) => {
339
+ const ut = (o, t) => {
340
340
  if (!o || !t)
341
341
  return !0;
342
342
  let e = t.parentNode, r = !1;
@@ -344,13 +344,13 @@ const ot = (o, t) => {
344
344
  e === o && (r = !0), e = e.parentNode;
345
345
  return r;
346
346
  };
347
- function rt(o) {
347
+ function lt(o) {
348
348
  return o.replace(/([a-z])([A-Z])/g, "$1-$2").replace(/\s+/g, "-").toLowerCase();
349
349
  }
350
- class U {
350
+ class H {
351
351
  constructor(t, e) {
352
- a(this, "tasks", []);
353
- a(this, "current", Promise.resolve());
352
+ u(this, "tasks", []);
353
+ u(this, "current", Promise.resolve());
354
354
  this.lockWarningTime = t, this.lockErrorTime = e, this.next = this.next.bind(this);
355
355
  }
356
356
  add(t, e, r, i) {
@@ -380,40 +380,40 @@ class U {
380
380
  }
381
381
  }
382
382
  const A = /* @__PURE__ */ new WeakMap();
383
- function it(o, t = 5e3, e = 1e3) {
384
- return A.has(o) || A.set(o, new U(t, e)), (r) => new Promise((i, n) => {
385
- const c = A.get(o);
386
- c.add(r, i, n, () => {
387
- c.tasks.length || A.delete(o);
383
+ function gt(o, t = 5e3, e = 1e3) {
384
+ return A.has(o) || A.set(o, new H(t, e)), (r) => new Promise((i, n) => {
385
+ const a = A.get(o);
386
+ a.add(r, i, n, () => {
387
+ a.tasks.length || A.delete(o);
388
388
  });
389
389
  });
390
390
  }
391
- const v = (o) => !!o && typeof o == "object" && !Array.isArray(o), nt = (o, ...t) => {
392
- const e = O(o), r = O(t);
391
+ const k = (o) => !!o && typeof o == "object" && !Array.isArray(o), G = (o, ...t) => {
392
+ const e = q(o), r = q(t);
393
393
  return $(e, ...r);
394
394
  }, $ = (o, ...t) => {
395
395
  if (!t.length)
396
396
  return o;
397
397
  const e = t.shift();
398
- if (v(o) && v(e))
398
+ if (k(o) && k(e))
399
399
  for (const r in e)
400
- v(e[r]) ? (o[r] || Object.assign(o, { [r]: {} }), $(o[r], e[r])) : Object.assign(o, { [r]: e[r] });
400
+ k(e[r]) ? (o[r] || Object.assign(o, { [r]: {} }), $(o[r], e[r])) : Object.assign(o, { [r]: e[r] });
401
401
  return $(o, ...t);
402
- }, Z = (o, t) => {
402
+ }, mt = G, _ = (o, t) => {
403
403
  const e = () => t.querySelectorAll("[data-loading=true]").length > 0, i = (() => {
404
- let c = !1;
404
+ let a = !1;
405
405
  return () => {
406
- if (c)
406
+ if (a)
407
407
  return;
408
408
  o.get("$widget").events.dispatch("widget:data-loaded", {
409
409
  element: t
410
- }), c = !0;
410
+ }), a = !0;
411
411
  };
412
412
  })();
413
413
  if (!e())
414
414
  return i();
415
- new MutationObserver((c, f) => {
416
- c.find(
415
+ new MutationObserver((a, f) => {
416
+ a.find(
417
417
  (g) => g.type === "attributes" && g.attributeName === "data-loading"
418
418
  ) && !e() && (f.disconnect(), i());
419
419
  }).observe(t, {
@@ -421,14 +421,14 @@ const v = (o) => !!o && typeof o == "object" && !Array.isArray(o), nt = (o, ...t
421
421
  childList: !0,
422
422
  subtree: !0
423
423
  });
424
- }, st = (o, t) => {
424
+ }, X = (o, t) => {
425
425
  o.get("$widget").container.getAsync("components").then((r) => {
426
426
  r.events.subscribeOnce("components:component-model-initialized", () => {
427
427
  let i = r.nodes.visible.reduce(
428
- (f, u) => (!u.name || !u.type || u.type === "view" || u.type === "root" || u.attributes.layout.size === "none" || t.querySelector(`[data-name="${u.name}"]`) || f.push(u.name), f),
428
+ (f, c) => (!c.name || !c.type || c.type === "view" || c.type === "root" || c.attributes.layout.size === "none" || t.querySelector(`[data-name="${c.name}"]`) || f.push(c.name), f),
429
429
  []
430
430
  ), n = !1;
431
- new MutationObserver((f, u) => {
431
+ new MutationObserver((f, c) => {
432
432
  f.forEach((g) => {
433
433
  if (g.addedNodes) {
434
434
  const d = Array.from(
@@ -437,7 +437,7 @@ const v = (o) => !!o && typeof o == "object" && !Array.isArray(o), nt = (o, ...t
437
437
  const y = l.getAttribute && l.getAttribute("data-name");
438
438
  return y && i.indexOf(y) > -1 && m.push(y), m;
439
439
  }, []);
440
- i = i.filter((m) => d.indexOf(m) === -1), !n && i.length === 0 && (n = !0, Z(o, t), u.disconnect());
440
+ i = i.filter((m) => d.indexOf(m) === -1), !n && i.length === 0 && (n = !0, _(o, t), c.disconnect());
441
441
  }
442
442
  });
443
443
  }).observe(t, {
@@ -450,10 +450,10 @@ const v = (o) => !!o && typeof o == "object" && !Array.isArray(o), nt = (o, ...t
450
450
  });
451
451
  });
452
452
  });
453
- }, ft = (o = {}) => (Object.keys(o).forEach((t) => {
453
+ }, dt = X, tt = (o = {}) => (Object.keys(o).forEach((t) => {
454
454
  (o[t] === null || typeof o[t] == "undefined") && delete o[t];
455
- }), o);
456
- function ct(o, t, e) {
455
+ }), o), ht = tt;
456
+ function pt(o, t, e) {
457
457
  let r = "";
458
458
  if (e) {
459
459
  const i = new Date();
@@ -461,28 +461,28 @@ function ct(o, t, e) {
461
461
  }
462
462
  document.cookie = `${o}=${t}${r}; path=/`;
463
463
  }
464
- const ut = (o, t) => {
464
+ const yt = (o, t) => {
465
465
  let e = !0;
466
- return Object.keys(o).length !== Object.keys(t).length || Object.keys(o).some((i) => !Object.keys(t).some((c) => i === c)) ? !1 : (Object.keys(o).forEach((i) => {
466
+ return Object.keys(o).length !== Object.keys(t).length || Object.keys(o).some((i) => !Object.keys(t).some((a) => i === a)) ? !1 : (Object.keys(o).forEach((i) => {
467
467
  if (e) {
468
- const n = typeof o[i] == "undefined" ? "" : o[i], c = typeof t[i] == "undefined" ? "" : t[i];
469
- e = n.toString() === c.toString();
468
+ const n = typeof o[i] == "undefined" ? "" : o[i], a = typeof t[i] == "undefined" ? "" : t[i];
469
+ e = n.toString() === a.toString();
470
470
  }
471
471
  }), e);
472
472
  }, h = () => Math.floor((1 + Math.random()) * 65536).toString(16).substring(1);
473
- function at() {
473
+ function bt() {
474
474
  return h() + h() + "-" + h() + "-" + h() + "-" + h() + "-" + h() + h() + h();
475
475
  }
476
- class lt {
476
+ class Ct {
477
477
  constructor(t) {
478
- a(this, "queue", []);
479
- a(this, "queueAttempt");
480
- a(this, "queueAttemptCalls", 0);
481
- a(this, "callCount", 5);
482
- a(this, "add", (t) => {
478
+ u(this, "queue", []);
479
+ u(this, "queueAttempt");
480
+ u(this, "queueAttemptCalls", 0);
481
+ u(this, "callCount", 5);
482
+ u(this, "add", (t) => {
483
483
  this.queue.push(t), this.queueAttempt = setInterval(this.processQueue, 1e3);
484
484
  });
485
- a(this, "processQueue", () => {
485
+ u(this, "processQueue", () => {
486
486
  if (this.queue.length > 0) {
487
487
  const t = [];
488
488
  this.queue.forEach((e, r) => {
@@ -497,31 +497,31 @@ class lt {
497
497
  }
498
498
  export {
499
499
  p as Logger,
500
- lt as WaitFor,
501
- Q as appendClassNames,
502
- G as buildCategoryTrail,
503
- j as camilize,
504
- F as categoryTrail,
505
- H as createBatch,
506
- N as createParams,
507
- R as dataURItoBlob,
508
- _ as debugLog,
509
- O as deepClone,
510
- X as findAndActivateStoredWidgets,
511
- B as findCategoryById,
512
- tt as formatDate,
513
- q as formatUrl,
514
- K as getCategoryTrailAsObjects,
515
- et as getCookie,
516
- L as hash,
517
- ot as htmlParentContains,
518
- rt as kebabCase,
519
- it as lock,
520
- nt as mergeDeep,
521
- st as notifyDataLoaded,
522
- ft as removeNullAndUndefinedValues,
523
- ct as setCookie,
524
- ut as shallowCompare,
525
- at as uuid
500
+ Ct as WaitFor,
501
+ ot as appendClassNames,
502
+ it as buildCategoryTrail,
503
+ N as camilize,
504
+ Z as categoryTrail,
505
+ rt as createBatch,
506
+ E as createParams,
507
+ nt as dataURItoBlob,
508
+ st as debugLog,
509
+ q as deepClone,
510
+ ft as findAndActivateStoredWidgets,
511
+ F as findCategoryById,
512
+ at as formatDate,
513
+ j as formatUrl,
514
+ J as getCategoryTrailAsObjects,
515
+ ct as getCookie,
516
+ R as hash,
517
+ ut as htmlParentContains,
518
+ lt as kebabCase,
519
+ gt as lock,
520
+ mt as mergeDeep,
521
+ dt as notifyDataLoaded,
522
+ ht as removeNullAndUndefinedValues,
523
+ pt as setCookie,
524
+ yt as shallowCompare,
525
+ bt as uuid
526
526
  };
527
527
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/append-class-names.ts","../src/batch.ts","../src/camilize.ts","../src/create-params.ts","../src/find-category-by-id.ts","../src/format-url.ts","../src/category-trail.ts","../src/data-uri-to-blob.ts","../src/debug.ts","../src/deep-clone.ts","../src/find-and-activate-stored-widgets.ts","../src/format-date.ts","../src/get-cookie.ts","../src/hash.ts","../src/html-parent-contains.ts","../src/kebab-case.ts","../src/lock.ts","../src/merge-deep.ts","../src/notify-data-loaded.ts","../src/remove-null-and-undefined-values.ts","../src/set-cookie.ts","../src/shallow-compare.ts","../src/uuid.ts","../src/wait-for.ts"],"sourcesContent":["import { Logger } from '.';\n\ntype ArgumentHandler = string | [boolean, string | string[]] | undefined;\n\nexport function uniqueClassArray(classNames: string[]) {\n const classArray: string[] = [];\n classNames.forEach((c) => {\n if (classArray.indexOf(c) === -1) {\n classArray.push(c);\n }\n });\n return classArray;\n}\n\nexport function append(className1 = '', className2 = '') {\n const classNames = className1.split(' ').concat(className2.split(' '));\n return uniqueClassArray(classNames).join(' ').trim();\n}\n\nexport function handleFunctionArgument(expression: boolean, classes: string | string[]) {\n if (Boolean(expression)) {\n if (typeof classes === 'string') {\n return classes;\n }\n if (Array.isArray(classes)) {\n let className = '';\n classes.forEach((c) => (className = append(className, c)));\n return className;\n }\n }\n}\n\nexport default function appendClassNames(...args: ArgumentHandler[]): string {\n let className: string = '';\n if (args.length) {\n args.forEach((argument: ArgumentHandler) => {\n if (typeof argument === 'string') {\n className = append(className, argument as string);\n } else if (Array.isArray(argument)) {\n className = append(className, handleFunctionArgument(...argument));\n } else if (typeof argument !== 'undefined' && argument !== null) {\n if (process.env.NODE_ENV !== 'production') {\n Logger.warn(\n 'appendClassNames: arguments either have' +\n 'to be a string or [boolean, ...string[]]. Passed args:',\n ...args\n );\n }\n }\n });\n }\n return className;\n}\n","export type BatchFunction<T> = (acc: T) => T;\nexport type Batch<T> = (fn: BatchFunction<T>) => Promise<T>;\n\nconst createBatch = <T>(delay: number, createFallback: () => T): Batch<T> => {\n let timeout: ReturnType<typeof setTimeout>;\n let queue: [BatchFunction<T>, (value: T | PromiseLike<T>) => void, (reason?: any) => void][] =\n [];\n\n return (fn: BatchFunction<T>): Promise<T> => {\n clearTimeout(timeout);\n return new Promise<T>((resolve, reject) => {\n queue.push([fn, resolve, reject]);\n timeout = setTimeout(() => {\n let acc = createFallback();\n queue.forEach(([fn, resolve, reject]) => {\n acc = fn(acc);\n });\n queue = [];\n resolve(acc);\n }, delay);\n });\n };\n};\n\nexport default createBatch;\n","export default function camilize(obj: any): any {\n const camilizedObject: any = {};\n if (typeof obj === 'number' || typeof obj === 'string') {\n return obj;\n }\n for (const prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n const p = obj[prop];\n const camilizedProp = prop.substring(0, 1).toLowerCase() + prop.substring(1);\n if (Object.prototype.toString.call(p) === '[object Array]') {\n camilizedObject[camilizedProp] = [];\n for (let i = 0, c = p.length; i < c; i++) {\n // tslint:disable-line no-increment-decrement\n camilizedObject[camilizedProp].push(camilize(p[i]));\n }\n } else if (p !== null && typeof p === 'object') {\n camilizedObject[camilizedProp] = camilize(p);\n } else {\n camilizedObject[camilizedProp] = p;\n }\n }\n }\n return camilizedObject;\n}\n","export type Input = {\n phrase?: string;\n category?: ParamValue;\n guideCategory?: ParamValue;\n contactCategory?: ParamValue;\n take?: number;\n connectionKey?: string;\n id?: string;\n uriName?: string;\n sorting?: string;\n tag?: string;\n tagId?: string | number;\n tagTitle?: string;\n} & { [key: string]: ParamValue };\n\nexport type ParamValue = string | number | any;\n\nexport type Params = { [key: string]: ParamValue };\n\nexport default function createParams(args: Input = {}): Params {\n const {\n phrase = '',\n category,\n guideCategory,\n contactCategory,\n take,\n connectionKey,\n accordion,\n id,\n uriName,\n sorting,\n tag,\n tagId,\n tagTitle,\n ...other\n } = args;\n const params: Params = {};\n\n Object.keys(other).forEach((k) => {\n if (typeof args[k] === 'string') {\n params[k] = args[k];\n }\n });\n\n if (typeof phrase === 'string' && phrase.length) {\n params.phrase = phrase;\n }\n\n if (phrase === null) {\n params.phrase = phrase;\n }\n\n if (typeof guideCategory === 'string' && guideCategory !== '0') {\n params.guideCategory = guideCategory;\n }\n if (typeof guideCategory === 'number' && guideCategory !== 0) {\n params.guideCategory = guideCategory;\n }\n if (typeof guideCategory === 'object' && guideCategory !== null) {\n if (typeof guideCategory.id === 'string' && guideCategory.id !== '0') {\n params.guideCategory = guideCategory.id;\n }\n if (typeof guideCategory.id === 'number' && guideCategory.id !== 0) {\n params.guideCategory = guideCategory.id;\n }\n }\n\n if (typeof contactCategory === 'string' && contactCategory !== '0') {\n params.contactCategory = contactCategory;\n }\n if (typeof contactCategory === 'number' && contactCategory !== 0) {\n params.contactCategory = contactCategory;\n }\n if (typeof contactCategory === 'object' && contactCategory !== null) {\n if (typeof contactCategory.id === 'string' && contactCategory.id !== '0') {\n params.contactCategory = contactCategory.id;\n }\n if (typeof contactCategory.id === 'number' && contactCategory.id !== 0) {\n params.contactCategory = contactCategory.id;\n }\n }\n\n if (typeof category === 'string' && category !== '0') {\n params.category = category;\n }\n if (typeof category === 'number' && category !== 0) {\n params.category = category;\n }\n if (typeof category === 'object' && category !== null) {\n if (typeof category.id === 'string' && category.id !== '0') {\n params.category = category.id;\n }\n if (typeof category.id === 'number' && category.id !== 0) {\n params.category = category.id;\n }\n }\n\n if (id) {\n params.id = id;\n }\n\n if (\n uriName &&\n (!!+params.category ||\n !!+params.guideCategory ||\n !!+params.guide ||\n !!+params.contactCategory ||\n !!+params.contactMethod)\n ) {\n params.uriName = uriName;\n }\n\n if (connectionKey) {\n params.connectionKey = connectionKey;\n }\n\n if (take) {\n params.take = take;\n }\n\n if (sorting) {\n params.sorting = sorting;\n }\n\n if (typeof accordion === 'string' && accordion.length > 0) {\n params.accordion = accordion;\n }\n\n if (typeof tag === 'string' && tag !== '0') {\n params.tag = tag;\n }\n if (typeof tag === 'number' && tag !== 0) {\n params.tag = tag;\n }\n\n if (typeof tagId === 'string' || typeof tagId === 'number') {\n params.tagId = tagId;\n }\n if (typeof tagTitle === 'string') {\n params.tagTitle = tagTitle;\n }\n\n return params;\n}\n","/**\n * Recursively find items\n * @param data Data to look in\n */\nfunction* processData(data: any[]): any {\n if (!data) {\n return;\n }\n\n // tslint:disable-next-line:no-increment-decrement\n for (let i = 0; i < data.length; i++) {\n const val = data[i];\n yield val;\n\n if (val.items) {\n yield* processData(val.items);\n }\n }\n}\n\n/**\n * Find a category by it's ID\n * @param id Id of category to find\n */\nconst findCategoryById = (id: string, categories: any) => {\n const it = processData(categories);\n let res = it.next();\n\n let found = null;\n\n while (!res.done) {\n if (res.value.id === id) {\n found = res.value;\n }\n\n res = it.next();\n }\n\n return found;\n};\n\nexport default findCategoryById;\n","const formatUrl = (url: string): string => {\n if (!url) {\n return '';\n }\n\n const replacements = [\n { from: /[äæǽ]+/gi, to: 'ae' },\n { from: /[öœ]+/gi, to: 'oe' },\n { from: /[ü]+/gi, to: 'ue' },\n { from: /[Ä]+/gi, to: 'Ae' },\n { from: /[Ü]+/gi, to: 'Ue' },\n { from: /[Ö]+/gi, to: 'Oe' },\n { from: /[ÀÁÂÃÄÅǺĀĂĄǍΑΆẢẠẦẪẨẬẰẮẴẲẶА]+/gi, to: 'A' },\n { from: /[àáâãåǻāăąǎªαάảạầấẫẩậằắẵẳặа]+/gi, to: 'a' },\n { from: /[Б]+/gi, to: 'B' },\n { from: /[б]+/gi, to: 'b' },\n { from: /[ÇĆĈĊČ]+/gi, to: 'C' },\n { from: /[çćĉċč]+/gi, to: 'c' },\n { from: /[Д]+/gi, to: 'D' },\n { from: /[д]+/gi, to: 'd' },\n { from: /[ÐĎĐΔ]+/gi, to: 'Dj' },\n { from: /[ðďđδ]+/gi, to: 'dj' },\n { from: /[ÈÉÊËĒĔĖĘĚΕΈẼẺẸỀẾỄỂỆЕЭ]+/gi, to: 'E' },\n { from: /[èéêëēĕėęěέεẽẻẹềếễểệеэ]+/gi, to: 'e' },\n { from: /[Ф]+/gi, to: 'F' },\n { from: /[ф]+/gi, to: 'f' },\n { from: /[ĜĞĠĢΓГҐ]+/gi, to: 'G' },\n { from: /[ĝğġģγгґ]+/gi, to: 'g' },\n { from: /[ĤĦ]+/gi, to: 'H' },\n { from: /[ĥħ]+/gi, to: 'h' },\n { from: /[ÌÍÎÏĨĪĬǏĮİΗΉΊΙΪỈỊИЫ]+/gi, to: 'I' },\n { from: /[ìíîïĩīĭǐįıηήίιϊỉịиыї]+/gi, to: 'i' },\n { from: /[Ĵ]+/gi, to: 'J' },\n { from: /[ĵ]+/gi, to: 'j' },\n { from: /[ĶΚК]+/gi, to: 'K' },\n { from: /[ķκк]+/gi, to: 'k' },\n { from: /[ĹĻĽĿŁΛЛ]+/gi, to: 'L' },\n { from: /[ĺļľŀłλл]+/gi, to: 'l' },\n { from: /[М]+/gi, to: 'M' },\n { from: /[м]+/gi, to: 'm' },\n { from: /[ÑŃŅŇΝН]+/gi, to: 'N' },\n { from: /[ñńņňʼnνн]+/gi, to: 'n' },\n { from: /[ÒÓÔÕŌŎǑŐƠØǾΟΌΩΏỎỌỒỐỖỔỘỜỚỠỞỢО]+/gi, to: 'O' },\n { from: /[òóôõōŏǒőơøǿºοόωώỏọồốỗổộờớỡởợо]+/gi, to: 'o' },\n { from: /[П]+/gi, to: 'P' },\n { from: /[п]+/gi, to: 'p' },\n { from: /[ŔŖŘΡР]+/gi, to: 'R' },\n { from: /[ŕŗřρр]+/gi, to: 'r' },\n { from: /[ŚŜŞȘŠΣС]+/gi, to: 'S' },\n { from: /[śŝşșšſσςс]+/gi, to: 's' },\n { from: /[ȚŢŤŦτТ]+/gi, to: 'T' },\n { from: /[țţťŧт]+/gi, to: 't' },\n { from: /[ÙÚÛŨŪŬŮŰŲƯǓǕǗǙǛŨỦỤỪỨỮỬỰУ]+/gi, to: 'U' },\n { from: /[ùúûũūŭůűųưǔǖǘǚǜυύϋủụừứữửựу]+/gi, to: 'u' },\n { from: /[ÝŸŶΥΎΫỲỸỶỴЙ]+/gi, to: 'Y' },\n { from: /[ýÿŷỳỹỷỵй]+/gi, to: 'y' },\n { from: /[В]+/gi, to: 'V' },\n { from: /[в]+/gi, to: 'v' },\n { from: /[Ŵ]+/gi, to: 'W' },\n { from: /[ŵ]+/gi, to: 'w' },\n { from: /[ŹŻŽΖЗ]+/gi, to: 'Z' },\n { from: /[źżžζз]+/gi, to: 'z' },\n { from: /[ÆǼ]+/gi, to: 'AE' },\n { from: /[ß]+/gi, to: 'ss' },\n { from: /[IJ]+/gi, to: 'IJ' },\n { from: /[ij]+/gi, to: 'ij' },\n { from: /[Œ]+/gi, to: 'OE' },\n { from: /[ƒ]+/gi, to: 'f' },\n { from: /[ξ]+/gi, to: 'ks' },\n { from: /[π]+/gi, to: 'p' },\n { from: /[β]+/gi, to: 'v' },\n { from: /[μ]+/gi, to: 'm' },\n { from: /[ψ]+/gi, to: 'ps' },\n { from: /[Ё]+/gi, to: 'Yo' },\n { from: /[ё]+/gi, to: 'yo' },\n { from: /[Є]+/gi, to: 'Ye' },\n { from: /[є]+/gi, to: 'ye' },\n { from: /[Ї]+/gi, to: 'Yi' },\n { from: /[Ж]+/gi, to: 'Zh' },\n { from: /[ж]+/gi, to: 'zh' },\n { from: /[Х]+/gi, to: 'Kh' },\n { from: /[х]+/gi, to: 'kh' },\n { from: /[Ц]+/gi, to: 'Ts' },\n { from: /[ц]+/gi, to: 'ts' },\n { from: /[Ч]+/gi, to: 'Ch' },\n { from: /[ч]+/gi, to: 'ch' },\n { from: /[Ш]+/gi, to: 'Sh' },\n { from: /[ш]+/gi, to: 'sh' },\n { from: /[Щ]+/gi, to: 'Shch' },\n { from: /[щ]+/gi, to: 'shch' },\n { from: /[ЪъЬь]+/gi, to: '' },\n { from: /[Ю]+/gi, to: 'Yu' },\n { from: /[ю]+/gi, to: 'yu' },\n { from: /[Я]+/gi, to: 'Ya' },\n { from: /[я]+/gi, to: 'ya' },\n ];\n\n const alphanumericExpression = /[^a-zA-Z0-9]+/g;\n const trailingDashExpression = /[-]$/;\n\n let parsed = url;\n\n for (const i in replacements) {\n if (replacements.hasOwnProperty(i) && replacements[i].from.test(url)) {\n parsed = parsed.replace(replacements[i].from, replacements[i].to);\n }\n }\n\n parsed = parsed.replace(alphanumericExpression, '-');\n parsed = parsed.replace(trailingDashExpression, '');\n parsed = parsed.toLowerCase();\n\n return parsed || 'humany';\n};\n\nexport default formatUrl;\n","import { Container } from '@webprovisions/platform';\nimport createParams from './create-params';\nimport { default as findCategoryById } from './find-category-by-id';\nimport formatUrl from './format-url';\n\ntype Item = { id: string; items?: Item[]; title: string; symbol?: any };\n\ntype ChildParentStructure = {\n [key: number]: string;\n};\n\nfunction childParentStructure(\n items: Item[],\n structure: ChildParentStructure = {},\n parent?: string\n) {\n items.forEach((item: Item) => {\n if (parent) {\n structure[+item.id] = parent;\n }\n if (item.items) {\n childParentStructure(item.items, structure, item.id);\n }\n });\n return structure;\n}\n\nexport function categoryTrail(\n id: string,\n items: Item[],\n ids: string[] = [id],\n structure: ChildParentStructure = childParentStructure(items)\n): string[] {\n const addAncestors = (id: string) => {\n const parentId = structure[+id];\n if (parentId) {\n ids.unshift(parentId);\n addAncestors(parentId);\n }\n };\n\n const parentId = structure[+id];\n if (parentId) {\n ids.unshift(parentId);\n addAncestors(parentId);\n }\n\n return ids;\n}\n\nexport const getCategoryTrailAsObjects = (\n trail: string[],\n categories: Item[]\n): Map<string, Item> => {\n if (typeof trail === 'undefined' || typeof categories === 'undefined') {\n return new Map();\n }\n\n return new Map(\n trail.map((categoryId: any): [string, any] => {\n const category = findCategoryById(categoryId, categories);\n\n return [categoryId, category];\n })\n );\n};\n\nexport const buildCategoryTrail = (\n routeName: string,\n categoryIds: string | string[],\n container: Container,\n dataType: 'guide-categories' | 'contact-method-categories' = 'guide-categories'\n): Promise<any[]> => {\n return container.getAsync('dataClient').then((dataClient) => {\n return dataClient\n .fetch(dataType, { expandCategories: 'descendants' })\n .then(({ categories }: any) => {\n const buildTrail = (id: string) => {\n const trail: string[] = categoryTrail(id, categories);\n const objectTrail = getCategoryTrailAsObjects(trail, categories);\n\n const result: any[] = [];\n\n trail.forEach((categoryId) => {\n const category = objectTrail.get(categoryId);\n if (category) {\n result.push({\n routeName,\n title: category.title,\n symbol: category.symbol,\n id: category.id,\n routeParams:\n dataType === 'contact-method-categories'\n ? createParams({\n contactCategory: category.id,\n uriName: formatUrl(category.title),\n })\n : createParams({\n guideCategory: category.id,\n uriName: formatUrl(category.title),\n }),\n });\n }\n });\n\n return result;\n };\n\n if (Array.isArray(categoryIds)) {\n return categoryIds.reduce<any>((acc, id) => {\n const result = buildTrail(id);\n\n if (result.length > 0) {\n acc.push(result);\n }\n\n return acc;\n }, []);\n }\n\n return buildTrail(categoryIds);\n });\n });\n};\n","const dataURItoBlob = (dataURI: string) => {\n let byteString;\n let mimestring;\n\n if (dataURI.split(',')[0].indexOf('base64') !== -1) {\n byteString = atob(dataURI.split(',')[1]);\n } else {\n byteString = decodeURI(dataURI.split(',')[1]);\n }\n\n mimestring = dataURI.split(',')[0].split(':')[1].split(';')[0];\n\n const content = [];\n for (let i = 0; i < byteString.length; i++) {\n // tslint:disable-line no-increment-decrement\n content[i] = byteString.charCodeAt(i);\n }\n\n return new Blob([new Uint8Array(content)], { type: mimestring });\n};\n\nexport default dataURItoBlob;\n","/**\n * Checks if process.env.NODE_ENV === 'production'\n * and passes arguments to console.warn().\n */\nexport function debugLog(...args: any[]) {\n return process.env.NODE_ENV !== 'production' && console && console.warn(...args);\n}\n\ntype Print = (message?: any, ...optionalParams: any[]) => void;\n\nconst print = (print: Print, msgOrObj?: any, ...args: any[]) => {\n if (typeof msgOrObj === 'string') {\n return print(`[humany] ${msgOrObj}`, ...args);\n }\n return print(msgOrObj, ...args);\n};\n\n/**\n * Simple internal log-handler\n */\nexport class Logger {\n private keys: string[] = [];\n\n private lookup(key: string, fn: () => void): void {\n if (this.keys.indexOf(key) === -1) {\n this.keys.push(key);\n fn();\n }\n }\n\n /**\n * Passes args to console.log\n */\n static log = (...args: any[]) => print(console.log, ...args);\n\n /**\n * Passes args to console.warn\n */\n static warn = (...args: any[]) => print(console.warn, ...args);\n\n /**\n * Passes args to console.error\n */\n static error = (...args: any[]) => print(console.error, ...args);\n\n /**\n * Passes args to console.info\n */\n static info = (...args: any[]) => print(console.info, ...args);\n\n /**\n * Checks if key already has been logged.\n * If not, passes following args to console.log\n * and stores key in logged messages.\n */\n public log = (key: string, ...args: any[]): void => this.lookup(key, () => Logger.log(...args));\n\n /**\n * Checks if key already has been logged.\n * If not, passes following args to console.warn\n * and stores key in logged messages.\n */\n public warn = (key: string, ...args: any[]): void =>\n this.lookup(key, () => Logger.warn(...args));\n\n /**\n * Checks if key already has been logged.\n * If not, passes following args to console.error\n * and stores key in logged messages.\n */\n public error = (key: string, ...args: any[]): void =>\n this.lookup(key, () => Logger.error(...args));\n\n /**\n * Checks if key already has been logged.\n * If not, passes following args to console.info\n * and stores key in logged messages.\n */\n public info = (key: string, ...args: any[]): void =>\n this.lookup(key, () => Logger.info(...args));\n}\n","// todo: consolidate with merge in component platform\nconst deepClone = <Type>(data: Type): Type => {\n let out: any = {};\n let value;\n let key;\n\n // If it's not an object return the original data\n if (typeof data !== 'object' || data === null) {\n return data;\n }\n\n // Create array if data is array, otherwise create an object\n out = Array.isArray(data) ? [] : {};\n\n for (key in data) {\n value = (data as { [key: string]: any })[key];\n\n // Copy nested objects and arrays recursively\n out[key] = typeof value === 'object' && value !== null ? deepClone(value) : value;\n }\n\n return out;\n};\n\nexport default deepClone;\n","import { hash } from '.';\n\n/**\n * Looks for stored widgets on the implementation in localStorage\n * and adds a trigger link to the DOM.\n *\n * TODO: A more robust version have been discussed, where the storageService is added to the\n * implementation instead of the widget.\n */\nexport default (implementation: any) => {\n if (!implementation) {\n return null;\n }\n\n const implementationStorage = localStorage.getItem(\n `humany_${hash(implementation.tenant + implementation.name)}`\n );\n\n if (implementationStorage) {\n const { activeStickyWidget } = JSON.parse(implementationStorage);\n if (activeStickyWidget && activeStickyWidget.value) {\n const widget = implementation.widgets.get(activeStickyWidget.value);\n if (widget) {\n const el = document.createElement('a');\n el.setAttribute(\n 'href',\n `//${implementation.bindings[0]}/${activeStickyWidget.value}`\n );\n document.body.appendChild(el);\n }\n }\n }\n};\n","export default (date: any, includeTime: boolean = false) => {\n const d = new Date(date);\n let month = `${d.getMonth() + 1}`;\n let day = `${d.getDate()}`;\n const year = d.getFullYear();\n\n if (month.length < 2) month = `0${month}`;\n if (day.length < 2) day = `0${day}`;\n\n if (includeTime) {\n let hours = `${d.getHours()}`;\n let minutes = `${d.getMinutes()}`;\n\n if (hours.length < 2) hours = `0${hours}`;\n if (minutes.length < 2) minutes = `0${minutes}`;\n\n return `${[year, month, day].join('-')} ${[hours, minutes].join(':')}`;\n }\n\n return [year, month, day].join('-');\n};\n","export default function getCookie(cookieName: string) {\n const documentCookie = document.cookie;\n if (documentCookie.length > 0) {\n let start = documentCookie.indexOf(`${cookieName}=`);\n if (start !== -1) {\n start = start + cookieName.length + 1;\n let end = documentCookie.indexOf(';', start);\n if (end === -1) {\n end = documentCookie.length;\n }\n return unescape(documentCookie.substring(start, end));\n }\n }\n return null;\n}\n","export default function (s: string): string {\n let hash = 0;\n if (s.length === 0) {\n return hash.toString();\n }\n // tslint:disable-next-line:no-increment-decrement\n for (let i = 0; i < s.length; i++) {\n const char = s.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash;\n }\n return hash.toString();\n}\n","/**\n * Checks whether or not the passed child is a descendant\n * of the passed parent.\n * Will return true if falsey parent or child.\n */\nexport default (parent: HTMLElement | Window, child: Element | null): boolean => {\n if (!parent || !child) {\n return true;\n }\n\n let node = child.parentNode;\n let hasChild = false;\n while (node !== null) {\n if (node === parent) {\n hasChild = true;\n }\n node = node.parentNode;\n }\n\n return hasChild;\n};\n","export default function kebabCase(string: string) {\n return string\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/\\s+/g, '-')\n .toLowerCase();\n}\n","import { Logger } from './debug';\n\ntype Task = () => Promise<any> | any;\n\nclass Queue {\n tasks: {\n task: Task;\n resolve: (data?: any) => any;\n reject: (data?: any) => any;\n done: () => void;\n }[] = [];\n current: Promise<any> = Promise.resolve();\n\n constructor(private lockWarningTime: number, private lockErrorTime: number) {\n this.next = this.next.bind(this);\n }\n\n add(\n task: Task,\n resolve: (data?: any) => any,\n reject: (data?: any) => any,\n done: () => void\n ): void {\n this.tasks.push({ task, resolve, reject, done });\n this.next();\n }\n\n next(): void {\n this.current = this.current.then(() => {\n const next = this.tasks.shift();\n if (next) {\n let errorTimeout: any; // NodeJS.Timeout\n const warningTimeout = setTimeout(() => {\n if (process.env.NODE_ENV !== 'production') {\n // tslint:disable-next-line max-line-length\n Logger.warn(\n `A lock has exceeded ${this.lockWarningTime} ms. Waiting additional ${this.lockErrorTime} ms before rejecting the task.`,\n next\n );\n }\n errorTimeout = setTimeout(() => {\n next.reject('lock timeout exceeded');\n }, this.lockErrorTime);\n }, this.lockWarningTime);\n const taskPromise = Promise.resolve(next.task()).then((result) => {\n clearTimeout(warningTimeout);\n clearTimeout(errorTimeout);\n return result;\n });\n return Promise.resolve(taskPromise)\n .then(this.next)\n .then(() =>\n taskPromise.then((data) => {\n next.done();\n next.resolve(data);\n })\n )\n .catch((reason) => {\n next.done();\n next.reject(reason);\n return this.next();\n });\n }\n return Promise.resolve();\n });\n }\n}\n\nexport type AddTask = (task: Task) => Promise<any>;\n\nconst locks = new WeakMap();\n\n/**\n * Creates a lock for the specified owner that allows only one executing\n * task simultaneously.\n * @param key Lock owner.\n */\nexport default function lock(key: object, lockWarningTime = 5000, lockErrorTime = 1000): AddTask {\n if (!locks.has(key)) {\n locks.set(key, new Queue(lockWarningTime, lockErrorTime));\n }\n return (task: Task): Promise<any> => {\n return new Promise((resolve, reject) => {\n const queue: Queue = locks.get(key);\n queue.add(task, resolve, reject, () => {\n if (!queue.tasks.length) {\n locks.delete(key);\n }\n });\n });\n };\n}\n","import deepClone from './deep-clone';\n\nconst isObject = (item: any): boolean => {\n return !!item && typeof item === 'object' && !Array.isArray(item);\n};\n\n/**\n * @param target Target to merge into\n * @param sources Source to merge into target\n * @returns Clone (new reference) with merged sources\n */\nconst mergeDeep = <Target, Source>(target: Target, ...sources: Source[]): Target & Source => {\n const clonedTarget = deepClone(target);\n const clonedSources = deepClone(sources);\n return mergeDeepRecursive(clonedTarget, ...clonedSources);\n};\n\nconst mergeDeepRecursive = (target: any, ...sources: any[]): any => {\n if (!sources.length) return target;\n const source = sources.shift();\n\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n if (!target[key]) Object.assign(target, { [key]: {} });\n mergeDeepRecursive(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n return mergeDeepRecursive(target, ...sources);\n};\n\nexport default mergeDeep;\n","import { Container, Widget } from '@webprovisions/platform';\n\n/**\n * Dispatch widget:data-loaded event when all components\n * is considered to be finished loading their initial data\n */\nconst watchForLoadingComplete = (container: Container, widgetDOMElement: HTMLElement) => {\n const isLoading = () => widgetDOMElement.querySelectorAll('[data-loading=true]').length > 0;\n\n const complete = () => {\n let dispatched = false;\n\n return () => {\n if (dispatched) {\n return;\n }\n const widget: Widget = container.get('$widget');\n\n widget.events.dispatch('widget:data-loaded', {\n element: widgetDOMElement,\n });\n dispatched = true;\n };\n };\n\n const handleComplete = complete();\n\n if (!isLoading()) {\n return handleComplete();\n }\n\n const observer = new MutationObserver((mutations, observer) => {\n const check = mutations.find(\n (mutation) =>\n mutation.type === 'attributes' && mutation.attributeName === 'data-loading'\n );\n\n if (check && !isLoading()) {\n observer.disconnect();\n handleComplete();\n }\n });\n\n observer.observe(widgetDOMElement, {\n attributes: true,\n childList: true,\n subtree: true,\n });\n};\n\n/**\n * Wait for all visible components to render\n */\nconst notifyDataLoaded = (viewOutletContainer: Container, widgetDOMElement: HTMLElement) => {\n const widget: Widget = viewOutletContainer.get('$widget');\n\n widget.container.getAsync('components').then((components: any) => {\n components.events.subscribeOnce('components:component-model-initialized', () => {\n // Store the names of all visible components we should wait for\n let waitingFor: string[] = components.nodes.visible.reduce(\n (acc: string[], node: any) => {\n if (\n !node.name ||\n !node.type ||\n node.type === 'view' ||\n node.type === 'root' ||\n node.attributes.layout.size === 'none' ||\n widgetDOMElement.querySelector(`[data-name=\"${node.name}\"]`)\n ) {\n return acc;\n }\n\n acc.push(node.name);\n return acc;\n },\n []\n );\n\n let complete = false;\n const observer = new MutationObserver((mutations, observer) => {\n mutations.forEach((mutation) => {\n if (mutation.addedNodes) {\n const componentElements = Array.from(\n mutation.addedNodes as NodeListOf<HTMLElement>\n ).reduce<string[]>((acc, element) => {\n const dataName =\n element.getAttribute && element.getAttribute('data-name');\n\n if (dataName && waitingFor.indexOf(dataName) > -1) {\n acc.push(dataName);\n }\n return acc;\n }, []);\n\n // Remove added elements from the list of elements we are waiting for\n waitingFor = waitingFor.filter((name: string) => {\n return componentElements.indexOf(name) === -1;\n });\n\n // When the list is empty, we are finished waiting for components to render\n if (!complete && waitingFor.length === 0) {\n complete = true;\n // Creates a new observer that observes data-loading changes\n watchForLoadingComplete(viewOutletContainer, widgetDOMElement);\n observer.disconnect();\n }\n }\n });\n });\n\n observer.observe(widgetDOMElement, {\n attributes: false,\n characterData: false,\n childList: true,\n subtree: true,\n attributeOldValue: false,\n characterDataOldValue: false,\n });\n });\n });\n};\n\nexport default notifyDataLoaded;\n","const removeNullAndUndefinedValues = (object: { [key: string]: any } = {}) => {\n Object.keys(object).forEach((key) => {\n if (object[key] === null || typeof object[key] === 'undefined') {\n delete object[key];\n }\n });\n return object;\n};\n\nexport default removeNullAndUndefinedValues;\n","export default function setCookie(cookieName: string, value: any, days: number) {\n let expires = '';\n if (days) {\n const date = new Date();\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n expires = `; expires=${date.toUTCString()}`;\n }\n document.cookie = `${cookieName}=${value}${expires}; path=/`;\n}\n","export default (a: { [key: string]: any }, b: { [key: string]: any }): boolean => {\n let equal = true;\n\n if (Object.keys(a).length !== Object.keys(b).length) {\n return false;\n }\n const missingKey = Object.keys(a).some((key) => {\n const found = Object.keys(b).some((bKey) => {\n return key === bKey;\n });\n\n return !found;\n });\n\n if (missingKey) {\n return false;\n }\n\n Object.keys(a).forEach((key) => {\n if (equal) {\n const c = typeof a[key] === 'undefined' ? '' : a[key];\n const d = typeof b[key] === 'undefined' ? '' : b[key];\n equal = c.toString() === d.toString();\n }\n });\n\n return equal;\n};\n","const s4 = () => {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n};\n\nexport default function uuid() {\n // tslint:disable-next-line prefer-template\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\n}\n","type Action = (...args: any[]) => Function | false;\n\nexport type WaitForOptions = {\n callCount?: number;\n};\n\nexport default class WaitFor {\n private queue: Action[] = [];\n private queueAttempt: any;\n private queueAttemptCalls: number = 0;\n private callCount = 5;\n\n constructor(options?: WaitForOptions) {\n if (options && options.callCount) {\n this.callCount = options.callCount;\n }\n }\n\n /**\n * Add action to the queue\n */\n add = (action: Action) => {\n this.queue.push(action);\n\n this.queueAttempt = setInterval(this.processQueue, 1000);\n };\n\n /**\n * Go through queue and attempt to call each action\n */\n processQueue = () => {\n if (this.queue.length > 0) {\n const indexOfActionsEmitted: number[] = [];\n this.queue.forEach((queuedAction, index) => {\n const evaluate = queuedAction();\n\n if (typeof evaluate === 'function') {\n evaluate();\n indexOfActionsEmitted.push(index);\n }\n });\n\n // clean up queue\n this.queue = this.queue.filter((_, index) => {\n if (indexOfActionsEmitted.indexOf(index) > -1) {\n return false;\n }\n return true;\n });\n\n if (this.queueAttempt) {\n clearInterval(this.queueAttempt);\n }\n }\n\n if (this.queueAttemptCalls > this.callCount) {\n clearInterval(this.queueAttempt);\n this.queueAttemptCalls = 0;\n }\n\n this.queueAttemptCalls = this.queueAttemptCalls + 1;\n };\n}\n"],"names":["uniqueClassArray","classNames","classArray","c","append","className1","className2","handleFunctionArgument","expression","classes","className","appendClassNames","args","argument","Logger","createBatch","delay","createFallback","timeout","queue","fn","resolve","reject","acc","camilize","obj","camilizedObject","prop","p","camilizedProp","i","createParams","_a","phrase","category","guideCategory","contactCategory","take","connectionKey","accordion","id","uriName","sorting","tag","tagId","tagTitle","other","__objRest","params","processData","data","val","findCategoryById","categories","it","res","found","formatUrl","url","replacements","alphanumericExpression","trailingDashExpression","parsed","childParentStructure","items","structure","parent","item","categoryTrail","ids","addAncestors","parentId","getCategoryTrailAsObjects","trail","categoryId","buildCategoryTrail","routeName","categoryIds","container","dataType","dataClient","buildTrail","objectTrail","result","dataURItoBlob","dataURI","byteString","mimestring","content","debugLog","print","msgOrObj","_Logger","__publicField","key","deepClone","out","value","findAndActivateStoredWidgets","implementation","implementationStorage","hash","activeStickyWidget","el","formatDate","date","includeTime","d","month","day","year","hours","minutes","getCookie","cookieName","documentCookie","start","end","s","char","htmlParentContains","child","node","hasChild","kebabCase","string","Queue","lockWarningTime","lockErrorTime","task","done","next","errorTimeout","warningTimeout","taskPromise","reason","locks","lock","isObject","mergeDeep","target","sources","clonedTarget","clonedSources","mergeDeepRecursive","source","watchForLoadingComplete","widgetDOMElement","isLoading","handleComplete","dispatched","mutations","observer","mutation","notifyDataLoaded","viewOutletContainer","components","waitingFor","complete","componentElements","element","dataName","name","removeNullAndUndefinedValues","object","setCookie","days","expires","shallowCompare","a","b","equal","bKey","s4","uuid","WaitFor","options","action","indexOfActionsEmitted","queuedAction","index","evaluate","_"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/append-class-names.ts","../src/batch.ts","../src/camilize.ts","../src/create-params.ts","../src/find-category-by-id.ts","../src/format-url.ts","../src/category-trail.ts","../src/data-uri-to-blob.ts","../src/debug.ts","../src/deep-clone.ts","../src/find-and-activate-stored-widgets.ts","../src/format-date.ts","../src/get-cookie.ts","../src/hash.ts","../src/html-parent-contains.ts","../src/kebab-case.ts","../src/lock.ts","../src/merge-deep.ts","../src/notify-data-loaded.ts","../src/remove-null-and-undefined-values.ts","../src/set-cookie.ts","../src/shallow-compare.ts","../src/uuid.ts","../src/wait-for.ts"],"sourcesContent":["import { Logger } from '.';\n\ntype ArgumentHandler = string | [boolean, string | string[]] | undefined;\n\nexport function uniqueClassArray(classNames: string[]) {\n const classArray: string[] = [];\n classNames.forEach((c) => {\n if (classArray.indexOf(c) === -1) {\n classArray.push(c);\n }\n });\n return classArray;\n}\n\nexport function append(className1 = '', className2 = '') {\n const classNames = className1.split(' ').concat(className2.split(' '));\n return uniqueClassArray(classNames).join(' ').trim();\n}\n\nexport function handleFunctionArgument(expression: boolean, classes: string | string[]) {\n if (Boolean(expression)) {\n if (typeof classes === 'string') {\n return classes;\n }\n if (Array.isArray(classes)) {\n let className = '';\n classes.forEach((c) => (className = append(className, c)));\n return className;\n }\n }\n}\n\nexport default function appendClassNames(...args: ArgumentHandler[]): string {\n let className: string = '';\n if (args.length) {\n args.forEach((argument: ArgumentHandler) => {\n if (typeof argument === 'string') {\n className = append(className, argument as string);\n } else if (Array.isArray(argument)) {\n className = append(className, handleFunctionArgument(...argument));\n } else if (typeof argument !== 'undefined' && argument !== null) {\n if (process.env.NODE_ENV !== 'production') {\n Logger.warn(\n 'appendClassNames: arguments either have' +\n 'to be a string or [boolean, ...string[]]. Passed args:',\n ...args\n );\n }\n }\n });\n }\n return className;\n}\n","export type BatchFunction<T> = (acc: T) => T;\nexport type Batch<T> = (fn: BatchFunction<T>) => Promise<T>;\n\nconst createBatch = <T>(delay: number, createFallback: () => T): Batch<T> => {\n let timeout: ReturnType<typeof setTimeout>;\n let queue: [BatchFunction<T>, (value: T | PromiseLike<T>) => void, (reason?: any) => void][] =\n [];\n\n return (fn: BatchFunction<T>): Promise<T> => {\n clearTimeout(timeout);\n return new Promise<T>((resolve, reject) => {\n queue.push([fn, resolve, reject]);\n timeout = setTimeout(() => {\n let acc = createFallback();\n queue.forEach(([fn, resolve, reject]) => {\n acc = fn(acc);\n });\n queue = [];\n resolve(acc);\n }, delay);\n });\n };\n};\n\nexport default createBatch;\n","export default function camilize(obj: any): any {\n const camilizedObject: any = {};\n if (typeof obj === 'number' || typeof obj === 'string') {\n return obj;\n }\n for (const prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n const p = obj[prop];\n const camilizedProp = prop.substring(0, 1).toLowerCase() + prop.substring(1);\n if (Object.prototype.toString.call(p) === '[object Array]') {\n camilizedObject[camilizedProp] = [];\n for (let i = 0, c = p.length; i < c; i++) {\n // tslint:disable-line no-increment-decrement\n camilizedObject[camilizedProp].push(camilize(p[i]));\n }\n } else if (p !== null && typeof p === 'object') {\n camilizedObject[camilizedProp] = camilize(p);\n } else {\n camilizedObject[camilizedProp] = p;\n }\n }\n }\n return camilizedObject;\n}\n","export type Input = {\n phrase?: string;\n category?: ParamValue;\n guideCategory?: ParamValue;\n contactCategory?: ParamValue;\n take?: number;\n connectionKey?: string;\n id?: string;\n uriName?: string;\n sorting?: string;\n tag?: string;\n tagId?: string | number;\n tagTitle?: string;\n} & { [key: string]: ParamValue };\n\nexport type ParamValue = string | number | any;\n\nexport type Params = { [key: string]: ParamValue };\n\nexport default function createParams(args: Input = {}): Params {\n const {\n phrase = '',\n category,\n guideCategory,\n contactCategory,\n take,\n connectionKey,\n accordion,\n id,\n uriName,\n sorting,\n tag,\n tagId,\n tagTitle,\n ...other\n } = args;\n const params: Params = {};\n\n Object.keys(other).forEach((k) => {\n if (typeof args[k] === 'string') {\n params[k] = args[k];\n }\n });\n\n if (typeof phrase === 'string' && phrase.length) {\n params.phrase = phrase;\n }\n\n if (phrase === null) {\n params.phrase = phrase;\n }\n\n if (typeof guideCategory === 'string' && guideCategory !== '0') {\n params.guideCategory = guideCategory;\n }\n if (typeof guideCategory === 'number' && guideCategory !== 0) {\n params.guideCategory = guideCategory;\n }\n if (typeof guideCategory === 'object' && guideCategory !== null) {\n if (typeof guideCategory.id === 'string' && guideCategory.id !== '0') {\n params.guideCategory = guideCategory.id;\n }\n if (typeof guideCategory.id === 'number' && guideCategory.id !== 0) {\n params.guideCategory = guideCategory.id;\n }\n }\n\n if (typeof contactCategory === 'string' && contactCategory !== '0') {\n params.contactCategory = contactCategory;\n }\n if (typeof contactCategory === 'number' && contactCategory !== 0) {\n params.contactCategory = contactCategory;\n }\n if (typeof contactCategory === 'object' && contactCategory !== null) {\n if (typeof contactCategory.id === 'string' && contactCategory.id !== '0') {\n params.contactCategory = contactCategory.id;\n }\n if (typeof contactCategory.id === 'number' && contactCategory.id !== 0) {\n params.contactCategory = contactCategory.id;\n }\n }\n\n if (typeof category === 'string' && category !== '0') {\n params.category = category;\n }\n if (typeof category === 'number' && category !== 0) {\n params.category = category;\n }\n if (typeof category === 'object' && category !== null) {\n if (typeof category.id === 'string' && category.id !== '0') {\n params.category = category.id;\n }\n if (typeof category.id === 'number' && category.id !== 0) {\n params.category = category.id;\n }\n }\n\n if (id) {\n params.id = id;\n }\n\n if (\n uriName &&\n (!!+params.category ||\n !!+params.guideCategory ||\n !!+params.guide ||\n !!+params.contactCategory ||\n !!+params.contactMethod)\n ) {\n params.uriName = uriName;\n }\n\n if (connectionKey) {\n params.connectionKey = connectionKey;\n }\n\n if (take) {\n params.take = take;\n }\n\n if (sorting) {\n params.sorting = sorting;\n }\n\n if (typeof accordion === 'string' && accordion.length > 0) {\n params.accordion = accordion;\n }\n\n if (typeof tag === 'string' && tag !== '0') {\n params.tag = tag;\n }\n if (typeof tag === 'number' && tag !== 0) {\n params.tag = tag;\n }\n\n if (typeof tagId === 'string' || typeof tagId === 'number') {\n params.tagId = tagId;\n }\n if (typeof tagTitle === 'string') {\n params.tagTitle = tagTitle;\n }\n\n return params;\n}\n","/**\n * Recursively find items\n * @param data Data to look in\n */\nfunction* processData(data: any[]): any {\n if (!data) {\n return;\n }\n\n // tslint:disable-next-line:no-increment-decrement\n for (let i = 0; i < data.length; i++) {\n const val = data[i];\n yield val;\n\n if (val.items) {\n yield* processData(val.items);\n }\n }\n}\n\n/**\n * Find a category by it's ID\n * @param id Id of category to find\n */\nconst findCategoryById = (id: string, categories: any) => {\n const it = processData(categories);\n let res = it.next();\n\n let found = null;\n\n while (!res.done) {\n if (res.value.id === id) {\n found = res.value;\n }\n\n res = it.next();\n }\n\n return found;\n};\n\nexport default findCategoryById;\n","const formatUrl = (url: string): string => {\n if (!url) {\n return '';\n }\n\n const replacements = [\n { from: /[äæǽ]+/gi, to: 'ae' },\n { from: /[öœ]+/gi, to: 'oe' },\n { from: /[ü]+/gi, to: 'ue' },\n { from: /[Ä]+/gi, to: 'Ae' },\n { from: /[Ü]+/gi, to: 'Ue' },\n { from: /[Ö]+/gi, to: 'Oe' },\n { from: /[ÀÁÂÃÄÅǺĀĂĄǍΑΆẢẠẦẪẨẬẰẮẴẲẶА]+/gi, to: 'A' },\n { from: /[àáâãåǻāăąǎªαάảạầấẫẩậằắẵẳặа]+/gi, to: 'a' },\n { from: /[Б]+/gi, to: 'B' },\n { from: /[б]+/gi, to: 'b' },\n { from: /[ÇĆĈĊČ]+/gi, to: 'C' },\n { from: /[çćĉċč]+/gi, to: 'c' },\n { from: /[Д]+/gi, to: 'D' },\n { from: /[д]+/gi, to: 'd' },\n { from: /[ÐĎĐΔ]+/gi, to: 'Dj' },\n { from: /[ðďđδ]+/gi, to: 'dj' },\n { from: /[ÈÉÊËĒĔĖĘĚΕΈẼẺẸỀẾỄỂỆЕЭ]+/gi, to: 'E' },\n { from: /[èéêëēĕėęěέεẽẻẹềếễểệеэ]+/gi, to: 'e' },\n { from: /[Ф]+/gi, to: 'F' },\n { from: /[ф]+/gi, to: 'f' },\n { from: /[ĜĞĠĢΓГҐ]+/gi, to: 'G' },\n { from: /[ĝğġģγгґ]+/gi, to: 'g' },\n { from: /[ĤĦ]+/gi, to: 'H' },\n { from: /[ĥħ]+/gi, to: 'h' },\n { from: /[ÌÍÎÏĨĪĬǏĮİΗΉΊΙΪỈỊИЫ]+/gi, to: 'I' },\n { from: /[ìíîïĩīĭǐįıηήίιϊỉịиыї]+/gi, to: 'i' },\n { from: /[Ĵ]+/gi, to: 'J' },\n { from: /[ĵ]+/gi, to: 'j' },\n { from: /[ĶΚК]+/gi, to: 'K' },\n { from: /[ķκк]+/gi, to: 'k' },\n { from: /[ĹĻĽĿŁΛЛ]+/gi, to: 'L' },\n { from: /[ĺļľŀłλл]+/gi, to: 'l' },\n { from: /[М]+/gi, to: 'M' },\n { from: /[м]+/gi, to: 'm' },\n { from: /[ÑŃŅŇΝН]+/gi, to: 'N' },\n { from: /[ñńņňʼnνн]+/gi, to: 'n' },\n { from: /[ÒÓÔÕŌŎǑŐƠØǾΟΌΩΏỎỌỒỐỖỔỘỜỚỠỞỢО]+/gi, to: 'O' },\n { from: /[òóôõōŏǒőơøǿºοόωώỏọồốỗổộờớỡởợо]+/gi, to: 'o' },\n { from: /[П]+/gi, to: 'P' },\n { from: /[п]+/gi, to: 'p' },\n { from: /[ŔŖŘΡР]+/gi, to: 'R' },\n { from: /[ŕŗřρр]+/gi, to: 'r' },\n { from: /[ŚŜŞȘŠΣС]+/gi, to: 'S' },\n { from: /[śŝşșšſσςс]+/gi, to: 's' },\n { from: /[ȚŢŤŦτТ]+/gi, to: 'T' },\n { from: /[țţťŧт]+/gi, to: 't' },\n { from: /[ÙÚÛŨŪŬŮŰŲƯǓǕǗǙǛŨỦỤỪỨỮỬỰУ]+/gi, to: 'U' },\n { from: /[ùúûũūŭůűųưǔǖǘǚǜυύϋủụừứữửựу]+/gi, to: 'u' },\n { from: /[ÝŸŶΥΎΫỲỸỶỴЙ]+/gi, to: 'Y' },\n { from: /[ýÿŷỳỹỷỵй]+/gi, to: 'y' },\n { from: /[В]+/gi, to: 'V' },\n { from: /[в]+/gi, to: 'v' },\n { from: /[Ŵ]+/gi, to: 'W' },\n { from: /[ŵ]+/gi, to: 'w' },\n { from: /[ŹŻŽΖЗ]+/gi, to: 'Z' },\n { from: /[źżžζз]+/gi, to: 'z' },\n { from: /[ÆǼ]+/gi, to: 'AE' },\n { from: /[ß]+/gi, to: 'ss' },\n { from: /[IJ]+/gi, to: 'IJ' },\n { from: /[ij]+/gi, to: 'ij' },\n { from: /[Œ]+/gi, to: 'OE' },\n { from: /[ƒ]+/gi, to: 'f' },\n { from: /[ξ]+/gi, to: 'ks' },\n { from: /[π]+/gi, to: 'p' },\n { from: /[β]+/gi, to: 'v' },\n { from: /[μ]+/gi, to: 'm' },\n { from: /[ψ]+/gi, to: 'ps' },\n { from: /[Ё]+/gi, to: 'Yo' },\n { from: /[ё]+/gi, to: 'yo' },\n { from: /[Є]+/gi, to: 'Ye' },\n { from: /[є]+/gi, to: 'ye' },\n { from: /[Ї]+/gi, to: 'Yi' },\n { from: /[Ж]+/gi, to: 'Zh' },\n { from: /[ж]+/gi, to: 'zh' },\n { from: /[Х]+/gi, to: 'Kh' },\n { from: /[х]+/gi, to: 'kh' },\n { from: /[Ц]+/gi, to: 'Ts' },\n { from: /[ц]+/gi, to: 'ts' },\n { from: /[Ч]+/gi, to: 'Ch' },\n { from: /[ч]+/gi, to: 'ch' },\n { from: /[Ш]+/gi, to: 'Sh' },\n { from: /[ш]+/gi, to: 'sh' },\n { from: /[Щ]+/gi, to: 'Shch' },\n { from: /[щ]+/gi, to: 'shch' },\n { from: /[ЪъЬь]+/gi, to: '' },\n { from: /[Ю]+/gi, to: 'Yu' },\n { from: /[ю]+/gi, to: 'yu' },\n { from: /[Я]+/gi, to: 'Ya' },\n { from: /[я]+/gi, to: 'ya' },\n ];\n\n const alphanumericExpression = /[^a-zA-Z0-9]+/g;\n const trailingDashExpression = /[-]$/;\n\n let parsed = url;\n\n for (const i in replacements) {\n if (replacements.hasOwnProperty(i) && replacements[i].from.test(url)) {\n parsed = parsed.replace(replacements[i].from, replacements[i].to);\n }\n }\n\n parsed = parsed.replace(alphanumericExpression, '-');\n parsed = parsed.replace(trailingDashExpression, '');\n parsed = parsed.toLowerCase();\n\n return parsed || 'humany';\n};\n\nexport default formatUrl;\n","import { Container } from '@webprovisions/platform';\nimport createParams from './create-params';\nimport { default as findCategoryById } from './find-category-by-id';\nimport formatUrl from './format-url';\n\ntype Item = { id: string; items?: Item[]; title: string; symbol?: any };\n\ntype ChildParentStructure = {\n [key: number]: string;\n};\n\nfunction childParentStructure(\n items: Item[],\n structure: ChildParentStructure = {},\n parent?: string\n) {\n items.forEach((item: Item) => {\n if (parent) {\n structure[+item.id] = parent;\n }\n if (item.items) {\n childParentStructure(item.items, structure, item.id);\n }\n });\n return structure;\n}\n\nexport function categoryTrail(\n id: string,\n items: Item[],\n ids: string[] = [id],\n structure: ChildParentStructure = childParentStructure(items)\n): string[] {\n const addAncestors = (id: string) => {\n const parentId = structure[+id];\n if (parentId) {\n ids.unshift(parentId);\n addAncestors(parentId);\n }\n };\n\n const parentId = structure[+id];\n if (parentId) {\n ids.unshift(parentId);\n addAncestors(parentId);\n }\n\n return ids;\n}\n\nexport const getCategoryTrailAsObjects = (\n trail: string[],\n categories: Item[]\n): Map<string, Item> => {\n if (typeof trail === 'undefined' || typeof categories === 'undefined') {\n return new Map();\n }\n\n return new Map(\n trail.map((categoryId: any): [string, any] => {\n const category = findCategoryById(categoryId, categories);\n\n return [categoryId, category];\n })\n );\n};\n\nexport const buildCategoryTrail = (\n routeName: string,\n categoryIds: string | string[],\n container: Container,\n dataType: 'guide-categories' | 'contact-method-categories' = 'guide-categories'\n): Promise<any[]> => {\n return container.getAsync('dataClient').then((dataClient) => {\n return dataClient\n .fetch(dataType, { expandCategories: 'descendants' })\n .then(({ categories }: any) => {\n const buildTrail = (id: string) => {\n const trail: string[] = categoryTrail(id, categories);\n const objectTrail = getCategoryTrailAsObjects(trail, categories);\n\n const result: any[] = [];\n\n trail.forEach((categoryId) => {\n const category = objectTrail.get(categoryId);\n if (category) {\n result.push({\n routeName,\n title: category.title,\n symbol: category.symbol,\n id: category.id,\n routeParams:\n dataType === 'contact-method-categories'\n ? createParams({\n contactCategory: category.id,\n uriName: formatUrl(category.title),\n })\n : createParams({\n guideCategory: category.id,\n uriName: formatUrl(category.title),\n }),\n });\n }\n });\n\n return result;\n };\n\n if (Array.isArray(categoryIds)) {\n return categoryIds.reduce<any>((acc, id) => {\n const result = buildTrail(id);\n\n if (result.length > 0) {\n acc.push(result);\n }\n\n return acc;\n }, []);\n }\n\n return buildTrail(categoryIds);\n });\n });\n};\n","const dataURItoBlob = (dataURI: string) => {\n let byteString;\n let mimestring;\n\n if (dataURI.split(',')[0].indexOf('base64') !== -1) {\n byteString = atob(dataURI.split(',')[1]);\n } else {\n byteString = decodeURI(dataURI.split(',')[1]);\n }\n\n mimestring = dataURI.split(',')[0].split(':')[1].split(';')[0];\n\n const content = [];\n for (let i = 0; i < byteString.length; i++) {\n // tslint:disable-line no-increment-decrement\n content[i] = byteString.charCodeAt(i);\n }\n\n return new Blob([new Uint8Array(content)], { type: mimestring });\n};\n\nexport default dataURItoBlob;\n","/**\n * Checks if process.env.NODE_ENV === 'production'\n * and passes arguments to console.warn().\n */\nexport function debugLog(...args: any[]) {\n return process.env.NODE_ENV !== 'production' && console && console.warn(...args);\n}\n\ntype Print = (message?: any, ...optionalParams: any[]) => void;\n\nconst print = (print: Print, msgOrObj?: any, ...args: any[]) => {\n if (typeof msgOrObj === 'string') {\n return print(`[humany] ${msgOrObj}`, ...args);\n }\n return print(msgOrObj, ...args);\n};\n\n/**\n * Simple internal log-handler\n */\nexport class Logger {\n private keys: string[] = [];\n\n private lookup(key: string, fn: () => void): void {\n if (this.keys.indexOf(key) === -1) {\n this.keys.push(key);\n fn();\n }\n }\n\n /**\n * Passes args to console.log\n */\n static log = (...args: any[]) => print(console.log, ...args);\n\n /**\n * Passes args to console.warn\n */\n static warn = (...args: any[]) => print(console.warn, ...args);\n\n /**\n * Passes args to console.error\n */\n static error = (...args: any[]) => print(console.error, ...args);\n\n /**\n * Passes args to console.info\n */\n static info = (...args: any[]) => print(console.info, ...args);\n\n /**\n * Checks if key already has been logged.\n * If not, passes following args to console.log\n * and stores key in logged messages.\n */\n public log = (key: string, ...args: any[]): void => this.lookup(key, () => Logger.log(...args));\n\n /**\n * Checks if key already has been logged.\n * If not, passes following args to console.warn\n * and stores key in logged messages.\n */\n public warn = (key: string, ...args: any[]): void =>\n this.lookup(key, () => Logger.warn(...args));\n\n /**\n * Checks if key already has been logged.\n * If not, passes following args to console.error\n * and stores key in logged messages.\n */\n public error = (key: string, ...args: any[]): void =>\n this.lookup(key, () => Logger.error(...args));\n\n /**\n * Checks if key already has been logged.\n * If not, passes following args to console.info\n * and stores key in logged messages.\n */\n public info = (key: string, ...args: any[]): void =>\n this.lookup(key, () => Logger.info(...args));\n}\n","// todo: consolidate with merge in component platform\nconst deepClone = <Type>(data: Type): Type => {\n let out: any = {};\n let value;\n let key;\n\n // If it's not an object return the original data\n if (typeof data !== 'object' || data === null) {\n return data;\n }\n\n // Create array if data is array, otherwise create an object\n out = Array.isArray(data) ? [] : {};\n\n for (key in data) {\n value = (data as { [key: string]: any })[key];\n\n // Copy nested objects and arrays recursively\n out[key] = typeof value === 'object' && value !== null ? deepClone(value) : value;\n }\n\n return out;\n};\n\nexport default deepClone;\n","import { hash } from '.';\n\n/**\n * Looks for stored widgets on the implementation in localStorage\n * and adds a trigger link to the DOM.\n *\n * TODO: A more robust version have been discussed, where the storageService is added to the\n * implementation instead of the widget.\n */\nexport default (implementation: any) => {\n if (!implementation) {\n return null;\n }\n\n const implementationStorage = localStorage.getItem(\n `humany_${hash(implementation.tenant + implementation.name)}`\n );\n\n if (implementationStorage) {\n const { activeStickyWidget } = JSON.parse(implementationStorage);\n if (activeStickyWidget && activeStickyWidget.value) {\n const widget = implementation.widgets.get(activeStickyWidget.value);\n if (widget) {\n const el = document.createElement('a');\n el.setAttribute(\n 'href',\n `//${implementation.bindings[0]}/${activeStickyWidget.value}`\n );\n document.body.appendChild(el);\n }\n }\n }\n};\n","export default (date: any, includeTime: boolean = false) => {\n const d = new Date(date);\n let month = `${d.getMonth() + 1}`;\n let day = `${d.getDate()}`;\n const year = d.getFullYear();\n\n if (month.length < 2) month = `0${month}`;\n if (day.length < 2) day = `0${day}`;\n\n if (includeTime) {\n let hours = `${d.getHours()}`;\n let minutes = `${d.getMinutes()}`;\n\n if (hours.length < 2) hours = `0${hours}`;\n if (minutes.length < 2) minutes = `0${minutes}`;\n\n return `${[year, month, day].join('-')} ${[hours, minutes].join(':')}`;\n }\n\n return [year, month, day].join('-');\n};\n","export default function getCookie(cookieName: string) {\n const documentCookie = document.cookie;\n if (documentCookie.length > 0) {\n let start = documentCookie.indexOf(`${cookieName}=`);\n if (start !== -1) {\n start = start + cookieName.length + 1;\n let end = documentCookie.indexOf(';', start);\n if (end === -1) {\n end = documentCookie.length;\n }\n return unescape(documentCookie.substring(start, end));\n }\n }\n return null;\n}\n","export default function (s: string): string {\n let hash = 0;\n if (s.length === 0) {\n return hash.toString();\n }\n // tslint:disable-next-line:no-increment-decrement\n for (let i = 0; i < s.length; i++) {\n const char = s.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash;\n }\n return hash.toString();\n}\n","/**\n * Checks whether or not the passed child is a descendant\n * of the passed parent.\n * Will return true if falsey parent or child.\n */\nexport default (parent: HTMLElement | Window, child: Element | null): boolean => {\n if (!parent || !child) {\n return true;\n }\n\n let node = child.parentNode;\n let hasChild = false;\n while (node !== null) {\n if (node === parent) {\n hasChild = true;\n }\n node = node.parentNode;\n }\n\n return hasChild;\n};\n","export default function kebabCase(string: string) {\n return string\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/\\s+/g, '-')\n .toLowerCase();\n}\n","import { Logger } from './debug';\n\ntype Task = () => Promise<any> | any;\n\nclass Queue {\n tasks: {\n task: Task;\n resolve: (data?: any) => any;\n reject: (data?: any) => any;\n done: () => void;\n }[] = [];\n current: Promise<any> = Promise.resolve();\n\n constructor(private lockWarningTime: number, private lockErrorTime: number) {\n this.next = this.next.bind(this);\n }\n\n add(\n task: Task,\n resolve: (data?: any) => any,\n reject: (data?: any) => any,\n done: () => void\n ): void {\n this.tasks.push({ task, resolve, reject, done });\n this.next();\n }\n\n next(): void {\n this.current = this.current.then(() => {\n const next = this.tasks.shift();\n if (next) {\n let errorTimeout: any; // NodeJS.Timeout\n const warningTimeout = setTimeout(() => {\n if (process.env.NODE_ENV !== 'production') {\n // tslint:disable-next-line max-line-length\n Logger.warn(\n `A lock has exceeded ${this.lockWarningTime} ms. Waiting additional ${this.lockErrorTime} ms before rejecting the task.`,\n next\n );\n }\n errorTimeout = setTimeout(() => {\n next.reject('lock timeout exceeded');\n }, this.lockErrorTime);\n }, this.lockWarningTime);\n const taskPromise = Promise.resolve(next.task()).then((result) => {\n clearTimeout(warningTimeout);\n clearTimeout(errorTimeout);\n return result;\n });\n return Promise.resolve(taskPromise)\n .then(this.next)\n .then(() =>\n taskPromise.then((data) => {\n next.done();\n next.resolve(data);\n })\n )\n .catch((reason) => {\n next.done();\n next.reject(reason);\n return this.next();\n });\n }\n return Promise.resolve();\n });\n }\n}\n\nexport type AddTask = (task: Task) => Promise<any>;\n\nconst locks = new WeakMap();\n\n/**\n * Creates a lock for the specified owner that allows only one executing\n * task simultaneously.\n * @param key Lock owner.\n */\nexport default function lock(key: object, lockWarningTime = 5000, lockErrorTime = 1000): AddTask {\n if (!locks.has(key)) {\n locks.set(key, new Queue(lockWarningTime, lockErrorTime));\n }\n return (task: Task): Promise<any> => {\n return new Promise((resolve, reject) => {\n const queue: Queue = locks.get(key);\n queue.add(task, resolve, reject, () => {\n if (!queue.tasks.length) {\n locks.delete(key);\n }\n });\n });\n };\n}\n","import deepClone from './deep-clone';\n\nconst isObject = (item: any): boolean => {\n return !!item && typeof item === 'object' && !Array.isArray(item);\n};\n\n/**\n * @param target Target to merge into\n * @param sources Source to merge into target\n * @returns Clone (new reference) with merged sources\n */\nconst mergeDeep = <Target, Source>(target: Target, ...sources: Source[]): Target & Source => {\n const clonedTarget = deepClone(target);\n const clonedSources = deepClone(sources);\n return mergeDeepRecursive(clonedTarget, ...clonedSources);\n};\n\nconst mergeDeepRecursive = (target: any, ...sources: any[]): any => {\n if (!sources.length) return target;\n const source = sources.shift();\n\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n if (!target[key]) Object.assign(target, { [key]: {} });\n mergeDeepRecursive(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n return mergeDeepRecursive(target, ...sources);\n};\n\nexport default mergeDeep;\n","import { Container, Widget } from '@webprovisions/platform';\n\n/**\n * Dispatch widget:data-loaded event when all components\n * is considered to be finished loading their initial data\n */\nconst watchForLoadingComplete = (container: Container, widgetDOMElement: HTMLElement) => {\n const isLoading = () => widgetDOMElement.querySelectorAll('[data-loading=true]').length > 0;\n\n const complete = () => {\n let dispatched = false;\n\n return () => {\n if (dispatched) {\n return;\n }\n const widget: Widget = container.get('$widget');\n\n widget.events.dispatch('widget:data-loaded', {\n element: widgetDOMElement,\n });\n dispatched = true;\n };\n };\n\n const handleComplete = complete();\n\n if (!isLoading()) {\n return handleComplete();\n }\n\n const observer = new MutationObserver((mutations, observer) => {\n const check = mutations.find(\n (mutation) =>\n mutation.type === 'attributes' && mutation.attributeName === 'data-loading'\n );\n\n if (check && !isLoading()) {\n observer.disconnect();\n handleComplete();\n }\n });\n\n observer.observe(widgetDOMElement, {\n attributes: true,\n childList: true,\n subtree: true,\n });\n};\n\n/**\n * Wait for all visible components to render\n */\nconst notifyDataLoaded = (viewOutletContainer: Container, widgetDOMElement: HTMLElement) => {\n const widget: Widget = viewOutletContainer.get('$widget');\n\n widget.container.getAsync('components').then((components: any) => {\n components.events.subscribeOnce('components:component-model-initialized', () => {\n // Store the names of all visible components we should wait for\n let waitingFor: string[] = components.nodes.visible.reduce(\n (acc: string[], node: any) => {\n if (\n !node.name ||\n !node.type ||\n node.type === 'view' ||\n node.type === 'root' ||\n node.attributes.layout.size === 'none' ||\n widgetDOMElement.querySelector(`[data-name=\"${node.name}\"]`)\n ) {\n return acc;\n }\n\n acc.push(node.name);\n return acc;\n },\n []\n );\n\n let complete = false;\n const observer = new MutationObserver((mutations, observer) => {\n mutations.forEach((mutation) => {\n if (mutation.addedNodes) {\n const componentElements = Array.from(\n mutation.addedNodes as NodeListOf<HTMLElement>\n ).reduce<string[]>((acc, element) => {\n const dataName =\n element.getAttribute && element.getAttribute('data-name');\n\n if (dataName && waitingFor.indexOf(dataName) > -1) {\n acc.push(dataName);\n }\n return acc;\n }, []);\n\n // Remove added elements from the list of elements we are waiting for\n waitingFor = waitingFor.filter((name: string) => {\n return componentElements.indexOf(name) === -1;\n });\n\n // When the list is empty, we are finished waiting for components to render\n if (!complete && waitingFor.length === 0) {\n complete = true;\n // Creates a new observer that observes data-loading changes\n watchForLoadingComplete(viewOutletContainer, widgetDOMElement);\n observer.disconnect();\n }\n }\n });\n });\n\n observer.observe(widgetDOMElement, {\n attributes: false,\n characterData: false,\n childList: true,\n subtree: true,\n attributeOldValue: false,\n characterDataOldValue: false,\n });\n });\n });\n};\n\nexport default notifyDataLoaded;\n","const removeNullAndUndefinedValues = (object: { [key: string]: any } = {}) => {\n Object.keys(object).forEach((key) => {\n if (object[key] === null || typeof object[key] === 'undefined') {\n delete object[key];\n }\n });\n return object;\n};\n\nexport default removeNullAndUndefinedValues;\n","export default function setCookie(cookieName: string, value: any, days: number) {\n let expires = '';\n if (days) {\n const date = new Date();\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n expires = `; expires=${date.toUTCString()}`;\n }\n document.cookie = `${cookieName}=${value}${expires}; path=/`;\n}\n","export default (a: { [key: string]: any }, b: { [key: string]: any }): boolean => {\n let equal = true;\n\n if (Object.keys(a).length !== Object.keys(b).length) {\n return false;\n }\n const missingKey = Object.keys(a).some((key) => {\n const found = Object.keys(b).some((bKey) => {\n return key === bKey;\n });\n\n return !found;\n });\n\n if (missingKey) {\n return false;\n }\n\n Object.keys(a).forEach((key) => {\n if (equal) {\n const c = typeof a[key] === 'undefined' ? '' : a[key];\n const d = typeof b[key] === 'undefined' ? '' : b[key];\n equal = c.toString() === d.toString();\n }\n });\n\n return equal;\n};\n","const s4 = () => {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n};\n\nexport default function uuid() {\n // tslint:disable-next-line prefer-template\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\n}\n","type Action = (...args: any[]) => Function | false;\n\nexport type WaitForOptions = {\n callCount?: number;\n};\n\nexport default class WaitFor {\n private queue: Action[] = [];\n private queueAttempt: any;\n private queueAttemptCalls: number = 0;\n private callCount = 5;\n\n constructor(options?: WaitForOptions) {\n if (options && options.callCount) {\n this.callCount = options.callCount;\n }\n }\n\n /**\n * Add action to the queue\n */\n add = (action: Action) => {\n this.queue.push(action);\n\n this.queueAttempt = setInterval(this.processQueue, 1000);\n };\n\n /**\n * Go through queue and attempt to call each action\n */\n processQueue = () => {\n if (this.queue.length > 0) {\n const indexOfActionsEmitted: number[] = [];\n this.queue.forEach((queuedAction, index) => {\n const evaluate = queuedAction();\n\n if (typeof evaluate === 'function') {\n evaluate();\n indexOfActionsEmitted.push(index);\n }\n });\n\n // clean up queue\n this.queue = this.queue.filter((_, index) => {\n if (indexOfActionsEmitted.indexOf(index) > -1) {\n return false;\n }\n return true;\n });\n\n if (this.queueAttempt) {\n clearInterval(this.queueAttempt);\n }\n }\n\n if (this.queueAttemptCalls > this.callCount) {\n clearInterval(this.queueAttempt);\n this.queueAttemptCalls = 0;\n }\n\n this.queueAttemptCalls = this.queueAttemptCalls + 1;\n };\n}\n"],"names":["uniqueClassArray","classNames","classArray","c","append","className1","className2","handleFunctionArgument","expression","classes","className","appendClassNames","args","argument","Logger","createBatch","delay","createFallback","timeout","queue","fn","resolve","reject","acc","createBatch$1","camilize","obj","camilizedObject","prop","p","camilizedProp","i","createParams","_a","phrase","category","guideCategory","contactCategory","take","connectionKey","accordion","id","uriName","sorting","tag","tagId","tagTitle","other","__objRest","params","k","processData","data","val","findCategoryById","categories","it","res","found","findCategoryById$1","formatUrl","url","replacements","alphanumericExpression","trailingDashExpression","parsed","formatUrl$1","childParentStructure","items","structure","parent","item","categoryTrail","ids","addAncestors","parentId","getCategoryTrailAsObjects","trail","categoryId","buildCategoryTrail","routeName","categoryIds","container","dataType","dataClient","buildTrail","objectTrail","result","dataURItoBlob","dataURI","byteString","mimestring","content","dataURItoBlob$1","debugLog","print","msgOrObj","_Logger","__publicField","key","deepClone","out","value","deepClone$1","findAndActivateStoredWidgets","implementation","implementationStorage","hash","activeStickyWidget","el","formatDate","date","includeTime","d","month","day","year","hours","minutes","getCookie","cookieName","documentCookie","start","end","s","char","htmlParentContains","child","node","hasChild","kebabCase","string","Queue","lockWarningTime","lockErrorTime","task","done","next","errorTimeout","warningTimeout","taskPromise","reason","locks","lock","isObject","mergeDeep","target","sources","clonedTarget","clonedSources","mergeDeepRecursive","source","mergeDeep$1","watchForLoadingComplete","widgetDOMElement","isLoading","handleComplete","dispatched","mutations","observer","mutation","notifyDataLoaded","viewOutletContainer","components","waitingFor","complete","componentElements","element","dataName","name","notifyDataLoaded$1","removeNullAndUndefinedValues","object","removeNullAndUndefinedValues$1","setCookie","days","expires","shallowCompare","a","b","equal","bKey","s4","uuid","WaitFor","options","action","indexOfActionsEmitted","queuedAction","index","evaluate","_"],"mappings":"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"}
package/package.json CHANGED
@@ -1,47 +1,33 @@
1
1
  {
2
- "name": "@telia-ace/widget-utilities",
3
- "version": "1.0.5-next.3",
4
- "description": "Utilities used internally by ACE Widget packages.",
5
- "license": "SEE LICENSE IN LICENSE.txt",
6
- "author": "Telia Company AB",
7
- "keywords": [
8
- "telia"
9
- ],
10
- "main": "dist/index.js",
11
- "sourceMain": "src/index.ts",
12
- "types": "dist/index.d.ts",
13
- "files": [
14
- "LICENSE.txt",
15
- "README.md",
16
- "dist/"
17
- ],
18
- "publishConfig": {
19
- "access": "public"
20
- },
21
- "scripts": {
22
- "clean": "rimraf ./dist",
23
- "precompile": "tsc -emitDeclarationOnly",
24
- "compile": "vite build",
25
- "ci:install": "yarn install --frozen-lockfile",
26
- "preci:build": "tsc -emitDeclarationOnly",
27
- "ci:build": "vite build",
28
- "ci:test": "echo TESTS NOT IMPLEMENTED",
29
- "ci:version-latest": "yarn version --patch",
30
- "ci:upgrade-deps-latest": "npx @telia-ace/widget-developer-tools update-telia-ace-dependencies --latest",
31
- "ci:version-next": "yarn version --prerelease --preid next",
32
- "ci:upgrade-deps-next": "npx @telia-ace/widget-developer-tools update-telia-ace-dependencies --next"
33
- },
34
- "sideEffects": false,
35
- "dependencies": {
36
- "@webprovisions/platform": "^1.1.2"
37
- },
38
- "devDependencies": {
39
- "@telia-ace/widget-developer-tools": "next",
40
- "@types/node": "^18.11.2",
41
- "rimraf": "^3.0.2",
42
- "typescript": "^4.8.4",
43
- "vite": "^3.1.8"
44
- },
45
- "peerDependencies": {},
46
- "prettier": "@telia-ace/widget-developer-tools/prettier-config"
47
- }
2
+ "name": "@telia-ace/widget-utilities",
3
+ "version": "1.0.5-next.5",
4
+ "description": "Utilities used internally by ACE Widget packages.",
5
+ "license": "SEE LICENSE IN LICENSE.txt",
6
+ "author": "Telia Company AB",
7
+ "keywords": [
8
+ "telia"
9
+ ],
10
+ "main": "dist/index.js",
11
+ "sourceMain": "src/index.ts",
12
+ "type": "module",
13
+ "types": "dist/index.d.ts",
14
+ "files": [
15
+ "LICENSE.txt",
16
+ "README.md",
17
+ "dist/"
18
+ ],
19
+ "publishConfig": {
20
+ "access": "public"
21
+ },
22
+ "sideEffects": false,
23
+ "dependencies": {
24
+ "@webprovisions/platform": "^1.1.2"
25
+ },
26
+ "devDependencies": {
27
+ "@telia-ace/widget-developer-tools": "^1.0.11-next.7"
28
+ },
29
+ "scripts": {
30
+ "clean": "rimraf ./dist",
31
+ "build": "rimraf ./dist && tsc -emitDeclarationOnly && vite build"
32
+ }
33
+ }