@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.
- package/dist/contact-methods/ui/contact-list.d.ts +0 -1
- package/dist/{email-form-component.e13f4117.js → email-form-component.cb09ca59.js} +2 -2
- package/dist/{email-form-component.e13f4117.js.map → email-form-component.cb09ca59.js.map} +1 -1
- package/dist/{free-text-component.bea8185a.js → free-text-component.a78d324f.js} +2 -2
- package/dist/{free-text-component.bea8185a.js.map → free-text-component.a78d324f.js.map} +1 -1
- package/dist/{index.e9a517ef.js → index.8912b772.js} +178 -197
- package/dist/{index.e9a517ef.js.map → index.8912b772.js.map} +1 -1
- package/dist/index.js +1 -1
- package/package.json +8 -11
|
@@ -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.
|
|
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.
|
|
51
|
+
//# sourceMappingURL=email-form-component.cb09ca59.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-form-component.
|
|
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.
|
|
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.
|
|
27
|
+
//# sourceMappingURL=free-text-component.a78d324f.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"free-text-component.
|
|
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
|
|
5
|
-
var
|
|
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
|
-
|
|
7
|
+
R.call(e, n) && A(t, n, e[n]);
|
|
8
8
|
if (P)
|
|
9
9
|
for (var n of P(e))
|
|
10
|
-
|
|
10
|
+
V.call(e, n) && A(t, n, e[n]);
|
|
11
11
|
return t;
|
|
12
|
-
},
|
|
13
|
-
var
|
|
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
|
-
|
|
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 &&
|
|
19
|
+
e.indexOf(o) < 0 && V.call(t, o) && (n[o] = t[o]);
|
|
20
20
|
return n;
|
|
21
21
|
};
|
|
22
|
-
var
|
|
23
|
-
var c = (
|
|
22
|
+
var y = (t, e, n) => new Promise((o, a) => {
|
|
23
|
+
var c = (s) => {
|
|
24
24
|
try {
|
|
25
|
-
|
|
25
|
+
i(n.next(s));
|
|
26
26
|
} catch (l) {
|
|
27
27
|
a(l);
|
|
28
28
|
}
|
|
29
|
-
},
|
|
29
|
+
}, r = (s) => {
|
|
30
30
|
try {
|
|
31
|
-
|
|
31
|
+
i(n.throw(s));
|
|
32
32
|
} catch (l) {
|
|
33
33
|
a(l);
|
|
34
34
|
}
|
|
35
|
-
},
|
|
36
|
-
|
|
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
|
|
39
|
-
import { ComponentPlatform as
|
|
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
|
|
42
|
-
import { Paragraph as ce, headingElement as
|
|
43
|
-
import
|
|
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
|
|
46
|
-
return
|
|
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 ||
|
|
49
|
+
guideId: e.body.guideId || i.guideId
|
|
50
50
|
}
|
|
51
51
|
});
|
|
52
|
-
}),
|
|
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
|
-
})),
|
|
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
|
|
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.
|
|
64
|
-
onEvaluate: (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) =>
|
|
67
|
-
onComplete: (n) =>
|
|
66
|
+
onSubmit: (n) => O(t, n),
|
|
67
|
+
onComplete: (n) => $(t, n)
|
|
68
68
|
});
|
|
69
69
|
});
|
|
70
70
|
}
|
|
71
|
-
const
|
|
72
|
-
const { url: o, width: a, height: c } = e,
|
|
73
|
-
return
|
|
74
|
-
const [l,
|
|
75
|
-
typeof
|
|
76
|
-
}),
|
|
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
|
|
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:
|
|
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
|
-
} : (
|
|
87
|
-
|
|
86
|
+
} : (d) => {
|
|
87
|
+
d.preventDefault(), L(o, s);
|
|
88
88
|
};
|
|
89
89
|
},
|
|
90
90
|
onValidate: (n) => k(t, n),
|
|
91
|
-
onComplete: (n) =>
|
|
91
|
+
onComplete: (n) => $(t, n),
|
|
92
92
|
onSubmit: (n) => {
|
|
93
|
-
const { title: o, body: a } = n,
|
|
94
|
-
return
|
|
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.
|
|
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) =>
|
|
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:
|
|
128
|
-
typeof
|
|
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(
|
|
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
|
|
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", (
|
|
140
|
-
const { contactMethods:
|
|
141
|
-
if (
|
|
142
|
-
const l = Promise.all(
|
|
143
|
-
yield Promise.resolve(l).then((
|
|
144
|
-
|
|
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
|
|
147
|
+
return i(r);
|
|
148
148
|
}));
|
|
149
149
|
const a = n.components().ofType("guide").select();
|
|
150
|
-
a.actions.watch("guide.fetched", (
|
|
151
|
-
const { contactMethods:
|
|
152
|
-
if (
|
|
153
|
-
const l = Promise.all(
|
|
154
|
-
yield Promise.resolve(l).then((
|
|
155
|
-
|
|
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
|
|
159
|
-
})), a.actions.watch("guide.handover", (
|
|
160
|
-
const { handoverContactMethods:
|
|
161
|
-
if (
|
|
162
|
-
const l = Promise.all(
|
|
163
|
-
yield Promise.resolve(l).then((
|
|
164
|
-
|
|
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
|
|
168
|
-
})), n.components().ofType("contact-method").select().actions.watch("contact-method.fetched", (
|
|
169
|
-
const { contactMethod:
|
|
170
|
-
return
|
|
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
|
|
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 ||
|
|
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:
|
|
192
|
-
this.track({ contactMethod: { id: n, title: o, expanded: c, type: a }, hasGuide: !!
|
|
193
|
-
const
|
|
194
|
-
if (
|
|
195
|
-
return
|
|
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((
|
|
204
|
-
this.track({ contactMethod: { id: n, title: o, type: a }, isValid:
|
|
205
|
-
const { events:
|
|
206
|
-
return
|
|
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,
|
|
215
|
+
return this.adapters.set(n, h({
|
|
216
216
|
onValidate: (a) => k(this.container, a),
|
|
217
|
-
onEvaluate: (a) =>
|
|
218
|
-
onComplete: (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
|
-
|
|
228
|
-
${
|
|
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 =
|
|
237
|
-
${
|
|
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) &&
|
|
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) &&
|
|
250
|
+
return ((e = t.theme.accessibility) == null ? void 0 : e.isTabbing) && me;
|
|
251
251
|
}};
|
|
252
252
|
}
|
|
253
|
-
`,
|
|
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__ */
|
|
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__ */
|
|
263
|
+
}, /* @__PURE__ */ m.createElement(ge, {
|
|
264
264
|
variant: "h5"
|
|
265
265
|
}, "Non resolved Contact Method type")) : null;
|
|
266
|
-
const c = (
|
|
267
|
-
const
|
|
268
|
-
id:
|
|
266
|
+
const c = (r = {}) => {
|
|
267
|
+
const i = h(h({}, t), r), {
|
|
268
|
+
id: s,
|
|
269
269
|
title: l,
|
|
270
|
-
clientName:
|
|
271
|
-
symbol:
|
|
272
|
-
inline:
|
|
273
|
-
onClick:
|
|
270
|
+
clientName: d,
|
|
271
|
+
symbol: u,
|
|
272
|
+
inline: v,
|
|
273
|
+
onClick: f = () => {
|
|
274
274
|
},
|
|
275
|
-
description:
|
|
276
|
-
htmlParseInstruction:
|
|
275
|
+
description: w,
|
|
276
|
+
htmlParseInstruction: B,
|
|
277
277
|
className: K,
|
|
278
278
|
disabled: G,
|
|
279
279
|
guideId: U,
|
|
280
|
-
dispatch:
|
|
280
|
+
dispatch: M = () => {
|
|
281
281
|
},
|
|
282
|
-
expanded:
|
|
283
|
-
} =
|
|
282
|
+
expanded: T
|
|
283
|
+
} = i, W = v ? {
|
|
284
284
|
onKeyDown: (p) => {
|
|
285
|
-
p.key && p.key === "Enter" && (
|
|
285
|
+
p.key && p.key === "Enter" && (f(p, i), p.defaultPrevented || !T && M("expand", s));
|
|
286
286
|
},
|
|
287
287
|
onClick: (p) => {
|
|
288
|
-
|
|
288
|
+
f(p, i), p.defaultPrevented || !T && M("expand", s);
|
|
289
289
|
}
|
|
290
290
|
} : {
|
|
291
|
-
onClick: (p) =>
|
|
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:
|
|
298
|
+
contactMethod: s,
|
|
299
299
|
uriName: ne(l)
|
|
300
300
|
})
|
|
301
301
|
};
|
|
302
|
-
return /* @__PURE__ */
|
|
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:
|
|
308
|
-
"data-client-name":
|
|
309
|
-
},
|
|
310
|
-
symbol:
|
|
311
|
-
}),
|
|
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__ */
|
|
314
|
-
html:
|
|
315
|
-
htmlParseInstruction:
|
|
316
|
-
})) : /* @__PURE__ */
|
|
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__ */
|
|
318
|
+
return t.expanded ? /* @__PURE__ */ m.createElement(ie, {
|
|
319
319
|
fallback: null
|
|
320
|
-
}, /* @__PURE__ */
|
|
320
|
+
}, /* @__PURE__ */ m.createElement(e, g(h({}, t), {
|
|
321
321
|
renderDefault: c
|
|
322
322
|
}))) : c();
|
|
323
|
-
},
|
|
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:
|
|
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:
|
|
348
|
-
|
|
349
|
-
|
|
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
|
-
`,
|
|
367
|
-
line-height:
|
|
368
|
-
|
|
369
|
-
|
|
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) &&
|
|
362
|
+
return ((e = t.theme.accessibility) == null ? void 0 : e.isTabbing) && j;
|
|
378
363
|
}};
|
|
379
364
|
}
|
|
380
|
-
`, Me =
|
|
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
|
-
${
|
|
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 =
|
|
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
|
-
|
|
451
|
-
action: i = () => {
|
|
435
|
+
action: c = () => {
|
|
452
436
|
},
|
|
453
|
-
header:
|
|
454
|
-
}) => t.length ? /* @__PURE__ */
|
|
455
|
-
header:
|
|
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:
|
|
459
|
-
key:
|
|
460
|
-
"data-contact-method":
|
|
461
|
-
},
|
|
462
|
-
|
|
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,
|
|
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 =
|
|
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:
|
|
468
|
+
autoFocus: r
|
|
488
469
|
}) => {
|
|
489
470
|
if (e && !c) {
|
|
490
|
-
const { schema:
|
|
471
|
+
const { schema: i, layout: s, data: l } = e, d = a || o || (() => {
|
|
491
472
|
});
|
|
492
|
-
return /* @__PURE__ */
|
|
473
|
+
return /* @__PURE__ */ m.createElement(Y, {
|
|
493
474
|
className: t,
|
|
494
|
-
schema:
|
|
495
|
-
layout:
|
|
475
|
+
schema: i,
|
|
476
|
+
layout: s,
|
|
496
477
|
data: l,
|
|
497
|
-
autoFocus:
|
|
498
|
-
onChange: (
|
|
499
|
-
const f = { schema:
|
|
500
|
-
|
|
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] =
|
|
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, (
|
|
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) =>
|
|
523
|
-
onSubmit: (n) =>
|
|
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:
|
|
536
|
-
} = c,
|
|
537
|
-
|
|
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) =>
|
|
521
|
+
onComplete: (a) => $(t, a),
|
|
541
522
|
onSubmit: (a) => {
|
|
542
523
|
const {
|
|
543
|
-
body:
|
|
544
|
-
} = a,
|
|
545
|
-
return Promise.resolve(n(
|
|
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(
|
|
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
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
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
|
-
|
|
554
|
+
O as s,
|
|
574
555
|
Be as u,
|
|
575
556
|
k as v,
|
|
576
557
|
Re as w
|
|
577
558
|
};
|
|
578
|
-
//# sourceMappingURL=index.
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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,qBAGnB,CAAC,MAAM;;AAAA,gBAAE,MAAM,UAAR,kBAAe;AAAA;AAAA,oBACvB,CAAC,MAAM;;AAAA,gBAAE,MAAM,UAAR,kBAAe;AAAA;AAAA,sBACpB,CAAC,MAAM;;AAAA,gBAAE,MAAM,UAAR,kBAAe;AAAA;AAAA,qBACvB,CAAC,MAAM;;AAAA,gBAAE,MAAM,UAAR,kBAAe;AAAA;AAAA,uBACpB,CAAC,MAAM;;AAAA,gBAAE,MAAM,UAAR,kBAAe;AAAA;AAAA;AAAA;AAAA,iBAG5B,CAAC,MAAM;;AAAA,gBAAE,MAAM,WAAR,kBAAgB;AAAA;AAAA;AAAA,GAIlC,IAAc,EAAO,EAAU;AAAA,mBAClB,CAAC,MAAM;;AAAA,gBAAE,MAAM,UAAR,kBAAe;AAAA;AAAA,GAGnC,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,GAcA,KAAgC,CAAC;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAY;AAAA,EACZ;AAAA,EACA,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,YACI,IACM,CAAC,MACIA,kBAAA,cAAA,MAAA;AAAA,IAAG,KAAK,EAAG;AAAA,IAAI,uBAAqB,EAAG;AAAA,EACnC,GAAA,EAAa,GAAI,EAAE,WAAQ,aAAU,YAAS,CACnD,IAEJ,CAAC,MACIA,kBAAA,cAAA,MAAA;AAAA,IAAG,KAAK,EAAG;AAAA,IAAI,uBAAqB,EAAG;AAAA,EAAA,GACnCA,kBAAA,cAAA,IAAA,QACO,IADP;AAAA,IAEG;AAAA,IACA;AAAA,IACA;AAAA,EAAA,EACJ,CACJ;AAAA,GAIb,CACL,IA5BO,MC1ET,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;AACnB,UAAM,EAAE,WAAQ,WAAQ,SAAM,YAAS,GACjC,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,SAAM;AACjC,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;"}
|
|
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.
|
|
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.
|
|
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
|
-
"
|
|
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.
|
|
32
|
-
"@telia-ace/knowledge-widget-core": "^1.0.
|
|
33
|
-
"@telia-ace/knowledge-widget-ui": "^1.0.
|
|
34
|
-
"@telia-ace/widget-forms": "^1.0.
|
|
35
|
-
"@telia-ace/widget-routing": "^1.0.
|
|
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": "
|
|
44
|
+
"gitHead": "1179857e1997ced817d129ae58e17b4fdfb9951b"
|
|
48
45
|
}
|