@telia-ace/knowledge-widget-bot-provider 1.3.14-rc.1 → 1.3.14-rc.3

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.
@@ -0,0 +1,3 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const N=require("react/jsx-runtime"),R=require("@emotion/styled"),D=require("@telia-ace/knowledge-data-client"),$=require("@telia-ace/knowledge-widget-adapters"),g=require("@telia-ace/knowledge-widget-ui"),z=require("@telia-ace/widget-forms"),U=require("@telia-ace/widget-utilities"),u=require("react"),E=require("./index-c29fdbb3.js");require("@telia-ace/widget-conversation");require("@telia-ace/widget-services");const W=({contactMethodId:a,guideId:o,groupId:b,className:j})=>{var v,w,q,M,k,S,T;const[t,n]=u.useState(),d=g.useContainer(),A=g.useDispatch(),l=u.useRef(!0),f=g.useConversation();u.useEffect(()=>{const{events:s}=d.get("$widget"),m=s.subscribe("bot-provider:form-submitted",async(y,r)=>{var F;if(((F=r.form.meta)==null?void 0:F.groupId)!==b||r.id!==t.id)return;f&&(r.form.meta||(r.form.meta={}),r.form.meta.conversation=f);const p=await d.getAsync("contactMethods"),e={...t,body:{...t.body,form:r.form}},{errors:c,valid:h,errorTypes:G}=await p.validate(e);if(!h){const x=new z.FormBuilder(t.body.form);n(void 0),x.setValidationErrors(c),e.body={...e.body,form:x.get()},n({...e});return}const B=await p.submit(e);e.confirmation=B,n(e)}),i=s.subscribe("bot-provider:evaluate",async(y,r)=>{if(r.id!==a)return;const e=await(await d.getAsync("contactMethods")).evaluate(t);let c={...t,body:{...t.body,form:e}};const h=E.updateForm(c,{submit:"Skicka",errors:{},meta:{groupId:b}});c={...c,body:h},n(c)});return()=>{m(),i()}},[d,t,n,f]);const C=u.useCallback(async s=>{const i=await(await D.DataClient.getInstance(d)).fetch(D.DataType.ContactMethod,{contactMethodId:s,guideId:o},{noCache:!0,isBot:!0}),y=E.updateForm(i,{submit:"Skicka",errors:{},meta:{groupId:b}});if(i.body=y,i.body.guideId=o,!l.current)return null;n(i)},[l]);if(u.useEffect(()=>(C(a),()=>{l.current=!1}),[a,C]),!t)return null;if(t.clientName==="ace.callback"&&((v=t.body)!=null&&v.entrance)&&((M=(q=(w=t.body)==null?void 0:w.form)==null?void 0:q.layout["group[0]"])!=null&&M.startTime)){const{startTime:s}=t.body.form.layout["group[0]"],m={...s,"ui:bot":!0,"ui:entrance":t.body.entrance};t.body.form.layout["group[0]"].startTime=m}return N.jsx(_,{...t,body:{...t.body,form:t.body.form?{...t.body.form,data:(k=t.body.form)==null?void 0:k.data,layout:{...t.body.form.layout},meta:(S=t.body.form)==null?void 0:S.meta,schema:(T=t.body.form)==null?void 0:T.schema}:void 0,guideId:t.body.guideId},inline:!0,expanded:!0,dispatch:A,className:U.appendClassNames("humany-bot-contact-method",j)})},_=R($.ContactMethod)`
2
+ padding: ${a=>{var o;return(o=a.theme.sizes)==null?void 0:o.normal}} ${a=>{var o;return(o=a.theme.sizes)==null?void 0:o.medium}};
3
+ `;exports.default=W;
@@ -0,0 +1,145 @@
1
+ import { jsx as N } from "react/jsx-runtime";
2
+ import z from "@emotion/styled";
3
+ import { DataClient as A, DataType as R } from "@telia-ace/knowledge-data-client";
4
+ import { ContactMethod as _ } from "@telia-ace/knowledge-widget-adapters";
5
+ import { useContainer as j, useDispatch as G, useConversation as I } from "@telia-ace/knowledge-widget-ui";
6
+ import { FormBuilder as V } from "@telia-ace/widget-forms";
7
+ import { appendClassNames as q } from "@telia-ace/widget-utilities";
8
+ import { useState as H, useRef as J, useEffect as x, useCallback as K } from "react";
9
+ import { u as B } from "./index-c6e28777.mjs";
10
+ import "@telia-ace/widget-conversation";
11
+ import "@telia-ace/widget-services";
12
+ const at = ({
13
+ contactMethodId: a,
14
+ guideId: e,
15
+ groupId: u,
16
+ className: D
17
+ }) => {
18
+ var C, v, g, M, w, k, T;
19
+ const [t, n] = H(), d = j(), E = G(), f = J(!0), b = I();
20
+ x(() => {
21
+ const { events: s } = d.get("$widget"), c = s.subscribe(
22
+ "bot-provider:form-submitted",
23
+ async (y, r) => {
24
+ var S;
25
+ if (((S = r.form.meta) == null ? void 0 : S.groupId) !== u || r.id !== t.id)
26
+ return;
27
+ b && (r.form.meta || (r.form.meta = {}), r.form.meta.conversation = b);
28
+ const l = await d.getAsync(
29
+ "contactMethods"
30
+ ), o = {
31
+ ...t,
32
+ body: {
33
+ ...t.body,
34
+ form: r.form
35
+ }
36
+ }, { errors: m, valid: p, errorTypes: O } = await l.validate(
37
+ o
38
+ );
39
+ if (!p) {
40
+ const $ = new V(t.body.form);
41
+ n(void 0), $.setValidationErrors(m), o.body = {
42
+ ...o.body,
43
+ form: $.get()
44
+ }, n({ ...o });
45
+ return;
46
+ }
47
+ const F = await l.submit(o);
48
+ o.confirmation = F, n(o);
49
+ }
50
+ ), i = s.subscribe(
51
+ "bot-provider:evaluate",
52
+ async (y, r) => {
53
+ if (r.id !== a)
54
+ return;
55
+ const o = await (await d.getAsync(
56
+ "contactMethods"
57
+ )).evaluate(t);
58
+ let m = {
59
+ ...t,
60
+ body: {
61
+ ...t.body,
62
+ form: o
63
+ }
64
+ };
65
+ const p = B(m, {
66
+ submit: "Skicka",
67
+ errors: {},
68
+ meta: { groupId: u }
69
+ });
70
+ m = {
71
+ ...m,
72
+ body: p
73
+ }, n(m);
74
+ }
75
+ );
76
+ return () => {
77
+ c(), i();
78
+ };
79
+ }, [d, t, n, b]);
80
+ const h = K(
81
+ async (s) => {
82
+ const i = await (await A.getInstance(d)).fetch(
83
+ R.ContactMethod,
84
+ {
85
+ contactMethodId: s,
86
+ guideId: e
87
+ },
88
+ { noCache: !0, isBot: !0 }
89
+ ), y = B(i, {
90
+ submit: "Skicka",
91
+ errors: {},
92
+ meta: { groupId: u }
93
+ });
94
+ if (i.body = y, i.body.guideId = e, !f.current)
95
+ return null;
96
+ n(i);
97
+ },
98
+ // eslint-disable-next-line react-hooks/exhaustive-deps
99
+ [f]
100
+ );
101
+ if (x(() => (h(a), () => {
102
+ f.current = !1;
103
+ }), [a, h]), !t)
104
+ return null;
105
+ if (t.clientName === "ace.callback" && ((C = t.body) != null && C.entrance) && ((M = (g = (v = t.body) == null ? void 0 : v.form) == null ? void 0 : g.layout["group[0]"]) != null && M.startTime)) {
106
+ const { startTime: s } = t.body.form.layout["group[0]"], c = {
107
+ ...s,
108
+ "ui:bot": !0,
109
+ "ui:entrance": t.body.entrance
110
+ };
111
+ t.body.form.layout["group[0]"].startTime = c;
112
+ }
113
+ return /* @__PURE__ */ N(
114
+ L,
115
+ {
116
+ ...t,
117
+ body: {
118
+ ...t.body,
119
+ form: t.body.form ? {
120
+ ...t.body.form,
121
+ data: (w = t.body.form) == null ? void 0 : w.data,
122
+ layout: { ...t.body.form.layout },
123
+ meta: (k = t.body.form) == null ? void 0 : k.meta,
124
+ schema: (T = t.body.form) == null ? void 0 : T.schema
125
+ } : void 0,
126
+ guideId: t.body.guideId
127
+ },
128
+ inline: !0,
129
+ expanded: !0,
130
+ dispatch: E,
131
+ className: q("humany-bot-contact-method", D)
132
+ }
133
+ );
134
+ }, L = z(_)`
135
+ padding: ${(a) => {
136
+ var e;
137
+ return (e = a.theme.sizes) == null ? void 0 : e.normal;
138
+ }} ${(a) => {
139
+ var e;
140
+ return (e = a.theme.sizes) == null ? void 0 : e.medium;
141
+ }};
142
+ `;
143
+ export {
144
+ at as default
145
+ };
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),u=require("@emotion/styled"),y=require("@telia-ace/knowledge-widget-adapters"),g=require("@telia-ace/knowledge-widget-ui"),l=require("react"),b=require("./contact-method-bc79b2d7.js");require("@telia-ace/knowledge-data-client");require("@telia-ace/widget-forms");require("@telia-ace/widget-utilities");require("./index-0b74bfdd.js");require("@telia-ace/widget-conversation");require("@telia-ace/widget-services");const k=({actions:e,entryId:t,groupId:x})=>{const q=g.useDispatch(),d=g.useContainer(),[m,C]=l.useState([]),[o,M]=l.useState([]);return l.useEffect(()=>{d.getAsync("contactMethods").then(n=>{if(!n)return;const c=e.map(async i=>{var h;if(!((h=i.data)!=null&&h.clientName))return null;const s=await n.handleAdapters(i.data);return{...s,...i.data,description:i.data.description?i.data.description:s.description,onClick:(p,r)=>{if(typeof s.onClick=="function"&&s.onClick(p,r),!p.defaultPrevented)if(r.inline&&!r.expanded)M([...o,r.id]);else{const{events:f}=d.get("$widget");f.dispatch("provider:open-contact-method",{entryId:t,contactMethod:r,actionKey:i.actionKey}),f.dispatch("tracking:contact-method-list-item-clicked",r)}}}});Promise.all(c).then(i=>{C(i.filter(s=>!!s))})})},[e,d,t,o]),m.length?a.jsx(j,{className:"humany-bot-contact-list",contactMethods:m,dispatch:q,itemRenderer:(n,c)=>(o.includes(n.id)||n.expanded)&&n.inline||n.clientName==="custom.link"?a.jsx(S,{contactMethodId:n.id,groupId:x,guideId:n.body.guideId}):a.jsx($,{...n,...c})}):null},j=u(y.ContactList)`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),u=require("@emotion/styled"),y=require("@telia-ace/knowledge-widget-adapters"),g=require("@telia-ace/knowledge-widget-ui"),l=require("react"),b=require("./contact-method-452b4d87.js");require("@telia-ace/knowledge-data-client");require("@telia-ace/widget-forms");require("@telia-ace/widget-utilities");require("./index-c29fdbb3.js");require("@telia-ace/widget-conversation");require("@telia-ace/widget-services");const k=({actions:e,entryId:t,groupId:x})=>{const q=g.useDispatch(),d=g.useContainer(),[m,C]=l.useState([]),[o,M]=l.useState([]);return l.useEffect(()=>{d.getAsync("contactMethods").then(n=>{if(!n)return;const c=e.map(async i=>{var h;if(!((h=i.data)!=null&&h.clientName))return null;const s=await n.handleAdapters(i.data);return{...s,...i.data,description:i.data.description?i.data.description:s.description,onClick:(p,r)=>{if(typeof s.onClick=="function"&&s.onClick(p,r),!p.defaultPrevented)if(r.inline&&!r.expanded)M([...o,r.id]);else{const{events:f}=d.get("$widget");f.dispatch("provider:open-contact-method",{entryId:t,contactMethod:r,actionKey:i.actionKey}),f.dispatch("tracking:contact-method-list-item-clicked",r)}}}});Promise.all(c).then(i=>{C(i.filter(s=>!!s))})})},[e,d,t,o]),m.length?a.jsx(j,{className:"humany-bot-contact-list",contactMethods:m,dispatch:q,itemRenderer:(n,c)=>(o.includes(n.id)||n.expanded)&&n.inline||n.clientName==="custom.link"?a.jsx(S,{contactMethodId:n.id,groupId:x,guideId:n.body.guideId}):a.jsx($,{...n,...c})}):null},j=u(y.ContactList)`
2
2
  > ul > li {
3
3
  a {
4
4
  display: flex;
@@ -3,11 +3,11 @@ import m from "@emotion/styled";
3
3
  import { ContactList as M, ContactMethod as $ } from "@telia-ace/knowledge-widget-adapters";
4
4
  import { useDispatch as b, useContainer as k } from "@telia-ace/knowledge-widget-ui";
5
5
  import { useState as f, useEffect as E } from "react";
6
- import S from "./contact-method-51909979.mjs";
6
+ import S from "./contact-method-458f0cb3.mjs";
7
7
  import "@telia-ace/knowledge-data-client";
8
8
  import "@telia-ace/widget-forms";
9
9
  import "@telia-ace/widget-utilities";
10
- import "./index-4cddce54.mjs";
10
+ import "./index-c6e28777.mjs";
11
11
  import "@telia-ace/widget-conversation";
12
12
  import "@telia-ace/widget-services";
13
13
  const F = ({ actions: t, entryId: e, groupId: y }) => {
@@ -1 +1 @@
1
- "use strict";var R=Object.defineProperty;var H=(n,t,e)=>t in n?R(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var y=(n,t,e)=>(H(n,typeof t!="symbol"?t+"":t,e),e);const p=require("@telia-ace/widget-conversation"),N=require("@telia-ace/widget-services"),K=require("@telia-ace/widget-utilities"),P=require("@telia-ace/widget-forms");var f=(n=>(n.ContactMethod="ace-knowledge-bot-contact-method",n.ContactList="ace-knowledge-bot-contact-list",n.FeedbackList="ace-knowledge-bot-feedback-list",n.NotificationList="ace-knowledge-bot-notification-list",n.NoGoodAlternative="ace-knowledge-bot-no-good-alternative",n))(f||{});const $=n=>{if(n){const{type:t,content:e}=n;if(t&&e)return{type:t,content:e}}},A=({isUser:n,items:t=[],meta:e={}})=>{const s=K.uuid();return{id:s,isUser:n,items:t.map(a=>({id:a.id||K.uuid(),isUser:n,groupId:s,message:a.message||[]})),meta:e}},U=({id:n,title:t,defaultIcon:e,exits:[s],exitType:i,confirmationText:a,expandFormAutomatically:c,form:h,description:E},S={})=>{const{adapter:r}=s||{Adapter:{}},{clientName:o="",settings:g={},customClientName:v=""}=r,{validation:l}=S,d={id:n.toString(),title:t,description:E,symbol:$(e),clientName:o==="custom.adapter"?v:o,expanded:!0,inline:!0,body:{}};if(o.indexOf("phone")>-1||o.indexOf("freetext")>-1){const{displayTextBeforeClick:L,textBeforeClick:m}=g;L==="true"&&(d.expanded=!1,d.title=m),o.indexOf("phone.text")>-1?d.body.phoneNumber=g.phoneNumber:d.body.freetext=g.freetext}return(o.indexOf("chat.popup")>-1||o.indexOf("link")>-1||o==="custom.adapter"&&i==="custom")&&(d.body=g,d.body.confirmationFallback=a),o.indexOf("ace")>-1&&(d.body=g),h&&h.hasValueComponents&&(l?d.body.form=P.FormBuilder.fromLegacyForm(n.toString(),h,l).get():d.body.form=P.FormBuilder.fromLegacyForm(n.toString(),h).get(),c||(d.expanded=d.inline=!1),d.body=B(d,{submit:"Submit"})),S.guideId&&(d.body.guideId=S.guideId),d},G=n=>{const{localState:t}=n;return n.tags.includes("category")&&n.tags.includes("contact")?p.ConversationMessageListItemType.ItemList:n.tags.includes("suggestion")||(t==null?void 0:t.$type)==="Humany.Matching.Bots.Conversations.GuideListState, Humany.Matching"?p.ConversationMessageListItemType.LinkList:(t==null?void 0:t.$type)==="Humany.Matching.Bots.Conversations.States.GuideFeedbackState, Humany.Matching"?f.FeedbackList:(t==null?void 0:t.$type)==="Humany.Matching.Bots.Conversations.States.ContactState, Humany.Matching"?f.ContactList:p.ConversationMessageListItemType.ButtonList},q=(n,t)=>{const{knowledgeBotEndpoint:e}=t.properties();if(e)return`${e}/conversations`;const{data:s}=n.get("$settings");if(!s||!s.projection)throw new Error("Missing Knowledge Bot endpoint");return`${s.projection}/conversations`},B=(n,{submit:t,errors:e,meta:s})=>{var i;if((i=n==null?void 0:n.body)!=null&&i.form){const{body:a}=n,c=new P.FormBuilder(a.form);return a.form.layout.submit||c.createComponent(P.submitButton(t,"submit")),e&&c.setValidationErrors(e),s&&c.setMeta(s),{...a,form:c.get()}}return(n==null?void 0:n.body)||{}},O=async(n,t,e)=>{(await(await n.getAsync("dataClient")).getClient()).parameters.set(t,e)},b=({messageId:n,message:t,group:e})=>({id:n,message:t,groupId:e.id,isUser:e.isUser}),V=async(n,t,e)=>{const s=(r,o,g,v={actions:[],entryId:o.id,groupId:g})=>{const l=[];return v.actions=o.content.items.map(d=>{var m;const L={label:d.title,actionKey:d.actionKey,symbol:d.symbol?d.symbol:void 0,description:d.description||void 0};if(d.data){const w=o.actions[d.actionKey];r===f.ContactList?(l.push(d.data.id),L.data=U(d.data,{guideId:(m=w==null?void 0:w.guideId)==null?void 0:m.toString()})):L.data=d.data}return L}),r===f.ContactList&&(v.contactMethodIds=l),v},i=async(r,o,g=[],v)=>{var d,L;const l=K.uuid();switch(r.type!=="List"&&r.tags.includes("guide")&&((L=(d=r.content.hints)==null?void 0:d[0])!=null&&L.id)&&await O(n,"LastGuideId",r.content.hints[0].id),r.type){case"List":{const{header:m,items:w,html:x}=r.content,M=[];let C={actions:[],entryId:r.id,groupId:o.id};if(C.tags=r.tags||null,m&&(C.header=m),(w==null?void 0:w.length)>0){const u=G(r);if(C=s(u,r,o.id,C),g.length){const I=g.find(k=>k.tags.includes("paging")),T=g.find(k=>k.tags.includes("fallback"));if(I!=null&&I.content&&(o.meta.paging={actions:I.actions,items:I.content.items,localState:I.localState},I.content.items.forEach(k=>{C.actions.push({label:k.title,actionKey:k.actionKey,data:{groupId:v?v.id:o.id}})})),T){const k=T.content.items.find(F=>F.actionKey==="help");k&&(M.push(b({messageId:l,message:[p.ConversationMessageListItemType.Separator,void 0],group:o})),M.push(b({messageId:l,message:[f.NoGoodAlternative,{body:k.title}],group:o})))}}M.unshift(b({messageId:l,message:[u,C],group:o}))}return x&&M.unshift(b({messageId:l,message:[p.ConversationMessageListItemType.HTML,{body:x}],group:o})),M}case"Text":{const m=[];if(m.push(b({messageId:l,message:[p.ConversationMessageListItemType.HTML,{body:r.content.html}],group:o})),g.length){const w=g.find(u=>{var I;return u.type==="List"&&((I=u.localState)==null?void 0:I.$type)==="Humany.Matching.Bots.Conversations.States.ContactState, Humany.Matching"}),x=g.find(u=>u.tags.includes("dialog")),M=g.find(u=>u.tags.includes("feedback")),C=g.find(u=>u.tags.includes("contact")&&u.type==="Contact");if(C&&m.push(b({messageId:l,message:[f.ContactMethod,{contactMethodId:C.content.id,groupId:o.id,guideId:C.content.guideId}],group:o})),x&&m.push(b({messageId:l,message:[p.ConversationMessageListItemType.ButtonList,{actions:x.content.items.map(u=>({label:u.title,actionKey:u.actionKey,data:u.data}))}],group:o})),w){const u=s(f.ContactList,w,o.id);m.push(b({messageId:l,message:[p.ConversationMessageListItemType.Separator,void 0],group:o})),m.push(b({messageId:l,message:[f.ContactList,u],group:o}))}M&&m.push(b({messageId:l,group:o,message:[f.FeedbackList,{title:M.content.html,messageId:l,actions:M.content.items.map(u=>({actionKey:u.actionKey,label:u.title}))}]}))}return m}case"Contact":return[b({messageId:l,message:[f.ContactMethod,{contactMethodId:r.content.id,groupId:o.id,guideId:r.content.guideId}],group:o})];case"CategorizedNoticeList":{const m=[b({messageId:l,message:[f.NotificationList,{id:r.content.item.id.toString(),header:r.content.item.title,items:r.content.item.listNotices,symbol:r.content.item.defaultIcon}],group:o})];return(r.content.notices||[]).forEach(w=>{m.push(b({messageId:l,message:[p.ConversationMessageListItemType.HTML,{body:w.body}],group:o}))}),m}case"footerNotice":return[b({messageId:l,message:[p.ConversationMessageListItemType.HTML,{body:r.content.item.body}],group:o})];case"Error":return[b({messageId:l,message:[p.ConversationMessageListItemType.HTML,{body:r.content.message||"Something went wrong."}],group:o})];default:return[]}},a=r=>["CategorizedNoticeList","NoticeList"].includes(r.type)?(r.content.items||[]).reduce((o,g)=>(r.content.isInitialNotices&&o.push({...r,id:K.uuid(),type:g.type||r.type,content:{$type:r.content.$type,isInitialNotices:r.content.isInitialNotices,notices:g.notices,item:g}}),o),[]):r,c=new Map([["Text",1],["List",2],["Contact",3],["CategorizedNoticeList",10]]),h=[],E=t.sort((r,o)=>{const v=c.get(r.type)||20,l=c.get(o.type)||20;return v-l}).filter(r=>!r.relation).reduce((r,o)=>r.concat(a(o)),[]),S=r=>typeof r.actions.selector<"u";for(const r of E){const o=t.filter(l=>l.relation===r.id&&!S(l)),g=A({isUser:!1});(await i(r,g,o,e)).forEach(l=>{g.items.push(l)}),g.items.length&&h.push(g)}return h};class j{constructor(t,e,s,i){y(this,"globalState");y(this,"localState");y(this,"clientId");y(this,"entries");this.endpoint=t,this.events=e,this.store=s,this.container=i,this.clientId=K.uuid(),this.entries=[]}async start({silent:t}){const e=await this.store.read("globalState"),s=await this.store.read("localState"),i=await this.store.read("entries");if(this.globalState=e||this.globalState,this.localState=s||this.localState,this.entries=i||this.entries,t)return;const a=this.createInitialEnvelope();return await this.postEnvelope(a)}async sendMessage(t){const e={command:{phrase:t},globalState:this.globalState,clientId:this.clientId};return await this.postEnvelope(e)}async helpAction(){return this.postEnvelope({action:{key:"help",content:{$type:"Humany.Matching.Bots.Conversations.Actions.Help, Humany.Matching"}},globalState:this.globalState,clientId:this.clientId})}async nextAction(t){var s;const{paging:e}=t.meta;if((s=e.actions)!=null&&s.next)return this.postEnvelope({action:{key:"next",content:e.actions.next},localState:e.localState,globalState:this.globalState,clientId:this.clientId},t).then(i=>{const a=t.items.findIndex(c=>c.message[0]==="link-list");return a===-1||!i?t:{...t,meta:{...t.meta,...i[0].meta},items:[...t.items.slice(0,a),{...t.items[a],message:[i[0].items[0].message[0],{...t.items[a].message[1],...i[0].items[0].message[1]}]},...t.items.slice(a+1)]}})}async showContactMethodAction(t){const e=this.entries.find(i=>i.id===t.entryId),s=e==null?void 0:e.actions[t.actionKey];if(s)return this.postEnvelope({action:{key:t.actionKey,content:s},localState:e.localState,globalState:this.globalState,clientId:this.clientId})}async defaultAction(t){const e=this.getEntryOfAction(t);if(e)return this.postEnvelope({action:{key:t,content:e.actions[t]},localState:e.localState,globalState:this.globalState,clientId:this.clientId})}createInitialEnvelope(){return{command:{site:this.endpoint},clientId:this.clientId,globalState:{},funnel:this.container.get("$widget").name}}async postEnvelope(t,e){try{const s=await fetch(this.endpoint,this.getHttpOptions(t));if(!s.ok)throw s;const i=await s.json();return this.handleResponse(i,e)}catch(s){process.env.NODE_ENV!=="production"&&console.warn("Something went wrong when posting the envelope.");let i="Something went wrong";return(s.message==="Failed to fetch"||s.message==="NetworkError when attempting to fetch resource.")&&(i="Lost connection... Please try again."),this.events.dispatch("tracking:http-client-error",{message:i,error:s}),this.handleResponse({entries:[{id:K.uuid(),type:"Error",timestamp:new Date().toISOString(),content:{message:i},actions:{},tags:[]}]})}}async handleResponse(t,e){this.entries=this.entries.concat(t.entries),this.store.write(this.entries,"entries");const s=t.entries.find(a=>a.type==="Widget");return s&&this.events.dispatch("provider:widget-entry",s.content),t.globalState&&(this.globalState=t.globalState,this.store.write(t.globalState,"globalState")),this.localState=t.entries.reduce((a,c)=>c.localState?c.localState:a,void 0),this.store.write(this.localState,"localState"),await V(this.container,t.entries,e)}getHttpOptions(t){const e={method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"}};return t.funnel=this.container.get("$widget").name,t.localState=t.localState||this.localState,Object.assign({},e,{body:JSON.stringify(t),credentials:"same-origin"})}getEntryOfAction(t){return this.entries.find(e=>!!e.actions[t])}}class z{constructor(t){y(this,"enabled",!0);y(this,"botProviderGlobalStateKey","bot-provider-global-state");y(this,"botProviderLocalStateKey","bot-provider-local-state");y(this,"botProviderEntriesKey","bot-provider-entries");y(this,"botProviderMetaStateKey","bot-provider-conversation-meta");this.container=t}getKey(t){let e;switch(t){case"localState":e=this.botProviderLocalStateKey;break;case"globalState":e=this.botProviderGlobalStateKey;break;case"entries":e=this.botProviderEntriesKey;break;case"meta":e=this.botProviderMetaStateKey;break}return e}async read(t){const e=this.getKey(t);if(!(!this.enabled||!e))return N.readStorage(this.container,e)}async write(t,e){const s=this.getKey(e);if(!this.enabled||!s)return;(await N.createStorageWriter(this.container,s,N.StorageCategory.Necessary))(t)}}class W{constructor(t,e,s){y(this,"agent");y(this,"user");y(this,"httpClient");y(this,"events");y(this,"groups",[]);y(this,"store");this.container=t,this.conversation=e;const{events:i}=this.container.get("$widget");this.events=i,this.store=new z(t),this.agent=e.createAgent({id:"knowledge-bot-agent",name:"",avatar:void 0}),this.user=e.user;const a=q(t,s);this.httpClient=new j(a,i,this.store,this.container),this.events.subscribe("provider:widget-entry",(c,h)=>{this.onWidgetEntryReceived(h)}),this.events.subscribe("provider:open-contact-method",async(c,h)=>{const E=await this.httpClient.showContactMethodAction(h);E&&(h.contactMethod.title&&this.printUserMessage(h.contactMethod.title),this.onMessagesReceived(E))})}async initialize(){var a;const t=this.conversation.loading(),e=await this.store.read("meta");e!=null&&e.agent&&this.agent.update({name:e.agent.name,avatar:e.agent.avatar});const s=await this.conversation.isRehydrated(),i=await this.httpClient.start({silent:((a=this.conversation.options)==null?void 0:a.silent)||s});i&&this.onMessagesReceived(i),t()}async onMessagesReceived(t){this.groups=this.groups.concat(t),t.forEach(e=>{const s=e.items.map(i=>i.message);e.isUser?e.writer=this.user.print(s):e.writer=this.agent.print(s)})}async onInput(t){const e=typeof t=="string"?t:t.actionKey;switch(e){case"next":{if(typeof t=="string")return;const s=this.groups.find(i=>{var a;return i.id===((a=t.data)==null?void 0:a.groupId)});if(s){const i=await this.httpClient.nextAction(s);if(i){const a=i.items.map(c=>c.message);s.meta.paging=i==null?void 0:i.meta.paging,s.writer.update(a)}}}break;case"help":{const s=this.conversation.loading(),i=await this.httpClient.helpAction();s(),i&&this.onMessagesReceived(i)}break;default:{typeof t!="string"&&t.label&&this.printUserMessage(t.label);const s=this.conversation.loading(),i=await this.httpClient.defaultAction(e);i&&this.onMessagesReceived(i),s()}break}}printUserMessage(t){const e=A({isUser:!0,items:[{id:K.uuid(),isUser:!0,message:[p.ConversationMessageListItemType.HTML,{body:t}]}]});return this.onMessagesReceived([e]),e}async onMessageSend(t){const e=this.conversation.loading(),s=await this.httpClient.sendMessage(t);await O(this.container,"phrase",t),this.printUserMessage(t),s&&this.onMessagesReceived(s),e()}async onWidgetEntryReceived(t){var r,o,g,v,l;if(t.agent){const d={name:t.agent.name,avatar:t.agent.avatar};this.agent.update(d),(await N.createStorageWriter(this.container,"bot-provider-conversation-meta",N.StorageCategory.Necessary))({agent:d})}const s=(await this.container.getAsync("components")).components().ofType("widget-header").select();if(!s)return;const i=await this.container.get("settings"),a=i==null?void 0:i.components["widget-header"],c=(o=(r=a==null?void 0:a.properties)==null?void 0:r.actions)==null?void 0:o.avatar,h=(g=a==null?void 0:a.properties)==null?void 0:g.header,E=(v=a==null?void 0:a.properties)==null?void 0:v.tagline,S={};!h&&(t!=null&&t.heading)&&(S.header=t.heading),!E&&(t!=null&&t.tagline)&&(S.tagline=t.tagline),!c&&((l=t==null?void 0:t.agent)!=null&&l.avatar)&&(S.actions={avatar:{position:"left",symbol:{type:"Uri",content:t.agent.avatar}}}),Object.keys(S).length>0&&s.writeProperties(S)}}const _=async n=>{const t=await p.ConversationPlatform.getInstance(n);p.registerCustomMessageComponent(n,f.ContactList,Promise.resolve().then(()=>require("./contact-method-list-919b1c1e.js"))),p.registerCustomMessageComponent(n,f.ContactMethod,Promise.resolve().then(()=>require("./contact-method-bc79b2d7.js"))),p.registerCustomMessageComponent(n,f.NotificationList,Promise.resolve().then(()=>require("./notification-list-d4d9695d.js"))),p.registerCustomMessageComponent(n,f.NoGoodAlternative,Promise.resolve().then(()=>require("./no-good-alternative-0ced8ab9.js"))),p.registerCustomMessageComponent(n,f.FeedbackList,Promise.resolve().then(()=>require("./feedback-list-a27d3df3.js"))),t.registerProvider("ace-knowledge-bot",(e,s)=>{const i=new W(n,e,s);i.initialize();const a=[];return a.push(s.actions.watch("conversation.user-submit",(c,h)=>{i.onMessageSend(c.text)})),a.push(s.actions.watch("conversation.action",(c,h)=>(i.onInput(c),h(c)))),a.push(s.actions.create("evaluate",c=>{const{events:h}=n.get("$widget");h.dispatch("bot-provider:evaluate",c)})),a.push(s.actions.create("submit",c=>{const{events:h}=n.get("$widget");h.dispatch("bot-provider:form-submitted",c)})),()=>{a.forEach(c=>{c()})}})};exports.KnowledgeBotProviderPlugin=_;exports.updateForm=B;
1
+ "use strict";var R=Object.defineProperty;var H=(n,t,e)=>t in n?R(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var y=(n,t,e)=>(H(n,typeof t!="symbol"?t+"":t,e),e);const p=require("@telia-ace/widget-conversation"),N=require("@telia-ace/widget-services"),K=require("@telia-ace/widget-utilities"),P=require("@telia-ace/widget-forms");var f=(n=>(n.ContactMethod="ace-knowledge-bot-contact-method",n.ContactList="ace-knowledge-bot-contact-list",n.FeedbackList="ace-knowledge-bot-feedback-list",n.NotificationList="ace-knowledge-bot-notification-list",n.NoGoodAlternative="ace-knowledge-bot-no-good-alternative",n))(f||{});const $=n=>{if(n){const{type:t,content:e}=n;if(t&&e)return{type:t,content:e}}},A=({isUser:n,items:t=[],meta:e={}})=>{const s=K.uuid();return{id:s,isUser:n,items:t.map(a=>({id:a.id||K.uuid(),isUser:n,groupId:s,message:a.message||[]})),meta:e}},U=({id:n,title:t,defaultIcon:e,exits:[s],exitType:i,confirmationText:a,expandFormAutomatically:c,form:h,description:E},S={})=>{const{adapter:r}=s||{Adapter:{}},{clientName:o="",settings:g={},customClientName:v=""}=r,{validation:l}=S,d={id:n.toString(),title:t,description:E,symbol:$(e),clientName:o==="custom.adapter"?v:o,expanded:!0,inline:!0,body:{}};if(o.indexOf("phone")>-1||o.indexOf("freetext")>-1){const{displayTextBeforeClick:L,textBeforeClick:m}=g;L==="true"&&(d.expanded=!1,d.title=m),o.indexOf("phone.text")>-1?d.body.phoneNumber=g.phoneNumber:d.body.freetext=g.freetext}return(o.indexOf("chat.popup")>-1||o.indexOf("link")>-1||o==="custom.adapter"&&i==="custom")&&(d.body=g,d.body.confirmationFallback=a),o.indexOf("ace")>-1&&(d.body=g),h&&h.hasValueComponents&&(l?d.body.form=P.FormBuilder.fromLegacyForm(n.toString(),h,l).get():d.body.form=P.FormBuilder.fromLegacyForm(n.toString(),h).get(),c||(d.expanded=d.inline=!1),d.body=B(d,{submit:"Submit"})),S.guideId&&(d.body.guideId=S.guideId),d},G=n=>{const{localState:t}=n;return n.tags.includes("category")&&n.tags.includes("contact")?p.ConversationMessageListItemType.ItemList:n.tags.includes("suggestion")||(t==null?void 0:t.$type)==="Humany.Matching.Bots.Conversations.GuideListState, Humany.Matching"?p.ConversationMessageListItemType.LinkList:(t==null?void 0:t.$type)==="Humany.Matching.Bots.Conversations.States.GuideFeedbackState, Humany.Matching"?f.FeedbackList:(t==null?void 0:t.$type)==="Humany.Matching.Bots.Conversations.States.ContactState, Humany.Matching"?f.ContactList:p.ConversationMessageListItemType.ButtonList},q=(n,t)=>{const{knowledgeBotEndpoint:e}=t.properties();if(e)return`${e}/conversations`;const{data:s}=n.get("$settings");if(!s||!s.projection)throw new Error("Missing Knowledge Bot endpoint");return`${s.projection}/conversations`},B=(n,{submit:t,errors:e,meta:s})=>{var i;if((i=n==null?void 0:n.body)!=null&&i.form){const{body:a}=n,c=new P.FormBuilder(a.form);return a.form.layout.submit||c.createComponent(P.submitButton(t,"submit")),e&&c.setValidationErrors(e),s&&c.setMeta(s),{...a,form:c.get()}}return(n==null?void 0:n.body)||{}},O=async(n,t,e)=>{(await(await n.getAsync("dataClient")).getClient()).parameters.set(t,e)},b=({messageId:n,message:t,group:e})=>({id:n,message:t,groupId:e.id,isUser:e.isUser}),V=async(n,t,e)=>{const s=(r,o,g,v={actions:[],entryId:o.id,groupId:g})=>{const l=[];return v.actions=o.content.items.map(d=>{var m;const L={label:d.title,actionKey:d.actionKey,symbol:d.symbol?d.symbol:void 0,description:d.description||void 0};if(d.data){const w=o.actions[d.actionKey];r===f.ContactList?(l.push(d.data.id),L.data=U(d.data,{guideId:(m=w==null?void 0:w.guideId)==null?void 0:m.toString()})):L.data=d.data}return L}),r===f.ContactList&&(v.contactMethodIds=l),v},i=async(r,o,g=[],v)=>{var d,L;const l=K.uuid();switch(r.type!=="List"&&r.tags.includes("guide")&&((L=(d=r.content.hints)==null?void 0:d[0])!=null&&L.id)&&await O(n,"LastGuideId",r.content.hints[0].id),r.type){case"List":{const{header:m,items:w,html:x}=r.content,M=[];let C={actions:[],entryId:r.id,groupId:o.id};if(C.tags=r.tags||null,m&&(C.header=m),(w==null?void 0:w.length)>0){const u=G(r);if(C=s(u,r,o.id,C),g.length){const I=g.find(k=>k.tags.includes("paging")),T=g.find(k=>k.tags.includes("fallback"));if(I!=null&&I.content&&(o.meta.paging={actions:I.actions,items:I.content.items,localState:I.localState},I.content.items.forEach(k=>{C.actions.push({label:k.title,actionKey:k.actionKey,data:{groupId:v?v.id:o.id}})})),T){const k=T.content.items.find(F=>F.actionKey==="help");k&&(M.push(b({messageId:l,message:[p.ConversationMessageListItemType.Separator,void 0],group:o})),M.push(b({messageId:l,message:[f.NoGoodAlternative,{body:k.title}],group:o})))}}M.unshift(b({messageId:l,message:[u,C],group:o}))}return x&&M.unshift(b({messageId:l,message:[p.ConversationMessageListItemType.HTML,{body:x}],group:o})),M}case"Text":{const m=[];if(m.push(b({messageId:l,message:[p.ConversationMessageListItemType.HTML,{body:r.content.html}],group:o})),g.length){const w=g.find(u=>{var I;return u.type==="List"&&((I=u.localState)==null?void 0:I.$type)==="Humany.Matching.Bots.Conversations.States.ContactState, Humany.Matching"}),x=g.find(u=>u.tags.includes("dialog")),M=g.find(u=>u.tags.includes("feedback")),C=g.find(u=>u.tags.includes("contact")&&u.type==="Contact");if(C&&m.push(b({messageId:l,message:[f.ContactMethod,{contactMethodId:C.content.id,groupId:o.id,guideId:C.content.guideId}],group:o})),x&&m.push(b({messageId:l,message:[p.ConversationMessageListItemType.ButtonList,{actions:x.content.items.map(u=>({label:u.title,actionKey:u.actionKey,data:u.data}))}],group:o})),w){const u=s(f.ContactList,w,o.id);m.push(b({messageId:l,message:[p.ConversationMessageListItemType.Separator,void 0],group:o})),m.push(b({messageId:l,message:[f.ContactList,u],group:o}))}M&&m.push(b({messageId:l,group:o,message:[f.FeedbackList,{title:M.content.html,messageId:l,actions:M.content.items.map(u=>({actionKey:u.actionKey,label:u.title}))}]}))}return m}case"Contact":return[b({messageId:l,message:[f.ContactMethod,{contactMethodId:r.content.id,groupId:o.id,guideId:r.content.guideId}],group:o})];case"CategorizedNoticeList":{const m=[b({messageId:l,message:[f.NotificationList,{id:r.content.item.id.toString(),header:r.content.item.title,items:r.content.item.listNotices,symbol:r.content.item.defaultIcon}],group:o})];return(r.content.notices||[]).forEach(w=>{m.push(b({messageId:l,message:[p.ConversationMessageListItemType.HTML,{body:w.body}],group:o}))}),m}case"footerNotice":return[b({messageId:l,message:[p.ConversationMessageListItemType.HTML,{body:r.content.item.body}],group:o})];case"Error":return[b({messageId:l,message:[p.ConversationMessageListItemType.HTML,{body:r.content.message||"Something went wrong."}],group:o})];default:return[]}},a=r=>["CategorizedNoticeList","NoticeList"].includes(r.type)?(r.content.items||[]).reduce((o,g)=>(r.content.isInitialNotices&&o.push({...r,id:K.uuid(),type:g.type||r.type,content:{$type:r.content.$type,isInitialNotices:r.content.isInitialNotices,notices:g.notices,item:g}}),o),[]):r,c=new Map([["Text",1],["List",2],["Contact",3],["CategorizedNoticeList",10]]),h=[],E=t.sort((r,o)=>{const v=c.get(r.type)||20,l=c.get(o.type)||20;return v-l}).filter(r=>!r.relation).reduce((r,o)=>r.concat(a(o)),[]),S=r=>typeof r.actions.selector<"u";for(const r of E){const o=t.filter(l=>l.relation===r.id&&!S(l)),g=A({isUser:!1});(await i(r,g,o,e)).forEach(l=>{g.items.push(l)}),g.items.length&&h.push(g)}return h};class j{constructor(t,e,s,i){y(this,"globalState");y(this,"localState");y(this,"clientId");y(this,"entries");this.endpoint=t,this.events=e,this.store=s,this.container=i,this.clientId=K.uuid(),this.entries=[]}async start({silent:t}){const e=await this.store.read("globalState"),s=await this.store.read("localState"),i=await this.store.read("entries");if(this.globalState=e||this.globalState,this.localState=s||this.localState,this.entries=i||this.entries,t)return;const a=this.createInitialEnvelope();return await this.postEnvelope(a)}async sendMessage(t){const e={command:{phrase:t},globalState:this.globalState,clientId:this.clientId};return await this.postEnvelope(e)}async helpAction(){return this.postEnvelope({action:{key:"help",content:{$type:"Humany.Matching.Bots.Conversations.Actions.Help, Humany.Matching"}},globalState:this.globalState,clientId:this.clientId})}async nextAction(t){var s;const{paging:e}=t.meta;if((s=e.actions)!=null&&s.next)return this.postEnvelope({action:{key:"next",content:e.actions.next},localState:e.localState,globalState:this.globalState,clientId:this.clientId},t).then(i=>{const a=t.items.findIndex(c=>c.message[0]==="link-list");return a===-1||!i?t:{...t,meta:{...t.meta,...i[0].meta},items:[...t.items.slice(0,a),{...t.items[a],message:[i[0].items[0].message[0],{...t.items[a].message[1],...i[0].items[0].message[1]}]},...t.items.slice(a+1)]}})}async showContactMethodAction(t){const e=this.entries.find(i=>i.id===t.entryId),s=e==null?void 0:e.actions[t.actionKey];if(s)return this.postEnvelope({action:{key:t.actionKey,content:s},localState:e.localState,globalState:this.globalState,clientId:this.clientId})}async defaultAction(t){const e=this.getEntryOfAction(t);if(e)return this.postEnvelope({action:{key:t,content:e.actions[t]},localState:e.localState,globalState:this.globalState,clientId:this.clientId})}createInitialEnvelope(){return{command:{site:this.endpoint},clientId:this.clientId,globalState:{},funnel:this.container.get("$widget").name}}async postEnvelope(t,e){try{const s=await fetch(this.endpoint,this.getHttpOptions(t));if(!s.ok)throw s;const i=await s.json();return this.handleResponse(i,e)}catch(s){process.env.NODE_ENV!=="production"&&console.warn("Something went wrong when posting the envelope.");let i="Something went wrong";return(s.message==="Failed to fetch"||s.message==="NetworkError when attempting to fetch resource.")&&(i="Lost connection... Please try again."),this.events.dispatch("tracking:http-client-error",{message:i,error:s}),this.handleResponse({entries:[{id:K.uuid(),type:"Error",timestamp:new Date().toISOString(),content:{message:i},actions:{},tags:[]}]})}}async handleResponse(t,e){this.entries=this.entries.concat(t.entries),this.store.write(this.entries,"entries");const s=t.entries.find(a=>a.type==="Widget");return s&&this.events.dispatch("provider:widget-entry",s.content),t.globalState&&(this.globalState=t.globalState,this.store.write(t.globalState,"globalState")),this.localState=t.entries.reduce((a,c)=>c.localState?c.localState:a,void 0),this.store.write(this.localState,"localState"),await V(this.container,t.entries,e)}getHttpOptions(t){const e={method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"}};return t.funnel=this.container.get("$widget").name,t.localState=t.localState||this.localState,Object.assign({},e,{body:JSON.stringify(t),credentials:"same-origin"})}getEntryOfAction(t){return this.entries.find(e=>!!e.actions[t])}}class z{constructor(t){y(this,"enabled",!0);y(this,"botProviderGlobalStateKey","bot-provider-global-state");y(this,"botProviderLocalStateKey","bot-provider-local-state");y(this,"botProviderEntriesKey","bot-provider-entries");y(this,"botProviderMetaStateKey","bot-provider-conversation-meta");this.container=t}getKey(t){let e;switch(t){case"localState":e=this.botProviderLocalStateKey;break;case"globalState":e=this.botProviderGlobalStateKey;break;case"entries":e=this.botProviderEntriesKey;break;case"meta":e=this.botProviderMetaStateKey;break}return e}async read(t){const e=this.getKey(t);if(!(!this.enabled||!e))return N.readStorage(this.container,e)}async write(t,e){const s=this.getKey(e);if(!this.enabled||!s)return;(await N.createStorageWriter(this.container,s,N.StorageCategory.Necessary))(t)}}class W{constructor(t,e,s){y(this,"agent");y(this,"user");y(this,"httpClient");y(this,"events");y(this,"groups",[]);y(this,"store");this.container=t,this.conversation=e;const{events:i}=this.container.get("$widget");this.events=i,this.store=new z(t),this.agent=e.createAgent({id:"knowledge-bot-agent",name:"",avatar:void 0}),this.user=e.user;const a=q(t,s);this.httpClient=new j(a,i,this.store,this.container),this.events.subscribe("provider:widget-entry",(c,h)=>{this.onWidgetEntryReceived(h)}),this.events.subscribe("provider:open-contact-method",async(c,h)=>{const E=await this.httpClient.showContactMethodAction(h);E&&(h.contactMethod.title&&this.printUserMessage(h.contactMethod.title),this.onMessagesReceived(E))})}async initialize(){var a;const t=this.conversation.loading(),e=await this.store.read("meta");e!=null&&e.agent&&this.agent.update({name:e.agent.name,avatar:e.agent.avatar});const s=await this.conversation.isRehydrated(),i=await this.httpClient.start({silent:((a=this.conversation.options)==null?void 0:a.silent)||s});i&&this.onMessagesReceived(i),t()}async onMessagesReceived(t){this.groups=this.groups.concat(t),t.forEach(e=>{const s=e.items.map(i=>i.message);e.isUser?e.writer=this.user.print(s):e.writer=this.agent.print(s)})}async onInput(t){const e=typeof t=="string"?t:t.actionKey;switch(e){case"next":{if(typeof t=="string")return;const s=this.groups.find(i=>{var a;return i.id===((a=t.data)==null?void 0:a.groupId)});if(s){const i=await this.httpClient.nextAction(s);if(i){const a=i.items.map(c=>c.message);s.meta.paging=i==null?void 0:i.meta.paging,s.writer.update(a)}}}break;case"help":{const s=this.conversation.loading(),i=await this.httpClient.helpAction();s(),i&&this.onMessagesReceived(i)}break;default:{typeof t!="string"&&t.label&&this.printUserMessage(t.label);const s=this.conversation.loading(),i=await this.httpClient.defaultAction(e);i&&this.onMessagesReceived(i),s()}break}}printUserMessage(t){const e=A({isUser:!0,items:[{id:K.uuid(),isUser:!0,message:[p.ConversationMessageListItemType.HTML,{body:t}]}]});return this.onMessagesReceived([e]),e}async onMessageSend(t){const e=this.conversation.loading(),s=await this.httpClient.sendMessage(t);await O(this.container,"phrase",t),this.printUserMessage(t),s&&this.onMessagesReceived(s),e()}async onWidgetEntryReceived(t){var r,o,g,v,l;if(t.agent){const d={name:t.agent.name,avatar:t.agent.avatar};this.agent.update(d),(await N.createStorageWriter(this.container,"bot-provider-conversation-meta",N.StorageCategory.Necessary))({agent:d})}const s=(await this.container.getAsync("components")).components().ofType("widget-header").select();if(!s)return;const i=await this.container.get("settings"),a=i==null?void 0:i.components["widget-header"],c=(o=(r=a==null?void 0:a.properties)==null?void 0:r.actions)==null?void 0:o.avatar,h=(g=a==null?void 0:a.properties)==null?void 0:g.header,E=(v=a==null?void 0:a.properties)==null?void 0:v.tagline,S={};!h&&(t!=null&&t.heading)&&(S.header=t.heading),!E&&(t!=null&&t.tagline)&&(S.tagline=t.tagline),!c&&((l=t==null?void 0:t.agent)!=null&&l.avatar)&&(S.actions={avatar:{position:"left",symbol:{type:"Uri",content:t.agent.avatar}}}),Object.keys(S).length>0&&s.writeProperties(S)}}const _=async n=>{const t=await p.ConversationPlatform.getInstance(n);p.registerCustomMessageComponent(n,f.ContactList,Promise.resolve().then(()=>require("./contact-method-list-7839fc96.js"))),p.registerCustomMessageComponent(n,f.ContactMethod,Promise.resolve().then(()=>require("./contact-method-452b4d87.js"))),p.registerCustomMessageComponent(n,f.NotificationList,Promise.resolve().then(()=>require("./notification-list-d4d9695d.js"))),p.registerCustomMessageComponent(n,f.NoGoodAlternative,Promise.resolve().then(()=>require("./no-good-alternative-0ced8ab9.js"))),p.registerCustomMessageComponent(n,f.FeedbackList,Promise.resolve().then(()=>require("./feedback-list-a27d3df3.js"))),t.registerProvider("ace-knowledge-bot",(e,s)=>{const i=new W(n,e,s);i.initialize();const a=[];return a.push(s.actions.watch("conversation.user-submit",(c,h)=>{i.onMessageSend(c.text)})),a.push(s.actions.watch("conversation.action",(c,h)=>(i.onInput(c),h(c)))),a.push(s.actions.create("evaluate",c=>{const{events:h}=n.get("$widget");h.dispatch("bot-provider:evaluate",c)})),a.push(s.actions.create("submit",c=>{const{events:h}=n.get("$widget");h.dispatch("bot-provider:form-submitted",c)})),()=>{a.forEach(c=>{c()})}})};exports.KnowledgeBotProviderPlugin=_;exports.updateForm=B;
@@ -760,11 +760,11 @@ const it = async (s) => {
760
760
  N(
761
761
  s,
762
762
  m.ContactList,
763
- import("./contact-method-list-4d7a84f4.mjs")
763
+ import("./contact-method-list-873e0b57.mjs")
764
764
  ), N(
765
765
  s,
766
766
  m.ContactMethod,
767
- import("./contact-method-51909979.mjs")
767
+ import("./contact-method-458f0cb3.mjs")
768
768
  ), N(
769
769
  s,
770
770
  m.NotificationList,
package/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-0b74bfdd.js");require("@telia-ace/widget-conversation");require("@telia-ace/widget-services");require("@telia-ace/widget-utilities");require("@telia-ace/widget-forms");exports.ConversationPlugin=e.KnowledgeBotProviderPlugin;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-c29fdbb3.js");require("@telia-ace/widget-conversation");require("@telia-ace/widget-services");require("@telia-ace/widget-utilities");require("@telia-ace/widget-forms");exports.ConversationPlugin=e.KnowledgeBotProviderPlugin;
package/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { K as n } from "./index-4cddce54.mjs";
1
+ import { K as n } from "./index-c6e28777.mjs";
2
2
  import "@telia-ace/widget-conversation";
3
3
  import "@telia-ace/widget-services";
4
4
  import "@telia-ace/widget-utilities";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@telia-ace/knowledge-widget-bot-provider",
3
- "version": "1.3.14-rc.1",
3
+ "version": "1.3.14-rc.3",
4
4
  "main": "./index.js",
5
5
  "types": "./index.d.ts",
6
6
  "exports": {
@@ -10,15 +10,15 @@
10
10
  }
11
11
  },
12
12
  "dependencies": {
13
- "@telia-ace/knowledge-data-client": "^1.3.14-rc.1",
14
- "@telia-ace/knowledge-widget-adapters": "^1.3.14-rc.1",
15
- "@telia-ace/knowledge-widget-ui": "^1.3.14-rc.1",
16
- "@telia-ace/widget-conversation": "^1.3.14-rc.1",
17
- "@telia-ace/widget-forms": "^1.3.14-rc.1",
18
- "@telia-ace/widget-services": "^1.3.14-rc.1",
19
- "@telia-ace/widget-utilities": "^1.3.14-rc.1",
13
+ "@telia-ace/knowledge-data-client": "^1.3.14-rc.3",
14
+ "@telia-ace/knowledge-widget-adapters": "^1.3.14-rc.3",
15
+ "@telia-ace/knowledge-widget-ui": "^1.3.14-rc.3",
16
+ "@telia-ace/widget-conversation": "^1.3.14-rc.3",
17
+ "@telia-ace/widget-forms": "^1.3.14-rc.3",
18
+ "@telia-ace/widget-services": "^1.3.14-rc.3",
19
+ "@telia-ace/widget-utilities": "^1.3.14-rc.3",
20
20
  "@webprovisions/platform": "^1.1.4",
21
- "@telia-ace/knowledge-widget-core": "^1.3.14-rc.1"
21
+ "@telia-ace/knowledge-widget-core": "^1.3.14-rc.3"
22
22
  },
23
23
  "peerDependencies": {
24
24
  "@emotion/react": "11.11.1",
@@ -1,135 +0,0 @@
1
- import { jsx as D } from "react/jsx-runtime";
2
- import E from "@emotion/styled";
3
- import { DataClient as F, DataType as z } from "@telia-ace/knowledge-data-client";
4
- import { ContactMethod as A } from "@telia-ace/knowledge-widget-adapters";
5
- import { useContainer as N, useDispatch as R, useConversation as T } from "@telia-ace/knowledge-widget-ui";
6
- import { FormBuilder as _ } from "@telia-ace/widget-forms";
7
- import { appendClassNames as j } from "@telia-ace/widget-utilities";
8
- import { useState as G, useRef as I, useEffect as k, useCallback as V } from "react";
9
- import { u as S } from "./index-4cddce54.mjs";
10
- import "@telia-ace/widget-conversation";
11
- import "@telia-ace/widget-services";
12
- const tt = ({
13
- contactMethodId: a,
14
- guideId: e,
15
- groupId: c,
16
- className: $
17
- }) => {
18
- var h, C, v;
19
- const [t, n] = G(), m = N(), x = R(), u = I(!0), f = T();
20
- k(() => {
21
- const { events: d } = m.get("$widget"), M = d.subscribe(
22
- "bot-provider:form-submitted",
23
- async (b, r) => {
24
- var w;
25
- if (((w = r.form.meta) == null ? void 0 : w.groupId) !== c || r.id !== t.id)
26
- return;
27
- f && (r.form.meta || (r.form.meta = {}), r.form.meta.conversation = f);
28
- const y = await m.getAsync(
29
- "contactMethods"
30
- ), o = {
31
- ...t,
32
- body: {
33
- ...t.body,
34
- form: r.form
35
- }
36
- }, { errors: i, valid: l, errorTypes: H } = await y.validate(
37
- o
38
- );
39
- if (!l) {
40
- const g = new _(t.body.form);
41
- n(void 0), g.setValidationErrors(i), o.body = {
42
- ...o.body,
43
- form: g.get()
44
- }, n({ ...o });
45
- return;
46
- }
47
- const B = await y.submit(o);
48
- o.confirmation = B, n(o);
49
- }
50
- ), s = d.subscribe(
51
- "bot-provider:evaluate",
52
- async (b, r) => {
53
- if (r.id !== a)
54
- return;
55
- const o = await (await m.getAsync(
56
- "contactMethods"
57
- )).evaluate(t);
58
- let i = {
59
- ...t,
60
- body: {
61
- ...t.body,
62
- form: o
63
- }
64
- };
65
- const l = S(i, {
66
- submit: "Skicka",
67
- errors: {},
68
- meta: { groupId: c }
69
- });
70
- i = {
71
- ...i,
72
- body: l
73
- }, n(i);
74
- }
75
- );
76
- return () => {
77
- M(), s();
78
- };
79
- }, [m, t, n, f]);
80
- const p = V(
81
- async (d) => {
82
- const s = await (await F.getInstance(m)).fetch(
83
- z.ContactMethod,
84
- {
85
- contactMethodId: d,
86
- guideId: e
87
- },
88
- { noCache: !0, isBot: !0 }
89
- ), b = S(s, {
90
- submit: "Skicka",
91
- errors: {},
92
- meta: { groupId: c }
93
- });
94
- if (s.body = b, s.body.guideId = e, !u.current)
95
- return null;
96
- n(s);
97
- },
98
- // eslint-disable-next-line react-hooks/exhaustive-deps
99
- [u]
100
- );
101
- return k(() => (p(a), () => {
102
- u.current = !1;
103
- }), [a, p]), t ? /* @__PURE__ */ D(
104
- q,
105
- {
106
- ...t,
107
- body: {
108
- ...t.body,
109
- form: t.body.form ? {
110
- ...t.body.form,
111
- data: (h = t.body.form) == null ? void 0 : h.data,
112
- layout: { ...t.body.form.layout },
113
- meta: (C = t.body.form) == null ? void 0 : C.meta,
114
- schema: (v = t.body.form) == null ? void 0 : v.schema
115
- } : void 0,
116
- guideId: t.body.guideId
117
- },
118
- inline: !0,
119
- expanded: !0,
120
- dispatch: x,
121
- className: j("humany-bot-contact-method", $)
122
- }
123
- ) : null;
124
- }, q = E(A)`
125
- padding: ${(a) => {
126
- var e;
127
- return (e = a.theme.sizes) == null ? void 0 : e.normal;
128
- }} ${(a) => {
129
- var e;
130
- return (e = a.theme.sizes) == null ? void 0 : e.medium;
131
- }};
132
- `;
133
- export {
134
- tt as default
135
- };
@@ -1,3 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const j=require("react/jsx-runtime"),A=require("@emotion/styled"),S=require("@telia-ace/knowledge-data-client"),B=require("@telia-ace/knowledge-widget-adapters"),p=require("@telia-ace/knowledge-widget-ui"),R=require("@telia-ace/widget-forms"),T=require("@telia-ace/widget-utilities"),c=require("react"),F=require("./index-0b74bfdd.js");require("@telia-ace/widget-conversation");require("@telia-ace/widget-services");const $=({contactMethodId:n,guideId:o,groupId:m,className:x})=>{var C,v,w;const[e,s]=c.useState(),d=p.useContainer(),D=p.useDispatch(),l=c.useRef(!0),b=p.useConversation();c.useEffect(()=>{const{events:u}=d.get("$widget"),q=u.subscribe("bot-provider:form-submitted",async(f,r)=>{var M;if(((M=r.form.meta)==null?void 0:M.groupId)!==m||r.id!==e.id)return;b&&(r.form.meta||(r.form.meta={}),r.form.meta.conversation=b);const y=await d.getAsync("contactMethods"),t={...e,body:{...e.body,form:r.form}},{errors:i,valid:h,errorTypes:N}=await y.validate(t);if(!h){const k=new R.FormBuilder(e.body.form);s(void 0),k.setValidationErrors(i),t.body={...t.body,form:k.get()},s({...t});return}const E=await y.submit(t);t.confirmation=E,s(t)}),a=u.subscribe("bot-provider:evaluate",async(f,r)=>{if(r.id!==n)return;const t=await(await d.getAsync("contactMethods")).evaluate(e);let i={...e,body:{...e.body,form:t}};const h=F.updateForm(i,{submit:"Skicka",errors:{},meta:{groupId:m}});i={...i,body:h},s(i)});return()=>{q(),a()}},[d,e,s,b]);const g=c.useCallback(async u=>{const a=await(await S.DataClient.getInstance(d)).fetch(S.DataType.ContactMethod,{contactMethodId:u,guideId:o},{noCache:!0,isBot:!0}),f=F.updateForm(a,{submit:"Skicka",errors:{},meta:{groupId:m}});if(a.body=f,a.body.guideId=o,!l.current)return null;s(a)},[l]);return c.useEffect(()=>(g(n),()=>{l.current=!1}),[n,g]),e?j.jsx(z,{...e,body:{...e.body,form:e.body.form?{...e.body.form,data:(C=e.body.form)==null?void 0:C.data,layout:{...e.body.form.layout},meta:(v=e.body.form)==null?void 0:v.meta,schema:(w=e.body.form)==null?void 0:w.schema}:void 0,guideId:e.body.guideId},inline:!0,expanded:!0,dispatch:D,className:T.appendClassNames("humany-bot-contact-method",x)}):null},z=A(B.ContactMethod)`
2
- padding: ${n=>{var o;return(o=n.theme.sizes)==null?void 0:o.normal}} ${n=>{var o;return(o=n.theme.sizes)==null?void 0:o.medium}};
3
- `;exports.default=$;