@telia-ace/knowledge-widget-adapters 1.0.23 → 1.0.27

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.
@@ -9,7 +9,6 @@ declare type Props = {
9
9
  action?: (action: string, value?: any) => void;
10
10
  dispatch?: DispatchAction;
11
11
  children?: ReactNode;
12
- itemRenderer?: (cm: any, props: any) => JSX.Element;
13
12
  guideId?: string;
14
13
  };
15
14
  declare const ContactList: React.SFC<Props>;
@@ -14,7 +14,7 @@ import { Html as N, genericHtml as g, headingElement as F } from "@telia-ace/kno
14
14
  import { appendClassNames as s } from "@telia-ace/widget-utilities";
15
15
  import * as l from "react";
16
16
  import H, { css as $ } from "styled-components";
17
- import { F as b } from "./index.e9a517ef.js";
17
+ import { F as b } from "./index.8912b772.js";
18
18
  import "@telia-ace/widget-forms";
19
19
  import "@telia-ace/knowledge-widget-core";
20
20
  const C = H(N)`
@@ -48,4 +48,4 @@ const C = H(N)`
48
48
  export {
49
49
  S as default
50
50
  };
51
- //# sourceMappingURL=email-form-component.e13f4117.js.map
51
+ //# sourceMappingURL=email-form-component.cb09ca59.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"email-form-component.e13f4117.js","sources":["../src/contact-methods/email/email-form-component.tsx"],"sourcesContent":["import { genericHtml, headingElement, Html } from '@telia-ace/knowledge-widget-ui';\r\nimport { appendClassNames } from '@telia-ace/widget-utilities';\r\nimport * as React from 'react';\r\nimport styled, { css } from 'styled-components';\r\nimport { ContactMethodProps, Form } from '../ui';\r\n\r\nconst StyledHtml = styled(Html)`\r\n ${genericHtml}\r\n\r\n ${headingElement(\r\n 'h1',\r\n css`\r\n font-weight: normal;\r\n font-size: ${(p) => p.theme.fonts?.medium};\r\n `\r\n )}\r\n`;\r\n\r\nconst EmailFormComponent: React.FC<ContactMethodProps> = (props) => {\r\n const {\r\n className,\r\n renderDefault = () => {},\r\n body: { form },\r\n confirmation,\r\n htmlParseInstruction,\r\n disabled,\r\n } = props;\r\n\r\n if (confirmation) {\r\n return (\r\n <StyledHtml\r\n className={appendClassNames(\r\n className,\r\n 'humany-contact-method-confirmation',\r\n 'humany-contact-method-email'\r\n )}\r\n html={confirmation}\r\n htmlParseInstruction={htmlParseInstruction}\r\n />\r\n );\r\n }\r\n\r\n if (form && !disabled) {\r\n return (\r\n <Form\r\n {...props}\r\n className={appendClassNames(className, 'humany-contact-method-email')}\r\n />\r\n );\r\n }\r\n\r\n return renderDefault();\r\n};\r\n\r\nexport default EmailFormComponent;\r\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAMA,MAAM,IAAa,EAAO,CAAI;AAAA,MACxB;AAAA;AAAA,MAEA,EACE,MACA;AAAA;AAAA,yBAEiB,CAAC,MAAM;;AAAA,gBAAE,MAAM,UAAR,kBAAe;AAAA;AAAA,SAE3C;AAAA,GAGE,IAAmD,CAAC,MAAU;AAC1D,QAAA;AAAA,IACF;AAAA,IACA,mBAAgB,MAAM;AAAA,IAAC;AAAA,IACvB,MAAM,EAAE;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,MACA;AAEJ,SAAI,IAEK,kBAAA,cAAA,GAAA;AAAA,IACG,WAAW,EACP,GACA,sCACA,6BACJ;AAAA,IACA,MAAM;AAAA,IACN;AAAA,EAAA,CACJ,IAIJ,KAAQ,CAAC,IAEJ,kBAAA,cAAA,GAAA,QACO,IADP;AAAA,IAEG,WAAW,EAAiB,GAAW,6BAA6B;AAAA,EAAA,EACxE,IAID,EAAc;AACzB;"}
1
+ {"version":3,"file":"email-form-component.cb09ca59.js","sources":["../src/contact-methods/email/email-form-component.tsx"],"sourcesContent":["import { genericHtml, headingElement, Html } from '@telia-ace/knowledge-widget-ui';\r\nimport { appendClassNames } from '@telia-ace/widget-utilities';\r\nimport * as React from 'react';\r\nimport styled, { css } from 'styled-components';\r\nimport { ContactMethodProps, Form } from '../ui';\r\n\r\nconst StyledHtml = styled(Html)`\r\n ${genericHtml}\r\n\r\n ${headingElement(\r\n 'h1',\r\n css`\r\n font-weight: normal;\r\n font-size: ${(p) => p.theme.fonts?.medium};\r\n `\r\n )}\r\n`;\r\n\r\nconst EmailFormComponent: React.FC<ContactMethodProps> = (props) => {\r\n const {\r\n className,\r\n renderDefault = () => {},\r\n body: { form },\r\n confirmation,\r\n htmlParseInstruction,\r\n disabled,\r\n } = props;\r\n\r\n if (confirmation) {\r\n return (\r\n <StyledHtml\r\n className={appendClassNames(\r\n className,\r\n 'humany-contact-method-confirmation',\r\n 'humany-contact-method-email'\r\n )}\r\n html={confirmation}\r\n htmlParseInstruction={htmlParseInstruction}\r\n />\r\n );\r\n }\r\n\r\n if (form && !disabled) {\r\n return (\r\n <Form\r\n {...props}\r\n className={appendClassNames(className, 'humany-contact-method-email')}\r\n />\r\n );\r\n }\r\n\r\n return renderDefault();\r\n};\r\n\r\nexport default EmailFormComponent;\r\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAMA,MAAM,IAAa,EAAO,CAAI;AAAA,MACxB;AAAA;AAAA,MAEA,EACE,MACA;AAAA;AAAA,yBAEiB,CAAC,MAAM;;AAAA,gBAAE,MAAM,UAAR,kBAAe;AAAA;AAAA,SAE3C;AAAA,GAGE,IAAmD,CAAC,MAAU;AAC1D,QAAA;AAAA,IACF;AAAA,IACA,mBAAgB,MAAM;AAAA,IAAC;AAAA,IACvB,MAAM,EAAE;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,MACA;AAEJ,SAAI,IAEK,kBAAA,cAAA,GAAA;AAAA,IACG,WAAW,EACP,GACA,sCACA,6BACJ;AAAA,IACA,MAAM;AAAA,IACN;AAAA,EAAA,CACJ,IAIJ,KAAQ,CAAC,IAEJ,kBAAA,cAAA,GAAA,QACO,IADP;AAAA,IAEG,WAAW,EAAiB,GAAW,6BAA6B;AAAA,EAAA,EACxE,IAID,EAAc;AACzB;"}
@@ -2,7 +2,7 @@ import { Html as a, genericHtml as l } from "@telia-ace/knowledge-widget-ui";
2
2
  import { appendClassNames as n } from "@telia-ace/widget-utilities";
3
3
  import * as t from "react";
4
4
  import p from "styled-components";
5
- import { D as c } from "./index.e9a517ef.js";
5
+ import { D as c } from "./index.8912b772.js";
6
6
  import "@telia-ace/widget-forms";
7
7
  import "@telia-ace/knowledge-widget-core";
8
8
  const E = ({
@@ -24,4 +24,4 @@ const E = ({
24
24
  export {
25
25
  E as default
26
26
  };
27
- //# sourceMappingURL=free-text-component.bea8185a.js.map
27
+ //# sourceMappingURL=free-text-component.a78d324f.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"free-text-component.bea8185a.js","sources":["../src/contact-methods/free-text/free-text-component.tsx"],"sourcesContent":["import { genericHtml, Html } from '@telia-ace/knowledge-widget-ui';\r\nimport { appendClassNames } from '@telia-ace/widget-utilities';\r\nimport * as React from 'react';\r\nimport styled from 'styled-components';\r\nimport { ContactMethodProps, Description } from '../ui';\r\n\r\nconst FreeTextComponent: React.SFC<ContactMethodProps> = ({\r\n className,\r\n description,\r\n body: { freetext },\r\n htmlParseInstruction,\r\n}) => {\r\n if (!freetext) {\r\n return null;\r\n }\r\n return (\r\n <div className={appendClassNames(className, 'humany-contact-method-free-text')}>\r\n <StyledHtml html={freetext} htmlParseInstruction={htmlParseInstruction} />\r\n {description && (\r\n <Description html={description} htmlParseInstruction={htmlParseInstruction} />\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default FreeTextComponent;\r\n\r\nconst StyledHtml = styled(Html)`\r\n ${genericHtml};\r\n`;\r\n"],"names":[],"mappings":";;;;;;;AAMA,MAAM,IAAmD,CAAC;AAAA,EACtD;AAAA,EACA;AAAA,EACA,MAAM,EAAE;AAAA,EACR;AAAA,MAEK,IAIA,kBAAA,cAAA,OAAA;AAAA,EAAI,WAAW,EAAiB,GAAW,iCAAiC;AAAA,GACxE,kBAAA,cAAA,GAAA;AAAA,EAAW,MAAM;AAAA,EAAU;AAA4C,CAAA,GACvE,KACI,kBAAA,cAAA,GAAA;AAAA,EAAY,MAAM;AAAA,EAAa;AAA4C,CAAA,CAEpF,IARO,MAcT,IAAa,EAAO,CAAI;AAAA,MACxB;AAAA;"}
1
+ {"version":3,"file":"free-text-component.a78d324f.js","sources":["../src/contact-methods/free-text/free-text-component.tsx"],"sourcesContent":["import { genericHtml, Html } from '@telia-ace/knowledge-widget-ui';\r\nimport { appendClassNames } from '@telia-ace/widget-utilities';\r\nimport * as React from 'react';\r\nimport styled from 'styled-components';\r\nimport { ContactMethodProps, Description } from '../ui';\r\n\r\nconst FreeTextComponent: React.SFC<ContactMethodProps> = ({\r\n className,\r\n description,\r\n body: { freetext },\r\n htmlParseInstruction,\r\n}) => {\r\n if (!freetext) {\r\n return null;\r\n }\r\n return (\r\n <div className={appendClassNames(className, 'humany-contact-method-free-text')}>\r\n <StyledHtml html={freetext} htmlParseInstruction={htmlParseInstruction} />\r\n {description && (\r\n <Description html={description} htmlParseInstruction={htmlParseInstruction} />\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default FreeTextComponent;\r\n\r\nconst StyledHtml = styled(Html)`\r\n ${genericHtml};\r\n`;\r\n"],"names":[],"mappings":";;;;;;;AAMA,MAAM,IAAmD,CAAC;AAAA,EACtD;AAAA,EACA;AAAA,EACA,MAAM,EAAE;AAAA,EACR;AAAA,MAEK,IAIA,kBAAA,cAAA,OAAA;AAAA,EAAI,WAAW,EAAiB,GAAW,iCAAiC;AAAA,GACxE,kBAAA,cAAA,GAAA;AAAA,EAAW,MAAM;AAAA,EAAU;AAA4C,CAAA,GACvE,KACI,kBAAA,cAAA,GAAA;AAAA,EAAY,MAAM;AAAA,EAAa;AAA4C,CAAA,CAEpF,IARO,MAcT,IAAa,EAAO,CAAI;AAAA,MACxB;AAAA;"}
@@ -1,97 +1,97 @@
1
1
  var _ = Object.defineProperty, J = Object.defineProperties;
2
2
  var Q = Object.getOwnPropertyDescriptors;
3
3
  var P = Object.getOwnPropertySymbols;
4
- var V = Object.prototype.hasOwnProperty, D = Object.prototype.propertyIsEnumerable;
5
- var R = (t, e, n) => e in t ? _(t, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : t[e] = n, u = (t, e) => {
4
+ var R = Object.prototype.hasOwnProperty, V = Object.prototype.propertyIsEnumerable;
5
+ var A = (t, e, n) => e in t ? _(t, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : t[e] = n, h = (t, e) => {
6
6
  for (var n in e || (e = {}))
7
- V.call(e, n) && R(t, n, e[n]);
7
+ R.call(e, n) && A(t, n, e[n]);
8
8
  if (P)
9
9
  for (var n of P(e))
10
- D.call(e, n) && R(t, n, e[n]);
10
+ V.call(e, n) && A(t, n, e[n]);
11
11
  return t;
12
- }, y = (t, e) => J(t, Q(e));
13
- var $ = (t, e) => {
12
+ }, g = (t, e) => J(t, Q(e));
13
+ var C = (t, e) => {
14
14
  var n = {};
15
15
  for (var o in t)
16
- V.call(t, o) && e.indexOf(o) < 0 && (n[o] = t[o]);
16
+ R.call(t, o) && e.indexOf(o) < 0 && (n[o] = t[o]);
17
17
  if (t != null && P)
18
18
  for (var o of P(t))
19
- e.indexOf(o) < 0 && D.call(t, o) && (n[o] = t[o]);
19
+ e.indexOf(o) < 0 && V.call(t, o) && (n[o] = t[o]);
20
20
  return n;
21
21
  };
22
- var b = (t, e, n) => new Promise((o, a) => {
23
- var c = (r) => {
22
+ var y = (t, e, n) => new Promise((o, a) => {
23
+ var c = (s) => {
24
24
  try {
25
- s(n.next(r));
25
+ i(n.next(s));
26
26
  } catch (l) {
27
27
  a(l);
28
28
  }
29
- }, i = (r) => {
29
+ }, r = (s) => {
30
30
  try {
31
- s(n.throw(r));
31
+ i(n.throw(s));
32
32
  } catch (l) {
33
33
  a(l);
34
34
  }
35
- }, s = (r) => r.done ? o(r.value) : Promise.resolve(r.value).then(c, i);
36
- s((n = n.apply(t, e)).next());
35
+ }, i = (s) => s.done ? o(s.value) : Promise.resolve(s.value).then(c, r);
36
+ i((n = n.apply(t, e)).next());
37
37
  });
38
- import { FormReader as x, FormBuilder as X, FormComponent as Y } from "@telia-ace/widget-forms";
39
- import { ComponentPlatform as L, Plugin as Z } from "@telia-ace/knowledge-widget-core";
38
+ import { FormReader as S, FormBuilder as X, FormComponent as Y } from "@telia-ace/widget-forms";
39
+ import { ComponentPlatform as D, Plugin as Z } from "@telia-ace/knowledge-widget-core";
40
40
  import { lock as ee, createParams as te, formatUrl as ne, appendClassNames as oe } from "@telia-ace/widget-utilities";
41
- import d, { lazy as ae, Suspense as re, useState as ie, useEffect as se } from "react";
42
- import { Paragraph as ce, headingElement as j, Html as le, genericHtml as me, borderTabStyle as O, linkTabStyle as de, StyledText as he, Link as ue, useComponent as pe, useRouteData as fe, Typography as ge, SymbolBadge as ye, itemList as be, ItemList as ve, useContainer as Ce } from "@telia-ace/knowledge-widget-ui";
43
- import v, { css as N } from "styled-components";
41
+ import m, { lazy as ae, Suspense as ie, useState as re, useEffect as se } from "react";
42
+ import { Paragraph as ce, headingElement as z, Html as le, genericHtml as de, borderTabStyle as j, linkTabStyle as me, StyledText as ue, Link as he, useComponent as pe, useRouteData as fe, Typography as ge, SymbolBadge as ye, itemList as be, ItemList as ve, useContainer as Ce } from "@telia-ace/knowledge-widget-ui";
43
+ import b, { css as N } from "styled-components";
44
44
  const I = (t, e, n = !1) => t.getManyAsync("matchingClient", "router").then((o) => {
45
- const { formData: a } = new x(e.body.form).export(n), { router: c, matchingClient: i } = o, { params: s } = c.getRouteData();
46
- return i.customRequest(`contactmethods/${e.id}${n ? "/validatedwithpayload" : ""}`, "POST", {
45
+ const { formData: a } = new S(e.body.form).export(n), { router: c, matchingClient: r } = o, { params: i } = c.getRouteData();
46
+ return r.customRequest(`contactmethods/${e.id}${n ? "/validatedwithpayload" : ""}`, "POST", {
47
47
  body: a,
48
48
  configuration: {
49
- guideId: e.body.guideId || s.guideId
49
+ guideId: e.body.guideId || i.guideId
50
50
  }
51
51
  });
52
- }), H = (t, e, n) => I(t, e).then((o) => n ? n(o) : o).then(({ ConfirmationText: o }) => o), k = (t, e) => I(t, e, !0).then((n) => ({
52
+ }), O = (t, e, n) => I(t, e).then((o) => n ? n(o) : o).then(({ ConfirmationText: o }) => o), k = (t, e) => I(t, e, !0).then((n) => ({
53
53
  valid: n.Validation.IsValid,
54
54
  errors: n.Validation.Errors,
55
55
  errorTypes: n.Validation.ErrorTypes
56
- })), q = (t, e) => I(t, e, !0).then((n) => X.fromLegacyForm(e.id, n.ContactMethod.Form).get()), w = (t, e) => t.getAsync("matchingClient").then((n) => {
56
+ })), H = (t, e) => I(t, e, !0).then((n) => X.fromLegacyForm(e.id, n.ContactMethod.Form).get()), $ = (t, e) => t.getAsync("matchingClient").then((n) => {
57
57
  n.completeContactMethod(e.id);
58
58
  });
59
- function $e(t) {
59
+ function ke(t) {
60
60
  t.getAsync("contactMethods").then((e) => {
61
61
  e.create({
62
62
  clientName: "email.form",
63
- render: import("./email-form-component.e13f4117.js"),
64
- onEvaluate: (n) => q(t, n),
63
+ render: import("./email-form-component.cb09ca59.js"),
64
+ onEvaluate: (n) => H(t, n),
65
65
  onValidate: (n) => k(t, n),
66
- onSubmit: (n) => H(t, n),
67
- onComplete: (n) => w(t, n)
66
+ onSubmit: (n) => O(t, n),
67
+ onComplete: (n) => $(t, n)
68
68
  });
69
69
  });
70
70
  }
71
- const F = (t, e, n) => {
72
- const { url: o, width: a, height: c } = e, i = n || {}, s = document.createElement("a");
73
- return s.href = o, s.search.replace("?", "").split("&").forEach((r) => {
74
- const [l, m] = r.split("=");
75
- typeof m != "undefined" && (i[l] = m);
76
- }), s.search = Object.keys(i).map((r) => `${r}=${i[r]}`).join("&"), window.open(s.href, t, `width=${a},height=${c}`), "";
71
+ const L = (t, e, n) => {
72
+ const { url: o, width: a, height: c } = e, r = n || {}, i = document.createElement("a");
73
+ return i.href = o, i.search.replace("?", "").split("&").forEach((s) => {
74
+ const [l, d] = s.split("=");
75
+ typeof d != "undefined" && (r[l] = d);
76
+ }), i.search = Object.keys(r).map((s) => `${s}=${r[s]}`).join("&"), window.open(i.href, t, `width=${a},height=${c}`), "";
77
77
  };
78
- function ke(t) {
78
+ function $e(t) {
79
79
  t.getAsync("contactMethods").then((e) => {
80
80
  e.create({
81
81
  clientName: "chat.popup",
82
82
  render: "email.form",
83
83
  handleClick: (n) => {
84
- const { title: o, body: a } = n, l = a, { form: c, guideId: i, confirmationFallback: s } = l, r = $(l, ["form", "guideId", "confirmationFallback"]);
84
+ const { title: o, body: a } = n, l = a, { form: c, guideId: r, confirmationFallback: i } = l, s = C(l, ["form", "guideId", "confirmationFallback"]);
85
85
  return c ? () => {
86
- } : (m) => {
87
- m.preventDefault(), F(o, r);
86
+ } : (d) => {
87
+ d.preventDefault(), L(o, s);
88
88
  };
89
89
  },
90
90
  onValidate: (n) => k(t, n),
91
- onComplete: (n) => w(t, n),
91
+ onComplete: (n) => $(t, n),
92
92
  onSubmit: (n) => {
93
- const { title: o, body: a } = n, m = a, { form: c, guideId: i, confirmationFallback: s } = m, r = $(m, ["form", "guideId", "confirmationFallback"]), l = new x(c).export().values;
94
- return F(o, r, l), s;
93
+ const { title: o, body: a } = n, d = a, { form: c, guideId: r, confirmationFallback: i } = d, s = C(d, ["form", "guideId", "confirmationFallback"]), l = new S(c).export().values;
94
+ return L(o, s, l), i;
95
95
  }
96
96
  });
97
97
  });
@@ -100,7 +100,7 @@ function we(t) {
100
100
  t.getAsync("contactMethods").then((e) => {
101
101
  e.create({
102
102
  clientName: "custom.freetext",
103
- render: import("./free-text-component.bea8185a.js")
103
+ render: import("./free-text-component.a78d324f.js")
104
104
  });
105
105
  });
106
106
  }
@@ -120,64 +120,64 @@ function Ee(t) {
120
120
  });
121
121
  });
122
122
  }
123
- const E = (t, e) => b(void 0, null, function* () {
123
+ const E = (t, e) => y(void 0, null, function* () {
124
124
  const n = t.get(e.clientName);
125
125
  let { description: o, disabled: a, onClick: c } = e;
126
126
  if (n) {
127
- const { handleClick: i, handleDescription: s, handleDisabled: r } = n;
128
- typeof i == "function" && (c = yield Promise.resolve(i(e))), typeof s == "function" && (o = yield Promise.resolve(s(e))), typeof r == "function" && (a = yield Promise.resolve(r(e)));
127
+ const { handleClick: r, handleDescription: i, handleDisabled: s } = n;
128
+ typeof r == "function" && (c = yield Promise.resolve(r(e))), typeof i == "function" && (o = yield Promise.resolve(i(e))), typeof s == "function" && (a = yield Promise.resolve(s(e)));
129
129
  }
130
- return Promise.resolve(y(u({}, e), {
130
+ return Promise.resolve(g(h({}, e), {
131
131
  description: o,
132
132
  disabled: a,
133
133
  onClick: c
134
134
  }));
135
135
  });
136
- class S {
136
+ class x {
137
137
  constructor(e, n) {
138
138
  if (this.container = e, this.componentPlatform = n, this.adapters = /* @__PURE__ */ new Map(), this.subs = [], n) {
139
- n.components().ofType("contact-list").select().actions.watch("contact-list.fetched", (i, s) => b(this, null, function* () {
140
- const { contactMethods: r } = i;
141
- if (r) {
142
- const l = Promise.all(r.map((m) => E(this.adapters, m)));
143
- yield Promise.resolve(l).then((m) => {
144
- i.contactMethods = m;
139
+ n.components().ofType("contact-list").select().actions.watch("contact-list.fetched", (r, i) => y(this, null, function* () {
140
+ const { contactMethods: s } = r;
141
+ if (s) {
142
+ const l = Promise.all(s.map((d) => E(this.adapters, d)));
143
+ yield Promise.resolve(l).then((d) => {
144
+ r.contactMethods = d;
145
145
  });
146
146
  }
147
- return s(i);
147
+ return i(r);
148
148
  }));
149
149
  const a = n.components().ofType("guide").select();
150
- a.actions.watch("guide.fetched", (i, s) => b(this, null, function* () {
151
- const { contactMethods: r } = i;
152
- if (r) {
153
- const l = Promise.all(r.map((m) => E(this.adapters, m)));
154
- yield Promise.resolve(l).then((m) => {
155
- i.contactMethods = m;
150
+ a.actions.watch("guide.fetched", (r, i) => y(this, null, function* () {
151
+ const { contactMethods: s } = r;
152
+ if (s) {
153
+ const l = Promise.all(s.map((d) => E(this.adapters, d)));
154
+ yield Promise.resolve(l).then((d) => {
155
+ r.contactMethods = d;
156
156
  });
157
157
  }
158
- return s(i);
159
- })), a.actions.watch("guide.handover", (i, s) => b(this, null, function* () {
160
- const { handoverContactMethods: r } = i;
161
- if (r) {
162
- const l = Promise.all(r.map((m) => E(this.adapters, m)));
163
- yield Promise.resolve(l).then((m) => {
164
- i.handoverContactMethods = m;
158
+ return i(r);
159
+ })), a.actions.watch("guide.handover", (r, i) => y(this, null, function* () {
160
+ const { handoverContactMethods: s } = r;
161
+ if (s) {
162
+ const l = Promise.all(s.map((d) => E(this.adapters, d)));
163
+ yield Promise.resolve(l).then((d) => {
164
+ r.handoverContactMethods = d;
165
165
  });
166
166
  }
167
- return s(i);
168
- })), n.components().ofType("contact-method").select().actions.watch("contact-method.fetched", (i, s) => b(this, null, function* () {
169
- const { contactMethod: r } = i;
170
- return r ? E(this.adapters, r).then((l) => s(y(u({}, i), { contactMethod: l }))) : s(i);
167
+ return i(r);
168
+ })), n.components().ofType("contact-method").select().actions.watch("contact-method.fetched", (r, i) => y(this, null, function* () {
169
+ const { contactMethod: s } = r;
170
+ return s ? E(this.adapters, s).then((l) => i(g(h({}, r), { contactMethod: l }))) : i(r);
171
171
  }));
172
172
  }
173
173
  }
174
174
  static create(e) {
175
- return L.getInstance(e).then((n) => new S(e, n));
175
+ return D.getInstance(e).then((n) => new x(e, n));
176
176
  }
177
177
  static getInstance(e, n = "contactMethods") {
178
178
  return ee(e)(() => e.getAsync(n).then((o) => {
179
179
  let a = o;
180
- return a || L.getInstance(e).then((c) => (a = new S(e, c), e.registerAsync(n, () => a), a));
180
+ return a || D.getInstance(e).then((c) => (a = new x(e, c), e.registerAsync(n, () => a), a));
181
181
  }));
182
182
  }
183
183
  track(e = {}, n) {
@@ -188,11 +188,11 @@ class S {
188
188
  });
189
189
  }
190
190
  complete(e) {
191
- const { id: n, title: o, clientName: a, expanded: c, body: i } = e;
192
- this.track({ contactMethod: { id: n, title: o, expanded: c, type: a }, hasGuide: !!i.guideId }, "contact-method-complete");
193
- const s = this.adapters.get(a);
194
- if (s && s.onComplete)
195
- return s.onComplete(e);
191
+ const { id: n, title: o, clientName: a, expanded: c, body: r } = e;
192
+ this.track({ contactMethod: { id: n, title: o, expanded: c, type: a }, hasGuide: !!r.guideId }, "contact-method-complete");
193
+ const i = this.adapters.get(a);
194
+ if (i && i.onComplete)
195
+ return i.onComplete(e);
196
196
  }
197
197
  evaluate(e) {
198
198
  const { clientName: n } = e, o = this.adapters.get(n);
@@ -200,10 +200,10 @@ class S {
200
200
  }
201
201
  validate(e) {
202
202
  const { id: n, title: o, clientName: a } = e, c = this.adapters.get(a);
203
- return c && c.onValidate ? Promise.resolve(c.onValidate(e)).then((i) => {
204
- this.track({ contactMethod: { id: n, title: o, type: a }, isValid: i.valid }, "contact-method-validate");
205
- const { events: s } = this.container.get("$widget");
206
- return s.dispatch("form:validated", { isValid: i.valid }), i;
203
+ return c && c.onValidate ? Promise.resolve(c.onValidate(e)).then((r) => {
204
+ this.track({ contactMethod: { id: n, title: o, type: a }, isValid: r.valid }, "contact-method-validate");
205
+ const { events: i } = this.container.get("$widget");
206
+ return i.dispatch("form:validated", { isValid: r.valid }), r;
207
207
  }) : Promise.resolve({ valid: !0 });
208
208
  }
209
209
  submit(e) {
@@ -212,10 +212,10 @@ class S {
212
212
  }
213
213
  create(e) {
214
214
  const { clientName: n, render: o } = e;
215
- return this.adapters.set(n, u({
215
+ return this.adapters.set(n, h({
216
216
  onValidate: (a) => k(this.container, a),
217
- onEvaluate: (a) => q(this.container, a),
218
- onComplete: (a) => w(this.container, a)
217
+ onEvaluate: (a) => H(this.container, a),
218
+ onComplete: (a) => $(this.container, a)
219
219
  }, e)), this.container.getAsync("componentResolver").then((a) => {
220
220
  typeof o == "string" ? this.subs.push(a.registerAlias(n, o)) : this.subs.push(a.registerComponent(n, ae(() => o)));
221
221
  });
@@ -224,8 +224,8 @@ class S {
224
224
  this.subs.forEach((e) => e());
225
225
  }
226
226
  }
227
- v(ce)`
228
- ${j("h1", N`
227
+ b(ce)`
228
+ ${z("h1", N`
229
229
  font-weight: normal;
230
230
  font-size: ${(t) => {
231
231
  var e;
@@ -233,94 +233,94 @@ v(ce)`
233
233
  }};
234
234
  `)}
235
235
  `;
236
- const Ne = v(le)`
237
- ${me}
236
+ const Ne = b(le)`
237
+ ${de}
238
238
  font-weight: 300;
239
239
  line-height: 1.5em;
240
240
  button:focus {
241
241
  ${(t) => {
242
242
  var e;
243
- return ((e = t.theme.accessibility) == null ? void 0 : e.isTabbing) && O;
243
+ return ((e = t.theme.accessibility) == null ? void 0 : e.isTabbing) && j;
244
244
  }};
245
245
  }
246
246
 
247
247
  a:focus {
248
248
  ${(t) => {
249
249
  var e;
250
- return ((e = t.theme.accessibility) == null ? void 0 : e.isTabbing) && de;
250
+ return ((e = t.theme.accessibility) == null ? void 0 : e.isTabbing) && me;
251
251
  }};
252
252
  }
253
- `, Se = (t) => {
253
+ `, xe = (t) => {
254
254
  const e = pe(t.clientName), {
255
255
  params: { contactCategory: n, guideCategory: o, phrase: a }
256
256
  } = fe();
257
257
  if (typeof e == "undefined")
258
258
  return null;
259
259
  if (e === null)
260
- return process.env.NODE_ENV !== "production" ? /* @__PURE__ */ d.createElement(Me, {
260
+ return process.env.NODE_ENV !== "production" ? /* @__PURE__ */ m.createElement(Me, {
261
261
  title: `client-name: ${t.clientName}, id: ${t.id}`,
262
262
  className: "humany-non-resolved-contact-method"
263
- }, /* @__PURE__ */ d.createElement(ge, {
263
+ }, /* @__PURE__ */ m.createElement(ge, {
264
264
  variant: "h5"
265
265
  }, "Non resolved Contact Method type")) : null;
266
- const c = (i = {}) => {
267
- const s = u(u({}, t), i), {
268
- id: r,
266
+ const c = (r = {}) => {
267
+ const i = h(h({}, t), r), {
268
+ id: s,
269
269
  title: l,
270
- clientName: m,
271
- symbol: h,
272
- inline: g,
273
- onClick: C = () => {
270
+ clientName: d,
271
+ symbol: u,
272
+ inline: v,
273
+ onClick: f = () => {
274
274
  },
275
- description: f,
276
- htmlParseInstruction: M,
275
+ description: w,
276
+ htmlParseInstruction: B,
277
277
  className: K,
278
278
  disabled: G,
279
279
  guideId: U,
280
- dispatch: T = () => {
280
+ dispatch: M = () => {
281
281
  },
282
- expanded: A
283
- } = s, W = g ? {
282
+ expanded: T
283
+ } = i, W = v ? {
284
284
  onKeyDown: (p) => {
285
- p.key && p.key === "Enter" && (C(p, s), p.defaultPrevented || !A && T("expand", r));
285
+ p.key && p.key === "Enter" && (f(p, i), p.defaultPrevented || !T && M("expand", s));
286
286
  },
287
287
  onClick: (p) => {
288
- C(p, s), p.defaultPrevented || !A && T("expand", r);
288
+ f(p, i), p.defaultPrevented || !T && M("expand", s);
289
289
  }
290
290
  } : {
291
- onClick: (p) => C(p, s),
291
+ onClick: (p) => f(p, i),
292
292
  routeName: "contact-method",
293
293
  params: te({
294
294
  contactCategory: n,
295
295
  guideId: U,
296
296
  guideCategory: o,
297
297
  phrase: a,
298
- contactMethod: r,
298
+ contactMethod: s,
299
299
  uriName: ne(l)
300
300
  })
301
301
  };
302
- return /* @__PURE__ */ d.createElement(Ie, u(u({
302
+ return /* @__PURE__ */ m.createElement(Ie, h(h({
303
303
  title: l,
304
304
  "aria-label": l,
305
305
  className: K,
306
306
  disabled: G,
307
- description: f,
308
- "data-client-name": m
309
- }, i), W), h && /* @__PURE__ */ d.createElement(ye, {
310
- symbol: h
311
- }), f ? /* @__PURE__ */ d.createElement("div", {
307
+ description: w,
308
+ "data-client-name": d
309
+ }, r), W), u && /* @__PURE__ */ m.createElement(ye, {
310
+ symbol: u
311
+ }), w ? /* @__PURE__ */ m.createElement("div", {
312
312
  className: "humany-contact-link-rich-content"
313
- }, /* @__PURE__ */ d.createElement(z, null, l), /* @__PURE__ */ d.createElement(Ne, {
314
- html: f,
315
- htmlParseInstruction: M
316
- })) : /* @__PURE__ */ d.createElement(z, null, l));
313
+ }, /* @__PURE__ */ m.createElement(F, null, l), /* @__PURE__ */ m.createElement(Ne, {
314
+ html: w,
315
+ htmlParseInstruction: B
316
+ })) : /* @__PURE__ */ m.createElement(F, null, l));
317
317
  };
318
- return t.expanded ? /* @__PURE__ */ d.createElement(re, {
318
+ return t.expanded ? /* @__PURE__ */ m.createElement(ie, {
319
319
  fallback: null
320
- }, /* @__PURE__ */ d.createElement(e, y(u({}, t), {
320
+ }, /* @__PURE__ */ m.createElement(e, g(h({}, t), {
321
321
  renderDefault: c
322
322
  }))) : c();
323
- }, xe = N`
323
+ }, Se = N`
324
324
  display: flex;
325
325
  padding: ${(t) => {
326
326
  var e;
@@ -336,26 +336,14 @@ const Ne = v(le)`
336
336
  }};
337
337
  }
338
338
  i {
339
- font-size: ${(t) => {
340
- var e;
341
- return (e = t.theme.fonts) == null ? void 0 : e.large;
342
- }};
339
+ font-size: 30px;
343
340
  margin: 0 ${(t) => {
344
341
  var e;
345
342
  return (e = t.theme.sizes) == null ? void 0 : e.large;
346
343
  }} 0 0;
347
- min-height: ${(t) => {
348
- var e;
349
- return (e = t.theme.fonts) == null ? void 0 : e.large;
350
- }};
351
- min-width: ${(t) => {
352
- var e;
353
- return (e = t.theme.fonts) == null ? void 0 : e.large;
354
- }};
355
- line-height: ${(t) => {
356
- var e;
357
- return (e = t.theme.fonts) == null ? void 0 : e.large;
358
- }};
344
+ min-height: 30px;
345
+ min-width: 30px;
346
+ line-height: 30px;
359
347
  display: inline-block;
360
348
  vertical-align: bottom;
361
349
  color: ${(t) => {
@@ -363,21 +351,18 @@ const Ne = v(le)`
363
351
  return (e = t.theme.colors) == null ? void 0 : e.text;
364
352
  }};
365
353
  }
366
- `, z = v(he)`
367
- line-height: ${(t) => {
368
- var e;
369
- return (e = t.theme.fonts) == null ? void 0 : e.large;
370
- }};
371
- `, Ie = v(ue)`
372
- ${xe}
354
+ `, F = b(ue)`
355
+ line-height: 30px;
356
+ `, Ie = b(he)`
357
+ ${Se}
373
358
 
374
359
  &:focus {
375
360
  ${(t) => {
376
361
  var e;
377
- return ((e = t.theme.accessibility) == null ? void 0 : e.isTabbing) && O;
362
+ return ((e = t.theme.accessibility) == null ? void 0 : e.isTabbing) && j;
378
363
  }};
379
364
  }
380
- `, Me = v.div`
365
+ `, Me = b.div`
381
366
  text-align: center;
382
367
  display: block;
383
368
  ${(t) => {
@@ -393,7 +378,7 @@ const Ne = v(le)`
393
378
  return (e = t.theme.sizes) == null ? void 0 : e.large;
394
379
  }};
395
380
 
396
- ${j("h1", N`
381
+ ${z("h1", N`
397
382
  margin: 0;
398
383
  `)}
399
384
  }
@@ -439,7 +424,7 @@ const Ne = v(le)`
439
424
  }};
440
425
  }
441
426
  }
442
- `, Ae = v(ve)`
427
+ `, Ae = b(ve)`
443
428
  ${Te}
444
429
  `, He = ({
445
430
  contactMethods: t,
@@ -447,26 +432,22 @@ const Ne = v(le)`
447
432
  guideId: n,
448
433
  dispatch: o,
449
434
  className: a = "",
450
- itemRenderer: c,
451
- action: i = () => {
435
+ action: c = () => {
452
436
  },
453
- header: s = ""
454
- }) => t.length ? /* @__PURE__ */ d.createElement(Ae, {
455
- header: s,
437
+ header: r = ""
438
+ }) => t.length ? /* @__PURE__ */ m.createElement(Ae, {
439
+ header: r,
456
440
  className: oe(a, "humany-contact-list"),
457
441
  items: t,
458
- renderItem: c ? (r) => /* @__PURE__ */ d.createElement("li", {
459
- key: r.id,
460
- "data-contact-method": r.id
461
- }, c(r, { action: i, dispatch: o, guideId: n })) : (r) => /* @__PURE__ */ d.createElement("li", {
462
- key: r.id,
463
- "data-contact-method": r.id
464
- }, /* @__PURE__ */ d.createElement(Se, y(u({}, r), {
465
- action: i,
442
+ renderItem: (i) => /* @__PURE__ */ m.createElement("li", {
443
+ key: i.id,
444
+ "data-contact-method": i.id
445
+ }, /* @__PURE__ */ m.createElement(xe, g(h({}, i), {
446
+ action: c,
466
447
  dispatch: o,
467
448
  guideId: n
468
449
  })))
469
- }, e) : null, B = (t, e) => {
450
+ }, e) : null, q = (t, e) => {
470
451
  if (t.actionKey === e)
471
452
  return t;
472
453
  if (!t.properties)
@@ -474,7 +455,7 @@ const Ne = v(le)`
474
455
  const n = Object.keys(t.properties);
475
456
  let o;
476
457
  for (let a = 0; a < n.length; a++)
477
- if (o = B(t.properties[n[a]], e), o)
458
+ if (o = q(t.properties[n[a]], e), o)
478
459
  return o;
479
460
  return !1;
480
461
  }, qe = ({
@@ -484,30 +465,30 @@ const Ne = v(le)`
484
465
  action: o,
485
466
  dispatch: a,
486
467
  disabled: c,
487
- autoFocus: i
468
+ autoFocus: r
488
469
  }) => {
489
470
  if (e && !c) {
490
- const { schema: s, layout: r, data: l, meta: m } = e, h = a || o || (() => {
471
+ const { schema: i, layout: s, data: l } = e, d = a || o || (() => {
491
472
  });
492
- return /* @__PURE__ */ d.createElement(Y, {
473
+ return /* @__PURE__ */ m.createElement(Y, {
493
474
  className: t,
494
- schema: s,
495
- layout: r,
475
+ schema: i,
476
+ layout: s,
496
477
  data: l,
497
- autoFocus: i,
498
- onChange: (g, C) => {
499
- const f = { schema: s, layout: r, data: C, meta: m };
500
- g.toString() === "submit" ? h("submit", { id: n, form: f }) : B(s, g).evaluate ? h("evaluate", { id: n, form: f }) : h("validate", { id: n, form: f });
478
+ autoFocus: r,
479
+ onChange: (u, v) => {
480
+ const f = { schema: i, layout: s, data: v };
481
+ u.toString() === "submit" ? d("submit", { id: n, form: f }) : q(i, u).evaluate ? d("evaluate", { id: n, form: f }) : d("validate", { id: n, form: f });
501
482
  }
502
483
  });
503
484
  }
504
485
  return null;
505
486
  }, Be = (t) => {
506
- const [e, n] = ie(null), o = Ce();
487
+ const [e, n] = re(null), o = Ce();
507
488
  return se(() => {
508
489
  let a;
509
490
  return o.getAsync("componentResolver").then((c) => {
510
- a = c.registerResolver(t, (i) => n(i));
491
+ a = c.registerResolver(t, (r) => n(r));
511
492
  }), () => {
512
493
  a && a();
513
494
  };
@@ -519,8 +500,8 @@ function Re(t) {
519
500
  clientName: "custom.webservice",
520
501
  render: "email.form",
521
502
  onValidate: (n) => k(t, n),
522
- onComplete: (n) => w(t, n),
523
- onSubmit: (n) => H(t, n, (o) => y(u({}, o), {
503
+ onComplete: (n) => $(t, n),
504
+ onSubmit: (n) => O(t, n, (o) => g(h({}, o), {
524
505
  ConfirmationText: o.ResponseHtml
525
506
  }))
526
507
  });
@@ -532,24 +513,24 @@ const Ke = (t, e, n) => t.getAsync("contactMethods").then((o) => {
532
513
  render: "email.form",
533
514
  handleClick: () => (a, c) => {
534
515
  const {
535
- body: m
536
- } = c, h = m, { form: i, guideId: s, confirmationFallback: r } = h, l = $(h, ["form", "guideId", "confirmationFallback"]);
537
- i || (a.preventDefault(), n(l));
516
+ body: d
517
+ } = c, u = d, { form: r, guideId: i, confirmationFallback: s } = u, l = C(u, ["form", "guideId", "confirmationFallback"]);
518
+ r || (a.preventDefault(), n(l));
538
519
  },
539
520
  onValidate: (a) => k(t, a),
540
- onComplete: (a) => w(t, a),
521
+ onComplete: (a) => $(t, a),
541
522
  onSubmit: (a) => {
542
523
  const {
543
- body: m
544
- } = a, h = m, { form: c, guideId: i, confirmationFallback: s } = h, r = $(h, ["form", "guideId", "confirmationFallback"]), { values: l } = new x(c).export();
545
- return Promise.resolve(n(r, l)).then((g) => g || s);
524
+ body: d
525
+ } = a, u = d, { form: c, guideId: r, confirmationFallback: i } = u, s = C(u, ["form", "guideId", "confirmationFallback"]), { values: l } = new S(c).export();
526
+ return Promise.resolve(n(s, l)).then((v) => v || i);
546
527
  }
547
528
  });
548
529
  });
549
530
  class Ge extends Z {
550
531
  constructor(e, n) {
551
532
  super(e, n), this.widget.implementation.configure((a) => {
552
- a.plugin($e).plugin(ke).plugin(we).plugin(Ee).plugin(Re).plugin(Pe);
533
+ a.plugin(ke).plugin($e).plugin(we).plugin(Ee).plugin(Re).plugin(Pe);
553
534
  });
554
535
  }
555
536
  }
@@ -558,21 +539,21 @@ export {
558
539
  Ne as D,
559
540
  qe as F,
560
541
  Te as a,
561
- xe as b,
562
- ke as c,
563
- Se as d,
564
- S as e,
565
- w as f,
566
- q as g,
567
- $e as h,
542
+ Se as b,
543
+ $e as c,
544
+ xe as d,
545
+ x as e,
546
+ $ as f,
547
+ H as g,
548
+ ke as h,
568
549
  we as i,
569
550
  Ke as j,
570
551
  Ge as k,
571
552
  Pe as l,
572
553
  Ee as p,
573
- H as s,
554
+ O as s,
574
555
  Be as u,
575
556
  k as v,
576
557
  Re as w
577
558
  };
578
- //# sourceMappingURL=index.e9a517ef.js.map
559
+ //# sourceMappingURL=index.8912b772.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.e9a517ef.js","sources":["../src/contact-methods/email/email-plugin.ts","../src/contact-methods/chat-popup/chat-popup-plugin.ts","../src/contact-methods/free-text/free-text-plugin.ts","../src/contact-methods/link/link-plugin.tsx","../src/contact-methods/phone/phone-plugin.ts","../src/contact-methods/platform.ts","../src/contact-methods/ui/confirmation.tsx","../src/contact-methods/ui/description.tsx","../src/contact-methods/ui/contact-method.tsx","../src/contact-methods/ui/contact-list.tsx","../src/contact-methods/ui/form.tsx","../src/contact-methods/ui/use-contact-method.ts","../src/contact-methods/web-service/web-service-plugin.ts","../src/create-adapter.ts","../src/default-contact-methods-plugin.ts"],"sourcesContent":["import {\r\n ContactMethodApiResponse,\r\n ServiceClient,\r\n SubmissionApiResult,\r\n} from '@telia-ace/knowledge-serviceclient';\r\nimport { FormBuilder, FormReader } from '@telia-ace/widget-forms';\r\nimport { RoutingService } from '@telia-ace/widget-routing';\r\nimport { Container } from '@webprovisions/platform';\r\nimport ContactMethodPlatform from '../platform';\r\nimport { ContactMethodType } from '../ui';\r\n\r\ntype Services = {\r\n matchingClient: ServiceClient;\r\n router: RoutingService;\r\n};\r\n\r\nconst post = (container: Container, contactMethod: ContactMethodType, validate = false) =>\r\n container.getManyAsync('matchingClient', 'router').then((services) => {\r\n const { formData } = new FormReader(contactMethod.body.form).export(validate);\r\n const { router, matchingClient } = services as Services;\r\n const { params } = router.getRouteData();\r\n\r\n return matchingClient.customRequest(\r\n `contactmethods/${contactMethod.id}${validate ? '/validatedwithpayload' : ''}`,\r\n 'POST',\r\n {\r\n body: formData,\r\n configuration: {\r\n guideId: contactMethod.body.guideId || params.guideId,\r\n },\r\n }\r\n );\r\n });\r\n\r\nexport const submit = (\r\n container: Container,\r\n contactMethod: ContactMethodType,\r\n transform?: (response: any) => SubmissionApiResult\r\n) =>\r\n post(container, contactMethod)\r\n .then((response) => (transform ? transform(response) : response))\r\n .then(({ ConfirmationText }: SubmissionApiResult) => ConfirmationText);\r\n\r\nexport const validate = (container: Container, contactMethod: ContactMethodType) =>\r\n post(container, contactMethod, true).then((result: ContactMethodApiResponse) => ({\r\n valid: result.Validation.IsValid,\r\n errors: result.Validation.Errors,\r\n errorTypes: result.Validation.ErrorTypes,\r\n }));\r\n\r\nexport const evaluate = (container: Container, contactMethod: ContactMethodType) =>\r\n post(container, contactMethod, true).then((result: ContactMethodApiResponse) =>\r\n FormBuilder.fromLegacyForm(contactMethod.id, result.ContactMethod.Form).get()\r\n );\r\n\r\nexport const complete = (container: Container, contactMethod: ContactMethodType) =>\r\n container.getAsync('matchingClient').then((matchingClient) => {\r\n matchingClient.completeContactMethod(contactMethod.id);\r\n });\r\n\r\nexport default function emailPlugin(container: Container) {\r\n container.getAsync('contactMethods').then((platform: ContactMethodPlatform) => {\r\n platform.create({\r\n clientName: 'email.form',\r\n render: import('./email-form-component'),\r\n onEvaluate: (contactMethod) => evaluate(container, contactMethod),\r\n onValidate: (contactMethod) => validate(container, contactMethod),\r\n onSubmit: (contactMethod) => submit(container, contactMethod),\r\n onComplete: (contactMethod) => complete(container, contactMethod),\r\n });\r\n });\r\n}\r\n","import { FormReader } from '@telia-ace/widget-forms';\r\nimport { Container } from '@webprovisions/platform';\r\nimport { ContactMethodPlatform, defaultValidate } from '..';\r\nimport { defaultComplete } from '../email';\r\n\r\nconst popup = (\r\n title: string,\r\n settings: { [key: string]: any },\r\n formValues?: { [key: string]: any }\r\n) => {\r\n const { url, width, height } = settings;\r\n\r\n const queries: { [key: string]: any } = formValues ? formValues : {};\r\n\r\n const link = document.createElement('a');\r\n link.href = url;\r\n\r\n link.search\r\n .replace('?', '')\r\n .split('&')\r\n .forEach((part) => {\r\n const [key, value] = part.split('=');\r\n typeof value !== 'undefined' && (queries[key] = value);\r\n });\r\n\r\n link.search = Object.keys(queries)\r\n .map((key) => `${key}=${queries[key]}`)\r\n .join('&');\r\n\r\n window.open(link.href, title, `width=${width},height=${height}`);\r\n return '';\r\n};\r\n\r\nexport default function chatPopupPlugin(container: Container) {\r\n container.getAsync('contactMethods').then((platform: ContactMethodPlatform) => {\r\n platform.create({\r\n clientName: 'chat.popup',\r\n render: 'email.form',\r\n handleClick: (contactMethod) => {\r\n const { title, body } = contactMethod;\r\n const { form, guideId, confirmationFallback, ...rest } = body;\r\n\r\n if (!form) {\r\n return (e) => {\r\n e.preventDefault();\r\n popup(title, rest);\r\n };\r\n }\r\n\r\n return () => {};\r\n },\r\n onValidate: (contactMethod) => defaultValidate(container, contactMethod),\r\n onComplete: (contactMethod) => defaultComplete(container, contactMethod),\r\n onSubmit: (contactMethod) => {\r\n const { title, body } = contactMethod;\r\n const { form, guideId, confirmationFallback, ...rest } = body;\r\n\r\n const formValues = new FormReader(form).export().values;\r\n\r\n popup(title, rest, formValues);\r\n\r\n return confirmationFallback;\r\n },\r\n });\r\n });\r\n}\r\n","import { Container } from '@webprovisions/platform';\r\nimport ContactMethodPlatform from '../platform';\r\n\r\nexport default function freeTextPlugin(container: Container) {\r\n container.getAsync('contactMethods').then((platform: ContactMethodPlatform) => {\r\n platform.create({\r\n clientName: 'custom.freetext',\r\n render: import('./free-text-component'),\r\n });\r\n });\r\n}\r\n","import { Container } from '@webprovisions/platform';\r\nimport ContactMethodPlatform from '../platform';\r\n\r\nexport default function linkPlugin(container: Container) {\r\n container.getAsync('contactMethods').then((platform: ContactMethodPlatform) => {\r\n platform.create({\r\n clientName: 'custom.link',\r\n render: import('./link-component'),\r\n });\r\n });\r\n}\r\n","import { Container } from '@webprovisions/platform';\r\nimport ContactMethodPlatform from '../platform';\r\n\r\nexport default function phonePlugin(container: Container) {\r\n container.getAsync('contactMethods').then((platform: ContactMethodPlatform) => {\r\n platform.create({\r\n clientName: 'phone.text',\r\n render: import('./phone-component'),\r\n });\r\n });\r\n}\r\n","import { ComponentPlatform, ComponentResolver } from '@telia-ace/knowledge-widget-core';\r\nimport { Form } from '@telia-ace/widget-forms';\r\nimport { lock } from '@telia-ace/widget-utilities';\r\nimport { Container, EventSubscriptionCancellation, Widget } from '@webprovisions/platform';\r\nimport React, { lazy } from 'react';\r\nimport { defaultComplete, defaultEvaluate, defaultValidate } from './email';\r\nimport { ContactMethodProps } from './ui';\r\n\r\nexport type ReactComponentImport = Promise<{ default: React.FunctionComponent<any> }>;\r\n\r\nexport type Click = (e: React.MouseEvent, cm: ContactMethodProps) => void;\r\n\r\nexport type AdapterSettings = {\r\n clientName: string;\r\n render: string | ReactComponentImport;\r\n handleDescription?: (cm: ContactMethodProps) => Promise<string> | string;\r\n handleDisabled?: (cm: ContactMethodProps) => Promise<boolean> | boolean;\r\n handleClick?: (cm: ContactMethodProps) => Promise<Click> | Click;\r\n onEvaluate?: (cm: ContactMethodProps) => Promise<Form> | Form;\r\n onValidate?: (cm: ContactMethodProps) => Promise<ValidationResult> | ValidationResult;\r\n onSubmit?: (cm: ContactMethodProps) => Promise<string> | string;\r\n onComplete?: (cm: ContactMethodProps) => Promise<void> | void;\r\n};\r\n\r\nexport type ValidationResult = {\r\n errors?: { [key: string]: string };\r\n errorTypes?: { [key: string]: string };\r\n valid: boolean;\r\n};\r\n\r\nexport enum ContactMethodTrackTypes {\r\n ContactMethodValidate = 'contact-method-validate',\r\n ContactMethodComplete = 'contact-method-complete',\r\n}\r\n\r\nconst handleContactMethod = async (\r\n adapters: Map<string, AdapterSettings>,\r\n contactMethod: ContactMethodProps\r\n): Promise<ContactMethodProps> => {\r\n const adapter = adapters.get(contactMethod.clientName);\r\n let { description, disabled, onClick } = contactMethod;\r\n\r\n if (adapter) {\r\n const { handleClick, handleDescription, handleDisabled } = adapter;\r\n if (typeof handleClick === 'function') {\r\n onClick = await Promise.resolve(handleClick(contactMethod));\r\n }\r\n\r\n if (typeof handleDescription === 'function') {\r\n description = await Promise.resolve(handleDescription(contactMethod));\r\n }\r\n\r\n if (typeof handleDisabled === 'function') {\r\n disabled = await Promise.resolve(handleDisabled(contactMethod));\r\n }\r\n }\r\n\r\n return Promise.resolve({\r\n ...contactMethod,\r\n description,\r\n disabled,\r\n onClick,\r\n });\r\n};\r\n\r\nclass ContactMethodPlatform {\r\n private adapters: Map<string, AdapterSettings> = new Map();\r\n private subs: EventSubscriptionCancellation[] = [];\r\n\r\n static create(container: Container): Promise<ContactMethodPlatform> {\r\n return ComponentPlatform.getInstance(container).then((platform) => {\r\n return new ContactMethodPlatform(container, platform);\r\n });\r\n }\r\n\r\n constructor(private container: Container, private componentPlatform: ComponentPlatform) {\r\n if (componentPlatform) {\r\n const contactListComponent = componentPlatform\r\n .components()\r\n .ofType('contact-list')\r\n .select();\r\n contactListComponent.actions.watch('contact-list.fetched', async (input, next) => {\r\n const { contactMethods } = input;\r\n\r\n if (contactMethods) {\r\n const promises = Promise.all(\r\n contactMethods.map((cm: ContactMethodProps) =>\r\n handleContactMethod(this.adapters, cm)\r\n )\r\n );\r\n\r\n await Promise.resolve(promises).then((contactMethods) => {\r\n input.contactMethods = contactMethods;\r\n });\r\n }\r\n\r\n return next(input);\r\n });\r\n\r\n const guideComponent = componentPlatform.components().ofType('guide').select();\r\n guideComponent.actions.watch('guide.fetched', async (input, next) => {\r\n const { contactMethods } = input;\r\n\r\n if (contactMethods) {\r\n const promises = Promise.all(\r\n contactMethods.map((cm: ContactMethodProps) =>\r\n handleContactMethod(this.adapters, cm)\r\n )\r\n );\r\n\r\n await Promise.resolve(promises).then((contactMethods) => {\r\n input.contactMethods = contactMethods;\r\n });\r\n }\r\n\r\n return next(input);\r\n });\r\n guideComponent.actions.watch('guide.handover', async (input, next) => {\r\n const { handoverContactMethods } = input;\r\n\r\n if (handoverContactMethods) {\r\n const promises = Promise.all(\r\n handoverContactMethods.map((cm: ContactMethodProps) =>\r\n handleContactMethod(this.adapters, cm)\r\n )\r\n );\r\n\r\n await Promise.resolve(promises).then((handoverContactMethods) => {\r\n input.handoverContactMethods = handoverContactMethods;\r\n });\r\n }\r\n\r\n return next(input);\r\n });\r\n\r\n const contactMethodComponent = componentPlatform\r\n .components()\r\n .ofType('contact-method')\r\n .select();\r\n contactMethodComponent.actions.watch('contact-method.fetched', async (input, next) => {\r\n const { contactMethod } = input;\r\n\r\n if (contactMethod) {\r\n return handleContactMethod(this.adapters, contactMethod).then(\r\n (contactMethod) => {\r\n return next({ ...input, contactMethod });\r\n }\r\n );\r\n }\r\n\r\n return next(input);\r\n });\r\n }\r\n }\r\n\r\n static getInstance(\r\n container: Container,\r\n key: string = 'contactMethods'\r\n ): Promise<ContactMethodPlatform> {\r\n return lock(container)(() => {\r\n return container.getAsync(key).then((value: ContactMethodPlatform) => {\r\n let contactMethodPlatform = value;\r\n if (!contactMethodPlatform) {\r\n return ComponentPlatform.getInstance(container).then((components) => {\r\n contactMethodPlatform = new ContactMethodPlatform(container, components);\r\n container.registerAsync(key, () => contactMethodPlatform);\r\n return contactMethodPlatform;\r\n });\r\n }\r\n return contactMethodPlatform;\r\n });\r\n });\r\n }\r\n\r\n private track(data: any = {}, type: ContactMethodTrackTypes) {\r\n const { events } = this.container.get('$widget');\r\n events.dispatch('tracking:service-client-response', {\r\n type,\r\n data,\r\n });\r\n }\r\n\r\n complete(contactMethod: ContactMethodProps) {\r\n const { id, title, clientName, expanded, body } = contactMethod;\r\n this.track(\r\n { contactMethod: { id, title, expanded, type: clientName }, hasGuide: !!body.guideId },\r\n ContactMethodTrackTypes.ContactMethodComplete\r\n );\r\n\r\n const adapter = this.adapters.get(clientName);\r\n if (adapter && adapter.onComplete) {\r\n return adapter.onComplete(contactMethod);\r\n }\r\n }\r\n\r\n evaluate(contactMethod: ContactMethodProps): Promise<Form> {\r\n const { clientName } = contactMethod;\r\n const adapter = this.adapters.get(clientName);\r\n\r\n if (adapter && adapter.onEvaluate) {\r\n return Promise.resolve(adapter.onEvaluate(contactMethod));\r\n }\r\n\r\n return Promise.resolve(contactMethod.body.form);\r\n }\r\n\r\n validate(contactMethod: ContactMethodProps): Promise<ValidationResult> {\r\n const { id, title, clientName } = contactMethod;\r\n const adapter = this.adapters.get(clientName);\r\n\r\n if (adapter && adapter.onValidate) {\r\n return Promise.resolve(adapter.onValidate(contactMethod)).then((result) => {\r\n this.track(\r\n { contactMethod: { id, title, type: clientName }, isValid: result.valid },\r\n ContactMethodTrackTypes.ContactMethodValidate\r\n );\r\n const { events } = this.container.get('$widget') as Widget;\r\n events.dispatch('form:validated', { isValid: result.valid });\r\n return result;\r\n });\r\n }\r\n\r\n return Promise.resolve({ valid: true });\r\n }\r\n\r\n submit(contactMethod: ContactMethodProps): Promise<string> {\r\n const { clientName } = contactMethod;\r\n const adapter = this.adapters.get(clientName);\r\n\r\n if (adapter && adapter.onSubmit) {\r\n return Promise.resolve(adapter.onSubmit(contactMethod)).then((result) => {\r\n this.complete(contactMethod);\r\n return result;\r\n });\r\n }\r\n\r\n return Promise.resolve('');\r\n }\r\n\r\n create(settings: AdapterSettings) {\r\n const { clientName, render } = settings;\r\n this.adapters.set(clientName, {\r\n onValidate: (cm) => defaultValidate(this.container, cm),\r\n onEvaluate: (cm) => defaultEvaluate(this.container, cm),\r\n onComplete: (cm) => defaultComplete(this.container, cm),\r\n ...settings,\r\n });\r\n return this.container.getAsync('componentResolver').then((resolver: ComponentResolver) => {\r\n if (typeof render === 'string') {\r\n this.subs.push(resolver.registerAlias(clientName, render));\r\n } else {\r\n this.subs.push(\r\n resolver.registerComponent(\r\n clientName,\r\n lazy(() => render)\r\n )\r\n );\r\n }\r\n });\r\n }\r\n\r\n dispose() {\r\n this.subs.forEach((s) => s());\r\n }\r\n}\r\n\r\nexport default ContactMethodPlatform;\r\n","import { headingElement, Paragraph } from '@telia-ace/knowledge-widget-ui';\r\nimport * as React from 'react';\r\nimport styled, { css } from 'styled-components';\r\n\r\nexport type Props = { html: string };\r\n\r\nconst Confirmation: React.SFC<Props> = (props: Props) => (\r\n <StyledParagraph {...props} className=\"humany-confirmation\" />\r\n);\r\n\r\nexport default Confirmation;\r\n\r\nconst StyledParagraph = styled(Paragraph)`\r\n ${headingElement(\r\n 'h1',\r\n css`\r\n font-weight: normal;\r\n font-size: ${(p) => p.theme.fonts?.medium};\r\n `\r\n )}\r\n`;\r\n","import { borderTabStyle, genericHtml, Html, linkTabStyle } from '@telia-ace/knowledge-widget-ui';\r\nimport styled from 'styled-components';\r\n\r\nexport default styled(Html)`\r\n ${genericHtml}\r\n font-weight: 300;\r\n line-height: 1.5em;\r\n button:focus {\r\n ${(p) => p.theme.accessibility?.isTabbing && borderTabStyle};\r\n }\r\n\r\n a:focus {\r\n ${(p) => p.theme.accessibility?.isTabbing && linkTabStyle};\r\n }\r\n`;\r\n","import { Symbol } from '@telia-ace/knowledge-widget-core';\r\nimport {\r\n borderTabStyle,\r\n DispatchAction,\r\n HtmlParseInstruction,\r\n Link,\r\n StyledText,\r\n SymbolBadge,\r\n Typography,\r\n useComponent,\r\n useRouteData,\r\n} from '@telia-ace/knowledge-widget-ui';\r\nimport { createParams, formatUrl } from '@telia-ace/widget-utilities';\r\nimport React, { Suspense } from 'react';\r\nimport styled, { css } from 'styled-components';\r\nimport Description from './description';\r\n\r\nexport type ContactMethodType = {\r\n id: string;\r\n title: string;\r\n symbol?: Symbol;\r\n clientName: string;\r\n expanded: boolean;\r\n inline: boolean;\r\n body: { [key: string]: any };\r\n description?: string;\r\n confirmation?: string;\r\n disabled?: boolean;\r\n guideId?: string;\r\n};\r\n\r\nexport type Props = Merge<\r\n ContactMethodType,\r\n {\r\n className?: string;\r\n onClick?: (event: React.MouseEvent, properties: Props) => void;\r\n renderDefault?: (extraProps?: Partial<Props>) => any;\r\n htmlParseInstruction?: HtmlParseInstruction;\r\n href?: string;\r\n target?: string;\r\n disabled?: boolean;\r\n action?: (action: string, value: any) => void;\r\n dispatch?: DispatchAction;\r\n symbol?: Symbol;\r\n description?: string;\r\n confirmation?: string;\r\n guideId?: string;\r\n autoFocus?: boolean;\r\n }\r\n>;\r\n\r\nconst ContactMethod: React.FC<Props> = (props) => {\r\n const ResolvedComponent = useComponent(props.clientName);\r\n const {\r\n params: { contactCategory, guideCategory, phrase },\r\n } = useRouteData();\r\n\r\n if (typeof ResolvedComponent === 'undefined') {\r\n return null;\r\n }\r\n\r\n if (ResolvedComponent === null) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n return (\r\n <NonResolvedContactMethodWrapper\r\n title={`client-name: ${props.clientName}, id: ${props.id}`}\r\n className=\"humany-non-resolved-contact-method\"\r\n >\r\n <Typography variant=\"h5\">Non resolved Contact Method type</Typography>\r\n </NonResolvedContactMethodWrapper>\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n const renderLink = (extraProps: Partial<Props> = {}) => {\r\n const enhancedProps = { ...props, ...extraProps };\r\n const {\r\n id,\r\n title,\r\n clientName,\r\n symbol,\r\n inline,\r\n onClick = () => {},\r\n description,\r\n htmlParseInstruction,\r\n className,\r\n disabled,\r\n guideId,\r\n dispatch = () => {},\r\n expanded,\r\n } = enhancedProps;\r\n\r\n const linkProps = inline\r\n ? {\r\n onKeyDown: (event: React.KeyboardEvent) => {\r\n if (event.key && event.key === 'Enter') {\r\n onClick(event as any, enhancedProps);\r\n if (!event.defaultPrevented) {\r\n !expanded && dispatch('expand', id);\r\n }\r\n }\r\n },\r\n onClick: (event: React.MouseEvent) => {\r\n onClick(event, enhancedProps);\r\n if (!event.defaultPrevented) {\r\n !expanded && dispatch('expand', id);\r\n }\r\n },\r\n }\r\n : {\r\n onClick: (event: React.MouseEvent) => onClick(event, enhancedProps),\r\n routeName: 'contact-method',\r\n params: createParams({\r\n contactCategory,\r\n guideId,\r\n guideCategory,\r\n phrase,\r\n contactMethod: id,\r\n uriName: formatUrl(title),\r\n }),\r\n };\r\n\r\n return (\r\n <StyledLink\r\n title={title}\r\n aria-label={title}\r\n className={className}\r\n disabled={disabled}\r\n description={description}\r\n data-client-name={clientName}\r\n {...extraProps}\r\n {...linkProps}\r\n >\r\n {symbol && <SymbolBadge symbol={symbol} />}\r\n {description ? (\r\n <div className=\"humany-contact-link-rich-content\">\r\n {<StyledTitle>{title}</StyledTitle>}\r\n {\r\n <Description\r\n html={description}\r\n htmlParseInstruction={htmlParseInstruction}\r\n />\r\n }\r\n </div>\r\n ) : (\r\n <StyledTitle>{title}</StyledTitle>\r\n )}\r\n </StyledLink>\r\n );\r\n };\r\n\r\n return props.expanded ? (\r\n <Suspense fallback={null}>\r\n <ResolvedComponent {...props} renderDefault={renderLink} />\r\n </Suspense>\r\n ) : (\r\n renderLink()\r\n );\r\n};\r\n\r\nexport default ContactMethod;\r\n\r\nexport const contactLink = css<{ description?: string }>`\r\n display: flex;\r\n padding: ${(p) => p.theme.sizes?.large};\r\n ${(p) => (!!p.description ? '' : 'align-items: center;')}\r\n text-decoration: none;\r\n span {\r\n display: inline-block;\r\n color: ${(p) => p.theme.colors?.text};\r\n }\r\n i {\r\n font-size: ${(p) => p.theme.fonts?.large};\r\n margin: 0 ${(p) => p.theme.sizes?.large} 0 0;\r\n min-height: ${(p) => p.theme.fonts?.large};\r\n min-width: ${(p) => p.theme.fonts?.large};\r\n line-height: ${(p) => p.theme.fonts?.large};\r\n display: inline-block;\r\n vertical-align: bottom;\r\n color: ${(p) => p.theme.colors?.text};\r\n }\r\n`;\r\n\r\nconst StyledTitle = styled(StyledText)`\r\n line-height: ${(p) => p.theme.fonts?.large};\r\n`;\r\n\r\nconst StyledLink = styled(Link)<any>`\r\n ${contactLink}\r\n\r\n &:focus {\r\n ${(p) => p.theme.accessibility?.isTabbing && borderTabStyle};\r\n }\r\n`;\r\n\r\nconst NonResolvedContactMethodWrapper = styled.div`\r\n text-align: center;\r\n display: block;\r\n ${(p) => typeof p.theme.colors?.warning !== 'undefined' && `color: ${p.theme.colors?.warning};`}\r\n`;\r\n","import { DispatchAction, headingElement, ItemList, itemList } from '@telia-ace/knowledge-widget-ui';\r\nimport { appendClassNames } from '@telia-ace/widget-utilities';\r\nimport React, { ReactNode } from 'react';\r\nimport styled, { css } from 'styled-components';\r\nimport ContactMethod, { ContactMethodType } from './contact-method';\r\n\r\nexport const contactItemList = css`\r\n ${itemList}\r\n\r\n > div {\r\n padding: ${(p) => p.theme.sizes?.large};\r\n\r\n ${headingElement(\r\n 'h1',\r\n css`\r\n margin: 0;\r\n `\r\n )}\r\n }\r\n > ul {\r\n &:not(:first-child) {\r\n border-top: ${(p) => p.theme.border};\r\n }\r\n\r\n > li {\r\n margin: 0;\r\n white-space: normal;\r\n\r\n > a {\r\n overflow: hidden;\r\n }\r\n\r\n &:first-child > a {\r\n border-radius: ${(p) => `${p.theme.borderRadius} ${p.theme.borderRadius} 0 0`};\r\n }\r\n\r\n &:last-child:not(:first-child) > a {\r\n border-radius: ${(p) => `0 0 ${p.theme.borderRadius} ${p.theme.borderRadius}`};\r\n }\r\n\r\n &:not(:last-child) {\r\n border-bottom: ${(p) => p.theme.border};\r\n }\r\n\r\n > div {\r\n padding: ${(p) => p.theme.sizes?.large};\r\n }\r\n }\r\n }\r\n\r\n @media (hover: hover) {\r\n a:hover {\r\n background-color: ${(p) => p.theme.colors?.accent};\r\n }\r\n }\r\n`;\r\n\r\nconst StyledItemList = styled(ItemList)<any>`\r\n ${contactItemList}\r\n`;\r\n\r\ntype Props = {\r\n contactMethods: ContactMethodType[];\r\n header?: string;\r\n className?: string;\r\n action?: (action: string, value?: any) => void;\r\n dispatch?: DispatchAction;\r\n children?: ReactNode;\r\n itemRenderer?: (cm: any, props: any) => JSX.Element;\r\n guideId?: string;\r\n};\r\n\r\nconst ContactList: React.SFC<Props> = ({\r\n contactMethods,\r\n children,\r\n guideId,\r\n dispatch,\r\n className = '',\r\n itemRenderer,\r\n action = () => {},\r\n header = '',\r\n}) => {\r\n if (!contactMethods.length) {\r\n return null;\r\n }\r\n\r\n return (\r\n <StyledItemList\r\n header={header}\r\n className={appendClassNames(className, 'humany-contact-list')}\r\n items={contactMethods}\r\n renderItem={\r\n itemRenderer\r\n ? (cm: any) => (\r\n <li key={cm.id} data-contact-method={cm.id}>\r\n {itemRenderer(cm, { action, dispatch, guideId })}\r\n </li>\r\n )\r\n : (cm: any) => (\r\n <li key={cm.id} data-contact-method={cm.id}>\r\n <ContactMethod\r\n {...cm}\r\n action={action}\r\n dispatch={dispatch}\r\n guideId={guideId}\r\n />\r\n </li>\r\n )\r\n }\r\n >\r\n {children}\r\n </StyledItemList>\r\n );\r\n};\r\n\r\nexport default ContactList;\r\n","import { FormComponent } from '@telia-ace/widget-forms';\r\nimport React from 'react';\r\nimport { ContactMethodProps } from '.';\r\n\r\n/**\r\n * Recursively find form component in schema\r\n * @param node Form schema\r\n * @param id actionKey of component to find\r\n */\r\nconst lookupComponent = (node: any, id: string): any => {\r\n if (node.actionKey === id) {\r\n return node;\r\n }\r\n\r\n if (!node.properties) {\r\n return null;\r\n }\r\n\r\n const keys = Object.keys(node.properties);\r\n\r\n let result;\r\n // tslint:disable-next-line:no-increment-decrement\r\n for (let i = 0; i < keys.length; i++) {\r\n result = lookupComponent(node.properties[keys[i]], id);\r\n\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n\r\n return false;\r\n};\r\n\r\nconst Form: React.SFC<ContactMethodProps> = ({\r\n className,\r\n body: { form },\r\n id,\r\n action,\r\n dispatch,\r\n disabled,\r\n autoFocus,\r\n}) => {\r\n if (form && !disabled) {\r\n const { schema, layout, data, meta } = form;\r\n const trigger = dispatch || action || (() => {});\r\n return (\r\n <FormComponent\r\n className={className}\r\n schema={schema}\r\n layout={layout}\r\n data={data}\r\n autoFocus={autoFocus}\r\n onChange={(event: any, data: any) => {\r\n const form = { schema, layout, data, meta };\r\n if (event.toString() === 'submit') {\r\n trigger('submit', { id, form });\r\n } else {\r\n const formComponent = lookupComponent(schema, event);\r\n if (formComponent.evaluate) {\r\n trigger('evaluate', { id, form });\r\n } else {\r\n trigger('validate', { id, form });\r\n }\r\n }\r\n }}\r\n />\r\n );\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport default Form;\r\n","import { ComponentResolver } from '@telia-ace/knowledge-widget-core';\r\nimport { useContainer } from '@telia-ace/knowledge-widget-ui';\r\nimport { EventSubscriptionCancellation } from '@webprovisions/platform';\r\nimport { useEffect, useState } from 'react';\r\n\r\nconst useContactMethod = (clientName: string): any | null => {\r\n const [component, setComponent] = useState<any | null>(null);\r\n const container = useContainer();\r\n\r\n useEffect(() => {\r\n let unsubscribe: EventSubscriptionCancellation;\r\n container.getAsync('componentResolver').then((resolver: ComponentResolver) => {\r\n unsubscribe = resolver.registerResolver(clientName, (component) =>\r\n setComponent(component)\r\n );\r\n });\r\n\r\n return () => {\r\n if (unsubscribe) {\r\n unsubscribe();\r\n }\r\n };\r\n }, [clientName]);\r\n\r\n return component;\r\n};\r\n\r\nexport default useContactMethod;\r\n","import { Container } from '@webprovisions/platform';\r\nimport { ContactMethodPlatform, defaultComplete, defaultSubmit, defaultValidate } from '..';\r\n\r\nexport default function webServicePlugin(container: Container) {\r\n container.getAsync('contactMethods').then((platform: ContactMethodPlatform) => {\r\n platform.create({\r\n clientName: 'custom.webservice',\r\n render: 'email.form',\r\n onValidate: (contactMethod) => defaultValidate(container, contactMethod),\r\n onComplete: (contactMethod) => defaultComplete(container, contactMethod),\r\n onSubmit: (contactMethod) =>\r\n defaultSubmit(container, contactMethod, (response) => {\r\n return {\r\n ...response,\r\n ConfirmationText: response.ResponseHtml,\r\n };\r\n }),\r\n });\r\n });\r\n}\r\n","import { FormReader } from '@telia-ace/widget-forms';\r\nimport { Container } from '@webprovisions/platform';\r\nimport { ContactMethodPlatform, defaultComplete, defaultValidate } from './contact-methods';\r\n\r\nexport type Callback = (\r\n settings: {\r\n [key: string]: any;\r\n },\r\n data?: {\r\n [key: string]: any;\r\n }\r\n) => Promise<string | void> | (string | void);\r\n\r\nexport const createSubmitAdapter = (\r\n container: Container,\r\n clientName: string,\r\n fn: Callback\r\n): Promise<void> => {\r\n return container.getAsync('contactMethods').then((platform: ContactMethodPlatform) => {\r\n platform.create({\r\n clientName,\r\n render: 'email.form',\r\n handleClick: () => {\r\n return (e, cm) => {\r\n const {\r\n body: { form, guideId, confirmationFallback, ...rest },\r\n } = cm;\r\n if (!form) {\r\n e.preventDefault();\r\n fn(rest);\r\n }\r\n };\r\n },\r\n onValidate: (cm) => defaultValidate(container, cm),\r\n onComplete: (cm) => defaultComplete(container, cm),\r\n onSubmit: (cm) => {\r\n const {\r\n body: { form, guideId, confirmationFallback, ...rest },\r\n } = cm;\r\n const { values } = new FormReader(form).export();\r\n\r\n return Promise.resolve(fn(rest, values)).then((confirmation) => {\r\n return confirmation || confirmationFallback;\r\n });\r\n },\r\n });\r\n });\r\n};\r\n","import { Plugin } from '@telia-ace/knowledge-widget-core';\r\nimport { Container } from '@webprovisions/platform';\r\nimport {\r\n ChatPopupPlugin,\r\n EmailFormPlugin,\r\n FreeTextPlugin,\r\n LinkPlugin,\r\n PhonePlugin,\r\n WebServicePlugin,\r\n} from '.';\r\n\r\n/**\r\n * Registers default Humany contact methods.\r\n */\r\nexport class DefaultContactMethodsPlugin extends Plugin {\r\n constructor(container: Container, settings: any) {\r\n super(container, settings);\r\n const implementation = this.widget.implementation;\r\n implementation.configure((config) => {\r\n config\r\n .plugin(EmailFormPlugin)\r\n .plugin(ChatPopupPlugin)\r\n .plugin(FreeTextPlugin)\r\n .plugin(PhonePlugin)\r\n .plugin(WebServicePlugin)\r\n .plugin(LinkPlugin);\r\n });\r\n }\r\n}\r\n"],"names":["defaultValidate","defaultComplete","defaultEvaluate","React","defaultSubmit","EmailFormPlugin","ChatPopupPlugin","FreeTextPlugin","PhonePlugin","WebServicePlugin","LinkPlugin"],"mappings":"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"}
1
+ {"version":3,"file":"index.8912b772.js","sources":["../src/contact-methods/email/email-plugin.ts","../src/contact-methods/chat-popup/chat-popup-plugin.ts","../src/contact-methods/free-text/free-text-plugin.ts","../src/contact-methods/link/link-plugin.tsx","../src/contact-methods/phone/phone-plugin.ts","../src/contact-methods/platform.ts","../src/contact-methods/ui/confirmation.tsx","../src/contact-methods/ui/description.tsx","../src/contact-methods/ui/contact-method.tsx","../src/contact-methods/ui/contact-list.tsx","../src/contact-methods/ui/form.tsx","../src/contact-methods/ui/use-contact-method.ts","../src/contact-methods/web-service/web-service-plugin.ts","../src/create-adapter.ts","../src/default-contact-methods-plugin.ts"],"sourcesContent":["import {\r\n ContactMethodApiResponse,\r\n ServiceClient,\r\n SubmissionApiResult,\r\n} from '@telia-ace/knowledge-serviceclient';\r\nimport { FormBuilder, FormReader } from '@telia-ace/widget-forms';\r\nimport { RoutingService } from '@telia-ace/widget-routing';\r\nimport { Container } from '@webprovisions/platform';\r\nimport ContactMethodPlatform from '../platform';\r\nimport { ContactMethodType } from '../ui';\r\n\r\ntype Services = {\r\n matchingClient: ServiceClient;\r\n router: RoutingService;\r\n};\r\n\r\nconst post = (container: Container, contactMethod: ContactMethodType, validate = false) =>\r\n container.getManyAsync('matchingClient', 'router').then((services) => {\r\n const { formData } = new FormReader(contactMethod.body.form).export(validate);\r\n const { router, matchingClient } = services as Services;\r\n const { params } = router.getRouteData();\r\n\r\n return matchingClient.customRequest(\r\n `contactmethods/${contactMethod.id}${validate ? '/validatedwithpayload' : ''}`,\r\n 'POST',\r\n {\r\n body: formData,\r\n configuration: {\r\n guideId: contactMethod.body.guideId || params.guideId,\r\n },\r\n }\r\n );\r\n });\r\n\r\nexport const submit = (\r\n container: Container,\r\n contactMethod: ContactMethodType,\r\n transform?: (response: any) => SubmissionApiResult\r\n) =>\r\n post(container, contactMethod)\r\n .then((response) => (transform ? transform(response) : response))\r\n .then(({ ConfirmationText }: SubmissionApiResult) => ConfirmationText);\r\n\r\nexport const validate = (container: Container, contactMethod: ContactMethodType) =>\r\n post(container, contactMethod, true).then((result: ContactMethodApiResponse) => ({\r\n valid: result.Validation.IsValid,\r\n errors: result.Validation.Errors,\r\n errorTypes: result.Validation.ErrorTypes,\r\n }));\r\n\r\nexport const evaluate = (container: Container, contactMethod: ContactMethodType) =>\r\n post(container, contactMethod, true).then((result: ContactMethodApiResponse) =>\r\n FormBuilder.fromLegacyForm(contactMethod.id, result.ContactMethod.Form).get()\r\n );\r\n\r\nexport const complete = (container: Container, contactMethod: ContactMethodType) =>\r\n container.getAsync('matchingClient').then((matchingClient) => {\r\n matchingClient.completeContactMethod(contactMethod.id);\r\n });\r\n\r\nexport default function emailPlugin(container: Container) {\r\n container.getAsync('contactMethods').then((platform: ContactMethodPlatform) => {\r\n platform.create({\r\n clientName: 'email.form',\r\n render: import('./email-form-component'),\r\n onEvaluate: (contactMethod) => evaluate(container, contactMethod),\r\n onValidate: (contactMethod) => validate(container, contactMethod),\r\n onSubmit: (contactMethod) => submit(container, contactMethod),\r\n onComplete: (contactMethod) => complete(container, contactMethod),\r\n });\r\n });\r\n}\r\n","import { FormReader } from '@telia-ace/widget-forms';\r\nimport { Container } from '@webprovisions/platform';\r\nimport { ContactMethodPlatform, defaultValidate } from '..';\r\nimport { defaultComplete } from '../email';\r\n\r\nconst popup = (\r\n title: string,\r\n settings: { [key: string]: any },\r\n formValues?: { [key: string]: any }\r\n) => {\r\n const { url, width, height } = settings;\r\n\r\n const queries: { [key: string]: any } = formValues ? formValues : {};\r\n\r\n const link = document.createElement('a');\r\n link.href = url;\r\n\r\n link.search\r\n .replace('?', '')\r\n .split('&')\r\n .forEach((part) => {\r\n const [key, value] = part.split('=');\r\n typeof value !== 'undefined' && (queries[key] = value);\r\n });\r\n\r\n link.search = Object.keys(queries)\r\n .map((key) => `${key}=${queries[key]}`)\r\n .join('&');\r\n\r\n window.open(link.href, title, `width=${width},height=${height}`);\r\n return '';\r\n};\r\n\r\nexport default function chatPopupPlugin(container: Container) {\r\n container.getAsync('contactMethods').then((platform: ContactMethodPlatform) => {\r\n platform.create({\r\n clientName: 'chat.popup',\r\n render: 'email.form',\r\n handleClick: (contactMethod) => {\r\n const { title, body } = contactMethod;\r\n const { form, guideId, confirmationFallback, ...rest } = body;\r\n\r\n if (!form) {\r\n return (e) => {\r\n e.preventDefault();\r\n popup(title, rest);\r\n };\r\n }\r\n\r\n return () => {};\r\n },\r\n onValidate: (contactMethod) => defaultValidate(container, contactMethod),\r\n onComplete: (contactMethod) => defaultComplete(container, contactMethod),\r\n onSubmit: (contactMethod) => {\r\n const { title, body } = contactMethod;\r\n const { form, guideId, confirmationFallback, ...rest } = body;\r\n\r\n const formValues = new FormReader(form).export().values;\r\n\r\n popup(title, rest, formValues);\r\n\r\n return confirmationFallback;\r\n },\r\n });\r\n });\r\n}\r\n","import { Container } from '@webprovisions/platform';\r\nimport ContactMethodPlatform from '../platform';\r\n\r\nexport default function freeTextPlugin(container: Container) {\r\n container.getAsync('contactMethods').then((platform: ContactMethodPlatform) => {\r\n platform.create({\r\n clientName: 'custom.freetext',\r\n render: import('./free-text-component'),\r\n });\r\n });\r\n}\r\n","import { Container } from '@webprovisions/platform';\r\nimport ContactMethodPlatform from '../platform';\r\n\r\nexport default function linkPlugin(container: Container) {\r\n container.getAsync('contactMethods').then((platform: ContactMethodPlatform) => {\r\n platform.create({\r\n clientName: 'custom.link',\r\n render: import('./link-component'),\r\n });\r\n });\r\n}\r\n","import { Container } from '@webprovisions/platform';\r\nimport ContactMethodPlatform from '../platform';\r\n\r\nexport default function phonePlugin(container: Container) {\r\n container.getAsync('contactMethods').then((platform: ContactMethodPlatform) => {\r\n platform.create({\r\n clientName: 'phone.text',\r\n render: import('./phone-component'),\r\n });\r\n });\r\n}\r\n","import { ComponentPlatform, ComponentResolver } from '@telia-ace/knowledge-widget-core';\r\nimport { Form } from '@telia-ace/widget-forms';\r\nimport { lock } from '@telia-ace/widget-utilities';\r\nimport { Container, EventSubscriptionCancellation, Widget } from '@webprovisions/platform';\r\nimport React, { lazy } from 'react';\r\nimport { defaultComplete, defaultEvaluate, defaultValidate } from './email';\r\nimport { ContactMethodProps } from './ui';\r\n\r\nexport type ReactComponentImport = Promise<{ default: React.FunctionComponent<any> }>;\r\n\r\nexport type Click = (e: React.MouseEvent, cm: ContactMethodProps) => void;\r\n\r\nexport type AdapterSettings = {\r\n clientName: string;\r\n render: string | ReactComponentImport;\r\n handleDescription?: (cm: ContactMethodProps) => Promise<string> | string;\r\n handleDisabled?: (cm: ContactMethodProps) => Promise<boolean> | boolean;\r\n handleClick?: (cm: ContactMethodProps) => Promise<Click> | Click;\r\n onEvaluate?: (cm: ContactMethodProps) => Promise<Form> | Form;\r\n onValidate?: (cm: ContactMethodProps) => Promise<ValidationResult> | ValidationResult;\r\n onSubmit?: (cm: ContactMethodProps) => Promise<string> | string;\r\n onComplete?: (cm: ContactMethodProps) => Promise<void> | void;\r\n};\r\n\r\nexport type ValidationResult = {\r\n errors?: { [key: string]: string };\r\n errorTypes?: { [key: string]: string };\r\n valid: boolean;\r\n};\r\n\r\nexport enum ContactMethodTrackTypes {\r\n ContactMethodValidate = 'contact-method-validate',\r\n ContactMethodComplete = 'contact-method-complete',\r\n}\r\n\r\nconst handleContactMethod = async (\r\n adapters: Map<string, AdapterSettings>,\r\n contactMethod: ContactMethodProps\r\n): Promise<ContactMethodProps> => {\r\n const adapter = adapters.get(contactMethod.clientName);\r\n let { description, disabled, onClick } = contactMethod;\r\n\r\n if (adapter) {\r\n const { handleClick, handleDescription, handleDisabled } = adapter;\r\n if (typeof handleClick === 'function') {\r\n onClick = await Promise.resolve(handleClick(contactMethod));\r\n }\r\n\r\n if (typeof handleDescription === 'function') {\r\n description = await Promise.resolve(handleDescription(contactMethod));\r\n }\r\n\r\n if (typeof handleDisabled === 'function') {\r\n disabled = await Promise.resolve(handleDisabled(contactMethod));\r\n }\r\n }\r\n\r\n return Promise.resolve({\r\n ...contactMethod,\r\n description,\r\n disabled,\r\n onClick,\r\n });\r\n};\r\n\r\nclass ContactMethodPlatform {\r\n private adapters: Map<string, AdapterSettings> = new Map();\r\n private subs: EventSubscriptionCancellation[] = [];\r\n\r\n static create(container: Container): Promise<ContactMethodPlatform> {\r\n return ComponentPlatform.getInstance(container).then((platform) => {\r\n return new ContactMethodPlatform(container, platform);\r\n });\r\n }\r\n\r\n constructor(private container: Container, private componentPlatform: ComponentPlatform) {\r\n if (componentPlatform) {\r\n const contactListComponent = componentPlatform\r\n .components()\r\n .ofType('contact-list')\r\n .select();\r\n contactListComponent.actions.watch('contact-list.fetched', async (input, next) => {\r\n const { contactMethods } = input;\r\n\r\n if (contactMethods) {\r\n const promises = Promise.all(\r\n contactMethods.map((cm: ContactMethodProps) =>\r\n handleContactMethod(this.adapters, cm)\r\n )\r\n );\r\n\r\n await Promise.resolve(promises).then((contactMethods) => {\r\n input.contactMethods = contactMethods;\r\n });\r\n }\r\n\r\n return next(input);\r\n });\r\n\r\n const guideComponent = componentPlatform.components().ofType('guide').select();\r\n guideComponent.actions.watch('guide.fetched', async (input, next) => {\r\n const { contactMethods } = input;\r\n\r\n if (contactMethods) {\r\n const promises = Promise.all(\r\n contactMethods.map((cm: ContactMethodProps) =>\r\n handleContactMethod(this.adapters, cm)\r\n )\r\n );\r\n\r\n await Promise.resolve(promises).then((contactMethods) => {\r\n input.contactMethods = contactMethods;\r\n });\r\n }\r\n\r\n return next(input);\r\n });\r\n guideComponent.actions.watch('guide.handover', async (input, next) => {\r\n const { handoverContactMethods } = input;\r\n\r\n if (handoverContactMethods) {\r\n const promises = Promise.all(\r\n handoverContactMethods.map((cm: ContactMethodProps) =>\r\n handleContactMethod(this.adapters, cm)\r\n )\r\n );\r\n\r\n await Promise.resolve(promises).then((handoverContactMethods) => {\r\n input.handoverContactMethods = handoverContactMethods;\r\n });\r\n }\r\n\r\n return next(input);\r\n });\r\n\r\n const contactMethodComponent = componentPlatform\r\n .components()\r\n .ofType('contact-method')\r\n .select();\r\n contactMethodComponent.actions.watch('contact-method.fetched', async (input, next) => {\r\n const { contactMethod } = input;\r\n\r\n if (contactMethod) {\r\n return handleContactMethod(this.adapters, contactMethod).then(\r\n (contactMethod) => {\r\n return next({ ...input, contactMethod });\r\n }\r\n );\r\n }\r\n\r\n return next(input);\r\n });\r\n }\r\n }\r\n\r\n static getInstance(\r\n container: Container,\r\n key: string = 'contactMethods'\r\n ): Promise<ContactMethodPlatform> {\r\n return lock(container)(() => {\r\n return container.getAsync(key).then((value: ContactMethodPlatform) => {\r\n let contactMethodPlatform = value;\r\n if (!contactMethodPlatform) {\r\n return ComponentPlatform.getInstance(container).then((components) => {\r\n contactMethodPlatform = new ContactMethodPlatform(container, components);\r\n container.registerAsync(key, () => contactMethodPlatform);\r\n return contactMethodPlatform;\r\n });\r\n }\r\n return contactMethodPlatform;\r\n });\r\n });\r\n }\r\n\r\n private track(data: any = {}, type: ContactMethodTrackTypes) {\r\n const { events } = this.container.get('$widget');\r\n events.dispatch('tracking:service-client-response', {\r\n type,\r\n data,\r\n });\r\n }\r\n\r\n complete(contactMethod: ContactMethodProps) {\r\n const { id, title, clientName, expanded, body } = contactMethod;\r\n this.track(\r\n { contactMethod: { id, title, expanded, type: clientName }, hasGuide: !!body.guideId },\r\n ContactMethodTrackTypes.ContactMethodComplete\r\n );\r\n\r\n const adapter = this.adapters.get(clientName);\r\n if (adapter && adapter.onComplete) {\r\n return adapter.onComplete(contactMethod);\r\n }\r\n }\r\n\r\n evaluate(contactMethod: ContactMethodProps): Promise<Form> {\r\n const { clientName } = contactMethod;\r\n const adapter = this.adapters.get(clientName);\r\n\r\n if (adapter && adapter.onEvaluate) {\r\n return Promise.resolve(adapter.onEvaluate(contactMethod));\r\n }\r\n\r\n return Promise.resolve(contactMethod.body.form);\r\n }\r\n\r\n validate(contactMethod: ContactMethodProps): Promise<ValidationResult> {\r\n const { id, title, clientName } = contactMethod;\r\n const adapter = this.adapters.get(clientName);\r\n\r\n if (adapter && adapter.onValidate) {\r\n return Promise.resolve(adapter.onValidate(contactMethod)).then((result) => {\r\n this.track(\r\n { contactMethod: { id, title, type: clientName }, isValid: result.valid },\r\n ContactMethodTrackTypes.ContactMethodValidate\r\n );\r\n const { events } = this.container.get('$widget') as Widget;\r\n events.dispatch('form:validated', { isValid: result.valid });\r\n return result;\r\n });\r\n }\r\n\r\n return Promise.resolve({ valid: true });\r\n }\r\n\r\n submit(contactMethod: ContactMethodProps): Promise<string> {\r\n const { clientName } = contactMethod;\r\n const adapter = this.adapters.get(clientName);\r\n\r\n if (adapter && adapter.onSubmit) {\r\n return Promise.resolve(adapter.onSubmit(contactMethod)).then((result) => {\r\n this.complete(contactMethod);\r\n return result;\r\n });\r\n }\r\n\r\n return Promise.resolve('');\r\n }\r\n\r\n create(settings: AdapterSettings) {\r\n const { clientName, render } = settings;\r\n this.adapters.set(clientName, {\r\n onValidate: (cm) => defaultValidate(this.container, cm),\r\n onEvaluate: (cm) => defaultEvaluate(this.container, cm),\r\n onComplete: (cm) => defaultComplete(this.container, cm),\r\n ...settings,\r\n });\r\n return this.container.getAsync('componentResolver').then((resolver: ComponentResolver) => {\r\n if (typeof render === 'string') {\r\n this.subs.push(resolver.registerAlias(clientName, render));\r\n } else {\r\n this.subs.push(\r\n resolver.registerComponent(\r\n clientName,\r\n lazy(() => render)\r\n )\r\n );\r\n }\r\n });\r\n }\r\n\r\n dispose() {\r\n this.subs.forEach((s) => s());\r\n }\r\n}\r\n\r\nexport default ContactMethodPlatform;\r\n","import { headingElement, Paragraph } from '@telia-ace/knowledge-widget-ui';\r\nimport * as React from 'react';\r\nimport styled, { css } from 'styled-components';\r\n\r\nexport type Props = { html: string };\r\n\r\nconst Confirmation: React.SFC<Props> = (props: Props) => (\r\n <StyledParagraph {...props} className=\"humany-confirmation\" />\r\n);\r\n\r\nexport default Confirmation;\r\n\r\nconst StyledParagraph = styled(Paragraph)`\r\n ${headingElement(\r\n 'h1',\r\n css`\r\n font-weight: normal;\r\n font-size: ${(p) => p.theme.fonts?.medium};\r\n `\r\n )}\r\n`;\r\n","import { borderTabStyle, genericHtml, Html, linkTabStyle } from '@telia-ace/knowledge-widget-ui';\r\nimport styled from 'styled-components';\r\n\r\nexport default styled(Html)`\r\n ${genericHtml}\r\n font-weight: 300;\r\n line-height: 1.5em;\r\n button:focus {\r\n ${(p) => p.theme.accessibility?.isTabbing && borderTabStyle};\r\n }\r\n\r\n a:focus {\r\n ${(p) => p.theme.accessibility?.isTabbing && linkTabStyle};\r\n }\r\n`;\r\n","import { Symbol } from '@telia-ace/knowledge-widget-core';\r\nimport {\r\n borderTabStyle,\r\n DispatchAction,\r\n HtmlParseInstruction,\r\n Link,\r\n StyledText,\r\n SymbolBadge,\r\n Typography,\r\n useComponent,\r\n useRouteData,\r\n} from '@telia-ace/knowledge-widget-ui';\r\nimport { createParams, formatUrl } from '@telia-ace/widget-utilities';\r\nimport React, { Suspense } from 'react';\r\nimport styled, { css } from 'styled-components';\r\nimport Description from './description';\r\n\r\nexport type ContactMethodType = {\r\n id: string;\r\n title: string;\r\n symbol?: Symbol;\r\n clientName: string;\r\n expanded: boolean;\r\n inline: boolean;\r\n body: { [key: string]: any };\r\n description?: string;\r\n confirmation?: string;\r\n disabled?: boolean;\r\n guideId?: string;\r\n};\r\n\r\nexport type Props = Merge<\r\n ContactMethodType,\r\n {\r\n className?: string;\r\n onClick?: (event: React.MouseEvent, properties: Props) => void;\r\n renderDefault?: (extraProps?: Partial<Props>) => any;\r\n htmlParseInstruction?: HtmlParseInstruction;\r\n href?: string;\r\n target?: string;\r\n disabled?: boolean;\r\n action?: (action: string, value: any) => void;\r\n dispatch?: DispatchAction;\r\n symbol?: Symbol;\r\n description?: string;\r\n confirmation?: string;\r\n guideId?: string;\r\n autoFocus?: boolean;\r\n }\r\n>;\r\n\r\nconst ContactMethod: React.FC<Props> = (props) => {\r\n const ResolvedComponent = useComponent(props.clientName);\r\n const {\r\n params: { contactCategory, guideCategory, phrase },\r\n } = useRouteData();\r\n\r\n if (typeof ResolvedComponent === 'undefined') {\r\n return null;\r\n }\r\n\r\n if (ResolvedComponent === null) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n return (\r\n <NonResolvedContactMethodWrapper\r\n title={`client-name: ${props.clientName}, id: ${props.id}`}\r\n className=\"humany-non-resolved-contact-method\"\r\n >\r\n <Typography variant=\"h5\">Non resolved Contact Method type</Typography>\r\n </NonResolvedContactMethodWrapper>\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n const renderLink = (extraProps: Partial<Props> = {}) => {\r\n const enhancedProps = { ...props, ...extraProps };\r\n const {\r\n id,\r\n title,\r\n clientName,\r\n symbol,\r\n inline,\r\n onClick = () => {},\r\n description,\r\n htmlParseInstruction,\r\n className,\r\n disabled,\r\n guideId,\r\n dispatch = () => {},\r\n expanded,\r\n } = enhancedProps;\r\n\r\n const linkProps = inline\r\n ? {\r\n onKeyDown: (event: React.KeyboardEvent) => {\r\n if (event.key && event.key === 'Enter') {\r\n onClick(event as any, enhancedProps);\r\n if (!event.defaultPrevented) {\r\n !expanded && dispatch('expand', id);\r\n }\r\n }\r\n },\r\n onClick: (event: React.MouseEvent) => {\r\n onClick(event, enhancedProps);\r\n if (!event.defaultPrevented) {\r\n !expanded && dispatch('expand', id);\r\n }\r\n },\r\n }\r\n : {\r\n onClick: (event: React.MouseEvent) => onClick(event, enhancedProps),\r\n routeName: 'contact-method',\r\n params: createParams({\r\n contactCategory,\r\n guideId,\r\n guideCategory,\r\n phrase,\r\n contactMethod: id,\r\n uriName: formatUrl(title),\r\n }),\r\n };\r\n\r\n return (\r\n <StyledLink\r\n title={title}\r\n aria-label={title}\r\n className={className}\r\n disabled={disabled}\r\n description={description}\r\n data-client-name={clientName}\r\n {...extraProps}\r\n {...linkProps}\r\n >\r\n {symbol && <SymbolBadge symbol={symbol} />}\r\n {description ? (\r\n <div className=\"humany-contact-link-rich-content\">\r\n {<StyledTitle>{title}</StyledTitle>}\r\n {\r\n <Description\r\n html={description}\r\n htmlParseInstruction={htmlParseInstruction}\r\n />\r\n }\r\n </div>\r\n ) : (\r\n <StyledTitle>{title}</StyledTitle>\r\n )}\r\n </StyledLink>\r\n );\r\n };\r\n\r\n return props.expanded ? (\r\n <Suspense fallback={null}>\r\n <ResolvedComponent {...props} renderDefault={renderLink} />\r\n </Suspense>\r\n ) : (\r\n renderLink()\r\n );\r\n};\r\n\r\nexport default ContactMethod;\r\n\r\nexport const contactLink = css<{ description?: string }>`\r\n display: flex;\r\n padding: ${(p) => p.theme.sizes?.large};\r\n ${(p) => (!!p.description ? '' : 'align-items: center;')}\r\n text-decoration: none;\r\n span {\r\n display: inline-block;\r\n color: ${(p) => p.theme.colors?.text};\r\n }\r\n i {\r\n font-size: 30px;\r\n margin: 0 ${(p) => p.theme.sizes?.large} 0 0;\r\n min-height: 30px;\r\n min-width: 30px;\r\n line-height: 30px;\r\n display: inline-block;\r\n vertical-align: bottom;\r\n color: ${(p) => p.theme.colors?.text};\r\n }\r\n`;\r\n\r\nconst StyledTitle = styled(StyledText)`\r\n line-height: 30px;\r\n`;\r\n\r\nconst StyledLink = styled(Link)<any>`\r\n ${contactLink}\r\n\r\n &:focus {\r\n ${(p) => p.theme.accessibility?.isTabbing && borderTabStyle};\r\n }\r\n`;\r\n\r\nconst NonResolvedContactMethodWrapper = styled.div`\r\n text-align: center;\r\n display: block;\r\n ${(p) => typeof p.theme.colors?.warning !== 'undefined' && `color: ${p.theme.colors?.warning};`}\r\n`;\r\n","import { DispatchAction, headingElement, ItemList, itemList } from '@telia-ace/knowledge-widget-ui';\r\nimport { appendClassNames } from '@telia-ace/widget-utilities';\r\nimport React, { ReactNode } from 'react';\r\nimport styled, { css } from 'styled-components';\r\nimport ContactMethod, { ContactMethodType } from './contact-method';\r\n\r\nexport const contactItemList = css`\r\n ${itemList}\r\n\r\n > div {\r\n padding: ${(p) => p.theme.sizes?.large};\r\n\r\n ${headingElement(\r\n 'h1',\r\n css`\r\n margin: 0;\r\n `\r\n )}\r\n }\r\n > ul {\r\n &:not(:first-child) {\r\n border-top: ${(p) => p.theme.border};\r\n }\r\n\r\n > li {\r\n margin: 0;\r\n white-space: normal;\r\n\r\n > a {\r\n overflow: hidden;\r\n }\r\n\r\n &:first-child > a {\r\n border-radius: ${(p) => `${p.theme.borderRadius} ${p.theme.borderRadius} 0 0`};\r\n }\r\n\r\n &:last-child:not(:first-child) > a {\r\n border-radius: ${(p) => `0 0 ${p.theme.borderRadius} ${p.theme.borderRadius}`};\r\n }\r\n\r\n &:not(:last-child) {\r\n border-bottom: ${(p) => p.theme.border};\r\n }\r\n\r\n > div {\r\n padding: ${(p) => p.theme.sizes?.large};\r\n }\r\n }\r\n }\r\n\r\n @media (hover: hover) {\r\n a:hover {\r\n background-color: ${(p) => p.theme.colors?.accent};\r\n }\r\n }\r\n`;\r\n\r\nconst StyledItemList = styled(ItemList)<any>`\r\n ${contactItemList}\r\n`;\r\n\r\ntype Props = {\r\n contactMethods: ContactMethodType[];\r\n header?: string;\r\n className?: string;\r\n action?: (action: string, value?: any) => void;\r\n dispatch?: DispatchAction;\r\n children?: ReactNode;\r\n guideId?: string;\r\n};\r\n\r\nconst ContactList: React.SFC<Props> = ({\r\n contactMethods,\r\n children,\r\n guideId,\r\n dispatch,\r\n className = '',\r\n action = () => {},\r\n header = '',\r\n}) => {\r\n if (!contactMethods.length) {\r\n return null;\r\n }\r\n\r\n return (\r\n <StyledItemList\r\n header={header}\r\n className={appendClassNames(className, 'humany-contact-list')}\r\n items={contactMethods}\r\n renderItem={(cm: any) => (\r\n <li key={cm.id} data-contact-method={cm.id}>\r\n <ContactMethod {...cm} action={action} dispatch={dispatch} guideId={guideId} />\r\n </li>\r\n )}\r\n >\r\n {children}\r\n </StyledItemList>\r\n );\r\n};\r\n\r\nexport default ContactList;\r\n","import { FormComponent } from '@telia-ace/widget-forms';\r\nimport React from 'react';\r\nimport { ContactMethodProps } from '.';\r\n\r\n/**\r\n * Recursively find form component in schema\r\n * @param node Form schema\r\n * @param id actionKey of component to find\r\n */\r\nconst lookupComponent = (node: any, id: string): any => {\r\n if (node.actionKey === id) {\r\n return node;\r\n }\r\n\r\n if (!node.properties) {\r\n return null;\r\n }\r\n\r\n const keys = Object.keys(node.properties);\r\n\r\n let result;\r\n // tslint:disable-next-line:no-increment-decrement\r\n for (let i = 0; i < keys.length; i++) {\r\n result = lookupComponent(node.properties[keys[i]], id);\r\n\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n\r\n return false;\r\n};\r\n\r\nconst Form: React.SFC<ContactMethodProps> = ({\r\n className,\r\n body: { form },\r\n id,\r\n action,\r\n dispatch,\r\n disabled,\r\n autoFocus,\r\n}) => {\r\n if (form && !disabled) {\r\n const { schema, layout, data } = form;\r\n const trigger = dispatch || action || (() => {});\r\n return (\r\n <FormComponent\r\n className={className}\r\n schema={schema}\r\n layout={layout}\r\n data={data}\r\n autoFocus={autoFocus}\r\n onChange={(event: any, data: any) => {\r\n const form = { schema, layout, data };\r\n if (event.toString() === 'submit') {\r\n trigger('submit', { id, form });\r\n } else {\r\n const formComponent = lookupComponent(schema, event);\r\n if (formComponent.evaluate) {\r\n trigger('evaluate', { id, form });\r\n } else {\r\n trigger('validate', { id, form });\r\n }\r\n }\r\n }}\r\n />\r\n );\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport default Form;\r\n","import { ComponentResolver } from '@telia-ace/knowledge-widget-core';\r\nimport { useContainer } from '@telia-ace/knowledge-widget-ui';\r\nimport { EventSubscriptionCancellation } from '@webprovisions/platform';\r\nimport { useEffect, useState } from 'react';\r\n\r\nconst useContactMethod = (clientName: string): any | null => {\r\n const [component, setComponent] = useState<any | null>(null);\r\n const container = useContainer();\r\n\r\n useEffect(() => {\r\n let unsubscribe: EventSubscriptionCancellation;\r\n container.getAsync('componentResolver').then((resolver: ComponentResolver) => {\r\n unsubscribe = resolver.registerResolver(clientName, (component) =>\r\n setComponent(component)\r\n );\r\n });\r\n\r\n return () => {\r\n if (unsubscribe) {\r\n unsubscribe();\r\n }\r\n };\r\n }, [clientName]);\r\n\r\n return component;\r\n};\r\n\r\nexport default useContactMethod;\r\n","import { Container } from '@webprovisions/platform';\r\nimport { ContactMethodPlatform, defaultComplete, defaultSubmit, defaultValidate } from '..';\r\n\r\nexport default function webServicePlugin(container: Container) {\r\n container.getAsync('contactMethods').then((platform: ContactMethodPlatform) => {\r\n platform.create({\r\n clientName: 'custom.webservice',\r\n render: 'email.form',\r\n onValidate: (contactMethod) => defaultValidate(container, contactMethod),\r\n onComplete: (contactMethod) => defaultComplete(container, contactMethod),\r\n onSubmit: (contactMethod) =>\r\n defaultSubmit(container, contactMethod, (response) => {\r\n return {\r\n ...response,\r\n ConfirmationText: response.ResponseHtml,\r\n };\r\n }),\r\n });\r\n });\r\n}\r\n","import { FormReader } from '@telia-ace/widget-forms';\r\nimport { Container } from '@webprovisions/platform';\r\nimport { ContactMethodPlatform, defaultComplete, defaultValidate } from './contact-methods';\r\n\r\nexport type Callback = (\r\n settings: {\r\n [key: string]: any;\r\n },\r\n data?: {\r\n [key: string]: any;\r\n }\r\n) => Promise<string | void> | (string | void);\r\n\r\nexport const createSubmitAdapter = (\r\n container: Container,\r\n clientName: string,\r\n fn: Callback\r\n): Promise<void> => {\r\n return container.getAsync('contactMethods').then((platform: ContactMethodPlatform) => {\r\n platform.create({\r\n clientName,\r\n render: 'email.form',\r\n handleClick: () => {\r\n return (e, cm) => {\r\n const {\r\n body: { form, guideId, confirmationFallback, ...rest },\r\n } = cm;\r\n if (!form) {\r\n e.preventDefault();\r\n fn(rest);\r\n }\r\n };\r\n },\r\n onValidate: (cm) => defaultValidate(container, cm),\r\n onComplete: (cm) => defaultComplete(container, cm),\r\n onSubmit: (cm) => {\r\n const {\r\n body: { form, guideId, confirmationFallback, ...rest },\r\n } = cm;\r\n const { values } = new FormReader(form).export();\r\n\r\n return Promise.resolve(fn(rest, values)).then((confirmation) => {\r\n return confirmation || confirmationFallback;\r\n });\r\n },\r\n });\r\n });\r\n};\r\n","import { Plugin } from '@telia-ace/knowledge-widget-core';\r\nimport { Container } from '@webprovisions/platform';\r\nimport {\r\n ChatPopupPlugin,\r\n EmailFormPlugin,\r\n FreeTextPlugin,\r\n LinkPlugin,\r\n PhonePlugin,\r\n WebServicePlugin,\r\n} from '.';\r\n\r\n/**\r\n * Registers default Humany contact methods.\r\n */\r\nexport class DefaultContactMethodsPlugin extends Plugin {\r\n constructor(container: Container, settings: any) {\r\n super(container, settings);\r\n const implementation = this.widget.implementation;\r\n implementation.configure((config) => {\r\n config\r\n .plugin(EmailFormPlugin)\r\n .plugin(ChatPopupPlugin)\r\n .plugin(FreeTextPlugin)\r\n .plugin(PhonePlugin)\r\n .plugin(WebServicePlugin)\r\n .plugin(LinkPlugin);\r\n });\r\n }\r\n}\r\n"],"names":["defaultValidate","defaultComplete","defaultEvaluate","React","defaultSubmit","EmailFormPlugin","ChatPopupPlugin","FreeTextPlugin","PhonePlugin","WebServicePlugin","LinkPlugin"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,MAAM,IAAO,CAAC,GAAsB,GAAkC,IAAW,OAC7E,EAAU,aAAa,kBAAkB,QAAQ,EAAE,KAAK,CAAC,MAAa;AAC5D,QAAA,EAAE,gBAAa,IAAI,EAAW,EAAc,KAAK,IAAI,EAAE,OAAO,CAAQ,GACtE,EAAE,WAAQ,sBAAmB,GAC7B,EAAE,cAAW,EAAO,aAAa;AAEhC,SAAA,EAAe,cAClB,kBAAkB,EAAc,KAAK,IAAW,0BAA0B,MAC1E,QACA;AAAA,IACI,MAAM;AAAA,IACN,eAAe;AAAA,MACX,SAAS,EAAc,KAAK,WAAW,EAAO;AAAA,IAClD;AAAA,EAAA,CAER;AACJ,CAAC,GAEQ,IAAS,CAClB,GACA,GACA,MAEA,EAAK,GAAW,CAAa,EACxB,KAAK,CAAC,MAAc,IAAY,EAAU,CAAQ,IAAI,CAAS,EAC/D,KAAK,CAAC,EAAE,0BAA4C,CAAgB,GAEhE,IAAW,CAAC,GAAsB,MAC3C,EAAK,GAAW,GAAe,EAAI,EAAE,KAAK,CAAC,MAAsC;AAAA,EAC7E,OAAO,EAAO,WAAW;AAAA,EACzB,QAAQ,EAAO,WAAW;AAAA,EAC1B,YAAY,EAAO,WAAW;AAClC,EAAE,GAEO,IAAW,CAAC,GAAsB,MAC3C,EAAK,GAAW,GAAe,EAAI,EAAE,KAAK,CAAC,MACvC,EAAY,eAAe,EAAc,IAAI,EAAO,cAAc,IAAI,EAAE,KAC5E,GAES,IAAW,CAAC,GAAsB,MAC3C,EAAU,SAAS,gBAAgB,EAAE,KAAK,CAAC,MAAmB;AAC3C,IAAA,sBAAsB,EAAc,EAAE;AACzD,CAAC;AAEL,YAAoC,GAAsB;AACtD,IAAU,SAAS,gBAAgB,EAAE,KAAK,CAAC,MAAoC;AAC3E,MAAS,OAAO;AAAA,MACZ,YAAY;AAAA,MACZ,QAAQ,OAAO;AAAA,MACf,YAAY,CAAC,MAAkB,EAAS,GAAW,CAAa;AAAA,MAChE,YAAY,CAAC,MAAkB,EAAS,GAAW,CAAa;AAAA,MAChE,UAAU,CAAC,MAAkB,EAAO,GAAW,CAAa;AAAA,MAC5D,YAAY,CAAC,MAAkB,EAAS,GAAW,CAAa;AAAA,IAAA,CACnE;AAAA,EAAA,CACJ;AACL;AClEA,MAAM,IAAQ,CACV,GACA,GACA,MACC;AACK,QAAA,EAAE,QAAK,UAAO,cAAW,GAEzB,IAAkC,KAA0B,IAE5D,IAAO,SAAS,cAAc,GAAG;AACvC,WAAK,OAAO,GAEP,EAAA,OACA,QAAQ,KAAK,EAAE,EACf,MAAM,GAAG,EACT,QAAQ,CAAC,MAAS;AACf,UAAM,CAAC,GAAK,KAAS,EAAK,MAAM,GAAG;AAC5B,WAAA,KAAU,eAAgB,GAAQ,KAAO;AAAA,EAAA,CACnD,GAEL,EAAK,SAAS,OAAO,KAAK,CAAO,EAC5B,IAAI,CAAC,MAAQ,GAAG,KAAO,EAAQ,IAAM,EACrC,KAAK,GAAG,GAEb,OAAO,KAAK,EAAK,MAAM,GAAO,SAAS,YAAgB,GAAQ,GACxD;AACX;AAEA,YAAwC,GAAsB;AAC1D,IAAU,SAAS,gBAAgB,EAAE,KAAK,CAAC,MAAoC;AAC3E,MAAS,OAAO;AAAA,MACZ,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,aAAa,CAAC,MAAkB;AACtB,cAAA,EAAE,UAAO,YAAS,GACiC,OAAjD,WAAM,YAAS,4BAAkC,GAAT,MAAS,GAAT,CAAxC,QAAM,WAAS;AAEvB,eAAK,IAOE,MAAM;AAAA,QAAA,IANF,CAAC,MAAM;AACV,YAAE,eAAe,GACjB,EAAM,GAAO,CAAI;AAAA,QAAA;AAAA,MAK7B;AAAA,MACA,YAAY,CAAC,MAAkBA,EAAgB,GAAW,CAAa;AAAA,MACvE,YAAY,CAAC,MAAkBC,EAAgB,GAAW,CAAa;AAAA,MACvE,UAAU,CAAC,MAAkB;AACnB,cAAA,EAAE,UAAO,YAAS,GACiC,OAAjD,WAAM,YAAS,4BAAkC,GAAT,MAAS,GAAT,CAAxC,QAAM,WAAS,0BAEjB,IAAa,IAAI,EAAW,CAAI,EAAE,OAAS,EAAA;AAE3C,iBAAA,GAAO,GAAM,CAAU,GAEtB;AAAA,MACX;AAAA,IAAA,CACH;AAAA,EAAA,CACJ;AACL;AC9DA,YAAuC,GAAsB;AACzD,IAAU,SAAS,gBAAgB,EAAE,KAAK,CAAC,MAAoC;AAC3E,MAAS,OAAO;AAAA,MACZ,YAAY;AAAA,MACZ,QAAQ,OAAO;AAAA,IAAA,CAClB;AAAA,EAAA,CACJ;AACL;ACPA,YAAmC,GAAsB;AACrD,IAAU,SAAS,gBAAgB,EAAE,KAAK,CAAC,MAAoC;AAC3E,MAAS,OAAO;AAAA,MACZ,YAAY;AAAA,MACZ,QAAQ,OAAO;AAAA,IAAA,CAClB;AAAA,EAAA,CACJ;AACL;ACPA,YAAoC,GAAsB;AACtD,IAAU,SAAS,gBAAgB,EAAE,KAAK,CAAC,MAAoC;AAC3E,MAAS,OAAO;AAAA,MACZ,YAAY;AAAA,MACZ,QAAQ,OAAO;AAAA,IAAA,CAClB;AAAA,EAAA,CACJ;AACL;ACyBA,MAAM,IAAsB,CACxB,GACA,MAC8B;AAC9B,QAAM,IAAU,EAAS,IAAI,EAAc,UAAU;AACjD,MAAA,EAAE,gBAAa,aAAU,eAAY;AAEzC,MAAI,GAAS;AACH,UAAA,EAAE,gBAAa,sBAAmB,sBAAmB;AACvD,IAAA,OAAO,KAAgB,cACvB,KAAU,MAAM,QAAQ,QAAQ,EAAY,CAAa,CAAC,IAG1D,OAAO,KAAsB,cAC7B,KAAc,MAAM,QAAQ,QAAQ,EAAkB,CAAa,CAAC,IAGpE,OAAO,KAAmB,cAC1B,KAAW,MAAM,QAAQ,QAAQ,EAAe,CAAa,CAAC;AAAA,EAEtE;AAEA,SAAO,QAAQ,QAAQ,QAChB,IADgB;AAAA,IAEnB;AAAA,IACA;AAAA,IACA;AAAA,EAAA,EACH;AACL;AAEA,MAAM,EAAsB;AAAA,EAUxB,YAAoB,GAA8B,GAAsC;AACpF,QADgB,KAAA,YAAA,GAA8B,KAAA,oBAAA,GAT1C,KAAA,+BAA6C,OACrD,KAAQ,OAAwC,IASxC,GAAmB;AAKnB,MAJ6B,EACxB,WAAA,EACA,OAAO,cAAc,EACrB,SACgB,QAAQ,MAAM,wBAAwB,CAAO,GAAO,MAAS;AAC9E,cAAM,EAAE,sBAAmB;AAE3B,YAAI,GAAgB;AAChB,gBAAM,IAAW,QAAQ,IACrB,EAAe,IAAI,CAAC,MAChB,EAAoB,KAAK,UAAU,CAAE,CACzC,CACJ;AAEA,gBAAM,QAAQ,QAAQ,CAAQ,EAAE,KAAK,CAAC,MAAmB;AACrD,cAAM,iBAAiB;AAAA,UAAA,CAC1B;AAAA,QACL;AAEA,eAAO,EAAK,CAAK;AAAA,MAAA,EACpB;AAED,YAAM,IAAiB,EAAkB,WAAA,EAAa,OAAO,OAAO,EAAE;AACtE,QAAe,QAAQ,MAAM,iBAAiB,CAAO,GAAO,MAAS;AACjE,cAAM,EAAE,sBAAmB;AAE3B,YAAI,GAAgB;AAChB,gBAAM,IAAW,QAAQ,IACrB,EAAe,IAAI,CAAC,MAChB,EAAoB,KAAK,UAAU,CAAE,CACzC,CACJ;AAEA,gBAAM,QAAQ,QAAQ,CAAQ,EAAE,KAAK,CAAC,MAAmB;AACrD,cAAM,iBAAiB;AAAA,UAAA,CAC1B;AAAA,QACL;AAEA,eAAO,EAAK,CAAK;AAAA,MAAA,EACpB,GACD,EAAe,QAAQ,MAAM,kBAAkB,CAAO,GAAO,MAAS;AAClE,cAAM,EAAE,8BAA2B;AAEnC,YAAI,GAAwB;AACxB,gBAAM,IAAW,QAAQ,IACrB,EAAuB,IAAI,CAAC,MACxB,EAAoB,KAAK,UAAU,CAAE,CACzC,CACJ;AAEA,gBAAM,QAAQ,QAAQ,CAAQ,EAAE,KAAK,CAAC,MAA2B;AAC7D,cAAM,yBAAyB;AAAA,UAAA,CAClC;AAAA,QACL;AAEA,eAAO,EAAK,CAAK;AAAA,MAAA,EACpB,GAMD,AAJ+B,EAC1B,WAAA,EACA,OAAO,gBAAgB,EACvB,SACkB,QAAQ,MAAM,0BAA0B,CAAO,GAAO,MAAS;AAClF,cAAM,EAAE,qBAAkB;AAE1B,eAAI,IACO,EAAoB,KAAK,UAAU,CAAa,EAAE,KACrD,CAAC,MACU,EAAK,QAAK,IAAL,EAAY,iBAAe,EAAA,CAE/C,IAGG,EAAK,CAAK;AAAA,MAAA,EACpB;AAAA,IACL;AAAA,EACJ;AAAA,EApFA,OAAO,OAAO,GAAsD;AAChE,WAAO,EAAkB,YAAY,CAAS,EAAE,KAAK,CAAC,MAC3C,IAAI,EAAsB,GAAW,CAAQ,CACvD;AAAA,EACL;AAAA,EAkFA,OAAO,YACH,GACA,IAAc,kBACgB;AACvB,WAAA,GAAK,CAAS,EAAE,MACZ,EAAU,SAAS,CAAG,EAAE,KAAK,CAAC,MAAiC;AAClE,UAAI,IAAwB;AAC5B,aAAK,KACM,EAAkB,YAAY,CAAS,EAAE,KAAK,CAAC,MAC1B,KAAA,IAAI,EAAsB,GAAW,CAAU,GAC7D,EAAA,cAAc,GAAK,MAAM,CAAqB,GACjD,EACV;AAAA,IAEE,CACV,CACJ;AAAA,EACL;AAAA,EAEA,MAAc,IAAY,IAAI,GAA+B;AACzD,UAAM,EAAE,cAAW,KAAK,UAAU,IAAI,SAAS;AAC/C,MAAO,SAAS,oCAAoC;AAAA,MAChD;AAAA,MACA;AAAA,IAAA,CACH;AAAA,EACL;AAAA,EAEA,SAAS,GAAmC;AACxC,UAAM,EAAE,OAAI,UAAO,eAAY,aAAU,YAAS;AAClD,SAAK,MACD,EAAE,eAAe,EAAE,OAAI,UAAO,aAAU,MAAM,EAAW,GAAG,UAAU,CAAC,CAAC,EAAK,QAAA,GAC7E;AAGJ,UAAM,IAAU,KAAK,SAAS,IAAI,CAAU;AACxC,QAAA,KAAW,EAAQ;AACZ,aAAA,EAAQ,WAAW,CAAa;AAAA,EAE/C;AAAA,EAEA,SAAS,GAAkD;AACvD,UAAM,EAAE,kBAAe,GACjB,IAAU,KAAK,SAAS,IAAI,CAAU;AAExC,WAAA,KAAW,EAAQ,aACZ,QAAQ,QAAQ,EAAQ,WAAW,CAAa,CAAC,IAGrD,QAAQ,QAAQ,EAAc,KAAK,IAAI;AAAA,EAClD;AAAA,EAEA,SAAS,GAA8D;AAC7D,UAAA,EAAE,OAAI,UAAO,kBAAe,GAC5B,IAAU,KAAK,SAAS,IAAI,CAAU;AAExC,WAAA,KAAW,EAAQ,aACZ,QAAQ,QAAQ,EAAQ,WAAW,CAAa,CAAC,EAAE,KAAK,CAAC,MAAW;AACvE,WAAK,MACD,EAAE,eAAe,EAAE,OAAI,UAAO,MAAM,EAAA,GAAc,SAAS,EAAO,SAClE,yBACJ;AACA,YAAM,EAAE,cAAW,KAAK,UAAU,IAAI,SAAS;AAC/C,eAAO,SAAS,kBAAkB,EAAE,SAAS,EAAO,OAAO,GACpD;AAAA,IAAA,CACV,IAGE,QAAQ,QAAQ,EAAE,OAAO,GAAM,CAAA;AAAA,EAC1C;AAAA,EAEA,OAAO,GAAoD;AACvD,UAAM,EAAE,kBAAe,GACjB,IAAU,KAAK,SAAS,IAAI,CAAU;AAExC,WAAA,KAAW,EAAQ,WACZ,QAAQ,QAAQ,EAAQ,SAAS,CAAa,CAAC,EAAE,KAAK,CAAC,MAC1D,MAAK,SAAS,CAAa,GACpB,EACV,IAGE,QAAQ,QAAQ,EAAE;AAAA,EAC7B;AAAA,EAEA,OAAO,GAA2B;AACxB,UAAA,EAAE,eAAY,cAAW;AAC1B,gBAAA,SAAS,IAAI,GAAY;AAAA,MAC1B,YAAY,CAAC,MAAOD,EAAgB,KAAK,WAAW,CAAE;AAAA,MACtD,YAAY,CAAC,MAAOE,EAAgB,KAAK,WAAW,CAAE;AAAA,MACtD,YAAY,CAAC,MAAOD,EAAgB,KAAK,WAAW,CAAE;AAAA,OACnD,EACN,GACM,KAAK,UAAU,SAAS,mBAAmB,EAAE,KAAK,CAAC,MAAgC;AAClF,MAAA,OAAO,KAAW,WAClB,KAAK,KAAK,KAAK,EAAS,cAAc,GAAY,CAAM,CAAC,IAEpD,KAAA,KAAK,KACN,EAAS,kBACL,GACA,GAAK,MAAM,CAAM,CACrB,CACJ;AAAA,IACJ,CACH;AAAA,EACL;AAAA,EAEA,UAAU;AACN,SAAK,KAAK,QAAQ,CAAC,MAAM,EAAG,CAAA;AAAA,EAChC;AACJ;AC5PwB,EAAO,EAAS;AAAA,MAClC,EACE,MACA;AAAA;AAAA,yBAEiB,CAAC,MAAM;;AAAA,gBAAE,MAAM,UAAR,kBAAe;AAAA;AAAA,SAE3C;AAAA;AChBJ,MAAA,KAAe,EAAO,EAAI;AAAA,MACpB;AAAA;AAAA;AAAA;AAAA,UAII,CAAC,MAAA;;AAAM,iBAAE,MAAM,kBAAR,kBAAuB,cAAa;AAAA;AAAA;AAAA;AAAA;AAAA,UAI3C,CAAC,MAAA;;AAAM,iBAAE,MAAM,kBAAR,kBAAuB,cAAa;AAAA;AAAA;AAAA,GCuC/C,KAAiC,CAAC,MAAU;AACxC,QAAA,IAAoB,GAAa,EAAM,UAAU,GACjD;AAAA,IACF,QAAQ,EAAE,oBAAiB,kBAAe;AAAA,MAC1C,GAAa;AAEb,MAAA,OAAO,KAAsB;AACtB,WAAA;AAGX,MAAI,MAAsB;AAClB,WAAA,QAAQ,IAAI,aAAa,eAEpBE,kBAAA,cAAA,IAAA;AAAA,MACG,OAAO,gBAAgB,EAAM,mBAAmB,EAAM;AAAA,MACtD,WAAU;AAAA,IAAA,GAETA,kBAAA,cAAA,IAAA;AAAA,MAAW,SAAQ;AAAA,IAAA,GAAK,kCAAgC,CAC7D,IAGD;AAGX,QAAM,IAAa,CAAC,IAA6B,OAAO;AACpD,UAAM,IAAgB,QAAK,IAAU,IAC/B;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,aAAU,MAAM;AAAA,MAAC;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,cAAW,MAAM;AAAA,MAAC;AAAA,MAClB;AAAA,QACA,GAEE,IAAY,IACZ;AAAA,MACI,WAAW,CAAC,MAA+B;AACvC,QAAI,EAAM,OAAO,EAAM,QAAQ,WAC3B,GAAQ,GAAc,CAAa,GAC9B,EAAM,oBACN,CAAA,KAAY,EAAS,UAAU,CAAE;AAAA,MAG9C;AAAA,MACA,SAAS,CAAC,MAA4B;AAClC,UAAQ,GAAO,CAAa,GACvB,EAAM,oBACN,CAAA,KAAY,EAAS,UAAU,CAAE;AAAA,MAE1C;AAAA,IAAA,IAEJ;AAAA,MACI,SAAS,CAAC,MAA4B,EAAQ,GAAO,CAAa;AAAA,MAClE,WAAW;AAAA,MACX,QAAQ,GAAa;AAAA,QACjB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,eAAe;AAAA,QACf,SAAS,GAAU,CAAK;AAAA,MAAA,CAC3B;AAAA,IAAA;AAGX,WACKA,kBAAA,cAAA,IAAA;AAAA,MACG;AAAA,MACA,cAAY;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA,oBAAkB;AAAA,OACd,IACA,IAEH,KAAWA,kBAAA,cAAA,IAAA;AAAA,MAAY;AAAA,IAAgB,CAAA,GACvC,IACIA,kBAAA,cAAA,OAAA;AAAA,MAAI,WAAU;AAAA,IAAA,GACTA,kBAAA,cAAA,GAAA,MAAa,CAAM,GAEhBA,kBAAA,cAAA,IAAA;AAAA,MACG,MAAM;AAAA,MACN;AAAA,IAAA,CACJ,CAER,IAECA,kBAAA,cAAA,GAAA,MAAa,CAAM,CAE5B;AAAA,EAAA;AAID,SAAA,EAAM,WACRA,kBAAA,cAAA,IAAA;AAAA,IAAS,UAAU;AAAA,EAAA,GACfA,kBAAA,cAAA,GAAA,QAAsB,IAAtB;AAAA,IAA6B,eAAe;AAAA,EAAA,EAAY,CAC7D,IAEA;AAER,GAIa,KAAc;AAAA;AAAA,eAEZ,CAAC,MAAM;;AAAA,gBAAE,MAAM,UAAR,kBAAe;AAAA;AAAA,MAC/B,CAAC,MAAO,AAAE,EAAE,cAAc,KAAK;AAAA;AAAA;AAAA;AAAA,iBAIpB,CAAC,MAAM;;AAAA,gBAAE,MAAM,WAAR,kBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA,oBAIpB,CAAC,MAAM;;AAAA,gBAAE,MAAM,UAAR,kBAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAMzB,CAAC,MAAM;;AAAA,gBAAE,MAAM,WAAR,kBAAgB;AAAA;AAAA;AAAA,GAIlC,IAAc,EAAO,EAAU;AAAA;AAAA,GAI/B,KAAa,EAAO,EAAI;AAAA,MACxB;AAAA;AAAA;AAAA,UAGI,CAAC,MAAA;;AAAM,iBAAE,MAAM,kBAAR,kBAAuB,cAAa;AAAA;AAAA;AAAA,GAI/C,KAAkC,EAAO;AAAA;AAAA;AAAA,MAGzC,CAAC,MAAM;;AAAA,gBAAO,QAAE,MAAM,WAAR,kBAAgB,YAAY,eAAe,UAAU,OAAE,MAAM,WAAR,kBAAgB;AAAA;AAAA,GCjM5E,KAAkB;AAAA,MACzB;AAAA;AAAA;AAAA,mBAGa,CAAC,MAAM;;AAAA,gBAAE,MAAM,UAAR,kBAAe;AAAA;AAAA;AAAA,UAE/B,EACE,MACA;AAAA;AAAA,aAGJ;AAAA;AAAA;AAAA;AAAA,0BAIkB,CAAC,MAAM,EAAE,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iCAYR,CAAC,MAAM,GAAG,EAAE,MAAM,gBAAgB,EAAE,MAAM;AAAA;AAAA;AAAA;AAAA,iCAI1C,CAAC,MAAM,OAAO,EAAE,MAAM,gBAAgB,EAAE,MAAM;AAAA;AAAA;AAAA;AAAA,iCAI9C,CAAC,MAAM,EAAE,MAAM;AAAA;AAAA;AAAA;AAAA,2BAIrB,CAAC,MAAM;;AAAA,gBAAE,MAAM,UAAR,kBAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gCAOjB,CAAC,MAAM;;AAAA,gBAAE,MAAM,WAAR,kBAAgB;AAAA;AAAA;AAAA;AAAA,GAKjD,KAAiB,EAAO,EAAQ;AAAA,MAChC;AAAA,GAaA,KAAgC,CAAC;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAY;AAAA,EACZ,YAAS,MAAM;AAAA,EAAC;AAAA,EAChB,YAAS;AAAA,MAEJ,EAAe,SAKfA,kBAAA,cAAA,IAAA;AAAA,EACG;AAAA,EACA,WAAW,GAAiB,GAAW,qBAAqB;AAAA,EAC5D,OAAO;AAAA,EACP,YAAY,CAAC,MACRA,kBAAA,cAAA,MAAA;AAAA,IAAG,KAAK,EAAG;AAAA,IAAI,uBAAqB,EAAG;AAAA,EAAA,GACnCA,kBAAA,cAAA,IAAA,QAAkB,IAAlB;AAAA,IAAsB;AAAA,IAAgB;AAAA,IAAoB;AAAA,EAAA,EAAkB,CACjF;AAAA,GAGH,CACL,IAfO,MCxET,IAAkB,CAAC,GAAW,MAAoB;AAChD,MAAA,EAAK,cAAc;AACZ,WAAA;AAGP,MAAA,CAAC,EAAK;AACC,WAAA;AAGX,QAAM,IAAO,OAAO,KAAK,EAAK,UAAU;AAEpC,MAAA;AAEJ,WAAS,IAAI,GAAG,IAAI,EAAK,QAAQ;AAG7B,QAFA,IAAS,EAAgB,EAAK,WAAW,EAAK,KAAK,CAAE,GAEjD;AACO,aAAA;AAIR,SAAA;AACX,GAEM,KAAsC,CAAC;AAAA,EACzC;AAAA,EACA,MAAM,EAAE;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,MACE;AACE,MAAA,KAAQ,CAAC,GAAU;AACb,UAAA,EAAE,WAAQ,WAAQ,YAAS,GAC3B,IAAU,KAAY,KAAiB,OAAA;AAAA,IAAA;AAC7C,WACKA,kBAAA,cAAA,GAAA;AAAA,MACG;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU,CAAC,GAAY,MAAc;AACjC,cAAM,IAAO,EAAE,WAAQ,WAAQ,MAAK,EAAA;AAChC,QAAA,EAAM,SAAS,MAAM,WACrB,EAAQ,UAAU,EAAE,OAAI,MAAA,EAAM,CAAA,IAG9B,AAAI,AADkB,EAAgB,GAAQ,CAAK,EACjC,WACd,EAAQ,YAAY,EAAE,OAAI,MAAA,EAAM,CAAA,IAEhC,EAAQ,YAAY,EAAE,OAAI,MAAA,EAAM,CAAA;AAAA,MAG5C;AAAA,IAAA,CACJ;AAAA,EAER;AAEO,SAAA;AACX,GCjEM,KAAmB,CAAC,MAAmC;AACzD,QAAM,CAAC,GAAW,KAAgB,GAAqB,IAAI,GACrD,IAAY;AAElB,YAAU,MAAM;AACR,QAAA;AACJ,aAAU,SAAS,mBAAmB,EAAE,KAAK,CAAC,MAAgC;AAC1E,UAAc,EAAS,iBAAiB,GAAY,CAAC,MACjD,EAAa,CAAS,CAC1B;AAAA,IAAA,CACH,GAEM,MAAM;AACT,MAAI,KACY;IAChB;AAAA,EACJ,GACD,CAAC,CAAU,CAAC,GAER;AACX;ACtBA,YAAyC,GAAsB;AAC3D,IAAU,SAAS,gBAAgB,EAAE,KAAK,CAAC,MAAoC;AAC3E,MAAS,OAAO;AAAA,MACZ,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,YAAY,CAAC,MAAkBH,EAAgB,GAAW,CAAa;AAAA,MACvE,YAAY,CAAC,MAAkBC,EAAgB,GAAW,CAAa;AAAA,MACvE,UAAU,CAAC,MACPG,EAAc,GAAW,GAAe,CAAC,MAC9B,QACA,IADA;AAAA,QAEH,kBAAkB,EAAS;AAAA,MAAA,EAElC;AAAA,IAAA,CACR;AAAA,EAAA,CACJ;AACL;ACNO,MAAM,KAAsB,CAC/B,GACA,GACA,MAEO,EAAU,SAAS,gBAAgB,EAAE,KAAK,CAAC,MAAoC;AAClF,IAAS,OAAO;AAAA,IACZ;AAAA,IACA,QAAQ;AAAA,IACR,aAAa,MACF,CAAC,GAAG,MAAO;AACR,YACI;AAAA,QAAN,MAAM;AAAA,UACN,GADM,OAAE,WAAM,YAAS,4BAAjB,GAA0C,MAA1C,GAA0C,CAAxC,QAAM,WAAS;AAE3B,MAAK,KACD,GAAE,eAAe,GACjB,EAAG,CAAI;AAAA,IACX;AAAA,IAGR,YAAY,CAAC,MAAOJ,EAAgB,GAAW,CAAE;AAAA,IACjD,YAAY,CAAC,MAAOC,EAAgB,GAAW,CAAE;AAAA,IACjD,UAAU,CAAC,MAAO;AACR,YACI;AAAA,QAAN,MAAM;AAAA,UACN,GADM,OAAE,WAAM,YAAS,4BAAjB,GAA0C,MAA1C,GAA0C,CAAxC,QAAM,WAAS,0BAErB,EAAE,cAAW,IAAI,EAAW,CAAI,EAAE;AAEjC,aAAA,QAAQ,QAAQ,EAAG,GAAM,CAAM,CAAC,EAAE,KAAK,CAAC,MACpC,KAAgB,CAC1B;AAAA,IACL;AAAA,EAAA,CACH;AAAA,CACJ;AChCE,MAAM,WAAoC,EAAO;AAAA,EACpD,YAAY,GAAsB,GAAe;AAC7C,UAAM,GAAW,CAAQ,GAEV,AADQ,KAAK,OAAO,eACpB,UAAU,CAAC,MAAW;AACjC,QACK,OAAOI,EAAe,EACtB,OAAOC,EAAe,EACtB,OAAOC,EAAc,EACrB,OAAOC,EAAW,EAClB,OAAOC,EAAgB,EACvB,OAAOC,EAAU;AAAA,IAAA,CACzB;AAAA,EACL;AACJ;"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { c as n, C as m, d as r, e as c, k as p, F as d, h as P, i as f, l as g, p as C, w as h, a as b, b as F, j as L, f as M, g as k, s as v, v as S, u as x } from "./index.e9a517ef.js";
1
+ import { c as n, C as m, d as r, e as c, k as p, F as d, h as P, i as f, l as g, p as C, w as h, a as b, b as F, j as L, f as M, g as k, s as v, v as S, u as x } from "./index.8912b772.js";
2
2
  import "@telia-ace/widget-forms";
3
3
  import "@telia-ace/knowledge-widget-core";
4
4
  import "@telia-ace/widget-utilities";
package/package.json CHANGED
@@ -1,16 +1,13 @@
1
1
  {
2
2
  "name": "@telia-ace/knowledge-widget-adapters",
3
- "version": "1.0.23",
3
+ "version": "1.0.27",
4
4
  "description": "ACE knowledge adapters for ACE widgets.",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "author": "Telia Company AB",
7
7
  "keywords": [
8
8
  "telia"
9
9
  ],
10
- "exports": {
11
- "development": "./src/index.ts",
12
- "default": "./dist/index.js"
13
- },
10
+ "main": "dist/index.js",
14
11
  "type": "module",
15
12
  "types": "dist/index.d.ts",
16
13
  "files": [
@@ -28,11 +25,11 @@
28
25
  },
29
26
  "sideEffects": false,
30
27
  "dependencies": {
31
- "@telia-ace/knowledge-serviceclient": "^1.0.6",
32
- "@telia-ace/knowledge-widget-core": "^1.0.14",
33
- "@telia-ace/knowledge-widget-ui": "^1.0.20",
34
- "@telia-ace/widget-forms": "^1.0.18",
35
- "@telia-ace/widget-routing": "^1.0.12",
28
+ "@telia-ace/knowledge-serviceclient": "^1.0.7",
29
+ "@telia-ace/knowledge-widget-core": "^1.0.17",
30
+ "@telia-ace/knowledge-widget-ui": "^1.0.23",
31
+ "@telia-ace/widget-forms": "^1.0.20",
32
+ "@telia-ace/widget-routing": "^1.0.14",
36
33
  "@telia-ace/widget-utilities": "^1.0.2",
37
34
  "@webprovisions/platform": "^1.1.2"
38
35
  },
@@ -44,5 +41,5 @@
44
41
  "@types/react": "^16.8.0",
45
42
  "@types/styled-components": "^5.1.7"
46
43
  },
47
- "gitHead": "25ba427459b76aaec250d8618cfeeeb19676e347"
44
+ "gitHead": "1179857e1997ced817d129ae58e17b4fdfb9951b"
48
45
  }