@telia-ace/conversational-hub-bot-provider 0.0.11 → 0.0.12
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/{contact-method-af1adf09.mjs → contact-method-77354cf2.mjs} +1 -1
- package/{contact-method-c5b03dd4.js → contact-method-e5c435a7.js} +1 -1
- package/{index-80e2deb5.mjs → index-ad9aa727.mjs} +2 -3
- package/{index-f3027d08.js → index-b42c4c70.js} +1 -1
- package/index.js +1 -1
- package/index.mjs +1 -1
- package/package.json +1 -2
|
@@ -2,7 +2,7 @@ var it = Object.defineProperty;
|
|
|
2
2
|
var nt = (t, e, o) => e in t ? it(t, e, { enumerable: !0, configurable: !0, writable: !0, value: o }) : t[e] = o;
|
|
3
3
|
var _ = (t, e, o) => (nt(t, typeof e != "symbol" ? e + "" : e, o), o);
|
|
4
4
|
import { jsx as u, jsxs as z, Fragment as st } from "react/jsx-runtime";
|
|
5
|
-
import { C as rt, u as re, a as Ee, b as at, c as ct, d as lt, e as dt, f as mt, g as G, F as ue, W as ge, l as ft, h as ht, L as Oe, I as ne, n as p, i as $e, j as Le, k as qe, m as Z, o as J, p as X, q as $, T as je, B as we, r as ke, s as ut, S as j, t as se, v as Fe, w as ye, x as gt, y as V, z as Be, P as De, A as Ge, H as yt, D as pt, E as bt, G as Ne } from "./index-
|
|
5
|
+
import { C as rt, u as re, a as Ee, b as at, c as ct, d as lt, e as dt, f as mt, g as G, F as ue, W as ge, l as ft, h as ht, L as Oe, I as ne, n as p, i as $e, j as Le, k as qe, m as Z, o as J, p as X, q as $, T as je, B as we, r as ke, s as ut, S as j, t as se, v as Fe, w as ye, x as gt, y as V, z as Be, P as De, A as Ge, H as yt, D as pt, E as bt, G as Ne } from "./index-ad9aa727.mjs";
|
|
6
6
|
import { useContext as Pe, useState as D, useEffect as q, forwardRef as ae, useCallback as H, useMemo as vt, useRef as He, useImperativeHandle as $t, Suspense as wt } from "react";
|
|
7
7
|
import "react-dom";
|
|
8
8
|
function W(t = {}) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var ke=Object.defineProperty;var Ne=(t,e,o)=>e in t?ke(t,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[e]=o;var P=(t,e,o)=>(Ne(t,typeof e!="symbol"?e+"":e,o),o);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("react/jsx-runtime"),n=require("./index-f3027d08.js"),b=require("react");require("react-dom");function H(t={}){const{phrase:e="",category:o,guideCategory:s,contactCategory:i,take:r,connectionKey:c,accordion:a,id:l,uriName:d,sorting:g,tag:f,tagId:y,tagTitle:v,...p}=t,m={};return Object.keys(p).forEach(h=>{typeof t[h]=="string"&&(m[h]=t[h])}),typeof e=="string"&&e.length&&(m.phrase=e),e===null&&(m.phrase=e),typeof s=="string"&&s!=="0"&&(m.guideCategory=s),typeof s=="number"&&s!==0&&(m.guideCategory=s),typeof s=="object"&&s!==null&&(typeof s.id=="string"&&s.id!=="0"&&(m.guideCategory=s.id),typeof s.id=="number"&&s.id!==0&&(m.guideCategory=s.id)),typeof i=="string"&&i!=="0"&&(m.contactCategory=i),typeof i=="number"&&i!==0&&(m.contactCategory=i),typeof i=="object"&&i!==null&&(typeof i.id=="string"&&i.id!=="0"&&(m.contactCategory=i.id),typeof i.id=="number"&&i.id!==0&&(m.contactCategory=i.id)),typeof o=="string"&&o!=="0"&&(m.category=o),typeof o=="number"&&o!==0&&(m.category=o),typeof o=="object"&&o!==null&&(typeof o.id=="string"&&o.id!=="0"&&(m.category=o.id),typeof o.id=="number"&&o.id!==0&&(m.category=o.id)),l&&(m.id=l),d&&(+m.category||+m.guideCategory||+m.guide||+m.contactCategory||+m.contactMethod)&&(m.uriName=d),c&&(m.connectionKey=c),r&&(m.take=r),g&&(m.sorting=g),typeof a=="string"&&a.length>0&&(m.accordion=a),typeof f=="string"&&f!=="0"&&(m.tag=f),typeof f=="number"&&f!==0&&(m.tag=f),Array.isArray(f)&&f.length&&(m.tag=f),(typeof y=="string"||typeof y=="number")&&(m.tagId=y),typeof v=="string"&&(m.tagTitle=v),typeof m.tag=="string"&&(m.tag=m.tag.split(",")),m}const ee=t=>{if(!t)return"";const e=[{from:/[äæǽ]+/gi,to:"ae"},{from:/[öœ]+/gi,to:"oe"},{from:/[ü]+/gi,to:"ue"},{from:/[Ä]+/gi,to:"Ae"},{from:/[Ü]+/gi,to:"Ue"},{from:/[Ö]+/gi,to:"Oe"},{from:/[ÀÁÂÃÄÅǺĀĂĄǍΑΆẢẠẦẪẨẬẰẮẴẲẶА]+/gi,to:"A"},{from:/[àáâãåǻāăąǎªαάảạầấẫẩậằắẵẳặа]+/gi,to:"a"},{from:/[Б]+/gi,to:"B"},{from:/[б]+/gi,to:"b"},{from:/[ÇĆĈĊČ]+/gi,to:"C"},{from:/[çćĉċč]+/gi,to:"c"},{from:/[Д]+/gi,to:"D"},{from:/[д]+/gi,to:"d"},{from:/[ÐĎĐΔ]+/gi,to:"Dj"},{from:/[ðďđδ]+/gi,to:"dj"},{from:/[ÈÉÊËĒĔĖĘĚΕΈẼẺẸỀẾỄỂỆЕЭ]+/gi,to:"E"},{from:/[èéêëēĕėęěέεẽẻẹềếễểệеэ]+/gi,to:"e"},{from:/[Ф]+/gi,to:"F"},{from:/[ф]+/gi,to:"f"},{from:/[ĜĞĠĢΓГҐ]+/gi,to:"G"},{from:/[ĝğġģγгґ]+/gi,to:"g"},{from:/[ĤĦ]+/gi,to:"H"},{from:/[ĥħ]+/gi,to:"h"},{from:/[ÌÍÎÏĨĪĬǏĮİΗΉΊΙΪỈỊИЫ]+/gi,to:"I"},{from:/[ìíîïĩīĭǐįıηήίιϊỉịиыї]+/gi,to:"i"},{from:/[Ĵ]+/gi,to:"J"},{from:/[ĵ]+/gi,to:"j"},{from:/[ĶΚК]+/gi,to:"K"},{from:/[ķκк]+/gi,to:"k"},{from:/[ĹĻĽĿŁΛЛ]+/gi,to:"L"},{from:/[ĺļľŀłλл]+/gi,to:"l"},{from:/[М]+/gi,to:"M"},{from:/[м]+/gi,to:"m"},{from:/[ÑŃŅŇΝН]+/gi,to:"N"},{from:/[ñńņňʼnνн]+/gi,to:"n"},{from:/[ÒÓÔÕŌŎǑŐƠØǾΟΌΩΏỎỌỒỐỖỔỘỜỚỠỞỢО]+/gi,to:"O"},{from:/[òóôõōŏǒőơøǿºοόωώỏọồốỗổộờớỡởợо]+/gi,to:"o"},{from:/[П]+/gi,to:"P"},{from:/[п]+/gi,to:"p"},{from:/[ŔŖŘΡР]+/gi,to:"R"},{from:/[ŕŗřρр]+/gi,to:"r"},{from:/[ŚŜŞȘŠΣС]+/gi,to:"S"},{from:/[śŝşșšſσςс]+/gi,to:"s"},{from:/[ȚŢŤŦτТ]+/gi,to:"T"},{from:/[țţťŧт]+/gi,to:"t"},{from:/[ÙÚÛŨŪŬŮŰŲƯǓǕǗǙǛŨỦỤỪỨỮỬỰУ]+/gi,to:"U"},{from:/[ùúûũūŭůűųưǔǖǘǚǜυύϋủụừứữửựу]+/gi,to:"u"},{from:/[ÝŸŶΥΎΫỲỸỶỴЙ]+/gi,to:"Y"},{from:/[ýÿŷỳỹỷỵй]+/gi,to:"y"},{from:/[В]+/gi,to:"V"},{from:/[в]+/gi,to:"v"},{from:/[Ŵ]+/gi,to:"W"},{from:/[ŵ]+/gi,to:"w"},{from:/[ŹŻŽΖЗ]+/gi,to:"Z"},{from:/[źżžζз]+/gi,to:"z"},{from:/[ÆǼ]+/gi,to:"AE"},{from:/[ß]+/gi,to:"ss"},{from:/[IJ]+/gi,to:"IJ"},{from:/[ij]+/gi,to:"ij"},{from:/[Œ]+/gi,to:"OE"},{from:/[ƒ]+/gi,to:"f"},{from:/[ξ]+/gi,to:"ks"},{from:/[π]+/gi,to:"p"},{from:/[β]+/gi,to:"v"},{from:/[μ]+/gi,to:"m"},{from:/[ψ]+/gi,to:"ps"},{from:/[Ё]+/gi,to:"Yo"},{from:/[ё]+/gi,to:"yo"},{from:/[Є]+/gi,to:"Ye"},{from:/[є]+/gi,to:"ye"},{from:/[Ї]+/gi,to:"Yi"},{from:/[Ж]+/gi,to:"Zh"},{from:/[ж]+/gi,to:"zh"},{from:/[Х]+/gi,to:"Kh"},{from:/[х]+/gi,to:"kh"},{from:/[Ц]+/gi,to:"Ts"},{from:/[ц]+/gi,to:"ts"},{from:/[Ч]+/gi,to:"Ch"},{from:/[ч]+/gi,to:"ch"},{from:/[Ш]+/gi,to:"Sh"},{from:/[ш]+/gi,to:"sh"},{from:/[Щ]+/gi,to:"Shch"},{from:/[щ]+/gi,to:"shch"},{from:/[ЪъЬь]+/gi,to:""},{from:/[Ю]+/gi,to:"Yu"},{from:/[ю]+/gi,to:"yu"},{from:/[Я]+/gi,to:"Ya"},{from:/[я]+/gi,to:"ya"}],o=/[^a-zA-Z0-9]+/g,s=/[-]$/;let i=t;for(const r in e)e.hasOwnProperty(r)&&e[r].from.test(t)&&(i=i.replace(e[r].from,e[r].to));return i=i.replace(o,"-"),i=i.replace(s,""),i=i.toLowerCase(),i||"humany"},je=(t,e)=>{if(!t||!e)return!0;let o=e.parentNode,s=!1;for(;o!==null;)o===t&&(s=!0),o=o.parentNode;return s},te=(t={})=>(Object.keys(t).forEach(e=>{(t[e]===null||typeof t[e]>"u")&&delete t[e]}),t),_=(t,e)=>{let o=!0;return Object.keys(t).length!==Object.keys(e).length||Object.keys(t).some(i=>!Object.keys(e).some(c=>i===c))?!1:(Object.keys(t).forEach(i=>{if(o){const r=typeof t[i]>"u"?"":t[i],c=typeof e[i]>"u"?"":e[i];o=r.toString()===c.toString()}}),o)},fe=()=>b.useContext(n.ComponentNodeContext),Me=(t,e)=>{const o=fe(),s=n.useContainer(),[i,r]=b.useState(void 0),c=n.useIsMounted(),a=t||o.type||"";return b.useEffect(()=>{if(a){let l;return(e||s).getAsync("componentResolver").then(d=>{if(c.current){const g=d.getComponent(a);r(g)}l=d.registerResolver(a,g=>{c.current&&r(g)})}),()=>{l&&l()}}},[c,a,e,s]),i},ze=()=>b.useContext(n.ConversationContext),Te=()=>{const t=n.useComponentPlatform(),e=fe(),[o,s]=b.useState([]),[i,r]=b.useState();return b.useEffect(()=>{if(t&&e){const c=new n.ComponentQuery(t).withId(e.id),a=t.actions(c,e.type||n.uuid());r(a),o!==null&&(o.forEach(l=>{a.dispatch(l.key,l.data).then(d=>l.resolve(d)).catch(d=>l.reject(d))}),s(null))}},[t,e.id]),(c,a)=>o!==null?new Promise((l,d)=>{o.push({key:c,data:a,resolve:l,reject:d})}):i.dispatch(c,a)},Re=()=>{const[t,e]=b.useState(!1);return b.useEffect(()=>{const o=()=>{e(!1)},s=i=>{i.keyCode===9&&e(!0)};return window.addEventListener("keydown",s),window.addEventListener("click",o),()=>{window.removeEventListener("keydown",s),window.removeEventListener("click",o)}},[]),t},ie=t=>{const e=n.useContainer(),o=n.useRouter(),[s,i]=b.useState({name:"",params:{}}),r=n.useIsMounted();return b.useEffect(()=>{const c=(t||e).get("$widget");if(!c)return;const{events:a}=c;return a.subscribe("router:change",(d,{next:{routeData:g}})=>{if(r.current){const{name:f,params:y}=g;te(y),i({name:f,params:y})}})},[r,t,e]),b.useEffect(()=>{if(o&&o.history&&r.current){const c=o.getRouteData(),{name:a,params:l}=c;te(l),i({name:a,params:l})}},[o,r]),s};var ue=(t=>(t.HH_MM="hh:mm",t.YYYY_MM_DD="yyyy-mm-dd",t.YYYY_MM_DD_HH_MM="yyyy-mm-dd hh:mm",t))(ue||{});const he=({className:t="",format:e="hh:mm",timestamp:o})=>u.jsx("span",{className:n.appendClassNames(t,"humany-timestamp"),children:Ie(o,e)}),se=t=>`0${t}`.slice(-2);function Ie(t,e){const o=new Date(t),s=o.toTimeString().split(" ")[0].split(":"),i=s.length>1?`${s[0]}:${s[1]}`:s[0],r=o.getFullYear(),c=o.getMonth()+1,a=o.getDate(),l=`${r}-${se(c)}-${se(a)}`;return e==="yyyy-mm-dd"?l:e==="hh:mm"?i:`${l} ${i}`}var K=(t=>(t.guide="guide",t.link="link",t.default="default",t))(K||{});const re=t=>Promise.resolve().then(()=>require("./index-373df3a5.js")).then(({ServiceClient:e,ServiceProxy:o})=>t.get("settings").then(s=>{const{name:i,events:r}=t.get("$widget"),{data:{projection:c="",site:a="current",forceHttps:l=!1}}=s,d=new o(c,{credentials:"same-origin"}),g=new e(d,{funnel:i.replace("_contact-method","").replace("_contact",""),site:Ee(a,l)},null,t);return r.subscribe("widget:settings-updated",(f,{data:y})=>{y&&y.projection!==c&&g.proxy.setBaseUrl(y.projection)}),g})),Ee=(t,e)=>()=>{const o=i=>{const r=document.createElement("a");return r.href=i,r};let s=window.location;return t==="referrer"&&document.referrer&&(s=o(document.referrer)),[e?"https:":"","//",s.host,s.pathname].join("")},B=t=>{if(t){const{Type:e,Content:o}=t;if(e&&o)return{type:e,content:o}}},oe=t=>t.map(e=>{const o={id:e.Id.toString(),title:e.Name,symbol:B(e.DefaultIcon),activeSymbol:e.ActiveIcon&&B(e.ActiveIcon),description:e.Description||e.Attributes&&e.Attributes.description||"",matches:e.GuidesCount};return e.Children&&e.Children.length&&(o.items=oe(e.Children)),o}),A=(t,e)=>t.filter(({Type:o})=>o===e).map(({Id:o,Title:s,Body:i})=>({id:o.toString(),title:s,body:i})),W=t=>t.map(({Id:e,Title:o,DefaultIcon:s,ListNotices:i,Notices:r})=>({id:e.toString(),title:o,symbol:B(s),defaultHeaderOptions:{visible:!!i.length},notifications:(i||[]).concat(r||[]).map(({Id:c,Title:a,Body:l,Type:d,Modified:g})=>({id:c.toString(),title:a,body:l,modified:g,expandable:d==="listNotice"}))})),Z=({Id:t,Title:e,DefaultIcon:o,Exits:[s],ExitType:i,ConfirmationText:r,ExpandFormAutomatically:c,Form:a,Description:l},d)=>{const{Adapter:g}=s||{Adapter:{}},{ClientName:f="",Settings:y={},CustomClientName:v=""}=g,p={id:t.toString(),title:e,description:l,symbol:B(o),clientName:f==="custom.adapter"?v:f,expanded:!0,inline:!0,body:{}};if(f.indexOf("phone")>-1||f.indexOf("freetext")>-1){const{displayTextBeforeClick:m,textBeforeClick:h}=y;m==="true"&&(p.expanded=!1,p.title=h),f.indexOf("phone.text")>-1?p.body.phoneNumber=y.phoneNumber:p.body.freetext=y.freetext}return(f.indexOf("chat.popup")>-1||f.indexOf("link")>-1||f==="custom.adapter"&&i==="custom")&&(p.body=y,p.body.confirmationFallback=r),f.indexOf("ace")>-1&&(p.body=y),a&&a.HasValueComponents&&(d?p.body.form=n.FormBuilder.fromLegacyForm(t.toString(),a,d).get():p.body.form=n.FormBuilder.fromLegacyForm(t.toString(),a).get(),c||(p.expanded=p.inline=!1)),p},D=(t=[])=>t.map(({Id:e,Title:o,TotalMatches:s,Symbol:i,DefaultIcon:r,ActiveIcon:c})=>({id:e.toString(),title:o,matches:s,symbol:B(r||i),defaultIcon:B(r),activeIcon:B(c)})),J=t=>t.map(({Id:e,Title:o,Tags:s,FirstPublishedDate:i,Modified:r})=>({id:e.toString(),title:o,tags:D(s),published:i,modified:r})),Ae=(t,e)=>{switch(t){case R.MatchByCategory:case R.Match:{const o={guides:[],matches:0,topNotifications:[],middleNotifications:[],bottomNotifications:[],notificationLists:[],tags:[],byCategory:[]},{Matches:s,TotalMatches:i,Notices:r,NoticeLists:c,Tags:a,ByCategory:l}=e;return o.guides=J(s),o.matches=i,o.byCategory=(l||[]).map(({Id:d,Matches:g,TotalMatches:f})=>({id:d,guides:J(g),matches:f})),o.tags=D(a),o.notificationLists=W(c||[]),o.topNotifications=A(r||[],"noticeRowTop"),o.middleNotifications=A(r||[],"noticeRowMiddle"),o.bottomNotifications=A(r||[],"footerNotice"),o}case R.Categories:{const{Children:o,GuidesCountTotal:s}=e;return{categories:oe(o||[]),matches:s}}case R.Guide:{const{Id:o,Title:s,Body:i,Related:r,Options:c,ConnectionId:a,ContactMethods:l,EnableFeedback:d,HandoverExists:g,FirstPublishedDate:f,Modified:y,ModifiedByDisplayName:v,FirstPublishedByDisplayName:p,Categories:m,Tags:h,SeoMetaDescription:x,SeoAllowIndex:C,Perspectives:N,PerspectiveKey:w,Translations:j}=e,$=w||Object.values(N).find(M=>M===a)||N.Default||null,q={guide:{id:o.toString(),title:s,body:i,modified:y,published:f,modifiedBy:v,publishedBy:p,connection:a,categories:m,hasHandover:g,allowFeedback:d,seoMetaDescription:x,seoAllowIndex:C,perspectives:N,perspective:$,translations:Object.keys(j||{}).reduce((M,I)=>(M[I]=j[I].toString(),M),{})},related:J(r||[]),dialog:[],contactMethods:(l||[]).map(M=>Z(M)),tags:D(h)};return(c||[]).forEach(({CanAccess:M,Description:I,ConnectionId:L,Properties:S})=>{if(!M)return;const z={id:o.toString(),title:I,connection:L,connectionKey:S.ConnectionKey,type:K.default,parent:{id:o.toString(),title:s,tags:D(h)}};if(S.Type==="Guide"||S.Type==="Link")switch(S.Id&&(z.id=S.Id.toString()),S.Uri&&(z.href=S.Uri),S.Target&&(z.target=S.Target),S.Type){case"Guide":z.type=K.guide;break;case"Link":z.type=K.link;break}q.dialog.push(z)}),q}case R.Contacts:{const{Children:o,Matches:s,Notices:i,NoticeLists:r}=e;return{contactMethods:(s||[]).map(a=>Z(a)),categories:oe(o||[]),topNotifications:A(i||[],"noticeRowTop"),middleNotifications:A(i||[],"noticeRowMiddle"),bottomNotifications:A(i||[],"footerNotice"),notificationLists:W(r||[])}}case R.ContactMethod:{const{ContactMethod:o}=e;return Z(o||{})}case R.Tags:case R.TagsOnGuides:return D(e||[]);case R.Notifications:{const{Notices:o,NoticeLists:s}=e;return{topNotifications:A(o||[],"noticeRowTop"),middleNotifications:A(o||[],"noticeRowMiddle"),bottomNotifications:A(o||[],"footerNotice"),notificationLists:W(s||[])}}default:return{}}};var ge=(t=>(t.Guide="guide",t.Guides="guides",t.GuidesByCategory="guides-by-category",t.RowNotifications="row-notices",t.NotificationLists="notification-lists",t.GuideCategories="guide-categories",t.ContactMethodCategories="contact-method-categories",t.ContactMethod="contact-method",t.ContactMethods="contact-methods",t.Tags="tags",t.TagsOnGuides="tagsonguides",t))(ge||{}),R=(t=>(t.Match="match",t.Categories="categories",t.Guide="guide",t.Contacts="contacts",t.ContactMethod="contact-method",t.MatchByCategory="match-by-category",t.Tags="tags",t.TagsOnGuides="tagsonguides",t.Notifications="notifications",t))(R||{});const ae=t=>{switch(t){case"guides":return"match";case"guides-by-category":return"match-by-category";case"guide":return"guide";case"guide-categories":return"categories";case"contact-method-categories":case"contact-methods":return"contacts";case"contact-method":return"contact-method";case"tags":return"tags";case"tagsonguides":return"tagsonguides";case"notification-lists":case"row-notices":return"notifications";default:throw"error"}},Le=async t=>{const{invoke:e}=t.get("$widget");return await e("renderState")===n.WidgetRenderState.hidden};class G{constructor(e,o){P(this,"queries",new Map);P(this,"lastTake",0);P(this,"events");P(this,"getUnresolvedQueries",()=>{let e=0;return this.queries.forEach((o,s)=>{o.some(r=>!r.resolved)&&(e=1)}),e});this.container=e,this.matchingClient=o,this.events=e.get("$widget").events,this.events.subscribe("widget:settings-updated",()=>this.queries=new Map),this.events.subscribe("widget:render-state-changed",(s,{next:i,previous:r})=>{r===n.WidgetRenderState.hidden&&i===n.WidgetRenderState.open&&this.fetchAllUnresolvedQueries()})}static getInstance(e,o="dataClient"){return n.lock(this)(()=>e.getAsync(o).then(async s=>{let i=await e.getAsync("matchingClient");i||(i=await re(e),e.registerAsync("matchingClient",()=>i));let r=s;return r||(r=new G(e,i),e.registerAsync(o,()=>r)),r}))}fetch(e,o,s){return new Promise((i,r)=>{o.take&&(this.lastTake=+(o.take||0)),te(o);const c=ae(e);let a=this.queries.get(c)||[],l=a.find(d=>_(d.params,o))||null;if(l&&(s!=null&&s.noCache)){const d=a.findIndex(g=>_(g.params,o));a=[...a.slice(0,d),...a.slice(d+1)],l=null}if(l){const d=a.indexOf(l);if(l.resolved?(this.events.dispatch("data-client:fetched",{params:o,type:c,response:l.data,unresolvedQueries:this.getUnresolvedQueries()}),this.track(l.data,c,l.error),l.data&&l.error?r({error:l.error}):i(l.data)):l.resolvers.push({resolve:i,reject:r}),a.splice(d,1),a.push(l),this.queries.set(c,a),!l.loading&&!l.resolved)return this.runQuery(c,o)}else return a.push({params:o,resolved:!1,loading:!0,data:{},resolvers:[{resolve:i,reject:r}]}),this.queries.set(c,a),this.runQuery(c,o)}).then(i=>n.deepClone(i))}read(e,o){const{select:s}=o,i=ae(e);return(this.queries.get(i)||[]).reduce((a,l)=>{if(typeof s=="function"){const d=s(l.data);d&&a.push(d)}else a.push(l.data);return a},[])}feedback(e,o,s){return this.matchingClient.giveFeedback(e,o,s)}setLoadingStatus(e,o,s){const i=this.queries.get(e)||[],r=i.find(c=>_(c.params,o));r&&(r.loading=s),this.queries.set(e,i)}async runQuery(e,o){const{searchPhrase:s="",categories:i="0",contactMethodCategoryId:r="0",contactMethodId:c="0",tagId:a=void 0,take:l=5,connection:d="",guideId:g,expandCategories:f="descendants",currentCategory:y,sorting:v="popularity-descending",guideIds:p=[]}=o,m=s.toString().trim();if(await Le(this.container))return Promise.resolve();switch(e){case"match":{const h=x=>{const[C,N]=x.split("-");return{type:new Map([["popularity","popularity"],["alphabetic","title"],["modified","lastModified"],["published","firstPublished"]]).get(C),direction:N}};return p.length?this.matchingClient.customRequest("guides","POST",{configuration:{ids:p,take:+l}}).then(x=>x&&this.handleResponse(x,e,o)):this.matchingClient.match(m,{categories:i==="0"?[]:Array.isArray(i)?i:[+i],take:+l,tags:a,sorting:h(v),ids:p}).then(x=>x&&this.handleResponse(x,e,o))}case"match-by-category":return this.matchingClient.match(m,{groupByCategory:!0,categories:i==="0"?[]:Array.isArray(i)?i:[+i],take:+l,tags:a}).then(h=>h&&this.handleResponse(h,e,o));case"guide":return this.matchingClient.getGuide(g,{connectionId:d}).then(h=>{h&&this.handleResponse(h,e,o)}).catch(h=>{const x={message:"Something went wrong.",status:h.status||400};x.status===404&&(x.message="The guide could not be found."),this.handleResponse({},e,o,x)});case"categories":return this.matchingClient.getCategories({phrase:m,expand:f,tags:a}).then(h=>h&&this.handleResponse(h,e,o));case"contacts":return g?this.matchingClient.contactMethods(+g,{phrase:m}).then(h=>h&&this.handleResponse(h,e,o)):this.matchingClient.contacts(+r,{phrase:m}).then(h=>h&&this.handleResponse(h,e,o));case"contact-method":return this.matchingClient.getContactMethod(+c,{guideId:g,currentCategory:y}).then(h=>h&&this.handleResponse(h,e,o));case"tags":return this.matchingClient.customRequest("tags","GET",{configuration:{take:999999,phrase:m,categories:i==="0"?[]:Array.isArray(i)?i:[+i]}}).then(h=>h&&this.handleResponse(h,e,o));case"tagsonguides":return this.matchingClient.customRequest("tagsonguides","GET",{configuration:{take:999999,phrase:m,categories:i==="0"?[]:Array.isArray(i)?i:[+i],tags:a}}).then(h=>h&&this.handleResponse(h,e,o));case"notifications":return this.matchingClient.customRequest("notices","GET",{configuration:{phrase:m,categories:i==="0"?[]:Array.isArray(i)?i:[+i]}}).then(h=>h&&this.handleResponse(h,e,o))}}handleResponse(e={},o,s,i){const r=this.queries.get(o)||[],c=r.find(a=>_(a.params,s));if(c){const a=i||Ae(o,e);this.track(a,o,i),c.resolvers.forEach(d=>{i?d.reject({error:a}):d.resolve(a)});const l=r.indexOf(c);l>-1&&r.splice(l,1),r.push({...c,error:i,resolvers:[],data:a,resolved:!0}),this.setLoadingStatus(o,s,!1),this.queries.set(o,r),i||this.events.dispatch("data-client:fetched",{type:o,params:s,response:a,unresolvedQueries:this.getUnresolvedQueries()})}}fetchAllUnresolvedQueries(){for(const[e,o]of this.queries)o.filter(s=>!s.resolved).forEach(s=>{this.runQuery(e,s.params)})}track(e={},o,s){const i=this.container.get("$widget");i&&!s?i.events.dispatch("tracking:service-client-response",{type:o,data:e}):i&&i.events.dispatch("tracking:service-client-error",{type:o,error:s})}static create(e){return e.getAsync("matchingClient").then(async o=>{if(o)return new G(e,o);const s=await re(e);return e.registerAsync("matchingClient",()=>s),new G(e,s)})}getClient(){return this.matchingClient}}const Be=({title:t="",className:e,id:o,parent:s,connection:i,type:r,target:c,href:a,children:l,connectionKey:d})=>{const g={},{name:f,params:y}=ie();switch(r){case"default":case"guide":const{id:v,title:p}=s;let m=d||i;v!==o&&!d&&(m=void 0),g.routeName=f,g.params=H({...y,guide:o,connection:m,uriName:ee(o===v?p:t)});break;case"link":g.href=a,g.target=c;break}return u.jsx(n.Link,{className:n.appendClassNames(e,"humany-dialog-link"),...g,children:l||u.jsxs(u.Fragment,{children:[r==="link"&&u.jsx(n.Icon,{faIcon:"link"}),u.jsx("span",{children:t})]})})};b.forwardRef(({className:t,dialog:e,...o},s)=>e.length?u.jsx(Oe,{className:n.appendClassNames(t,"humany-dialog"),items:e,renderItem:i=>u.jsx("li",{"data-dialog":i.connection,children:u.jsx(Be,{...i})},i.connection),...o,ref:s}):null);const Oe=n.newStyled(n.List)`
|
|
1
|
+
"use strict";var ke=Object.defineProperty;var Ne=(t,e,o)=>e in t?ke(t,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[e]=o;var P=(t,e,o)=>(Ne(t,typeof e!="symbol"?e+"":e,o),o);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("react/jsx-runtime"),n=require("./index-b42c4c70.js"),b=require("react");require("react-dom");function H(t={}){const{phrase:e="",category:o,guideCategory:s,contactCategory:i,take:r,connectionKey:c,accordion:a,id:l,uriName:d,sorting:g,tag:f,tagId:y,tagTitle:v,...p}=t,m={};return Object.keys(p).forEach(h=>{typeof t[h]=="string"&&(m[h]=t[h])}),typeof e=="string"&&e.length&&(m.phrase=e),e===null&&(m.phrase=e),typeof s=="string"&&s!=="0"&&(m.guideCategory=s),typeof s=="number"&&s!==0&&(m.guideCategory=s),typeof s=="object"&&s!==null&&(typeof s.id=="string"&&s.id!=="0"&&(m.guideCategory=s.id),typeof s.id=="number"&&s.id!==0&&(m.guideCategory=s.id)),typeof i=="string"&&i!=="0"&&(m.contactCategory=i),typeof i=="number"&&i!==0&&(m.contactCategory=i),typeof i=="object"&&i!==null&&(typeof i.id=="string"&&i.id!=="0"&&(m.contactCategory=i.id),typeof i.id=="number"&&i.id!==0&&(m.contactCategory=i.id)),typeof o=="string"&&o!=="0"&&(m.category=o),typeof o=="number"&&o!==0&&(m.category=o),typeof o=="object"&&o!==null&&(typeof o.id=="string"&&o.id!=="0"&&(m.category=o.id),typeof o.id=="number"&&o.id!==0&&(m.category=o.id)),l&&(m.id=l),d&&(+m.category||+m.guideCategory||+m.guide||+m.contactCategory||+m.contactMethod)&&(m.uriName=d),c&&(m.connectionKey=c),r&&(m.take=r),g&&(m.sorting=g),typeof a=="string"&&a.length>0&&(m.accordion=a),typeof f=="string"&&f!=="0"&&(m.tag=f),typeof f=="number"&&f!==0&&(m.tag=f),Array.isArray(f)&&f.length&&(m.tag=f),(typeof y=="string"||typeof y=="number")&&(m.tagId=y),typeof v=="string"&&(m.tagTitle=v),typeof m.tag=="string"&&(m.tag=m.tag.split(",")),m}const ee=t=>{if(!t)return"";const e=[{from:/[äæǽ]+/gi,to:"ae"},{from:/[öœ]+/gi,to:"oe"},{from:/[ü]+/gi,to:"ue"},{from:/[Ä]+/gi,to:"Ae"},{from:/[Ü]+/gi,to:"Ue"},{from:/[Ö]+/gi,to:"Oe"},{from:/[ÀÁÂÃÄÅǺĀĂĄǍΑΆẢẠẦẪẨẬẰẮẴẲẶА]+/gi,to:"A"},{from:/[àáâãåǻāăąǎªαάảạầấẫẩậằắẵẳặа]+/gi,to:"a"},{from:/[Б]+/gi,to:"B"},{from:/[б]+/gi,to:"b"},{from:/[ÇĆĈĊČ]+/gi,to:"C"},{from:/[çćĉċč]+/gi,to:"c"},{from:/[Д]+/gi,to:"D"},{from:/[д]+/gi,to:"d"},{from:/[ÐĎĐΔ]+/gi,to:"Dj"},{from:/[ðďđδ]+/gi,to:"dj"},{from:/[ÈÉÊËĒĔĖĘĚΕΈẼẺẸỀẾỄỂỆЕЭ]+/gi,to:"E"},{from:/[èéêëēĕėęěέεẽẻẹềếễểệеэ]+/gi,to:"e"},{from:/[Ф]+/gi,to:"F"},{from:/[ф]+/gi,to:"f"},{from:/[ĜĞĠĢΓГҐ]+/gi,to:"G"},{from:/[ĝğġģγгґ]+/gi,to:"g"},{from:/[ĤĦ]+/gi,to:"H"},{from:/[ĥħ]+/gi,to:"h"},{from:/[ÌÍÎÏĨĪĬǏĮİΗΉΊΙΪỈỊИЫ]+/gi,to:"I"},{from:/[ìíîïĩīĭǐįıηήίιϊỉịиыї]+/gi,to:"i"},{from:/[Ĵ]+/gi,to:"J"},{from:/[ĵ]+/gi,to:"j"},{from:/[ĶΚК]+/gi,to:"K"},{from:/[ķκк]+/gi,to:"k"},{from:/[ĹĻĽĿŁΛЛ]+/gi,to:"L"},{from:/[ĺļľŀłλл]+/gi,to:"l"},{from:/[М]+/gi,to:"M"},{from:/[м]+/gi,to:"m"},{from:/[ÑŃŅŇΝН]+/gi,to:"N"},{from:/[ñńņňʼnνн]+/gi,to:"n"},{from:/[ÒÓÔÕŌŎǑŐƠØǾΟΌΩΏỎỌỒỐỖỔỘỜỚỠỞỢО]+/gi,to:"O"},{from:/[òóôõōŏǒőơøǿºοόωώỏọồốỗổộờớỡởợо]+/gi,to:"o"},{from:/[П]+/gi,to:"P"},{from:/[п]+/gi,to:"p"},{from:/[ŔŖŘΡР]+/gi,to:"R"},{from:/[ŕŗřρр]+/gi,to:"r"},{from:/[ŚŜŞȘŠΣС]+/gi,to:"S"},{from:/[śŝşșšſσςс]+/gi,to:"s"},{from:/[ȚŢŤŦτТ]+/gi,to:"T"},{from:/[țţťŧт]+/gi,to:"t"},{from:/[ÙÚÛŨŪŬŮŰŲƯǓǕǗǙǛŨỦỤỪỨỮỬỰУ]+/gi,to:"U"},{from:/[ùúûũūŭůűųưǔǖǘǚǜυύϋủụừứữửựу]+/gi,to:"u"},{from:/[ÝŸŶΥΎΫỲỸỶỴЙ]+/gi,to:"Y"},{from:/[ýÿŷỳỹỷỵй]+/gi,to:"y"},{from:/[В]+/gi,to:"V"},{from:/[в]+/gi,to:"v"},{from:/[Ŵ]+/gi,to:"W"},{from:/[ŵ]+/gi,to:"w"},{from:/[ŹŻŽΖЗ]+/gi,to:"Z"},{from:/[źżžζз]+/gi,to:"z"},{from:/[ÆǼ]+/gi,to:"AE"},{from:/[ß]+/gi,to:"ss"},{from:/[IJ]+/gi,to:"IJ"},{from:/[ij]+/gi,to:"ij"},{from:/[Œ]+/gi,to:"OE"},{from:/[ƒ]+/gi,to:"f"},{from:/[ξ]+/gi,to:"ks"},{from:/[π]+/gi,to:"p"},{from:/[β]+/gi,to:"v"},{from:/[μ]+/gi,to:"m"},{from:/[ψ]+/gi,to:"ps"},{from:/[Ё]+/gi,to:"Yo"},{from:/[ё]+/gi,to:"yo"},{from:/[Є]+/gi,to:"Ye"},{from:/[є]+/gi,to:"ye"},{from:/[Ї]+/gi,to:"Yi"},{from:/[Ж]+/gi,to:"Zh"},{from:/[ж]+/gi,to:"zh"},{from:/[Х]+/gi,to:"Kh"},{from:/[х]+/gi,to:"kh"},{from:/[Ц]+/gi,to:"Ts"},{from:/[ц]+/gi,to:"ts"},{from:/[Ч]+/gi,to:"Ch"},{from:/[ч]+/gi,to:"ch"},{from:/[Ш]+/gi,to:"Sh"},{from:/[ш]+/gi,to:"sh"},{from:/[Щ]+/gi,to:"Shch"},{from:/[щ]+/gi,to:"shch"},{from:/[ЪъЬь]+/gi,to:""},{from:/[Ю]+/gi,to:"Yu"},{from:/[ю]+/gi,to:"yu"},{from:/[Я]+/gi,to:"Ya"},{from:/[я]+/gi,to:"ya"}],o=/[^a-zA-Z0-9]+/g,s=/[-]$/;let i=t;for(const r in e)e.hasOwnProperty(r)&&e[r].from.test(t)&&(i=i.replace(e[r].from,e[r].to));return i=i.replace(o,"-"),i=i.replace(s,""),i=i.toLowerCase(),i||"humany"},je=(t,e)=>{if(!t||!e)return!0;let o=e.parentNode,s=!1;for(;o!==null;)o===t&&(s=!0),o=o.parentNode;return s},te=(t={})=>(Object.keys(t).forEach(e=>{(t[e]===null||typeof t[e]>"u")&&delete t[e]}),t),_=(t,e)=>{let o=!0;return Object.keys(t).length!==Object.keys(e).length||Object.keys(t).some(i=>!Object.keys(e).some(c=>i===c))?!1:(Object.keys(t).forEach(i=>{if(o){const r=typeof t[i]>"u"?"":t[i],c=typeof e[i]>"u"?"":e[i];o=r.toString()===c.toString()}}),o)},fe=()=>b.useContext(n.ComponentNodeContext),Me=(t,e)=>{const o=fe(),s=n.useContainer(),[i,r]=b.useState(void 0),c=n.useIsMounted(),a=t||o.type||"";return b.useEffect(()=>{if(a){let l;return(e||s).getAsync("componentResolver").then(d=>{if(c.current){const g=d.getComponent(a);r(g)}l=d.registerResolver(a,g=>{c.current&&r(g)})}),()=>{l&&l()}}},[c,a,e,s]),i},ze=()=>b.useContext(n.ConversationContext),Te=()=>{const t=n.useComponentPlatform(),e=fe(),[o,s]=b.useState([]),[i,r]=b.useState();return b.useEffect(()=>{if(t&&e){const c=new n.ComponentQuery(t).withId(e.id),a=t.actions(c,e.type||n.uuid());r(a),o!==null&&(o.forEach(l=>{a.dispatch(l.key,l.data).then(d=>l.resolve(d)).catch(d=>l.reject(d))}),s(null))}},[t,e.id]),(c,a)=>o!==null?new Promise((l,d)=>{o.push({key:c,data:a,resolve:l,reject:d})}):i.dispatch(c,a)},Re=()=>{const[t,e]=b.useState(!1);return b.useEffect(()=>{const o=()=>{e(!1)},s=i=>{i.keyCode===9&&e(!0)};return window.addEventListener("keydown",s),window.addEventListener("click",o),()=>{window.removeEventListener("keydown",s),window.removeEventListener("click",o)}},[]),t},ie=t=>{const e=n.useContainer(),o=n.useRouter(),[s,i]=b.useState({name:"",params:{}}),r=n.useIsMounted();return b.useEffect(()=>{const c=(t||e).get("$widget");if(!c)return;const{events:a}=c;return a.subscribe("router:change",(d,{next:{routeData:g}})=>{if(r.current){const{name:f,params:y}=g;te(y),i({name:f,params:y})}})},[r,t,e]),b.useEffect(()=>{if(o&&o.history&&r.current){const c=o.getRouteData(),{name:a,params:l}=c;te(l),i({name:a,params:l})}},[o,r]),s};var ue=(t=>(t.HH_MM="hh:mm",t.YYYY_MM_DD="yyyy-mm-dd",t.YYYY_MM_DD_HH_MM="yyyy-mm-dd hh:mm",t))(ue||{});const he=({className:t="",format:e="hh:mm",timestamp:o})=>u.jsx("span",{className:n.appendClassNames(t,"humany-timestamp"),children:Ie(o,e)}),se=t=>`0${t}`.slice(-2);function Ie(t,e){const o=new Date(t),s=o.toTimeString().split(" ")[0].split(":"),i=s.length>1?`${s[0]}:${s[1]}`:s[0],r=o.getFullYear(),c=o.getMonth()+1,a=o.getDate(),l=`${r}-${se(c)}-${se(a)}`;return e==="yyyy-mm-dd"?l:e==="hh:mm"?i:`${l} ${i}`}var K=(t=>(t.guide="guide",t.link="link",t.default="default",t))(K||{});const re=t=>Promise.resolve().then(()=>require("./index-373df3a5.js")).then(({ServiceClient:e,ServiceProxy:o})=>t.get("settings").then(s=>{const{name:i,events:r}=t.get("$widget"),{data:{projection:c="",site:a="current",forceHttps:l=!1}}=s,d=new o(c,{credentials:"same-origin"}),g=new e(d,{funnel:i.replace("_contact-method","").replace("_contact",""),site:Ee(a,l)},null,t);return r.subscribe("widget:settings-updated",(f,{data:y})=>{y&&y.projection!==c&&g.proxy.setBaseUrl(y.projection)}),g})),Ee=(t,e)=>()=>{const o=i=>{const r=document.createElement("a");return r.href=i,r};let s=window.location;return t==="referrer"&&document.referrer&&(s=o(document.referrer)),[e?"https:":"","//",s.host,s.pathname].join("")},B=t=>{if(t){const{Type:e,Content:o}=t;if(e&&o)return{type:e,content:o}}},oe=t=>t.map(e=>{const o={id:e.Id.toString(),title:e.Name,symbol:B(e.DefaultIcon),activeSymbol:e.ActiveIcon&&B(e.ActiveIcon),description:e.Description||e.Attributes&&e.Attributes.description||"",matches:e.GuidesCount};return e.Children&&e.Children.length&&(o.items=oe(e.Children)),o}),A=(t,e)=>t.filter(({Type:o})=>o===e).map(({Id:o,Title:s,Body:i})=>({id:o.toString(),title:s,body:i})),W=t=>t.map(({Id:e,Title:o,DefaultIcon:s,ListNotices:i,Notices:r})=>({id:e.toString(),title:o,symbol:B(s),defaultHeaderOptions:{visible:!!i.length},notifications:(i||[]).concat(r||[]).map(({Id:c,Title:a,Body:l,Type:d,Modified:g})=>({id:c.toString(),title:a,body:l,modified:g,expandable:d==="listNotice"}))})),Z=({Id:t,Title:e,DefaultIcon:o,Exits:[s],ExitType:i,ConfirmationText:r,ExpandFormAutomatically:c,Form:a,Description:l},d)=>{const{Adapter:g}=s||{Adapter:{}},{ClientName:f="",Settings:y={},CustomClientName:v=""}=g,p={id:t.toString(),title:e,description:l,symbol:B(o),clientName:f==="custom.adapter"?v:f,expanded:!0,inline:!0,body:{}};if(f.indexOf("phone")>-1||f.indexOf("freetext")>-1){const{displayTextBeforeClick:m,textBeforeClick:h}=y;m==="true"&&(p.expanded=!1,p.title=h),f.indexOf("phone.text")>-1?p.body.phoneNumber=y.phoneNumber:p.body.freetext=y.freetext}return(f.indexOf("chat.popup")>-1||f.indexOf("link")>-1||f==="custom.adapter"&&i==="custom")&&(p.body=y,p.body.confirmationFallback=r),f.indexOf("ace")>-1&&(p.body=y),a&&a.HasValueComponents&&(d?p.body.form=n.FormBuilder.fromLegacyForm(t.toString(),a,d).get():p.body.form=n.FormBuilder.fromLegacyForm(t.toString(),a).get(),c||(p.expanded=p.inline=!1)),p},D=(t=[])=>t.map(({Id:e,Title:o,TotalMatches:s,Symbol:i,DefaultIcon:r,ActiveIcon:c})=>({id:e.toString(),title:o,matches:s,symbol:B(r||i),defaultIcon:B(r),activeIcon:B(c)})),J=t=>t.map(({Id:e,Title:o,Tags:s,FirstPublishedDate:i,Modified:r})=>({id:e.toString(),title:o,tags:D(s),published:i,modified:r})),Ae=(t,e)=>{switch(t){case R.MatchByCategory:case R.Match:{const o={guides:[],matches:0,topNotifications:[],middleNotifications:[],bottomNotifications:[],notificationLists:[],tags:[],byCategory:[]},{Matches:s,TotalMatches:i,Notices:r,NoticeLists:c,Tags:a,ByCategory:l}=e;return o.guides=J(s),o.matches=i,o.byCategory=(l||[]).map(({Id:d,Matches:g,TotalMatches:f})=>({id:d,guides:J(g),matches:f})),o.tags=D(a),o.notificationLists=W(c||[]),o.topNotifications=A(r||[],"noticeRowTop"),o.middleNotifications=A(r||[],"noticeRowMiddle"),o.bottomNotifications=A(r||[],"footerNotice"),o}case R.Categories:{const{Children:o,GuidesCountTotal:s}=e;return{categories:oe(o||[]),matches:s}}case R.Guide:{const{Id:o,Title:s,Body:i,Related:r,Options:c,ConnectionId:a,ContactMethods:l,EnableFeedback:d,HandoverExists:g,FirstPublishedDate:f,Modified:y,ModifiedByDisplayName:v,FirstPublishedByDisplayName:p,Categories:m,Tags:h,SeoMetaDescription:x,SeoAllowIndex:C,Perspectives:N,PerspectiveKey:w,Translations:j}=e,$=w||Object.values(N).find(M=>M===a)||N.Default||null,q={guide:{id:o.toString(),title:s,body:i,modified:y,published:f,modifiedBy:v,publishedBy:p,connection:a,categories:m,hasHandover:g,allowFeedback:d,seoMetaDescription:x,seoAllowIndex:C,perspectives:N,perspective:$,translations:Object.keys(j||{}).reduce((M,I)=>(M[I]=j[I].toString(),M),{})},related:J(r||[]),dialog:[],contactMethods:(l||[]).map(M=>Z(M)),tags:D(h)};return(c||[]).forEach(({CanAccess:M,Description:I,ConnectionId:L,Properties:S})=>{if(!M)return;const z={id:o.toString(),title:I,connection:L,connectionKey:S.ConnectionKey,type:K.default,parent:{id:o.toString(),title:s,tags:D(h)}};if(S.Type==="Guide"||S.Type==="Link")switch(S.Id&&(z.id=S.Id.toString()),S.Uri&&(z.href=S.Uri),S.Target&&(z.target=S.Target),S.Type){case"Guide":z.type=K.guide;break;case"Link":z.type=K.link;break}q.dialog.push(z)}),q}case R.Contacts:{const{Children:o,Matches:s,Notices:i,NoticeLists:r}=e;return{contactMethods:(s||[]).map(a=>Z(a)),categories:oe(o||[]),topNotifications:A(i||[],"noticeRowTop"),middleNotifications:A(i||[],"noticeRowMiddle"),bottomNotifications:A(i||[],"footerNotice"),notificationLists:W(r||[])}}case R.ContactMethod:{const{ContactMethod:o}=e;return Z(o||{})}case R.Tags:case R.TagsOnGuides:return D(e||[]);case R.Notifications:{const{Notices:o,NoticeLists:s}=e;return{topNotifications:A(o||[],"noticeRowTop"),middleNotifications:A(o||[],"noticeRowMiddle"),bottomNotifications:A(o||[],"footerNotice"),notificationLists:W(s||[])}}default:return{}}};var ge=(t=>(t.Guide="guide",t.Guides="guides",t.GuidesByCategory="guides-by-category",t.RowNotifications="row-notices",t.NotificationLists="notification-lists",t.GuideCategories="guide-categories",t.ContactMethodCategories="contact-method-categories",t.ContactMethod="contact-method",t.ContactMethods="contact-methods",t.Tags="tags",t.TagsOnGuides="tagsonguides",t))(ge||{}),R=(t=>(t.Match="match",t.Categories="categories",t.Guide="guide",t.Contacts="contacts",t.ContactMethod="contact-method",t.MatchByCategory="match-by-category",t.Tags="tags",t.TagsOnGuides="tagsonguides",t.Notifications="notifications",t))(R||{});const ae=t=>{switch(t){case"guides":return"match";case"guides-by-category":return"match-by-category";case"guide":return"guide";case"guide-categories":return"categories";case"contact-method-categories":case"contact-methods":return"contacts";case"contact-method":return"contact-method";case"tags":return"tags";case"tagsonguides":return"tagsonguides";case"notification-lists":case"row-notices":return"notifications";default:throw"error"}},Le=async t=>{const{invoke:e}=t.get("$widget");return await e("renderState")===n.WidgetRenderState.hidden};class G{constructor(e,o){P(this,"queries",new Map);P(this,"lastTake",0);P(this,"events");P(this,"getUnresolvedQueries",()=>{let e=0;return this.queries.forEach((o,s)=>{o.some(r=>!r.resolved)&&(e=1)}),e});this.container=e,this.matchingClient=o,this.events=e.get("$widget").events,this.events.subscribe("widget:settings-updated",()=>this.queries=new Map),this.events.subscribe("widget:render-state-changed",(s,{next:i,previous:r})=>{r===n.WidgetRenderState.hidden&&i===n.WidgetRenderState.open&&this.fetchAllUnresolvedQueries()})}static getInstance(e,o="dataClient"){return n.lock(this)(()=>e.getAsync(o).then(async s=>{let i=await e.getAsync("matchingClient");i||(i=await re(e),e.registerAsync("matchingClient",()=>i));let r=s;return r||(r=new G(e,i),e.registerAsync(o,()=>r)),r}))}fetch(e,o,s){return new Promise((i,r)=>{o.take&&(this.lastTake=+(o.take||0)),te(o);const c=ae(e);let a=this.queries.get(c)||[],l=a.find(d=>_(d.params,o))||null;if(l&&(s!=null&&s.noCache)){const d=a.findIndex(g=>_(g.params,o));a=[...a.slice(0,d),...a.slice(d+1)],l=null}if(l){const d=a.indexOf(l);if(l.resolved?(this.events.dispatch("data-client:fetched",{params:o,type:c,response:l.data,unresolvedQueries:this.getUnresolvedQueries()}),this.track(l.data,c,l.error),l.data&&l.error?r({error:l.error}):i(l.data)):l.resolvers.push({resolve:i,reject:r}),a.splice(d,1),a.push(l),this.queries.set(c,a),!l.loading&&!l.resolved)return this.runQuery(c,o)}else return a.push({params:o,resolved:!1,loading:!0,data:{},resolvers:[{resolve:i,reject:r}]}),this.queries.set(c,a),this.runQuery(c,o)}).then(i=>n.deepClone(i))}read(e,o){const{select:s}=o,i=ae(e);return(this.queries.get(i)||[]).reduce((a,l)=>{if(typeof s=="function"){const d=s(l.data);d&&a.push(d)}else a.push(l.data);return a},[])}feedback(e,o,s){return this.matchingClient.giveFeedback(e,o,s)}setLoadingStatus(e,o,s){const i=this.queries.get(e)||[],r=i.find(c=>_(c.params,o));r&&(r.loading=s),this.queries.set(e,i)}async runQuery(e,o){const{searchPhrase:s="",categories:i="0",contactMethodCategoryId:r="0",contactMethodId:c="0",tagId:a=void 0,take:l=5,connection:d="",guideId:g,expandCategories:f="descendants",currentCategory:y,sorting:v="popularity-descending",guideIds:p=[]}=o,m=s.toString().trim();if(await Le(this.container))return Promise.resolve();switch(e){case"match":{const h=x=>{const[C,N]=x.split("-");return{type:new Map([["popularity","popularity"],["alphabetic","title"],["modified","lastModified"],["published","firstPublished"]]).get(C),direction:N}};return p.length?this.matchingClient.customRequest("guides","POST",{configuration:{ids:p,take:+l}}).then(x=>x&&this.handleResponse(x,e,o)):this.matchingClient.match(m,{categories:i==="0"?[]:Array.isArray(i)?i:[+i],take:+l,tags:a,sorting:h(v),ids:p}).then(x=>x&&this.handleResponse(x,e,o))}case"match-by-category":return this.matchingClient.match(m,{groupByCategory:!0,categories:i==="0"?[]:Array.isArray(i)?i:[+i],take:+l,tags:a}).then(h=>h&&this.handleResponse(h,e,o));case"guide":return this.matchingClient.getGuide(g,{connectionId:d}).then(h=>{h&&this.handleResponse(h,e,o)}).catch(h=>{const x={message:"Something went wrong.",status:h.status||400};x.status===404&&(x.message="The guide could not be found."),this.handleResponse({},e,o,x)});case"categories":return this.matchingClient.getCategories({phrase:m,expand:f,tags:a}).then(h=>h&&this.handleResponse(h,e,o));case"contacts":return g?this.matchingClient.contactMethods(+g,{phrase:m}).then(h=>h&&this.handleResponse(h,e,o)):this.matchingClient.contacts(+r,{phrase:m}).then(h=>h&&this.handleResponse(h,e,o));case"contact-method":return this.matchingClient.getContactMethod(+c,{guideId:g,currentCategory:y}).then(h=>h&&this.handleResponse(h,e,o));case"tags":return this.matchingClient.customRequest("tags","GET",{configuration:{take:999999,phrase:m,categories:i==="0"?[]:Array.isArray(i)?i:[+i]}}).then(h=>h&&this.handleResponse(h,e,o));case"tagsonguides":return this.matchingClient.customRequest("tagsonguides","GET",{configuration:{take:999999,phrase:m,categories:i==="0"?[]:Array.isArray(i)?i:[+i],tags:a}}).then(h=>h&&this.handleResponse(h,e,o));case"notifications":return this.matchingClient.customRequest("notices","GET",{configuration:{phrase:m,categories:i==="0"?[]:Array.isArray(i)?i:[+i]}}).then(h=>h&&this.handleResponse(h,e,o))}}handleResponse(e={},o,s,i){const r=this.queries.get(o)||[],c=r.find(a=>_(a.params,s));if(c){const a=i||Ae(o,e);this.track(a,o,i),c.resolvers.forEach(d=>{i?d.reject({error:a}):d.resolve(a)});const l=r.indexOf(c);l>-1&&r.splice(l,1),r.push({...c,error:i,resolvers:[],data:a,resolved:!0}),this.setLoadingStatus(o,s,!1),this.queries.set(o,r),i||this.events.dispatch("data-client:fetched",{type:o,params:s,response:a,unresolvedQueries:this.getUnresolvedQueries()})}}fetchAllUnresolvedQueries(){for(const[e,o]of this.queries)o.filter(s=>!s.resolved).forEach(s=>{this.runQuery(e,s.params)})}track(e={},o,s){const i=this.container.get("$widget");i&&!s?i.events.dispatch("tracking:service-client-response",{type:o,data:e}):i&&i.events.dispatch("tracking:service-client-error",{type:o,error:s})}static create(e){return e.getAsync("matchingClient").then(async o=>{if(o)return new G(e,o);const s=await re(e);return e.registerAsync("matchingClient",()=>s),new G(e,s)})}getClient(){return this.matchingClient}}const Be=({title:t="",className:e,id:o,parent:s,connection:i,type:r,target:c,href:a,children:l,connectionKey:d})=>{const g={},{name:f,params:y}=ie();switch(r){case"default":case"guide":const{id:v,title:p}=s;let m=d||i;v!==o&&!d&&(m=void 0),g.routeName=f,g.params=H({...y,guide:o,connection:m,uriName:ee(o===v?p:t)});break;case"link":g.href=a,g.target=c;break}return u.jsx(n.Link,{className:n.appendClassNames(e,"humany-dialog-link"),...g,children:l||u.jsxs(u.Fragment,{children:[r==="link"&&u.jsx(n.Icon,{faIcon:"link"}),u.jsx("span",{children:t})]})})};b.forwardRef(({className:t,dialog:e,...o},s)=>e.length?u.jsx(Oe,{className:n.appendClassNames(t,"humany-dialog"),items:e,renderItem:i=>u.jsx("li",{"data-dialog":i.connection,children:u.jsx(Be,{...i})},i.connection),...o,ref:s}):null);const Oe=n.newStyled(n.List)`
|
|
2
2
|
${n.list}
|
|
3
3
|
a {
|
|
4
4
|
min-width: 150px;
|
|
@@ -10495,7 +10495,7 @@ class vd {
|
|
|
10495
10495
|
});
|
|
10496
10496
|
}
|
|
10497
10497
|
}
|
|
10498
|
-
const gd = "@telia-ace/conversational-hub-bot-provider", yd = "0.0.
|
|
10498
|
+
const gd = "@telia-ace/conversational-hub-bot-provider", yd = "0.0.12", bd = "./index.js", wd = "./index.d.ts", xd = {
|
|
10499
10499
|
".": {
|
|
10500
10500
|
import: "./index.mjs",
|
|
10501
10501
|
require: "./index.js"
|
|
@@ -10507,7 +10507,6 @@ const gd = "@telia-ace/conversational-hub-bot-provider", yd = "0.0.11", bd = "./
|
|
|
10507
10507
|
"@telia-ace/widget-utilities": "*",
|
|
10508
10508
|
"@telia-ace/widget-services": "*",
|
|
10509
10509
|
"@telia-ace/widget-core": "*",
|
|
10510
|
-
"@emotion/styled": "11.11.0",
|
|
10511
10510
|
"@telia-ace/knowledge-data-client": "*",
|
|
10512
10511
|
"@telia-ace/knowledge-widget-adapters": "*",
|
|
10513
10512
|
"@telia-ace/knowledge-widget-ui": "*",
|
|
@@ -10531,7 +10530,7 @@ const gd = "@telia-ace/conversational-hub-bot-provider", yd = "0.0.11", bd = "./
|
|
|
10531
10530
|
ce.info((Ke == null ? void 0 : Ke.name) + " version: " + (Ke == null ? void 0 : Ke.version)), cd(
|
|
10532
10531
|
t,
|
|
10533
10532
|
en.ContactMethod,
|
|
10534
|
-
import("./contact-method-
|
|
10533
|
+
import("./contact-method-77354cf2.mjs")
|
|
10535
10534
|
);
|
|
10536
10535
|
const d = await st(
|
|
10537
10536
|
t,
|
|
@@ -1211,4 +1211,4 @@ Valid keys: `+JSON.stringify(Object.keys(b),null," "));var A=me(I,K,P,H,M+"."+K
|
|
|
1211
1211
|
min-width: 100px;
|
|
1212
1212
|
`;class Xu{constructor(e){S(this,"cache",new Map);S(this,"subscriptions",[]);this.controller=e;const{events:n}=e.container.get("$widget"),r=n.subscribe("data-client:fetched",(i,o)=>{o.type==="contact-method"&&this.cache.set(o.response.id,o.response)});this.subscriptions.push(r)}getConversationLogs(){return this.controller.messages.reduce((n,r)=>{const i=fn(r),{key:o,content:s,type:a,sender:c,timestamp:u}=i.content,l=this.parseEntry(s,a,c,u);return l&&n.push(l),n},[])}parseEntry(e,n,r,i){const o=u=>{let l=[],d=[],f;if(Array.isArray(u)){const[g,v]=u;f=v}else f=u;return this.createMessageContent(f).length&&(d=[...d,this.createMessageContent(f)]),l=[...l,...this.createMessageOptions(f)],{messagesAsList:d,options:l}};let s=[],a=[];if(Array.isArray(e.items)){const{items:u}=e;u.forEach(l=>{const d=o(l);s=[...s,...d.options],a=[...a,...d.messagesAsList]})}else{const u=o(e);s=[...s,...u.options],a=[...a,...u.messagesAsList]}return{options:s,message:a.length?a.join(`
|
|
1213
1213
|
`):void 0,source:this.createMessageSource(n),alias:this.createAlias(n,r),timestamp:i}}createMessageSource(e){return e}createAlias(e,n){return e===dn.System?"system":(n==null?void 0:n.name)||"Me"}handleContactMethod(e){if(!this.cache.has(e))return;const n=this.cache.get(e);let r="";return r=this.appendText(r,`${n.clientName}:`),r=this.appendText(r,n.title),n.description&&(r=this.appendText(r,n.title)),r}getDetails(e,n=!0){if(!e)return"";const{header:r,title:i,label:o,description:s,text:a,html:c,body:u,contactMethodId:l}=e;let d="";if(l){const f=this.handleContactMethod(l.toString());f&&(d=this.appendText(d,f,n))}return r&&(d=this.appendText(d,r,n)),i&&(d=this.appendText(d,i,n)),s&&(d=this.appendText(d,s,n)),a&&(d=this.appendText(d,a,n)),o&&(d=this.appendText(d,o,n)),c&&(d=this.appendText(d,c,n)),u&&typeof u=="string"&&(d=this.appendText(d,u,n)),d}createMessageContent(e){let n="";return n=this.getDetails(e),n}createMessageOptions(e){let n=[],r=[];return Array.isArray(e==null?void 0:e.actions)?r=e.actions:typeof(e==null?void 0:e.actions)=="object"&&(r=Object.entries(e.actions).map(([i,o])=>({actionKey:i,label:o}))),r.length&&(n=r.map(i=>this.getDetails(i,!1))),n}appendText(e,n,r=!0){return r&&e.length?`${e}
|
|
1214
|
-
${n}`:e.length?`${e} ${n}`:n}dispose(){this.subscriptions.forEach(e=>{e()})}}class Jn{constructor(e,n){S(this,"id");S(this,"name");S(this,"avatar");S(this,"print",(e,n,r=null)=>{const i={name:this.name,avatar:this.avatar,id:this.id},o=fn(e,n);return r=r??o.timestamp,this.provider.createEntry(o.key,o.content,dn.Agent,i,r)});S(this,"typing",()=>this.provider.setTypingState({name:this.name,avatar:this.avatar}));this.provider=e,this.id=n.id||Ee(),this.name=n.name,this.avatar=n.avatar}update(e){var i;const{name:n,avatar:r}=e;r===null?this.avatar=void 0:r&&(this.avatar=r),n===null?this.name=void 0:n&&(this.name=n),(i=this.provider.controller)==null||i.events.dispatch("conversation:agent-updated",{agent:this})}}class Hr{constructor(e,n,r){S(this,"subscriptions",[]);S(this,"options");S(this,"user");this.name=e,this.container=n,this.controller=r,this.user=r==null?void 0:r.user,this.options={silent:!1}}static create(e,n,r){return new Hr(e,n,r)}createAgent(e={}){var n;if(this.controller){const r=this.controller.getAgentById(e.id),i=r?new Jn(this,{...r,...e}):new Jn(this,e);return r||(n=this.controller)==null||n.events.dispatch("conversation:agent-created",{agent:i}),i}}print(e){var n;return(n=this.controller)==null?void 0:n.print(e)}setTypingState(e,n){var r;return(r=this.controller)==null?void 0:r.setTypingState(e,n)}loading(){return this.controller?this.controller.loader():()=>()=>{}}createEntry(e,n,r,i,o){var s;return(s=this.controller)==null?void 0:s.createEntry(e,n,r,i,o)}dispose(){var e;process.env.NODE_ENV!=="production"&&console.log(`conversation-provider: dispose (${this.name})`),(e=this.controller)==null||e.disposeProvider(this),this.controller=null,this.subscriptions.forEach(n=>n())}isRehydrated(){var e;return((e=this.controller)==null?void 0:e.isRehydrated())||Promise.resolve(!1)}getHistory(){var e;return((e=this.controller)==null?void 0:e.getHistory())||[]}complete(){var e;(e=this.controller)==null||e.onCompleteProvider()}setOptions(e={silent:!1}){this.options=e}onUnreadMessage(e){var n;if(this.controller){const r=(n=this.controller)==null?void 0:n.onUnreadMessage(e);return this.subscriptions.push(r),()=>{r()}}}onMounted(e){var n;if(this.controller){const r=(n=this.controller)==null?void 0:n.events.subscribe("conversation:component-mount-changed",e);return this.subscriptions.push(r),e({},this.controller.getComponentMountedState()),()=>{r()}}}}const Go=t=>`conversation-${t}`;class Qu{constructor(){S(this,"_locking",Promise.resolve());S(this,"_locks",0)}isLocked(){return this._locks>0}lock(){this._locks+=1;let e;const n=new Promise(i=>e=()=>{this._locks-=1,i()}),r=this._locking.then(()=>e);return this._locking=this._locking.then(()=>n),r}}let ed=class{constructor(e,n,r){S(this,"sessionStorageKey");S(this,"locker",new Qu);S(this,"initialStoredAgents",[]);this.container=e,this.conversation=n,this.enabled=r,this.sessionStorageKey=Go(n.id),n.onStarted(async()=>{if(n.messages.length>0)return;const{agents:i}=await this.read(),o=[];i&&i.forEach(a=>{const c=n.providerIndex(a.providerName),u=c>-1?n.registeredProviders[c]:n.createProvider(a.providerName),l=new Jn(u,{name:a.name,avatar:a.avatar,id:a.id});o.push(l)});const{messages:s}=await this.read();s.forEach(a=>{switch(a.type){case"agent":{const c=o.find(u=>{var l;return u.id===((l=a.sender)==null?void 0:l.id)});c&&c.print(a.content.items||a.content,{key:a.key},a.timestamp);return}case"user":{n.user.print(a.content.items||a.content,{key:a.key},a.timestamp);return}case"system":default:n.print(a.content.items||a.content,a.timestamp)}})}),n.onMessageCreated(async(i,o)=>{this.write(o.message,"messages")}),n.events.subscribe("conversation:agent-created",async(i,o)=>{const s={id:o.agent.id,name:o.agent.name,avatar:o.agent.avatar,providerName:o.agent.provider.name};await this.write(s,"agents")}),n.events.subscribe("conversation:agent-updated",async(i,o)=>{const{agents:s}=await this.read();await this.write([...s.map(a=>a.id===o.agent.id?{...a,name:o.agent.name,avatar:o.agent.avatar}:a)],"agents","update")})}setInitialData(e){this.initialStoredAgents=e.agents}async isRehydrated(){const{messages:e}=await this.read();return e.length>0}getStoredAgent(e){if(this.enabled)return this.initialStoredAgents.find(n=>n.id===e)}async write(e,n,r="add"){if(!this.enabled)return;const i=await this.locker.lock();return rt(this.container,this.sessionStorageKey,de.Necessary).then(async o=>{if(r==="add"){const s=await this.read();if(n==="messages"&&s.messages.findIndex(c=>c.key===e.key)>-1){i();return}const a={...s};return n==="messages"?a.messages=[...a.messages,e]:n==="agents"&&(a.agents=[...a.agents,e]),o({...s,...a}).then(()=>{i()})}if(r==="update"&&n==="agents"){const s=await this.read();return o({...s,agents:e}).then(()=>{i()})}return o(e).then(()=>{i()})})}async read(){return Pe(this.container,this.sessionStorageKey).then(e=>e||{messages:[],agents:[]})}};class td{constructor(e){S(this,"print",(e,n,r=null)=>{const i=fn(e,n);return r=r??i.timestamp,this.controller.createEntry(i.key,i.content,dn.User,void 0,r)});this.controller=e}}const Xn=async(t,e,n)=>{const r=await t.getAsync("conversation"),i=await t.getAsync("components"),o=r.controllers.find(s=>s.conversation.id===e);if(o){const s=[...o.conversation.providers];s.forEach(c=>{o.conversation.setProviderOptions(c,{silent:!0})}),o.conversation.queueProviders(s),o.conversation.setProviders([n]);const a=i.components().ofType("conversation");i.write({key:"setConversationProvider",attributes:{properties:{providers:[n]}},target:a,provider:"localStorage"})}};class nd{constructor(e){this.writer=e}update(e){const n=this.getNormalizedSettings(e);this.writer(n)}remove(){this.writer(null)}getNormalizedSettings(e){return typeof e=="string"?{body:e}:e.length>-1&&typeof e=="object"?{items:e}:e}}var dn=(t=>(t.User="user",t.Agent="agent",t.System="system",t))(dn||{});const fn=(t,e)=>{let n,r=(e==null?void 0:e.key)||Ee(),i=Date.now();if(Array.isArray(t)&&t.length>-1)typeof t[0]=="string"?n={items:[t]}:n={items:t};else if(typeof t=="string")n={body:t};else if(t=t||{},t.type)n={...t};else{if(n={body:t.body,actions:t.actions,title:t.title},t.key&&(r=t.key),t.timestamp&&(i=t.timestamp),typeof t.form=="function"){const o=je.create(r);t.form(o);const s=o.get();n.form=s}t.timestamp===null&&(i=null)}return{content:n,key:r,timestamp:i}},Fi=(t,e)=>{if(!e)return;const n=JSON.stringify(e),r=t.findIndex(i=>n===JSON.stringify(i));if(r>-1)return t.splice(r,1)};class rd{constructor(e,n,r){S(this,"formHandlers",{});S(this,"user",new td(this));S(this,"events");S(this,"providers",[]);S(this,"active",!1);S(this,"queuedProviders",[]);S(this,"registeredProviders",[]);S(this,"loaders",0);S(this,"componentMounted",!1);S(this,"store");S(this,"messages",[]);S(this,"typingActors",[]);S(this,"conversationHistory");S(this,"print",(e,n=null)=>{const r=fn(e);return n=n??r.timestamp,this.createEntry(r.key,r.content,"system",void 0,n)});this.container=e,this.id=n;const i=e.get("$widget");this.events=i.events.createChild(this),this.store=new ed(e,this,r.rehydrate),this.conversationHistory=new Xu(this)}setInitialStorage(e){this.store.setInitialData(e)}setProviders(e){const n=[],r=[];this.providers.reduce((i,o)=>(e.indexOf(o)===-1&&i.push(o),i),[]).forEach(i=>{const o=this.providers.indexOf(i);o>-1&&(n.push(i),this.providers.splice(o,1))}),e.forEach(i=>{this.providers.indexOf(i)===-1&&(r.push(i),this.providers.push(i))}),(r.length||n.length)&&this.events.dispatch("conversation:providers-changed",{added:r,removed:n})}createProvider(e){const n=this.providerIndex(e);if(n>-1)return this.registeredProviders[n];const r=Hr.create(e,this.container,this);return this.registeredProviders.push(r),r}providerIndex(e){return this.registeredProviders.findIndex(n=>n.name===e)}getAgentById(e){if(e)return this.store.getStoredAgent(e)}dispose(){this.conversationHistory.dispose(),this.registeredProviders.forEach(e=>e.dispose()),this.messages=[],this.events.dispatch("conversation:controller-disposed",this),this.active=!1}onDispose(e){return this.events.subscribe("conversation:controller-disposed",e)}onStarted(e){return this.events.subscribe("conversation:started",e)}onMessageCreated(e){return this.events.subscribe("conversation:message-created",e)}isRehydrated(){return this.store.isRehydrated()}disposeProvider(e){const n=this.providerIndex(e.name);n>-1&&this.registeredProviders.splice(n,1),this.events.dispatch("conversation:providers-changed",{removed:[e.name]}),this.registeredProviders.length||this.dispose()}onProvidersChange(e){return this.events.subscribe("conversation:providers-changed",e)}setComponentMountedState(e){this.componentMounted!==e&&(this.componentMounted=e,e&&(this.events.dispatch("conversation:unread-message",!1),this.events.dispatch("conversation:started",!0),this.active=!0),this.events.dispatch("conversation:component-mount-changed",e))}setProviderOptions(e,n){const r=this.providerIndex(e);r>-1&&this.registeredProviders[r].setOptions(n)}changeProvider(e){this.registeredProviders.find(r=>r.name===e)&&Xn(this.container,this.id,e)}queueProviders(e){this.queuedProviders=e}onCompleteProvider(){const e=this.queuedProviders.pop();e&&Xn(this.container,this.id,e)}getComponentMountedState(){return this.componentMounted}onUnreadMessage(e){return this.events.subscribe("conversation:unread-message",e)}createEntry(e,n,r,i,o){const s={key:e,content:n,type:r,sender:i||null,timestamp:o||o===null?o:Date.now()};this.messages.push(s),s.type==="agent"&&Fi(this.typingActors,i);const a=new nd(c=>{if(c!==null){const{timestamp:u=void 0,...l}=c;s.content=l,u&&(s.timestamp=u)}else{const u=this.messages.indexOf(s);s.content=null,u>-1&&this.messages.splice(u,1)}this.events.dispatch("conversation:message-updated",{message:s}),this.update()});return this.events.dispatch("conversation:message-created",{message:s}),this.update(),this.componentMounted||this.events.dispatch("conversation:unread-message",!0),a}update(){this.events.dispatch("conversation:updated",{messages:this.messages,loading:this.loaders>0,typingActors:this.typingActors})}getMessageStream(){return{messages:this.messages,loading:this.loaders>0,typingActors:this.typingActors}}setTypingState(e,n){return this.typingActors.indexOf(e)===-1&&(this.typingActors.push(e),this.update()),()=>{Fi(this.typingActors,e),this.update()}}loader(){this.loaders=this.loaders+1;let e=!1;return this.loaders===1&&this.update(),()=>{e||(e=!0,this.loaders=this.loaders-1,this.loaders===0&&this.update())}}submitForm(e,n){this.formHandlers[e]={...this.formHandlers[e],submit:n}}validateForm(e,n){this.formHandlers[e]={...this.formHandlers[e],validate:n}}getHistory(){return this.conversationHistory.getConversationLogs()}}const qi=t=>{const{implementation:e}=t.get("$widget"),r=(e.container.get("modals")||[]).map(i=>i.close());return Promise.all(r)};var Qn=(t=>(t.LinkList="link-list",t.Separator="separator",t.ButtonList="button-list",t.ItemList="item-list",t.Text="text",t.HTML="html",t.VideoRequest="video-request",t))(Qn||{});const id=(t,e,n)=>t.getAsync("componentResolver").then(async r=>{(await hn.getInstance(t)).addSubscription(r.registerComponent(e,m.lazy(()=>n)))}),od=(t,e)=>{const n=t.split("_contact");return e.widgets.get(n[0])},zr=t=>{const e=t.get("$widget"),{name:n,implementation:r}=t.get("$widget"),i=n.indexOf("_contact")>-1?od(n,r):e,{data:o}=t.get("$settings"),{trigger:s}=i.container.get("$settings"),a=`${n.replace("_contact-method","").replace("_contact","")}_contact-method`,c=r.widgets.get(a);return c&&!s?{chatWidget:c,mainWidget:i,data:o}:{mainWidget:i,data:o}},sd=t=>{const{chatWidget:e}=zr(t);return!!e},Yi=(t,e,n)=>{const{mainWidget:r,data:i,chatWidget:o}=zr(t);return o?o.state==="activated"?o.invoke("open").then(()=>{o.container.getAsync("conversation").then(s=>{s.navigateToConversationIfActive(e.id).then(()=>qi(t))})}):o.activate().then(()=>{const{trigger:s}=o.container.get("$settings");return s.action="hide",o.invoke("setSettings",()=>({data:i,trigger:s,activate:!0})).then(()=>o.container.getAsync("components").then(a=>{const c=a.components().ofType("contact-method");a.write({key:"setContactMethodId",attributes:{properties:{id:e.id,guideId:e.guideId}},target:c,provider:"localStorage"});const u=a.components().ofType("conversation");a.write({key:"setConversationProvider",attributes:{properties:{providers:[e.clientName]}},target:u,provider:"localStorage"})}))}).then(()=>o.invoke("attach",{key:"contact-method",triggerDOMElement:n,withRenderState:"open"})).then(()=>(rt(o.container,"activeStickyWidget",de.Necessary,{medium:pe.Local,scope:Kt.Implementation}).then(s=>s(o.name)),o.container.getAsync("conversation").then(s=>{s.setConversationEndedBehavior(Ft.Deactivate)}).then(()=>qi(t)).then(()=>!1))):(r.container.getAsync("conversation").then(s=>s.navigateToConversationIfActive(e.id).then(()=>s.setConversationEndedBehavior(Ft.Navigate))),!o)},ad=(t,e,n="conversation")=>{const{mainWidget:r,chatWidget:i}=zr(t);return i?i.container.getAsync("router").then(o=>{o.navigate(n,{id:e.id})}):r.container.getAsync("conversation").then(o=>{var s;(s=o.setConversationEndedBehavior(Ft.Navigate))==null||s.then(()=>{r.container.getAsync("router").then(a=>{r.container.getAsync("components").then(c=>{const u=c.components().ofType("conversation");c.write({key:"setConversationProvider",attributes:{properties:{providers:[e.clientName]}},target:u,provider:"localStorage"})}).then(()=>{a.navigate(n,{id:e.id})})})})})},ut="conversations";var Ft=(t=>(t.Deactivate="deactivate",t.Navigate="navigate",t.None="none",t))(Ft||{});class hn{constructor(e,n){S(this,"events");S(this,"controllers",[]);S(this,"providers",[]);S(this,"disposeProviders",{});S(this,"subscriptions",[]);S(this,"storageWriter",null);S(this,"router",null);S(this,"buttonQuery",null);S(this,"sessionInfo",null);this.container=e,this.components=n;const r=e.get("$widget");this.events=r.events.createChild(this)}initialize(){rt(this.container,ut,de.Necessary,{medium:pe.Local}).then(e=>this.storageWriter=e),Pe(this.container,ut,pe.Local).then(e=>{this.buttonQuery=this.components.components().ofType("conversation-return-button"),e&&(this.sessionInfo=e,e.id&&e.route&&this.writeToComponents({active:!0,alert:{show:!1}}))}),this.container.getAsync("router").then(e=>this.router=e),this.events.subscribe("conversation:ended",(e,n)=>{var r,i,o;switch((r=this.sessionInfo)==null?void 0:r.conversationEndedBehavior){case"deactivate":this.container.get("$widget").deactivate();break;case"navigate":const a=(i=this.router)==null?void 0:i.getInitialRoute();a&&((o=this.router)==null||o.navigate(a.name));break}this.writeToComponents({active:!1}),this.sessionInfo=null,this.storageWriter&&this.storageWriter()})}addSubscription(e){this.subscriptions.push(e)}static getInstance(e,n="conversation"){return nt(e)(()=>e.getAsync(n).then(r=>{let i=r;return i||Gi.getInstance(e).then(o=>(i=new hn(e,o),i.initialize(),e.registerAsync(n,()=>i),i))}))}navigateToConversationIfActive(e){return Pe(this.container,ut,pe.Local).then(n=>{var r;if(n&&n.id===e&&n.route){const{name:i,params:o}=n.route;(r=this.router)==null||r.navigate(i,o)}})}setConversationEndedBehavior(e){return Pe(this.container,ut,pe.Local).then(n=>{let r=n;return r?r.conversationEndedBehavior=e:r={conversationEndedBehavior:e},this.sessionInfo=r,this.storageWriter&&this.storageWriter(this.sessionInfo)||Promise.resolve()})}async createController(e,n){const r=Go(e),{agents:i}=await Pe(this.container,r)||{agents:[]},o=this.controllers.findIndex(a=>a.conversation.id===e);let s;return o>-1?s=this.controllers[o].conversation:s=new rd(this.container,e,n),s.setInitialStorage({agents:i||[]}),s}registerProvider(e,n){const r={name:e,handler:n};this.providers.push(r),this.controllers.filter(i=>i.conversation.providers.indexOf(e)>-1).forEach(i=>{this.invokeHandler(r,i)})}registerController(e,n){const r=this.controllers.findIndex(o=>o.conversation.id===e.id);let i;if(r<0){i={conversation:e,component:n},this.controllers.push(i);const o=s=>{s&&this.providers.filter(a=>s.indexOf(a.name)>-1).forEach(a=>{this.invokeHandler(a,i)})};return this.subscriptions.push(e.onDispose((s,a)=>{const c=this.controllers.findIndex(u=>u.conversation===a);c>-1&&this.controllers.splice(c,1),this.components.components().ofType("conversation-return-button").select().writeProperties({active:!1}),this.events.dispatch("conversation:ended",{},{bubbles:!0})})),this.subscriptions.push(e.onProvidersChange((s,a)=>{const{added:c,removed:u=[]}=a;u.forEach(l=>{(this.disposeProviders[l]||[]).forEach(d=>{d()})}),o(c)})),this.subscriptions.push(e.onStarted((s,a)=>{var u,l;const c={id:e.id,route:(u=this.router)==null?void 0:u.getRouteData(),conversationEndedBehavior:(l=this.sessionInfo)==null?void 0:l.conversationEndedBehavior};this.sessionInfo=c,this.storageWriter&&this.storageWriter(c),this.writeToComponents({active:a})})),this.subscriptions.push(e.onUnreadMessage((s,a)=>{this.events.dispatch("conversation:unread-message",a),this.writeToComponents({alert:{show:a}})})),o(e.providers),!0}return i=this.controllers[r],!1}writeToComponents(e,n="conversationReturnButtonState"){this.buttonQuery&&this.components.write({key:"conversationReturnButtonState",attributes:{properties:e},target:this.buttonQuery,provider:"localStorage"})}invokeHandler(e,n){const r=e.handler(n.conversation.createProvider(e.name),n.component);r&&(this.disposeProviders[e.name]||(this.disposeProviders[e.name]=[]),this.disposeProviders[e.name].push(r))}getComponentRoute(){return Pe(this.container,ut,pe.Local).then(e=>e==null?void 0:e.route)}dispose(){Object.keys(this.disposeProviders).forEach(e=>{this.disposeProviders[e].forEach(n=>{n()})}),this.subscriptions.forEach(e=>{e()}),this.controllers=[],this.providers=[]}static async handleContactMethodClick(e,n,r,i){if(sd(n)){e.preventDefault();let o=document.getElementById("humany-dynamic-anchor");o||(o=document.createElement("a"),o.setAttribute("href","#"),o.id="humany-dynamic-anchor",document.body.appendChild(o)),Yi(n,r,o)}Yi(n,r)}static async handleContactMethodSubmit(e,n){var r,i;return(i=(r=n==null?void 0:n.body.form.meta)==null?void 0:r.conversation)!=null&&i.id?Xn(e,n.body.form.meta.conversation.id,n.clientName):ad(e,n)}}class cd{constructor(e){S(this,"enabled",!0);S(this,"botProviderGlobalStateKey","bot-provider-global-state");S(this,"botProviderLocalStateKey","bot-provider-local-state");S(this,"botProviderEntriesKey","bot-provider-entries");S(this,"botProviderMetaStateKey","bot-provider-conversation-meta");this.container=e}getKey(e){let n;switch(e){case"localState":n=this.botProviderLocalStateKey;break;case"globalState":n=this.botProviderGlobalStateKey;break;case"entries":n=this.botProviderEntriesKey;break;case"meta":n=this.botProviderMetaStateKey;break}return n}async read(e){const n=this.getKey(e);if(!(!this.enabled||!n))return Pe(this.container,n)}async write(e,n){const r=this.getKey(n);if(!this.enabled||!r)return;(await rt(this.container,r,de.Necessary))(e)}}var qt=(t=>(t.ContactMethod="ace-conversational-hub-contact-method",t))(qt||{});const ld=({isUser:t,items:e=[],meta:n={}})=>{const r=Ee();return{id:r,isUser:t,items:e.map(o=>({id:o.id||Ee(),isUser:t,groupId:r,message:o.message||[]})),meta:n}},ud=(t,{submit:e,errors:n,meta:r})=>{var i;if((i=t==null?void 0:t.body)!=null&&i.form){const{body:o}=t,s=new je(o.form);return o.form.layout.submit||s.createComponent(Rs(e,"submit")),n&&s.setValidationErrors(n),r&&s.setMeta(r),{...o,form:s.get()}}return(t==null?void 0:t.body)||{}},dd=async(t,e,n)=>{(await(await t.getAsync("dataClient")).getClient()).parameters.set(e,n)},Rt=({messageId:t,message:e,group:n})=>({id:t,message:e,groupId:n.id,isUser:n.isUser}),fd=async(t,e,n)=>{const r=async(c,u,l=[],d)=>{var p,g;const f=Ee();switch(c.type!=="List"&&c.tags.includes("guide")&&((g=(p=c.content.hints)==null?void 0:p[0])!=null&&g.id)&&await dd(t,"LastGuideId",c.content.hints[0].id),c.type){case"Text":{const v=[];if(v.push(Rt({messageId:f,message:[Qn.HTML,{body:c.content.html}],group:u})),l.length){l.find(k=>{var N;return k.type==="List"&&((N=k.localState)==null?void 0:N.$type)==="Humany.Matching.Bots.Conversations.States.ContactState, Humany.Matching"});const y=l.find(k=>k.tags.includes("contact")&&k.type==="Contact");y&&v.push(Rt({messageId:f,message:[qt.ContactMethod,{contactMethodId:y.content.id,groupId:u.id,guideId:y.content.guideId}],group:u}))}return v}case"Contact":return[Rt({messageId:f,message:[qt.ContactMethod,{contactMethodId:c.content.id,groupId:u.id,guideId:c.content.guideId}],group:u})];case"Error":return[Rt({messageId:f,message:[Qn.HTML,{body:c.content.message||"Something went wrong."}],group:u})];default:return[]}},i=new Map([["Text",1],["Contact",2]]),o=[],s=e.sort((c,u)=>{const d=i.get(c.type)||20,f=i.get(u.type)||20;return d-f}).filter(c=>!c.relation).reduce((c,u)=>c.concat(u),[]),a=c=>typeof c.actions.selector<"u";for(const c of s){const u=e.filter(f=>f.relation===c.id&&!a(f)),l=ld({isUser:!1});(await r(c,l,u)).forEach(f=>{l.items.push(f)}),l.items.length&&o.push(l)}return o};class hd{constructor(e,n,r,i){S(this,"globalState");S(this,"localState");S(this,"clientId");S(this,"entries");this.endpoint=e,this.events=n,this.store=r,this.container=i,this.clientId=Ee(),this.entries=[]}async fetchGuide(e){const n={command:{guide:{id:e}},globalState:this.globalState,clientId:this.clientId};return await this.postEnvelope(n)}async postEnvelope(e,n){try{const r=await fetch(this.endpoint,this.getHttpOptions(e));if(!r.ok)throw r;const i=await r.json();return this.handleResponse(i,n)}catch(r){process.env.NODE_ENV!=="production"&&console.warn("Something went wrong when posting the envelope.");let i="Something went wrong";return(r.message==="Failed to fetch"||r.message==="NetworkError when attempting to fetch resource.")&&(i="Lost connection... Please try again."),this.handleResponse({entries:[{id:Ee(),type:"Error",timestamp:new Date().toISOString(),content:{message:i},actions:{},tags:[]}]})}}async handleResponse(e,n){this.entries=this.entries.concat(e.entries),this.store.write(this.entries,"entries");const r=e.entries.find(o=>o.type==="Widget");return r&&this.events.dispatch("provider:widget-entry",r.content),e.globalState&&(this.globalState=e.globalState,this.store.write(e.globalState,"globalState")),this.localState=e.entries.reduce((o,s)=>s.localState?s.localState:o,void 0),this.store.write(this.localState,"localState"),await fd(this.container,e.entries)}getHttpOptions(e){const n={method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"}};return e.funnel=this.container.get("$widget").name,e.localState=e.localState||this.localState,Object.assign({},n,{body:JSON.stringify(e),credentials:"same-origin"})}}const pd="@telia-ace/conversational-hub-bot-provider",md="0.0.11",vd="./index.js",gd="./index.d.ts",yd={".":{import:"./index.mjs",require:"./index.js"}},bd={"@telia-ace/widget-conversation":"*","@webprovisions/platform":"^1.1.4","@telia-ace/knowledge-widget-core":"*","@telia-ace/widget-utilities":"*","@telia-ace/widget-services":"*","@telia-ace/widget-core":"*","@emotion/styled":"11.11.0","@telia-ace/knowledge-data-client":"*","@telia-ace/knowledge-widget-adapters":"*","@telia-ace/knowledge-widget-ui":"*","@telia-ace/widget-forms":"*"},xd={"@emotion/react":"11.11.1","@emotion/styled":"11.11.0",react:"18.2.0"},Be={name:pd,version:md,main:vd,types:gd,exports:yd,dependencies:bd,peerDependencies:xd},wd=async t=>{var T,x,V,R,_;const e="chub-plugin",n=t.get("$widget"),r=(_=(R=(V=(x=(T=n==null?void 0:n.container)==null?void 0:T.get("$settings"))==null?void 0:x.components)==null?void 0:V.conversation)==null?void 0:R.properties)==null?void 0:_.conversationalHubPluginSettings;let i,o,s,a=(r==null?void 0:r.connectionAttempts)??5,c,u,l;se.info((Be==null?void 0:Be.name)+" version: "+(Be==null?void 0:Be.version)),id(t,qt.ContactMethod,Promise.resolve().then(()=>require("./contact-method-c5b03dd4.js")));const d=await rt(t,"conversational-hub-session",de.Necessary),f=(L,D)=>{const{knowledgeBotEndpoint:W}=D.properties();if(W)return`${W}/conversations`;const{data:U}=L.get("$settings");if(!U||!U.projection)throw new Error("Missing Knowledge Bot endpoint");return`${U.projection}/conversations`};(await hn.getInstance(t)).registerProvider(e,(L,D)=>{i=L,o=i.controller,s=i.createAgent({name:r==null?void 0:r.botName,avatar:r==null?void 0:r.avatar}),l=f(t,D);const{events:W}=t.get("$widget"),U=new cd(t);u=new hd(l,W,U,t),g();const q=()=>o.providers.includes(e);window.controller=o,D.actions.create("submit",z=>{const{events:Y}=t.get("$widget");Y.dispatch("conversational-hub-provider:form-submitted",z)}),D.actions.watch("conversation.action",(z,Y)=>(q()&&v(z),Y(z))),D.actions.watch("conversation.user-submit",(z,Y)=>{if(!q())return Y(z);y(z.text),i.user.print(z.text.replace(/</g,"<").replace(/>/g,">"))})});async function g(L=!0){const D=await Pe(t,"conversational-hub-session");D!=null&&D.sessionId?c=D==null?void 0:D.sessionId:await k(r.baseUrl+"/initialize",`{"extension": "${r.extension}"}`,L)}async function v(L){await k(`${r.baseUrl}/input/${c}`,`{"type":"button_click","language":"${r.language}","content":{"button_text":"${L.label}","value":"${L.actionKey}"}}`)}async function y(L){const D={text:L};await k(`${r.baseUrl}/input/${c}`,`{"type":"text","language":"${r.language}","content":${JSON.stringify(D)}}`)}async function k(L,D,W=!0){var Y,te,oe,ne;const U=i.loading();let q,z;try{q=await fetch(L,{method:"POST",body:D}),z=await(q==null?void 0:q.json())}catch(B){B instanceof SyntaxError?se.error("Incorrect JSON format.",B):se.error("Network error: check connection or baseUrl.",B),U(),s.print(r.errorMessage);return}if(!(q!=null&&q.ok)){if(se.error(`HTTP ${q==null?void 0:q.status}.`,JSON.stringify(z)),U(),!!((Y=z==null?void 0:z.errors)!=null&&Y.filter(b=>b.code==="1003").length)&&a>0){a--,await new Promise(w=>setTimeout(w,500)),await g(!1);const b=JSON.parse(D);(te=b==null?void 0:b.content)!=null&&te.text?await y(b.content.text):(oe=b==null?void 0:b.content)!=null&&oe.action&&await v((ne=b==null?void 0:b.content)==null?void 0:ne.action)}else s.print(r.errorMessage);return}U(),a=(r==null?void 0:r.connectionAttempts)??5,z!=null&&z.action_payload&&N(z.action_payload),c=z==null?void 0:z.session_id,d({sessionId:c}),W&&j(z)}async function N(L){var q;const D=(q=L==null?void 0:L.transfer_parameters)==null?void 0:q.contactGuide,W=i.loading(),U=await u.fetchGuide(parseInt(D));if(W(),U){const z=U.concat(U);if(z.length){const Y=z[0].items.map(te=>te.message);s.print(Y)}}}function j(L){var D;L==null||L.agent_response.forEach(W=>{s.print(W.payload.text)}),(D=L==null?void 0:L.prompt)!=null&&D.items&&s.print(["button-list",{actions:L.prompt.items.map(W=>{let U;return W.type==="button"&&(U={actionKey:W.value,label:W.text}),W.type==="link"&&(U={actionKey:W.value,label:W.text,data:{href:W.url,target:(r==null?void 0:r.linkTarget)??"_blank"}}),U})}])}};exports.Button=Ae;exports.ComponentNodeContext=So;exports.ComponentQuery=rr;exports.Confirm=ju;exports.ConversationContext=Lc;exports.ConversationalHubPlugin=wd;exports.FormBuilder=je;exports.Html=Tr;exports.Icon=Po;exports.ItemList=Qc;exports.Link=un;exports.List=ln;exports.Paragraph=jo;exports.StyledText=Xe;exports.SymbolBadge=st;exports.Text=rn;exports.TextLink=Du;exports.Typography=sn;exports.WidgetRenderState=ar;exports.appendClassNames=ie;exports.borderTabStyle=ye;exports.convertToStringAttributes=Ce;exports.css=G;exports.deepClone=or;exports.genericHtml=Fc;exports.headingElement=Je;exports.invertedHoverButton=Bc;exports.itemList=Uc;exports.keyframes=wr;exports.linkTabStyle=To;exports.list=on;exports.lock=nt;exports.newStyled=$;exports.paddedBorderTabStyle=Wc;exports.updateForm=ud;exports.useComponentPlatform=kr;exports.useContainer=He;exports.useIsMounted=Sr;exports.usePrevious=ko;exports.useRouter=Oo;exports.uuid=Ee;
|
|
1214
|
+
${n}`:e.length?`${e} ${n}`:n}dispose(){this.subscriptions.forEach(e=>{e()})}}class Jn{constructor(e,n){S(this,"id");S(this,"name");S(this,"avatar");S(this,"print",(e,n,r=null)=>{const i={name:this.name,avatar:this.avatar,id:this.id},o=fn(e,n);return r=r??o.timestamp,this.provider.createEntry(o.key,o.content,dn.Agent,i,r)});S(this,"typing",()=>this.provider.setTypingState({name:this.name,avatar:this.avatar}));this.provider=e,this.id=n.id||Ee(),this.name=n.name,this.avatar=n.avatar}update(e){var i;const{name:n,avatar:r}=e;r===null?this.avatar=void 0:r&&(this.avatar=r),n===null?this.name=void 0:n&&(this.name=n),(i=this.provider.controller)==null||i.events.dispatch("conversation:agent-updated",{agent:this})}}class Hr{constructor(e,n,r){S(this,"subscriptions",[]);S(this,"options");S(this,"user");this.name=e,this.container=n,this.controller=r,this.user=r==null?void 0:r.user,this.options={silent:!1}}static create(e,n,r){return new Hr(e,n,r)}createAgent(e={}){var n;if(this.controller){const r=this.controller.getAgentById(e.id),i=r?new Jn(this,{...r,...e}):new Jn(this,e);return r||(n=this.controller)==null||n.events.dispatch("conversation:agent-created",{agent:i}),i}}print(e){var n;return(n=this.controller)==null?void 0:n.print(e)}setTypingState(e,n){var r;return(r=this.controller)==null?void 0:r.setTypingState(e,n)}loading(){return this.controller?this.controller.loader():()=>()=>{}}createEntry(e,n,r,i,o){var s;return(s=this.controller)==null?void 0:s.createEntry(e,n,r,i,o)}dispose(){var e;process.env.NODE_ENV!=="production"&&console.log(`conversation-provider: dispose (${this.name})`),(e=this.controller)==null||e.disposeProvider(this),this.controller=null,this.subscriptions.forEach(n=>n())}isRehydrated(){var e;return((e=this.controller)==null?void 0:e.isRehydrated())||Promise.resolve(!1)}getHistory(){var e;return((e=this.controller)==null?void 0:e.getHistory())||[]}complete(){var e;(e=this.controller)==null||e.onCompleteProvider()}setOptions(e={silent:!1}){this.options=e}onUnreadMessage(e){var n;if(this.controller){const r=(n=this.controller)==null?void 0:n.onUnreadMessage(e);return this.subscriptions.push(r),()=>{r()}}}onMounted(e){var n;if(this.controller){const r=(n=this.controller)==null?void 0:n.events.subscribe("conversation:component-mount-changed",e);return this.subscriptions.push(r),e({},this.controller.getComponentMountedState()),()=>{r()}}}}const Go=t=>`conversation-${t}`;class Qu{constructor(){S(this,"_locking",Promise.resolve());S(this,"_locks",0)}isLocked(){return this._locks>0}lock(){this._locks+=1;let e;const n=new Promise(i=>e=()=>{this._locks-=1,i()}),r=this._locking.then(()=>e);return this._locking=this._locking.then(()=>n),r}}let ed=class{constructor(e,n,r){S(this,"sessionStorageKey");S(this,"locker",new Qu);S(this,"initialStoredAgents",[]);this.container=e,this.conversation=n,this.enabled=r,this.sessionStorageKey=Go(n.id),n.onStarted(async()=>{if(n.messages.length>0)return;const{agents:i}=await this.read(),o=[];i&&i.forEach(a=>{const c=n.providerIndex(a.providerName),u=c>-1?n.registeredProviders[c]:n.createProvider(a.providerName),l=new Jn(u,{name:a.name,avatar:a.avatar,id:a.id});o.push(l)});const{messages:s}=await this.read();s.forEach(a=>{switch(a.type){case"agent":{const c=o.find(u=>{var l;return u.id===((l=a.sender)==null?void 0:l.id)});c&&c.print(a.content.items||a.content,{key:a.key},a.timestamp);return}case"user":{n.user.print(a.content.items||a.content,{key:a.key},a.timestamp);return}case"system":default:n.print(a.content.items||a.content,a.timestamp)}})}),n.onMessageCreated(async(i,o)=>{this.write(o.message,"messages")}),n.events.subscribe("conversation:agent-created",async(i,o)=>{const s={id:o.agent.id,name:o.agent.name,avatar:o.agent.avatar,providerName:o.agent.provider.name};await this.write(s,"agents")}),n.events.subscribe("conversation:agent-updated",async(i,o)=>{const{agents:s}=await this.read();await this.write([...s.map(a=>a.id===o.agent.id?{...a,name:o.agent.name,avatar:o.agent.avatar}:a)],"agents","update")})}setInitialData(e){this.initialStoredAgents=e.agents}async isRehydrated(){const{messages:e}=await this.read();return e.length>0}getStoredAgent(e){if(this.enabled)return this.initialStoredAgents.find(n=>n.id===e)}async write(e,n,r="add"){if(!this.enabled)return;const i=await this.locker.lock();return rt(this.container,this.sessionStorageKey,de.Necessary).then(async o=>{if(r==="add"){const s=await this.read();if(n==="messages"&&s.messages.findIndex(c=>c.key===e.key)>-1){i();return}const a={...s};return n==="messages"?a.messages=[...a.messages,e]:n==="agents"&&(a.agents=[...a.agents,e]),o({...s,...a}).then(()=>{i()})}if(r==="update"&&n==="agents"){const s=await this.read();return o({...s,agents:e}).then(()=>{i()})}return o(e).then(()=>{i()})})}async read(){return Pe(this.container,this.sessionStorageKey).then(e=>e||{messages:[],agents:[]})}};class td{constructor(e){S(this,"print",(e,n,r=null)=>{const i=fn(e,n);return r=r??i.timestamp,this.controller.createEntry(i.key,i.content,dn.User,void 0,r)});this.controller=e}}const Xn=async(t,e,n)=>{const r=await t.getAsync("conversation"),i=await t.getAsync("components"),o=r.controllers.find(s=>s.conversation.id===e);if(o){const s=[...o.conversation.providers];s.forEach(c=>{o.conversation.setProviderOptions(c,{silent:!0})}),o.conversation.queueProviders(s),o.conversation.setProviders([n]);const a=i.components().ofType("conversation");i.write({key:"setConversationProvider",attributes:{properties:{providers:[n]}},target:a,provider:"localStorage"})}};class nd{constructor(e){this.writer=e}update(e){const n=this.getNormalizedSettings(e);this.writer(n)}remove(){this.writer(null)}getNormalizedSettings(e){return typeof e=="string"?{body:e}:e.length>-1&&typeof e=="object"?{items:e}:e}}var dn=(t=>(t.User="user",t.Agent="agent",t.System="system",t))(dn||{});const fn=(t,e)=>{let n,r=(e==null?void 0:e.key)||Ee(),i=Date.now();if(Array.isArray(t)&&t.length>-1)typeof t[0]=="string"?n={items:[t]}:n={items:t};else if(typeof t=="string")n={body:t};else if(t=t||{},t.type)n={...t};else{if(n={body:t.body,actions:t.actions,title:t.title},t.key&&(r=t.key),t.timestamp&&(i=t.timestamp),typeof t.form=="function"){const o=je.create(r);t.form(o);const s=o.get();n.form=s}t.timestamp===null&&(i=null)}return{content:n,key:r,timestamp:i}},Fi=(t,e)=>{if(!e)return;const n=JSON.stringify(e),r=t.findIndex(i=>n===JSON.stringify(i));if(r>-1)return t.splice(r,1)};class rd{constructor(e,n,r){S(this,"formHandlers",{});S(this,"user",new td(this));S(this,"events");S(this,"providers",[]);S(this,"active",!1);S(this,"queuedProviders",[]);S(this,"registeredProviders",[]);S(this,"loaders",0);S(this,"componentMounted",!1);S(this,"store");S(this,"messages",[]);S(this,"typingActors",[]);S(this,"conversationHistory");S(this,"print",(e,n=null)=>{const r=fn(e);return n=n??r.timestamp,this.createEntry(r.key,r.content,"system",void 0,n)});this.container=e,this.id=n;const i=e.get("$widget");this.events=i.events.createChild(this),this.store=new ed(e,this,r.rehydrate),this.conversationHistory=new Xu(this)}setInitialStorage(e){this.store.setInitialData(e)}setProviders(e){const n=[],r=[];this.providers.reduce((i,o)=>(e.indexOf(o)===-1&&i.push(o),i),[]).forEach(i=>{const o=this.providers.indexOf(i);o>-1&&(n.push(i),this.providers.splice(o,1))}),e.forEach(i=>{this.providers.indexOf(i)===-1&&(r.push(i),this.providers.push(i))}),(r.length||n.length)&&this.events.dispatch("conversation:providers-changed",{added:r,removed:n})}createProvider(e){const n=this.providerIndex(e);if(n>-1)return this.registeredProviders[n];const r=Hr.create(e,this.container,this);return this.registeredProviders.push(r),r}providerIndex(e){return this.registeredProviders.findIndex(n=>n.name===e)}getAgentById(e){if(e)return this.store.getStoredAgent(e)}dispose(){this.conversationHistory.dispose(),this.registeredProviders.forEach(e=>e.dispose()),this.messages=[],this.events.dispatch("conversation:controller-disposed",this),this.active=!1}onDispose(e){return this.events.subscribe("conversation:controller-disposed",e)}onStarted(e){return this.events.subscribe("conversation:started",e)}onMessageCreated(e){return this.events.subscribe("conversation:message-created",e)}isRehydrated(){return this.store.isRehydrated()}disposeProvider(e){const n=this.providerIndex(e.name);n>-1&&this.registeredProviders.splice(n,1),this.events.dispatch("conversation:providers-changed",{removed:[e.name]}),this.registeredProviders.length||this.dispose()}onProvidersChange(e){return this.events.subscribe("conversation:providers-changed",e)}setComponentMountedState(e){this.componentMounted!==e&&(this.componentMounted=e,e&&(this.events.dispatch("conversation:unread-message",!1),this.events.dispatch("conversation:started",!0),this.active=!0),this.events.dispatch("conversation:component-mount-changed",e))}setProviderOptions(e,n){const r=this.providerIndex(e);r>-1&&this.registeredProviders[r].setOptions(n)}changeProvider(e){this.registeredProviders.find(r=>r.name===e)&&Xn(this.container,this.id,e)}queueProviders(e){this.queuedProviders=e}onCompleteProvider(){const e=this.queuedProviders.pop();e&&Xn(this.container,this.id,e)}getComponentMountedState(){return this.componentMounted}onUnreadMessage(e){return this.events.subscribe("conversation:unread-message",e)}createEntry(e,n,r,i,o){const s={key:e,content:n,type:r,sender:i||null,timestamp:o||o===null?o:Date.now()};this.messages.push(s),s.type==="agent"&&Fi(this.typingActors,i);const a=new nd(c=>{if(c!==null){const{timestamp:u=void 0,...l}=c;s.content=l,u&&(s.timestamp=u)}else{const u=this.messages.indexOf(s);s.content=null,u>-1&&this.messages.splice(u,1)}this.events.dispatch("conversation:message-updated",{message:s}),this.update()});return this.events.dispatch("conversation:message-created",{message:s}),this.update(),this.componentMounted||this.events.dispatch("conversation:unread-message",!0),a}update(){this.events.dispatch("conversation:updated",{messages:this.messages,loading:this.loaders>0,typingActors:this.typingActors})}getMessageStream(){return{messages:this.messages,loading:this.loaders>0,typingActors:this.typingActors}}setTypingState(e,n){return this.typingActors.indexOf(e)===-1&&(this.typingActors.push(e),this.update()),()=>{Fi(this.typingActors,e),this.update()}}loader(){this.loaders=this.loaders+1;let e=!1;return this.loaders===1&&this.update(),()=>{e||(e=!0,this.loaders=this.loaders-1,this.loaders===0&&this.update())}}submitForm(e,n){this.formHandlers[e]={...this.formHandlers[e],submit:n}}validateForm(e,n){this.formHandlers[e]={...this.formHandlers[e],validate:n}}getHistory(){return this.conversationHistory.getConversationLogs()}}const qi=t=>{const{implementation:e}=t.get("$widget"),r=(e.container.get("modals")||[]).map(i=>i.close());return Promise.all(r)};var Qn=(t=>(t.LinkList="link-list",t.Separator="separator",t.ButtonList="button-list",t.ItemList="item-list",t.Text="text",t.HTML="html",t.VideoRequest="video-request",t))(Qn||{});const id=(t,e,n)=>t.getAsync("componentResolver").then(async r=>{(await hn.getInstance(t)).addSubscription(r.registerComponent(e,m.lazy(()=>n)))}),od=(t,e)=>{const n=t.split("_contact");return e.widgets.get(n[0])},zr=t=>{const e=t.get("$widget"),{name:n,implementation:r}=t.get("$widget"),i=n.indexOf("_contact")>-1?od(n,r):e,{data:o}=t.get("$settings"),{trigger:s}=i.container.get("$settings"),a=`${n.replace("_contact-method","").replace("_contact","")}_contact-method`,c=r.widgets.get(a);return c&&!s?{chatWidget:c,mainWidget:i,data:o}:{mainWidget:i,data:o}},sd=t=>{const{chatWidget:e}=zr(t);return!!e},Yi=(t,e,n)=>{const{mainWidget:r,data:i,chatWidget:o}=zr(t);return o?o.state==="activated"?o.invoke("open").then(()=>{o.container.getAsync("conversation").then(s=>{s.navigateToConversationIfActive(e.id).then(()=>qi(t))})}):o.activate().then(()=>{const{trigger:s}=o.container.get("$settings");return s.action="hide",o.invoke("setSettings",()=>({data:i,trigger:s,activate:!0})).then(()=>o.container.getAsync("components").then(a=>{const c=a.components().ofType("contact-method");a.write({key:"setContactMethodId",attributes:{properties:{id:e.id,guideId:e.guideId}},target:c,provider:"localStorage"});const u=a.components().ofType("conversation");a.write({key:"setConversationProvider",attributes:{properties:{providers:[e.clientName]}},target:u,provider:"localStorage"})}))}).then(()=>o.invoke("attach",{key:"contact-method",triggerDOMElement:n,withRenderState:"open"})).then(()=>(rt(o.container,"activeStickyWidget",de.Necessary,{medium:pe.Local,scope:Kt.Implementation}).then(s=>s(o.name)),o.container.getAsync("conversation").then(s=>{s.setConversationEndedBehavior(Ft.Deactivate)}).then(()=>qi(t)).then(()=>!1))):(r.container.getAsync("conversation").then(s=>s.navigateToConversationIfActive(e.id).then(()=>s.setConversationEndedBehavior(Ft.Navigate))),!o)},ad=(t,e,n="conversation")=>{const{mainWidget:r,chatWidget:i}=zr(t);return i?i.container.getAsync("router").then(o=>{o.navigate(n,{id:e.id})}):r.container.getAsync("conversation").then(o=>{var s;(s=o.setConversationEndedBehavior(Ft.Navigate))==null||s.then(()=>{r.container.getAsync("router").then(a=>{r.container.getAsync("components").then(c=>{const u=c.components().ofType("conversation");c.write({key:"setConversationProvider",attributes:{properties:{providers:[e.clientName]}},target:u,provider:"localStorage"})}).then(()=>{a.navigate(n,{id:e.id})})})})})},ut="conversations";var Ft=(t=>(t.Deactivate="deactivate",t.Navigate="navigate",t.None="none",t))(Ft||{});class hn{constructor(e,n){S(this,"events");S(this,"controllers",[]);S(this,"providers",[]);S(this,"disposeProviders",{});S(this,"subscriptions",[]);S(this,"storageWriter",null);S(this,"router",null);S(this,"buttonQuery",null);S(this,"sessionInfo",null);this.container=e,this.components=n;const r=e.get("$widget");this.events=r.events.createChild(this)}initialize(){rt(this.container,ut,de.Necessary,{medium:pe.Local}).then(e=>this.storageWriter=e),Pe(this.container,ut,pe.Local).then(e=>{this.buttonQuery=this.components.components().ofType("conversation-return-button"),e&&(this.sessionInfo=e,e.id&&e.route&&this.writeToComponents({active:!0,alert:{show:!1}}))}),this.container.getAsync("router").then(e=>this.router=e),this.events.subscribe("conversation:ended",(e,n)=>{var r,i,o;switch((r=this.sessionInfo)==null?void 0:r.conversationEndedBehavior){case"deactivate":this.container.get("$widget").deactivate();break;case"navigate":const a=(i=this.router)==null?void 0:i.getInitialRoute();a&&((o=this.router)==null||o.navigate(a.name));break}this.writeToComponents({active:!1}),this.sessionInfo=null,this.storageWriter&&this.storageWriter()})}addSubscription(e){this.subscriptions.push(e)}static getInstance(e,n="conversation"){return nt(e)(()=>e.getAsync(n).then(r=>{let i=r;return i||Gi.getInstance(e).then(o=>(i=new hn(e,o),i.initialize(),e.registerAsync(n,()=>i),i))}))}navigateToConversationIfActive(e){return Pe(this.container,ut,pe.Local).then(n=>{var r;if(n&&n.id===e&&n.route){const{name:i,params:o}=n.route;(r=this.router)==null||r.navigate(i,o)}})}setConversationEndedBehavior(e){return Pe(this.container,ut,pe.Local).then(n=>{let r=n;return r?r.conversationEndedBehavior=e:r={conversationEndedBehavior:e},this.sessionInfo=r,this.storageWriter&&this.storageWriter(this.sessionInfo)||Promise.resolve()})}async createController(e,n){const r=Go(e),{agents:i}=await Pe(this.container,r)||{agents:[]},o=this.controllers.findIndex(a=>a.conversation.id===e);let s;return o>-1?s=this.controllers[o].conversation:s=new rd(this.container,e,n),s.setInitialStorage({agents:i||[]}),s}registerProvider(e,n){const r={name:e,handler:n};this.providers.push(r),this.controllers.filter(i=>i.conversation.providers.indexOf(e)>-1).forEach(i=>{this.invokeHandler(r,i)})}registerController(e,n){const r=this.controllers.findIndex(o=>o.conversation.id===e.id);let i;if(r<0){i={conversation:e,component:n},this.controllers.push(i);const o=s=>{s&&this.providers.filter(a=>s.indexOf(a.name)>-1).forEach(a=>{this.invokeHandler(a,i)})};return this.subscriptions.push(e.onDispose((s,a)=>{const c=this.controllers.findIndex(u=>u.conversation===a);c>-1&&this.controllers.splice(c,1),this.components.components().ofType("conversation-return-button").select().writeProperties({active:!1}),this.events.dispatch("conversation:ended",{},{bubbles:!0})})),this.subscriptions.push(e.onProvidersChange((s,a)=>{const{added:c,removed:u=[]}=a;u.forEach(l=>{(this.disposeProviders[l]||[]).forEach(d=>{d()})}),o(c)})),this.subscriptions.push(e.onStarted((s,a)=>{var u,l;const c={id:e.id,route:(u=this.router)==null?void 0:u.getRouteData(),conversationEndedBehavior:(l=this.sessionInfo)==null?void 0:l.conversationEndedBehavior};this.sessionInfo=c,this.storageWriter&&this.storageWriter(c),this.writeToComponents({active:a})})),this.subscriptions.push(e.onUnreadMessage((s,a)=>{this.events.dispatch("conversation:unread-message",a),this.writeToComponents({alert:{show:a}})})),o(e.providers),!0}return i=this.controllers[r],!1}writeToComponents(e,n="conversationReturnButtonState"){this.buttonQuery&&this.components.write({key:"conversationReturnButtonState",attributes:{properties:e},target:this.buttonQuery,provider:"localStorage"})}invokeHandler(e,n){const r=e.handler(n.conversation.createProvider(e.name),n.component);r&&(this.disposeProviders[e.name]||(this.disposeProviders[e.name]=[]),this.disposeProviders[e.name].push(r))}getComponentRoute(){return Pe(this.container,ut,pe.Local).then(e=>e==null?void 0:e.route)}dispose(){Object.keys(this.disposeProviders).forEach(e=>{this.disposeProviders[e].forEach(n=>{n()})}),this.subscriptions.forEach(e=>{e()}),this.controllers=[],this.providers=[]}static async handleContactMethodClick(e,n,r,i){if(sd(n)){e.preventDefault();let o=document.getElementById("humany-dynamic-anchor");o||(o=document.createElement("a"),o.setAttribute("href","#"),o.id="humany-dynamic-anchor",document.body.appendChild(o)),Yi(n,r,o)}Yi(n,r)}static async handleContactMethodSubmit(e,n){var r,i;return(i=(r=n==null?void 0:n.body.form.meta)==null?void 0:r.conversation)!=null&&i.id?Xn(e,n.body.form.meta.conversation.id,n.clientName):ad(e,n)}}class cd{constructor(e){S(this,"enabled",!0);S(this,"botProviderGlobalStateKey","bot-provider-global-state");S(this,"botProviderLocalStateKey","bot-provider-local-state");S(this,"botProviderEntriesKey","bot-provider-entries");S(this,"botProviderMetaStateKey","bot-provider-conversation-meta");this.container=e}getKey(e){let n;switch(e){case"localState":n=this.botProviderLocalStateKey;break;case"globalState":n=this.botProviderGlobalStateKey;break;case"entries":n=this.botProviderEntriesKey;break;case"meta":n=this.botProviderMetaStateKey;break}return n}async read(e){const n=this.getKey(e);if(!(!this.enabled||!n))return Pe(this.container,n)}async write(e,n){const r=this.getKey(n);if(!this.enabled||!r)return;(await rt(this.container,r,de.Necessary))(e)}}var qt=(t=>(t.ContactMethod="ace-conversational-hub-contact-method",t))(qt||{});const ld=({isUser:t,items:e=[],meta:n={}})=>{const r=Ee();return{id:r,isUser:t,items:e.map(o=>({id:o.id||Ee(),isUser:t,groupId:r,message:o.message||[]})),meta:n}},ud=(t,{submit:e,errors:n,meta:r})=>{var i;if((i=t==null?void 0:t.body)!=null&&i.form){const{body:o}=t,s=new je(o.form);return o.form.layout.submit||s.createComponent(Rs(e,"submit")),n&&s.setValidationErrors(n),r&&s.setMeta(r),{...o,form:s.get()}}return(t==null?void 0:t.body)||{}},dd=async(t,e,n)=>{(await(await t.getAsync("dataClient")).getClient()).parameters.set(e,n)},Rt=({messageId:t,message:e,group:n})=>({id:t,message:e,groupId:n.id,isUser:n.isUser}),fd=async(t,e,n)=>{const r=async(c,u,l=[],d)=>{var p,g;const f=Ee();switch(c.type!=="List"&&c.tags.includes("guide")&&((g=(p=c.content.hints)==null?void 0:p[0])!=null&&g.id)&&await dd(t,"LastGuideId",c.content.hints[0].id),c.type){case"Text":{const v=[];if(v.push(Rt({messageId:f,message:[Qn.HTML,{body:c.content.html}],group:u})),l.length){l.find(k=>{var N;return k.type==="List"&&((N=k.localState)==null?void 0:N.$type)==="Humany.Matching.Bots.Conversations.States.ContactState, Humany.Matching"});const y=l.find(k=>k.tags.includes("contact")&&k.type==="Contact");y&&v.push(Rt({messageId:f,message:[qt.ContactMethod,{contactMethodId:y.content.id,groupId:u.id,guideId:y.content.guideId}],group:u}))}return v}case"Contact":return[Rt({messageId:f,message:[qt.ContactMethod,{contactMethodId:c.content.id,groupId:u.id,guideId:c.content.guideId}],group:u})];case"Error":return[Rt({messageId:f,message:[Qn.HTML,{body:c.content.message||"Something went wrong."}],group:u})];default:return[]}},i=new Map([["Text",1],["Contact",2]]),o=[],s=e.sort((c,u)=>{const d=i.get(c.type)||20,f=i.get(u.type)||20;return d-f}).filter(c=>!c.relation).reduce((c,u)=>c.concat(u),[]),a=c=>typeof c.actions.selector<"u";for(const c of s){const u=e.filter(f=>f.relation===c.id&&!a(f)),l=ld({isUser:!1});(await r(c,l,u)).forEach(f=>{l.items.push(f)}),l.items.length&&o.push(l)}return o};class hd{constructor(e,n,r,i){S(this,"globalState");S(this,"localState");S(this,"clientId");S(this,"entries");this.endpoint=e,this.events=n,this.store=r,this.container=i,this.clientId=Ee(),this.entries=[]}async fetchGuide(e){const n={command:{guide:{id:e}},globalState:this.globalState,clientId:this.clientId};return await this.postEnvelope(n)}async postEnvelope(e,n){try{const r=await fetch(this.endpoint,this.getHttpOptions(e));if(!r.ok)throw r;const i=await r.json();return this.handleResponse(i,n)}catch(r){process.env.NODE_ENV!=="production"&&console.warn("Something went wrong when posting the envelope.");let i="Something went wrong";return(r.message==="Failed to fetch"||r.message==="NetworkError when attempting to fetch resource.")&&(i="Lost connection... Please try again."),this.handleResponse({entries:[{id:Ee(),type:"Error",timestamp:new Date().toISOString(),content:{message:i},actions:{},tags:[]}]})}}async handleResponse(e,n){this.entries=this.entries.concat(e.entries),this.store.write(this.entries,"entries");const r=e.entries.find(o=>o.type==="Widget");return r&&this.events.dispatch("provider:widget-entry",r.content),e.globalState&&(this.globalState=e.globalState,this.store.write(e.globalState,"globalState")),this.localState=e.entries.reduce((o,s)=>s.localState?s.localState:o,void 0),this.store.write(this.localState,"localState"),await fd(this.container,e.entries)}getHttpOptions(e){const n={method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"}};return e.funnel=this.container.get("$widget").name,e.localState=e.localState||this.localState,Object.assign({},n,{body:JSON.stringify(e),credentials:"same-origin"})}}const pd="@telia-ace/conversational-hub-bot-provider",md="0.0.12",vd="./index.js",gd="./index.d.ts",yd={".":{import:"./index.mjs",require:"./index.js"}},bd={"@telia-ace/widget-conversation":"*","@webprovisions/platform":"^1.1.4","@telia-ace/knowledge-widget-core":"*","@telia-ace/widget-utilities":"*","@telia-ace/widget-services":"*","@telia-ace/widget-core":"*","@telia-ace/knowledge-data-client":"*","@telia-ace/knowledge-widget-adapters":"*","@telia-ace/knowledge-widget-ui":"*","@telia-ace/widget-forms":"*"},xd={"@emotion/react":"11.11.1","@emotion/styled":"11.11.0",react:"18.2.0"},Be={name:pd,version:md,main:vd,types:gd,exports:yd,dependencies:bd,peerDependencies:xd},wd=async t=>{var T,x,V,R,_;const e="chub-plugin",n=t.get("$widget"),r=(_=(R=(V=(x=(T=n==null?void 0:n.container)==null?void 0:T.get("$settings"))==null?void 0:x.components)==null?void 0:V.conversation)==null?void 0:R.properties)==null?void 0:_.conversationalHubPluginSettings;let i,o,s,a=(r==null?void 0:r.connectionAttempts)??5,c,u,l;se.info((Be==null?void 0:Be.name)+" version: "+(Be==null?void 0:Be.version)),id(t,qt.ContactMethod,Promise.resolve().then(()=>require("./contact-method-e5c435a7.js")));const d=await rt(t,"conversational-hub-session",de.Necessary),f=(L,D)=>{const{knowledgeBotEndpoint:W}=D.properties();if(W)return`${W}/conversations`;const{data:U}=L.get("$settings");if(!U||!U.projection)throw new Error("Missing Knowledge Bot endpoint");return`${U.projection}/conversations`};(await hn.getInstance(t)).registerProvider(e,(L,D)=>{i=L,o=i.controller,s=i.createAgent({name:r==null?void 0:r.botName,avatar:r==null?void 0:r.avatar}),l=f(t,D);const{events:W}=t.get("$widget"),U=new cd(t);u=new hd(l,W,U,t),g();const q=()=>o.providers.includes(e);window.controller=o,D.actions.create("submit",z=>{const{events:Y}=t.get("$widget");Y.dispatch("conversational-hub-provider:form-submitted",z)}),D.actions.watch("conversation.action",(z,Y)=>(q()&&v(z),Y(z))),D.actions.watch("conversation.user-submit",(z,Y)=>{if(!q())return Y(z);y(z.text),i.user.print(z.text.replace(/</g,"<").replace(/>/g,">"))})});async function g(L=!0){const D=await Pe(t,"conversational-hub-session");D!=null&&D.sessionId?c=D==null?void 0:D.sessionId:await k(r.baseUrl+"/initialize",`{"extension": "${r.extension}"}`,L)}async function v(L){await k(`${r.baseUrl}/input/${c}`,`{"type":"button_click","language":"${r.language}","content":{"button_text":"${L.label}","value":"${L.actionKey}"}}`)}async function y(L){const D={text:L};await k(`${r.baseUrl}/input/${c}`,`{"type":"text","language":"${r.language}","content":${JSON.stringify(D)}}`)}async function k(L,D,W=!0){var Y,te,oe,ne;const U=i.loading();let q,z;try{q=await fetch(L,{method:"POST",body:D}),z=await(q==null?void 0:q.json())}catch(B){B instanceof SyntaxError?se.error("Incorrect JSON format.",B):se.error("Network error: check connection or baseUrl.",B),U(),s.print(r.errorMessage);return}if(!(q!=null&&q.ok)){if(se.error(`HTTP ${q==null?void 0:q.status}.`,JSON.stringify(z)),U(),!!((Y=z==null?void 0:z.errors)!=null&&Y.filter(b=>b.code==="1003").length)&&a>0){a--,await new Promise(w=>setTimeout(w,500)),await g(!1);const b=JSON.parse(D);(te=b==null?void 0:b.content)!=null&&te.text?await y(b.content.text):(oe=b==null?void 0:b.content)!=null&&oe.action&&await v((ne=b==null?void 0:b.content)==null?void 0:ne.action)}else s.print(r.errorMessage);return}U(),a=(r==null?void 0:r.connectionAttempts)??5,z!=null&&z.action_payload&&N(z.action_payload),c=z==null?void 0:z.session_id,d({sessionId:c}),W&&j(z)}async function N(L){var q;const D=(q=L==null?void 0:L.transfer_parameters)==null?void 0:q.contactGuide,W=i.loading(),U=await u.fetchGuide(parseInt(D));if(W(),U){const z=U.concat(U);if(z.length){const Y=z[0].items.map(te=>te.message);s.print(Y)}}}function j(L){var D;L==null||L.agent_response.forEach(W=>{s.print(W.payload.text)}),(D=L==null?void 0:L.prompt)!=null&&D.items&&s.print(["button-list",{actions:L.prompt.items.map(W=>{let U;return W.type==="button"&&(U={actionKey:W.value,label:W.text}),W.type==="link"&&(U={actionKey:W.value,label:W.text,data:{href:W.url,target:(r==null?void 0:r.linkTarget)??"_blank"}}),U})}])}};exports.Button=Ae;exports.ComponentNodeContext=So;exports.ComponentQuery=rr;exports.Confirm=ju;exports.ConversationContext=Lc;exports.ConversationalHubPlugin=wd;exports.FormBuilder=je;exports.Html=Tr;exports.Icon=Po;exports.ItemList=Qc;exports.Link=un;exports.List=ln;exports.Paragraph=jo;exports.StyledText=Xe;exports.SymbolBadge=st;exports.Text=rn;exports.TextLink=Du;exports.Typography=sn;exports.WidgetRenderState=ar;exports.appendClassNames=ie;exports.borderTabStyle=ye;exports.convertToStringAttributes=Ce;exports.css=G;exports.deepClone=or;exports.genericHtml=Fc;exports.headingElement=Je;exports.invertedHoverButton=Bc;exports.itemList=Uc;exports.keyframes=wr;exports.linkTabStyle=To;exports.list=on;exports.lock=nt;exports.newStyled=$;exports.paddedBorderTabStyle=Wc;exports.updateForm=ud;exports.useComponentPlatform=kr;exports.useContainer=He;exports.useIsMounted=Sr;exports.usePrevious=ko;exports.useRouter=Oo;exports.uuid=Ee;
|
package/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-b42c4c70.js");require("react/jsx-runtime");require("react");require("react-dom");exports.ConversationalHubPlugin=e.ConversationalHubPlugin;
|
package/index.mjs
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@telia-ace/conversational-hub-bot-provider",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.12",
|
|
4
4
|
"main": "./index.js",
|
|
5
5
|
"types": "./index.d.ts",
|
|
6
6
|
"exports": {
|
|
@@ -16,7 +16,6 @@
|
|
|
16
16
|
"@telia-ace/widget-utilities": "*",
|
|
17
17
|
"@telia-ace/widget-services": "*",
|
|
18
18
|
"@telia-ace/widget-core": "*",
|
|
19
|
-
"@emotion/styled": "11.11.0",
|
|
20
19
|
"@telia-ace/knowledge-data-client": "*",
|
|
21
20
|
"@telia-ace/knowledge-widget-adapters": "*",
|
|
22
21
|
"@telia-ace/knowledge-widget-ui": "*",
|