@livechat/customer-sdk 3.1.5 → 4.0.0

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.
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).CustomerSDK={})}(this,(function(e){"use strict";function t(){return(t=Object.assign?Object.assign.bind():function(e){for(var t=1;arguments.length>t;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function n(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;a.length>r;r++)0>t.indexOf(n=a[r])&&(o[n]=e[n]);return o}function r(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}var o="__test_storage_support__",a="@@test",i=function(){var e=Object.create(null);return{getItem:function(t){var n=e[t];return"string"==typeof n?n:null},setItem:function(t,n){e[t]=n},removeItem:function(t){delete e[t]},clear:function(){e=Object.create(null)}}}(),c=function(e){void 0===e&&(e="local");try{var t="session"===e?window.sessionStorage:window.localStorage;return t.setItem(o,a),t.getItem(o)!==a?!1:(t.removeItem(o),!0)}catch(e){return!1}}()?window.localStorage:i,s=function(e,t){return new Promise((function(n){return n(c.setItem(e,t))}))},u=function(e){return new Promise((function(t){return t(c.getItem(e))}))},d=function(e){return new Promise((function(t){return t(c.removeItem(e))}))},p={}.hasOwnProperty;function l(e,t){return p.call(t,e)}function f(e,t){var n;return(n=[]).concat.apply(n,t.map(e))}var h=Array.isArray;function v(e,t){return Object.keys(t).reduce((function(n,r){return n[r]=e(t[r]),n}),{})}function _(e){return e}function y(e){var t=Math.random().toString(36).substring(2);return l(t,e)?y(e):t}function m(e,t){return-1!==t.indexOf(e)}function g(){}function I(e){return Object.keys(e).map((function(t){return e[t]}))}function E(e,t){return e.reduce((function(e,n){return l(n,t)&&(e[n]=t[n]),e}),{})}var b=function(e){return Object.keys(e).map((function(t){return[t,e[t]]}))},T=function(e,t){return e===t?0:t>e?-1:1};var w=function(e){return b(e).map((function(e){return e.map(encodeURIComponent).join("=")})).join("&")},O=/[^:]+:\/\/[^(/|?)\s]+/,S=function(e){var t=e.match(O);return t&&t[0]},k=function(e){return e.replace(/\w/g,"$&[\\r\\n\\t]*")},P=(RegExp("^[\0-]*("+k("javascript")+"|"+k("data")+"):","i"),/^((http(s)?:)?\/\/)/);function C(e,t){return t=t||{},new Promise((function(n,r){var o=new XMLHttpRequest,a=[],i=[],c={},s=function(){return{ok:2==(o.status/100|0),statusText:o.statusText,status:o.status,url:o.responseURL,text:function(){return Promise.resolve(o.responseText)},json:function(){return Promise.resolve(o.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([o.response]))},clone:s,headers:{keys:function(){return a},entries:function(){return i},get:function(e){return c[e.toLowerCase()]},has:function(e){return e.toLowerCase()in c}}}};for(var u in o.open(t.method||"get",e,!0),o.onload=function(){o.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,(function(e,t,n){a.push(t=t.toLowerCase()),i.push([t,n]),c[t]=c[t]?c[t]+","+n:n})),n(s())},o.onerror=r,o.withCredentials="include"==t.credentials,t.headers)o.setRequestHeader(u,t.headers[u]);o.send(t.body||null)}))}var N=function(e){var t=e.code,n=Error(e.message);return n.code=t,n},x=function(e,t){if("identity_exception"in e)throw N({code:"SSO_IDENTITY_EXCEPTION",message:e.identity_exception});if("oauth_exception"in e)throw N({code:"SSO_OAUTH_EXCEPTION",message:e.oauth_exception});return{accessToken:e.access_token,entityId:e.entity_id,expiresIn:1e3*e.expires_in,tokenType:e.token_type,creationDate:Date.now(),licenseId:t}},j="https://accounts.livechatinc.com",D=function(e,t){return""+("production"===t?j:j.replace("accounts.","accounts."+t+"."))+function(e){return(e.uniqueGroups?"/licence/g"+e.licenseId+"_"+e.groupId:"")+"/customer"}(e)},q="https://accounts.livechatinc.com",R="@livechat/customer-auth",A=function(e,t){var n=function(e,t){return{license_id:e.licenseId+"",flow:"button",response_type:"token",client_id:e.clientId,redirect_uri:t,post_message_uri:t,state:R}}(e,S(window.location+"")+window.location.pathname),r=document.createElement("iframe");return r.style.display="none",r.setAttribute("src",D(e,t)+"?"+w(n)),r};function M(e,t){var n=e.licenseId,r=function(e){return"production"===e?q:q.replace("accounts.","accounts."+e+".")}(t);return new Promise((function(o,a){var i=A(e,t),c=function(){var e,t;(t=(e=i).parentNode)&&t.removeChild(e),window.removeEventListener("message",u,!1)},s=setTimeout((function(){c(),a(N({message:"Request timed out.",code:"REQUEST_TIMEOUT"}))}),15e3),u=function(e){var t=e.data;if(e.origin===r&&function(e){return e&&e.state===R}(t)){clearTimeout(s),c();try{o(x(t,n))}catch(e){a(e)}}};window.addEventListener("message",u,!1),new Promise((function(e){!function t(){document.body?e(document.body):setTimeout(t,100)}()})).then((function(e){e.appendChild(i)}))}))}var U=function(e){if("number"!=typeof e.licenseId||"string"!=typeof e.clientId)throw Error("You need to pass valid configuration object: { licenseId, clientId }.")},L=function(e,t){U(e);var n="@@lc_auth_token:"+e.licenseId+(e.uniqueGroups?":"+e.groupId:""),r=null,o=null,a=u(n).then((function(e){null!==a&&(a=null,e&&(o=JSON.parse(e)))})),i=function(){return r=function(e,t){return e.uniqueGroups?M(e,t):C(D(e,t)+"/token",{method:"POST",credentials:"include",body:JSON.stringify({response_type:"token",grant_type:"cookie",client_id:e.clientId,license_id:e.licenseId,redirect_uri:S(window.location+"")+window.location.pathname})}).then((function(e){return e.json()})).then((function(t){return x(t,e.licenseId)}))}(e,t).then((function(e){return r=null,s(n,JSON.stringify(e)),o=e,e}),(function(e){throw r=null,e}))};return{getFreshToken:i,getToken:function e(){return r||(o&&!function(e){var t=e.creationDate,n=e.expiresIn;return Date.now()>=t+n}(o)?Promise.resolve(o):a?a.then(e):i())},hasToken:function e(){return a?a.then(e):Promise.resolve(!!o)},invalidate:function(){return o=null,a=null,d(n)}}};var H=function(){var e,r={all:e=e||new Map,on:function(t,n){var r=e.get(t);r?r.push(n):e.set(t,[n])},off:function(t,n){var r=e.get(t);r&&(n?r.splice(r.indexOf(n)>>>0,1):e.set(t,[]))},emit:function(t,n){var r=e.get(t);r&&r.slice().map((function(e){e(n)})),(r=e.get("*"))&&r.slice().map((function(e){e(t,n)}))}},o=r.all,a=n(r,["all"]);return t({},a,{off:function(e,t){e?a.off(e,t):o.clear()},once:function(e,t){a.on(e,(function n(r,o){a.off(e,n),t(r,o)}))}})},F="change_region",G="check_goals",Y="destroy",V="fail_all_requests",z="login_success",B="pause_connection",J="prefetch_token",K="push_received",X="push_response_received",W="reconnect",Q="request_failed",Z="response_received",$="send_request",ee="set_chat_active",te="set_self_id",ne="socket_connected",re="socket_disconnected",oe="socket_recovered",ae="socket_unstable",ie="start_connection",ce="update_customer_page",se="CONNECTION_LOST",ue="IDENTITY_MISMATCH",de="MISDIRECTED_CONNECTION",pe="MISSING_CHAT_THREAD",le="SDK_DESTROYED",fe="accept_greeting",he="cancel_greeting",ve="delete_chat_properties",_e="delete_event_properties",ye="delete_thread_properties",me="get_chat",ge="get_customer",Ie="get_form",Ee="get_predicted_agent",be="get_url_info",Te="list_chats",we="list_group_statuses",Oe="list_threads",Se="login",ke="mark_events_as_seen",Pe="resume_chat",Ce="send_event",Ne="send_rich_message_postback",xe="send_sneak_peek",je="set_customer_session_fields",De="start_chat",qe="update_chat_properties",Re="update_customer",Ae="update_customer_page",Me="update_event_properties",Ue="update_thread_properties";var Le=function(e){var t,n=e.Symbol;return"function"==typeof n?n.observable?t=n.observable:(t=n("observable"),n.observable=t):t="@@observable",t}("undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof module?module:Function("return this")()),He=function(){return Math.random().toString(36).substring(7).split("").join(".")},Fe={INIT:"@@redux/INIT"+He(),REPLACE:"@@redux/REPLACE"+He(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+He()}};function Ge(e){if("object"!=typeof e||null===e)return!1;for(var t=e;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function Ye(e,t,n){var r;if("function"==typeof t&&"function"==typeof n||"function"==typeof n&&"function"==typeof arguments[3])throw Error("It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function.");if("function"==typeof t&&void 0===n&&(n=t,t=void 0),void 0!==n){if("function"!=typeof n)throw Error("Expected the enhancer to be a function.");return n(Ye)(e,t)}if("function"!=typeof e)throw Error("Expected the reducer to be a function.");var o=e,a=t,i=[],c=i,s=!1;function u(){c===i&&(c=i.slice())}function d(){if(s)throw Error("You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.");return a}function p(e){if("function"!=typeof e)throw Error("Expected the listener to be a function.");if(s)throw Error("You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api-reference/store#subscribe(listener) for more details.");var t=!0;return u(),c.push(e),function(){if(t){if(s)throw Error("You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api-reference/store#subscribe(listener) for more details.");t=!1,u();var n=c.indexOf(e);c.splice(n,1)}}}function l(e){if(!Ge(e))throw Error("Actions must be plain objects. Use custom middleware for async actions.");if(void 0===e.type)throw Error('Actions may not have an undefined "type" property. Have you misspelled a constant?');if(s)throw Error("Reducers may not dispatch actions.");try{s=!0,a=o(a,e)}finally{s=!1}for(var t=i=c,n=0;t.length>n;n++){(0,t[n])()}return e}function f(e){if("function"!=typeof e)throw Error("Expected the nextReducer to be a function.");o=e,l({type:Fe.REPLACE})}function h(){var e,t=p;return(e={subscribe:function(e){if("object"!=typeof e||null===e)throw new TypeError("Expected the observer to be an object.");function n(){e.next&&e.next(d())}return n(),{unsubscribe:t(n)}}})[Le]=function(){return this},e}return l({type:Fe.INIT}),(r={dispatch:l,subscribe:p,getState:d,replaceReducer:f})[Le]=h,r}function Ve(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ze(e,t){var n=Object.keys(e);return Object.getOwnPropertySymbols&&n.push.apply(n,Object.getOwnPropertySymbols(e)),t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n}function Be(e){for(var t=1;arguments.length>t;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ze(n,!0).forEach((function(t){Ve(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ze(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Je(){for(var e=arguments.length,t=Array(e),n=0;e>n;n++)t[n]=arguments[n];return 0===t.length?function(e){return e}:1===t.length?t[0]:t.reduce((function(e,t){return function(){return e(t.apply(void 0,arguments))}}))}function Ke(){for(var e=arguments.length,t=Array(e),n=0;e>n;n++)t[n]=arguments[n];return function(e){return function(){var n=e.apply(void 0,arguments),r=function(){throw Error("Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.")},o={getState:n.getState,dispatch:function(){return r.apply(void 0,arguments)}},a=t.map((function(e){return e(o)}));return Be({},n,{dispatch:r=Je.apply(void 0,a)(n.dispatch)})}}}function Xe(){var e={};return e.promise=new Promise((function(t,n){e.resolve=t,e.reject=n})),e}var We="connected",Qe="destroyed",Ze="disconnected",$e="agent",et="customer",tt=function(e){return e.connection.status},nt=function(e,t){return e.requests[t]},rt=function(e){return e.users.self.id},ot=function(e,t){var n=e.chats[t];return!!n&&n.active},at=function(e){return tt(e)===We},it=function(e){var t=e.region;return"https://api"+(t?"-"+t:"")+function(e){var t=e.env;return 1520===e.licenseId?".staging":"production"===t?"":"."+t}(e)+".livechatinc.com"},ct=function(e){return it(e)+"/v3.3/customer"},st=function(e,o){return t({},e,{requests:n(e.requests,[o.id].map(r))})},ut=function(e,n){return t({},n,{connection:t({},n.connection,{status:e})})},dt=function(e){var n,r,o;return r=e,(n={}).change_region=function(e,n){return t({},e,{region:n.region})},n.destroy=function(e){return ut(Qe,e)},n.login_success=function(e){return ut(We,e)},n.pause_connection=function(e){return ut("paused",e)},n.request_failed=st,n.response_received=st,n.push_response_received=st,n.send_request=function(e,n){var r,o=n.id;return t({},e,{requests:t({},e.requests,(r={},r[o]={id:o,promise:n.promise,resolve:n.resolve,reject:n.reject,request:n.request},r))})},n.set_chat_active=function(e,n){var r,o=n.id;return t({},e,{chats:t({},e.chats,(r={},r[o]=t({},e.chats[o],{active:n.active}),r))})},n.set_self_id=function(e,n){return t({},e,{users:t({},e.users,{self:t({},e.users.self,{id:n.id})})})},n.socket_disconnected=function(e){var n=tt(e);return t({},ut(n===Ze?Ze:"reconnecting",e),{requests:{}})},n.update_customer_page=function(e,n){return t({},e,{page:t({},e.page,n)})},(o=n)[void 0]&&console.warn("Reducer contains an 'undefined' action type.\nHave you misspelled a constant?"),function(e,t){return void 0===e&&(e=r),l(t.type,o)?o[t.type](e,t.payload):e}};function pt(e){var n=_,r=function(){var e=[],t=function(t){return function(n){return function(r){var o=n(r);return e.forEach((function(e){e(r,t)})),o}}};return t.add=function(t){e.push(t)},t}(),o=Ye(dt(function(e){var n=e.application,r=e.licenseId,o=e.groupId,a=void 0===o?null:o,i=e.env,c=e.page,s=void 0===c?null:c,u=e.region,d=void 0===u?null:u,p=e.referrer,l=void 0===p?null:p,f=e.uniqueGroups,h=void 0!==f&&f,v=e.mobile,_=void 0!==v&&v;return{application:t({},void 0===n?{}:n,{name:"customer_sdk",version:"3.1.5"}),licenseId:r,env:i,groupId:a,chats:{},connection:{status:Ze},page:s,region:d,referrer:l,requests:{},users:{self:{id:null,type:et},others:{}},uniqueGroups:h,mobile:_}}(e)),n(Ke(r)));return o.addSideEffectsHandler=r.add,o}function lt(e){var t=e.code,n=Error(e.message);return n.code=t,n}var ft="customer_banned",ht="product_version_changed",vt="chat_deactivated",_t="chat_properties_deleted",yt="chat_properties_updated",mt="chat_transferred",gt="customer_disconnected",It="customer_page_updated",Et="customer_side_storage_updated",bt="customer_updated",Tt="event_properties_deleted",wt="event_properties_updated",Ot="event_updated",St="events_marked_as_seen",kt="greeting_accepted",Pt="greeting_canceled",Ct="incoming_chat",Nt="incoming_event",xt="incoming_greeting",jt="incoming_multicast",Dt="incoming_rich_message_postback",qt="incoming_typing_indicator",Rt="queue_position_updated",At="thread_properties_deleted",Mt="thread_properties_updated",Ut="user_added_to_chat",Lt="user_removed_from_chat",Ht=Object.freeze({__proto__:null,CHAT_DEACTIVATED:vt,CHAT_PROPERTIES_DELETED:_t,CHAT_PROPERTIES_UPDATED:yt,CHAT_TRANSFERRED:mt,CUSTOMER_DISCONNECTED:gt,CUSTOMER_PAGE_UPDATED:It,CUSTOMER_SIDE_STORAGE_UPDATED:Et,CUSTOMER_UPDATED:bt,EVENT_PROPERTIES_DELETED:Tt,EVENT_PROPERTIES_UPDATED:wt,EVENT_UPDATED:Ot,EVENTS_MARKED_AS_SEEN:St,GREETING_ACCEPTED:kt,GREETING_CANCELED:Pt,INCOMING_CHAT:Ct,INCOMING_EVENT:Nt,INCOMING_GREETING:xt,INCOMING_MULTICAST:jt,INCOMING_RICH_MESSAGE_POSTBACK:Dt,INCOMING_TYPING_INDICATOR:qt,QUEUE_POSITION_UPDATED:Rt,THREAD_PROPERTIES_DELETED:At,THREAD_PROPERTIES_UPDATED:Mt,USER_ADDED_TO_CHAT:Ut,USER_REMOVED_FROM_CHAT:Lt}),Ft="file",Gt="form",Yt="filled_form",Vt="message",zt="rich_message",Bt="system_message",Jt="custom",Kt=function(e){var t,n={};return"string"==typeof e.customId&&(n.custom_id=e.customId),"object"!=typeof(t=e.properties)||null===t||h(t)||(n.properties=e.properties),n},Xt=function(e){switch(e.type){case Vt:var r=t({},Kt(e),{type:e.type,text:e.text});return e.postback&&(r.postback={id:e.postback.id,thread_id:e.postback.threadId,event_id:e.postback.eventId,type:e.postback.type,value:e.postback.value}),r;case Ft:return t({},Kt(e),{type:e.type,url:e.url,alternative_text:e.alternativeText});case Yt:return t({},Kt(e),{type:e.type,form_id:e.formId,fields:e.fields.map((function(e){switch(e.type){case"group_chooser":if(!e.answer)return e;var r=e.answer,o=r.groupId;return t({},e,{answer:t({},n(r,["groupId"]),{group_id:o})});default:return e}}))});case Bt:var o=t({},Kt(e),{type:e.type,text:e.text,system_message_type:e.systemMessageType});return e.recipients&&(o.recipients=e.recipients),o;case Jt:var a=t({},Kt(e),{type:e.type});return e.content&&(a.content=e.content),a}},Wt=function(e){var t=e.active,n=e.chat,r=e.continuous,o={active:void 0===t||t,chat:{}};if("boolean"==typeof r&&(o.continuous=r),!n)return o;var a=n.access,i=n.thread,c=n.properties;return a&&a.groupIds&&(o.chat.access={group_ids:a.groupIds}),c&&(o.chat.properties=c),i&&(o.chat.thread=function(e){var t={},n=e.events,r=e.properties;return n&&(t.events=n.map(Xt)),r&&(t.properties=r),t}(i)),o},Qt=function(e){return b(e).map((function(e){var t;return(t={})[e[0]]=e[1],t}))},Zt=function(e){var t=E(["avatar","name","email"],e);return e.sessionFields&&(t.session_fields=Qt(e.sessionFields)),t},$t=function(e){return{type:Y,payload:{reason:e}}},en=function(e){return{type:B,payload:{reason:e}}},tn=function(e){return void 0===e&&(e=!1),{type:J,payload:{fresh:e}}},nn=function(e){return{type:W,payload:{delay:e}}},rn=function(e,n,r){return{type:$,payload:t({request:{action:e,payload:n}},r&&{source:r})}},on=function(e,t){return{type:ee,payload:{id:e,active:t}}},an=function(e){return{type:te,payload:{id:e}}},cn=function(e,t){t.payload.id=y(e.getState().requests);var n=Xe(),r=n.resolve,o=n.reject,a=n.promise;return t.payload.promise=a,t.payload.resolve=r,t.payload.reject=o,e.dispatch(t),a},sn=function(e){var t=e.min,n=void 0===t?1e3:t,r=e.max,o=void 0===r?5e3:r,a=e.jitter,i=void 0===a?.5:a,c=0;return{duration:function(){var e=n*Math.pow(2,c++);if(i){var t=Math.random(),r=Math.floor(t*i*e);e=0==(1&Math.floor(10*t))?e-r:e+r}return 0|Math.min(e,o)},reset:function(){c=0}}},un=function(e){var t=e.getState();return"side_storage_"+t.licenseId+(t.uniqueGroups?":"+t.groupId:"")},dn=function(e){return u(un(e)).catch(g).then((function(e){return JSON.parse(e||"{}")})).catch((function(){return{}}))},pn=function(e,t,n){var r=e.slice(0),o=!1;return function e(a){var i,c=r.shift();(i=function(){return c(a)},new Promise((function(e){e(i())}))).then((function(n){o||(r.length?e(n):t(n))}),(function(e){o||n(e)}))}(),{cancel:function(){o=!0}}},ln=function(e,t,n){return cn(e,rn(t,n,"login"))};function fn(e,n){var r,o,a=null,i={min:300,max:6e4,jitter:.3},c=sn(i),s=sn(t({},i,{min:1e3})),u=c,d=function(e){return r.dispatch($t(e))},p=function(){return r.dispatch(nn(u.duration()))},l=function(){return Promise.all([e.getToken(),dn(r)])},f=function(e){var t=e[0],n=e[1],o=rt(r.getState());if(null===o)r.dispatch(an(t.entityId));else if(o!==t.entityId){var a=Error("Identity has changed.");throw a.code=ue,a}return[t,n]},h=function(e){var t,o,i,c=e[0],s=e[1],u=r.getState(),d=u.application,p=u.groupId,l=u.page,f=u.referrer,h=u.mobile,v={token:c.tokenType+" "+c.accessToken,customer:"function"==typeof n?Zt(n()):{},customer_side_storage:s,is_mobile:h,application:(t=["name","version"],o=d,t.reduce((function(e,t){return e[t]=o[t],e}),{}))};return"number"==typeof p&&(v.group_id=p),d.channelType&&(v.application.channel_type=d.channelType),null!==l&&(a=l,v.customer_page=l),null!==f&&(v.referrer=f),Promise.race([ln(r,Se,v),(i=15e3,new Promise((function(e){setTimeout(e,i)}))).then((function(){return Promise.reject(lt({message:"Request timed out.",code:"REQUEST_TIMEOUT"}))}))])};return{sendLogin:function(t){var n;r=t,null==(n=o)||n.cancel(),o=pn([l,f,h],(function(e){var t;o=null,c.reset(),s.reset(),u=c,t=r.getState().page,a!==t&&ln(r,Ae,t).catch(g),a=null,r.dispatch({type:z,payload:e})}),(function(t){switch(o=null,t.code){case"AUTHENTICATION":return e.getFreshToken(),void p();case se:case de:case le:return;case"SSO_IDENTITY_EXCEPTION":case"SSO_OAUTH_EXCEPTION":return"server_error"===t.message||"temporarily_unavailable"===t.message?void p():void d(t.message);case"USERS_LIMIT_REACHED":return void r.dispatch(en(t.code.toLowerCase()));case ue:case"CUSTOMER_BANNED":case"WRONG_PRODUCT_VERSION":return void d(t.code.toLowerCase());case"SERVICE_TEMPORARILY_UNAVAILABLE":return u=s,void p();default:return void p()}}))},cancel:function(){var e;null==(e=o)||e.cancel()}}}var hn,vn=function(e,t){var n=e.dispatch,r=function(e){return e.requests}((0,e.getState)());n({type:V,payload:{rejects:Object.keys(r).map((function(e){return r[e].reject})),reason:t}})},_n=function(e,t,n){var r=t.payload.id;(0,e.dispatch)({type:Q,payload:{id:r,reject:(0,e.getState)().requests[r].reject,error:n}})},yn=Object.freeze({success:!0}),mn=function(e,t){var n={id:t.id,authorId:t.author_id,createdAt:t.created_at,threadId:e,properties:t.properties||{}};return void 0!==t.custom_id&&(n.customId=t.custom_id),n},gn=function(e,t){var n,r,o,a,i;t.height>t.width?(r="height",o="width",a=t.height,i=t.width):(r="width",o="height",a=t.width,i=t.height);var c=e/a;return(n={})[r]=Math.ceil(Math.min(a,e)),n[o]=Math.ceil(Math.min(c*i,i)),n},In=function(e,n){return void 0!==n.width&&void 0!==n.height?function(e,n){return t({},mn(e,n),{type:Ft,contentType:n.content_type,url:n.url,name:n.name,width:n.width,height:n.height,thumbnails:{default:t({url:n.thumbnail_url},gn(300,n)),high:t({url:n.thumbnail2x_url},gn(600,n))}},n.alternative_text&&{alternativeText:n.alternative_text})}(e,n):t({},mn(e,n),{type:Ft,contentType:n.content_type,url:n.url,name:n.name})},En=function(e,r){return t({},mn(e,r),{type:Yt,formId:r.form_id,fields:r.fields.map((function(e){switch(e.type){case"group_chooser":if(!e.answer)return e;var r=e.answer,o=r.group_id;return t({},e,{answer:t({},n(r,["group_id"]),{groupId:o})});default:return e}}))})},bn=function(e,n){return t({},mn(e,n),{type:Vt,text:n.text})},Tn=function(e,n){return t({},mn(e,n),{type:Jt},n.content&&{content:n.content})},wn=function(e){var n={};if("string"==typeof e.title&&(n.title=e.title),"string"==typeof e.subtitle&&(n.subtitle=e.subtitle),e.image){var r=e.image;n.image=t({url:r.url,name:r.name},r.alternative_text&&{alternativeText:r.alternative_text})}return e.buttons&&(n.buttons=e.buttons.map((function(e){switch(e.type){case"message":case"phone":return{type:e.type,text:e.text,postbackId:e.postback_id,userIds:e.user_ids,value:e.value,role:e.role||"default"};case"cancel":return{type:e.type,text:e.text,postbackId:e.postback_id,userIds:e.user_ids,role:e.role||"default"};case"url":var t={type:e.type,text:e.text,postbackId:e.postback_id,userIds:e.user_ids,value:e.value,role:e.role||"default"};return e.target&&(t.target=e.target),t;case"webview":var n={type:e.type,text:e.text,postbackId:e.postback_id,userIds:e.user_ids,value:e.value,role:e.role||"default"};return"string"==typeof e.webview_height&&(n.webviewHeight=e.webview_height),n;default:return{text:e.text,postbackId:e.postback_id,userIds:e.user_ids,role:e.role||"default"}}}))),n},On=function(e,n){switch(n.template_id){case"cards":case"quick_replies":case"sticker":return t({},mn(e,n),{type:zt,template:n.template_id,elements:n.elements.map(wn)});default:return null}},Sn=function(e,n){var r=t({},mn(e,t({},n,{author_id:"system"})),{type:Bt,text:n.text,systemMessageType:n.system_message_type});return n.text_vars&&(r.textVars=n.text_vars),r},kn=function(e,n){switch(n.type){case Ft:return In(e,n);case Gt:return function(e,n){return t({},mn(e,n),{authorId:"system",type:Gt,formId:n.form_id,fields:n.fields})}(e,n);case Yt:return En(e,n);case Vt:return bn(e,n);case zt:return On(e,n);case Bt:return Sn(e,n);case Jt:return Tn(e,n);default:return null}},Pn=function(e){return{id:e.id,addon:e.addon||null,uniqueId:e.unique_id,displayedFirstTime:e.displayed_first_time,accepted:e.accepted||!1,subtype:e.subtype||"greeting",event:kn(null,e.event),agent:{id:e.agent.id,name:e.agent.name,avatar:e.agent.avatar,jobTitle:e.agent.job_title,isBot:e.agent.is_bot||!1}}},Cn=function(e){return void 0===e&&(e={}),e.group_ids?{groupIds:e.group_ids}:{}},Nn=function(e){return v((function(e){return e.events_seen_up_to?e.events_seen_up_to:null}),(t="id",e.reduce((function(e,n){return e[n[t]]=n,e}),{})));var t},xn=function(e,t){var n=t.properties||{};return{id:t.id,chatId:e,active:t.active,access:Cn(t.access),createdAt:t.created_at,userIds:t.user_ids,events:t.events.map((function(e){return kn(t.id,e)})).filter(Boolean),properties:n,previousThreadId:t.previous_thread_id||null,nextThreadId:t.next_thread_id||null,queue:t.queue?Un(t.queue):null}},jn=function(e){return{id:e.id,access:Cn(e.access),users:e.users.map(Ln),properties:e.properties||{},eventsSeenUpToMap:Nn(e.users)}},Dn=function(e){var t=E(["avatar","email","name"],e);return e.session_fields&&(t.sessionFields=e.session_fields.reduce((function(e,t){var n=Object.keys(t)[0];return e[n]=t[n],e}),{})),t},qn=function(e){var n=Dn(e);return t({id:e.id,type:et},n,{sessionFields:n.sessionFields||{}})},Rn=function(e){var n=e.statistics;return t({},qn(e),{statistics:{chatsCount:n.chats_count,threadsCount:n.threads_count,visitsCount:n.visits_count,pageViewsCount:n.page_views_count,greetingsShownCount:n.greetings_shown_count,greetingsAcceptedCount:n.greetings_accepted_count}})},An=function(e){var t=e.agent;return{agent:{id:t.id,type:$e,name:t.name,avatar:t.avatar,jobTitle:t.job_title,isBot:t.is_bot},queue:e.queue}},Mn=function(e){return{position:e.position,waitTime:e.wait_time}},Un=function(e){return t({},Mn(e),{queuedAt:e.queued_at})},Ln=function(e){return e.type===et?t({},qn(r=e),{present:r.present}):{id:(n=e).id,type:$e,name:n.name,avatar:n.avatar,jobTitle:n.job_title,present:n.present};var n,r},Hn=((hn={}).CONNECTION_LOST="Connection lost.",hn.MISDIRECTED_CONNECTION="Connected to wrong region.",hn),Fn=function(e,t){var n=e.getState();switch(t.type){case X:case K:switch(t.payload.action){case vt:return void e.dispatch(on(t.payload.payload.chatId,!1));case Ct:return void e.dispatch(on(t.payload.payload.chat.id,!0));default:return}case Z:switch(t.payload.action){case Te:return void t.payload.payload.chatsSummary.filter((function(e){var t=e.active;return ot(n,e.id)!==t})).forEach((function(t){e.dispatch(on(t.id,t.active))}));default:return}}},Gn=function(e,t){t.forEach((function(t){if("present"in t){var r=n(t,["present"]);e("user_data",r)}else if(t.type!==et)e("user_data",t);else{var o=n(t,["statistics"]);e("user_data",o)}}))},Yn=function(e,t){var n,r=t.content;"lc2"===t.type&&("groups_update"===r.name&&"groups"in r&&0!==(h(n=r.groups)?n:Object.keys(n)).length&&e("availability_updated",{availability:"offline"===r.groups[0].status?"offline":"online"}))},Vn=function(e,t){var n=e.emit,r=e.store,o=t.payload;switch(o.action){case Mt:return o.payload.properties.lc2&&"queue_pos"in o.payload.properties.lc2&&n(Rt,{chatId:o.payload.chatId,threadId:o.payload.threadId,queue:{position:o.payload.properties.lc2.queue_pos,waitTime:o.payload.properties.lc2.queue_waiting_time}}),void n("thread_properties_updated",o.payload);case Et:return void function(e,t){s(un(e),JSON.stringify(t)).catch(g)}(r,o.payload.customer_side_storage);case gt:switch(o.payload.reason){case"access_token_expired":r.dispatch(tn(!0)),r.dispatch(nn(100)),n("disconnected",o.payload);break;case ft:case"customer_temporarily_blocked":case"license_not_found":case ht:case"too_many_connections":case"unsupported_version":r.dispatch($t(o.payload.reason));break;case"misdirected_connection":vn(r,de),r.dispatch({type:F,payload:o.payload.data});break;case"service_temporarily_unavailable":case"too_many_unauthorized_connections":vn(r,o.payload.reason.toUpperCase());break;default:r.dispatch(nn(100)),n("disconnected",o.payload)}return;case Ct:return Gn(n,o.payload.chat.users),void n(o.action,o.payload);case Nt:if(null===o.payload.event)return;return void n(o.action,o.payload);case qt:return void n(o.action,o.payload);case jt:return Yn(n,o.payload),void n(o.action,o.payload);case Ut:return Gn(n,[o.payload.user]),void n(o.action,o.payload);default:return void n(o.action,o.payload)}},zn=function(e,t){var n=e.emit,r=t.payload;switch(r.action){case vt:return void r.resolve(yn);case me:return Gn(n,r.payload.users),void r.resolve(r.payload);case Ct:return Gn(n,r.payload.chat.users),void r.resolve(r.payload);case Nt:return void r.resolve(r.payload.event);case Te:return Gn(n,r.payload.users),void r.resolve(r.payload);default:return void r.resolve(r.payload)}},Bn=function(e){var n=e.auth,r=e.emitter,o=e.socket,a=r.emit,i=fn(n,e.customerDataProvider);return function(e,c){switch(e.type){case F:return void o.reinitialize();case G:return void function(e,t,n){return t.getToken().then((function(t){var r=e.getState();null===rt(r)&&e.dispatch(an(t.entityId));var o=r.page;if(o&&o.url){var a=w({license_id:r.licenseId}),i={session_fields:Qt(n||{}),group_id:r.groupId||0,page_url:o.url};return C(ct(r)+"/action/check_goals?"+a,{method:"POST",headers:{"Content-Type":"application/json",Authorization:t.tokenType+" "+t.accessToken},body:JSON.stringify(i)}).then((function(){}))}}))}(c,n,e.payload.sessionFields).catch(g);case Y:var s=e.payload;switch(i.cancel(),o.destroy(),s.reason){case"manual":vn(c,le);break;case ft:case"license_expired":case ht:vn(c,se),a("disconnected",s);break;default:a("disconnected",s)}return void r.off();case V:var u=e.payload,d=u.reason,p={message:Hn[d],code:d};return void u.rejects.forEach((function(e){e(lt(p))}));case z:var l=e.payload,f=l.dynamicConfig,h=l.chats,v=l.greeting,_=t({customer:l.customer,availability:l.availability},v&&{greeting:v});return Object.defineProperty(_,"__unsafeDynamicConfig",{value:f}),Object.defineProperty(_,"__unsafeChats",{value:h}),void a("connected",_);case B:var y=e.payload;return o.disconnect(),void("manual"!==y.reason&&a("disconnected",y));case J:return e.payload.fresh?void n.getFreshToken().catch(g):void n.hasToken().then((function(e){return e?n.getToken().then((function(e){if(36e5>=e.creationDate+e.expiresIn-Date.now())return n.invalidate().then(n.getFreshToken)})):n.getToken()})).catch(g);case K:return e.payload.action===gt||Fn(c,e),void Vn({emit:a,store:c},e);case X:return Fn(c,e),void zn({emit:a},e);case W:return vn(c,se),void o.reconnect(e.payload.delay);case Q:var E=e.payload;return void(0,E.reject)(lt(E.error));case Z:return Fn(c,e),void zn({emit:a},e);case $:var b=c.getState();return function(e){return tt(e)===Qe}(b)?void _n(c,e,{code:le,message:"SDK destroyed."}):at(b)||"login"===e.payload.source?void function(e,n){var r=n.payload,o=t({request_id:r.id},r.request);switch(o.action){case Se:var a=[];return void e.emit(t({},o,{version:"3.3",payload:t({},o.payload,{pushes:{3.3:I(Ht).filter((function(e){return e!==gt&&!m(e,a)}))}})}));default:e.emit(o)}}(o,e):void _n(c,e,{code:"NO_CONNECTION",message:"No connection."});case te:return void a("customer_id",e.payload.id);case re:return void a("disconnected",{reason:"connection_lost"});case ne:return void i.sendLogin(c);case oe:if(!at(c.getState()))return;return void a("connection_recovered");case ae:if(!at(c.getState()))return;return void a("connection_unstable");case ie:return o.connect(),void c.dispatch(tn());case ce:if(!at(c.getState()))return;return void cn(c,rn(Ae,e.payload)).catch(g);default:return}}},Jn=function(e,t){var n,r=(void 0===t?{}:t).query,o=w(void 0===r?{}:r),a=o?e+"?"+o:e,i=H(),c=sn({min:1e3,max:5e3,jitter:.5}),s=3,u=null,d=function(){s=1,c.reset(),i.emit("connect")},p=function(){f(),v(),i.emit("disconnect")},l=function(e){i.emit("message",e.data)},f=function(){var e;(clearTimeout(n),s=3,u)&&((e=u).removeEventListener("open",d),e.removeEventListener("close",p),e.removeEventListener("message",l),u.close(),u=null)},h=function(){var e;s=0,u=new WebSocket(a),(e=u).addEventListener("open",d),e.addEventListener("close",p),e.addEventListener("message",l)},v=function(e){void 0===e&&(e=c.duration()),f(),0!==e?n=setTimeout(h,e):h()};return{connect:function(e){function t(){return e.apply(this,arguments)}return t.toString=function(){return""+e},t}((function(){if(3!==s)throw Error("Socket is already open or connecting.");clearTimeout(n),h()})),destroy:function(){i.off(),f()},disconnect:f,reconnect:v,emit:function(e){if(1!==s)throw Error("Socket is not connected.");u.send(e)},getReadyState:function(){return s},on:i.on,off:i.off}},Kn=function(e,n){var r,o,a,i,c=void 0===n?{}:n,s=c.query,u=void 0===s?{}:s,d=c.emitter,p=void 0===d?H():d,l=Jn(e,{query:u}),f=(o=g,{cancel:function(){clearTimeout(r),o=g},check:function(){var e=Xe();return o=e.resolve,r=setTimeout((function(){var t=Error("Timeout.");t.code="TIMEOUT",e.reject(t)}),2e3),e.promise},resolve:function(e){function t(){return e.apply(this,arguments)}return t.toString=function(){return""+e},t}((function(){clearTimeout(r),o()}))}),h=function(){return 1===l.getReadyState()},v=function(){f.cancel()};return a=l,i=p,["connect","disconnect"].forEach((function(e){a.on(e,(function(t){i.emit(e,t)}))})),l.on("disconnect",v),l.on("message",(function(e){f.resolve();var t=JSON.parse(e);p.emit("message",t)})),"undefined"!=typeof window&&void 0!==window.addEventListener&&(window.addEventListener("online",(function(){h()&&f.check().then((function(){f.cancel(),p.emit("connection_recovered")}),(function(e){if(f.cancel(),"TIMEOUT"!==e.code)throw e;l.reconnect()}))})),window.addEventListener("offline",(function(){f.cancel(),h()&&p.emit("connection_unstable")}))),t({},l,{destroy:function(){v(),l.destroy()},disconnect:function(){v(),l.disconnect()},reconnect:function(e){v(),l.reconnect(e)},emit:function(e){l.emit(JSON.stringify(e))},on:p.on,off:p.off})},Xn=function(e,t){var n=e.getState(),r=(ct(n)+"/rtm/ws").replace(/^https/,"wss");return Kn(r,{query:{license_id:n.licenseId},emitter:t})},Wn=function(e){return{chatId:e.chat_id,properties:e.properties}},Qn=function(e){var n={chatId:e.chat_id,threadId:e.thread_id,transferredTo:t({},e.transferred_to.agent_ids&&{agentIds:e.transferred_to.agent_ids},e.transferred_to.group_ids&&{groupIds:e.transferred_to.group_ids}),queue:e.queue?Un(e.queue):null};return t({},n,"manual"===e.reason?{reason:e.reason,requesterId:e.requester_id}:{reason:e.reason})},Zn=function(e){return{url:e.url,title:e.title,openedAt:e.opened_at}},$n=function(e){return t({id:e.id},Dn(e))},er=function(e){return{chatId:e.chat_id,threadId:e.thread_id,eventId:e.event_id,properties:e.properties}},tr=function(e){return{chatId:e.chat_id,threadId:e.thread_id,eventId:e.event_id,properties:e.properties}},nr=function(e){var t=e.thread_id;return{chatId:e.chat_id,threadId:t,event:kn(t,e.event)}},rr=function(e){return{chatId:e.chat_id,userId:e.user_id,seenUpTo:e.seen_up_to}},or=function(e){return{uniqueId:e.unique_id}},ar=function(e){var n=e.chat;return{chat:t({},jn(n),{thread:xn(n.id,n.thread)})}},ir=function(e){return{chatId:e.chat_id,event:kn(e.thread_id,e.event)}},cr=function(e){return Pn(e)},sr=function(e){return{userId:e.user_id,chatId:e.chat_id,threadId:e.thread_id,eventId:e.event_id,postback:e.postback}},ur=function(e){var t=e.typing_indicator;return{chatId:e.chat_id,typingIndicator:{authorId:t.author_id,isTyping:t.is_typing}}},dr=function(e){return{chatId:e.chat_id,threadId:e.thread_id,queue:Mn(e.queue)}},pr=function(e){return{chatId:e.chat_id,threadId:e.thread_id,properties:e.properties}},lr=function(e){return{chatId:e.chat_id,threadId:e.thread_id,properties:e.properties}},fr=function(e){return{chatId:e.chat_id,user:Ln(e.user),present:e.user.present}},hr=function(e){return{chatId:e.chat_id,userId:e.user_id}},vr=function(e){return e.map((function(e){switch(e.type){case"group_chooser":return t({},e,{options:e.options.map((function(e){var r=e.group_id;return t({},n(e,["group_id"]),{groupId:r})}))});case"rating":var r=e.comment_label;return t({},n(e,["comment_label"]),{commentLabel:r});default:return e}}))},_r=function(e){var n,r;return{id:e.id,fields:!("id"in e.fields[0])?(n=e.fields,r=n.map((function(e,n){return t({},e,{id:n+""})})),vr(r)):vr(e.fields)}},yr=function(e){return e.enabled?t({},e,{form:_r(e.form)}):e},mr=function(e){var t={url:e.url};return e.title&&(t.title=e.title),e.description&&(t.description=e.description),e.image_url&&(t.imageUrl="https://"+e.image_url.replace(P,""),e.image_width&&e.image_height&&(t.imageWidth=e.image_width,t.imageHeight=e.image_height)),t},gr=function(e){var t,n,r,o,a,i,c=e.chats_summary.map((function(e){var t=e.last_thread_created_at,n=e.last_thread_id,r=e.last_event_per_type,o=e.properties,a=void 0===o?{}:o,i=e.users,c={id:e.id,active:e.active,access:Cn(e.access),properties:a,users:i.map(Ln),lastThreadId:n||null,lastThreadCreatedAt:t||null,eventsSeenUpToMap:Nn(i)};if(!r)return c;c.lastEventsPerType=v((function(e){return kn(e.thread_id,e.event)}),r);var s,u=r,d=Object.keys(u).map((function(e){return u[e]})),p=(s=d.sort((function(e,t){return e.thread_id===t.thread_id?T(e.event.created_at,t.event.created_at):T(e.thread_created_at,t.thread_created_at)}))).length>0?s[s.length-1]:null;return p&&(c.lastEvent=c.lastEventsPerType[p.event.type]),c}));return{chatsSummary:(o=function(e){var t=e.lastEvent;return-1*(void 0!==t?t.timestamp:e.order)},a=c,i="function"==typeof o?o:function(e){return function(e,t){for(var n="string"==typeof e?e.split("."):e,r=0,o=t;o&&n.length>r;)o=o[n[r++]];return o}(o,e)},(h(a)?[].concat(a):I(a)).sort((function(e,t){return i(e)-i(t)}))),totalChats:e.total_chats,users:(t=function(e){return e.id},n=f((function(e){return e.users}),c),r=[],n.filter((function(e){var n=t(e);return-1===r.indexOf(n)&&(r.push(n),!0)}))),previousPageId:e.previous_page_id||null,nextPageId:e.next_page_id||null}},Ir=function(e){return e.groups_status},Er=function(e,t){return{threads:t.threads.map((function(t){return xn(e.payload.chat_id,t)})),previousPageId:t.previous_page_id||null,nextPageId:t.next_page_id||null}},br=function(e){var n,r,o=e.__priv_dynamic_config,a=e.chats,i=e.greeting;return t({dynamicConfig:o,customer:Rn(e.customer),availability:(n=o,r=n.online_groups_ids,r&&m(n.customer_groups.monitoring.id,r)?"online":"offline"),chats:a.map((function(t){return{id:t.chat_id,active:"has_active_thread"in t?t.has_active_thread:e.has_active_thread,hasUnreadEvents:t.has_unread_events}}))},i&&{greeting:Pn(i)})},Tr=function(e){switch(e.action){case vt:return{action:e.action,payload:{chatId:e.payload.chat_id}};case _t:return{action:e.action,payload:(t=e.payload,{chatId:t.chat_id,properties:t.properties})};case yt:return{action:e.action,payload:Wn(e.payload)};case mt:return{action:e.action,payload:Qn(e.payload)};case Et:case gt:return{action:e.action,payload:e.payload};case It:return{action:e.action,payload:Zn(e.payload)};case bt:return{action:e.action,payload:$n(e.payload)};case Tt:return{action:e.action,payload:er(e.payload)};case wt:return{action:e.action,payload:tr(e.payload)};case Ot:return{action:e.action,payload:nr(e.payload)};case St:return{action:e.action,payload:rr(e.payload)};case kt:case Pt:return{action:e.action,payload:or(e.payload)};case Ct:return{action:e.action,payload:ar(e.payload)};case Nt:return{action:e.action,payload:ir(e.payload)};case xt:return{action:e.action,payload:cr(e.payload)};case jt:return{action:e.action,payload:e.payload};case Dt:return{action:e.action,payload:sr(e.payload)};case qt:return{action:e.action,payload:ur(e.payload)};case Rt:return{action:e.action,payload:dr(e.payload)};case At:return{action:e.action,payload:pr(e.payload)};case Mt:return{action:e.action,payload:lr(e.payload)};case Ut:return{action:e.action,payload:fr(e.payload)};case Lt:return{action:e.action,payload:hr(e.payload)}}var t},wr=function(e,n){var r=e.dispatch,o=n.request_id,a=nt((0,e.getState)(),o),i=a.promise,c=a.resolve,s=function(e){var n,r=e.request,o=e.response;switch(o.action){case fe:case he:case ve:case _e:case ye:return{action:o.action,payload:yn};case me:return{action:o.action,payload:(n=o.payload,t({},jn(n),{thread:n.thread?xn(n.id,n.thread):null}))};case ge:return{action:o.action,payload:Rn(o.payload)};case Ie:return{action:o.action,payload:yr(o.payload)};case Ee:return{action:o.action,payload:An(o.payload)};case be:return{action:o.action,payload:mr(o.payload)};case Te:return{action:o.action,payload:gr(o.payload)};case we:return{action:o.action,payload:Ir(o.payload)};case Oe:return{action:o.action,payload:Er(r,o.payload)};case Se:return{action:o.action,payload:br(o.payload)};case ke:case xe:case je:case Ne:case qe:case Re:case Ae:case Me:case Ue:return{action:o.action,payload:yn}}}({request:a.request,response:n});r({type:Z,payload:t({id:o,promise:i,resolve:c},s)})},Or=function(e,n){var r=e.dispatch;return n.on("connect",(function(){r({type:ne})})),n.on("message",(function(n){if("response"===n.type){if(!n.success)return void function(e,t){var n,r=e.dispatch,o=t.request_id,a=t.payload,i=nt((0,e.getState)(),o);r({type:Q,payload:{id:o,reject:i.reject,error:(n=a.error,{code:n.type.toUpperCase(),message:n.message})}})}(e,n);switch(n.action){case Pe:case Ce:case De:return;default:return void wr(e,n)}}if("request_id"in n)switch(n.action){case Ct:case Nt:return void function(e,n){var r=e.dispatch,o=n.request_id,a=nt((0,e.getState)(),o),i=a.promise,c=a.resolve,s=Tr(n);r({type:X,payload:t({id:o,promise:i,resolve:c},s)})}(e,n)}!function(e,t){var n=Tr(t);n&&e.dispatch({type:K,payload:n})}(e,n)})),n.on("disconnect",(function(){vn(e,se),tt(e.getState())===We&&e.dispatch({type:re})})),n.on("connection_unstable",(function(){r({type:ae})})),n.on("connection_recovered",(function(){r({type:oe})})),n.off},Sr="incorrect requester structure",kr=function(e,t){return e.length?e+"\n"+t:t},Pr=function(e,n,r){var o=r.filledForm,a=r.groupId,i=r.timeZone;return n.getToken().then((function(n){var r=e.getState();null===rt(r)&&e.dispatch(an(n.entityId));var c=it(r)+"/v2/tickets/new",s=function(e,n){var r=n.fields,o=n.groupId,a=void 0===o?e.groupId:o,i=n.timeZone,c=t({licence_id:e.licenseId,ticket_message:"",offline_message:"",visitor_id:n.customerId,requester:{}},"number"==typeof a&&{group:a},e.page&&{source:{url:e.page.url}},i&&{timezone:i});return r.reduce((function(e,t){switch(t.type){case"subject":var n=t.answer,r=n?t.label+" "+n:t.label;return n&&(e.subject=n),e.offline_message=kr(e.offline_message,r),e;case"name":var o=t.answer,a=o?t.label+" "+o:t.label;return o&&(e.requester.name=o),e.offline_message=kr(e.offline_message,a),e;case"email":var i=t.answer,c=i?t.label+" "+i:t.label;return e.requester.mail=i,e.offline_message=kr(e.offline_message,c),e;case"question":case"textarea":var s=t.answer,u=s?t.label+" "+s:t.label;return e.offline_message=kr(e.offline_message,u),e.ticket_message=kr(e.ticket_message,u),e;case"radio":case"select":var d=t.answer&&t.answer.label,p=d?t.label+" "+d:t.label;return e.offline_message=kr(e.offline_message,p),e.ticket_message=kr(e.ticket_message,p),e;case"checkbox":var l=t.answers&&t.answers.map((function(e){return e.label})).join(", "),f=l?t.label+" "+l:t.label;return e.offline_message=kr(e.offline_message,f),e.ticket_message=kr(e.ticket_message,f),e;default:return e}}),c)}(r,{fields:o.fields,customerId:n.entityId,groupId:a,timeZone:i});return C(c,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)}).then((function(e){if(e.ok)return e.json().then((function(e){return t({},e,{text:s.ticket_message})}));if(400===e.status||422===e.status){var n=function(e){if(!e||!e.errors)throw Error();var t=e.errors[0];if(Object.keys(t)[0]===Sr)throw lt({message:t[Sr][0],code:"VALIDATION"});throw Error()};return e.json().then(n,n)}throw Error()}))}))},Cr="UPLOAD_FAILED",Nr=function(e,t,n){var r=void 0===n?{}:n,o=r.headers,a=r.method,i=void 0===a?"POST":a,c=r.onProgress,s=r.withCredentials,u=void 0!==s&&s,d=new XMLHttpRequest;return{promise:new Promise((function(n,r){var a,s;"function"==typeof c&&(d.upload.onprogress=function(e){c(e.loaded/e.total)}),d.onload=function(){var e;try{e=JSON.parse(d.response)}catch(t){e=d.response}if(200>d.status||d.status>=300){var t=Error("Upload failed.");t.code=Cr,t.response=e,r(t)}else n(e)},d.onerror=function(){var e=Error("Upload failed.");e.code=Cr,r(e)},d.onabort=function(){var e=Error("Upload canceled.");e.code="UPLOAD_CANCELED",r(e)},d.open(i,e),d.withCredentials=u,o&&Object.keys(o).forEach((function(e){return d.setRequestHeader(e,o[e])})),d.send((a=t,s=new FormData,Object.keys(a).forEach((function(e){return s.append(e,a[e])})),s))})),cancel:function(){d.abort()}}},xr=1048576,jr=10485760,Dr=function(e,t){if(void 0===t&&(t=2),1024>e)return e+" b";var n=e/1024;if(xr>e)return n.toFixed(t)+" kb";var r=n/1024;return 1073741824>e?r.toFixed(t)+" MB":(r/1024).toFixed(t)+" GB"},qr=function(e,t){var n,r=e.auth,o=e.store,a=t.file,i=t.onProgress,c=!1;return{promise:new Promise((function(e,t){!function(e){if(e.size>jr)throw lt({message:"The file is too big (max size is "+Dr(jr)+").",code:"TOO_BIG_FILE"})}(a);var s=o.getState(),u=w({license_id:s.licenseId}),d=ct(s)+"/action/upload_file?"+u,p={file:a};r.getToken().then((function(r){c?t(Error("Upload cancelled.")):(n=Nr(d,p,{headers:{Authorization:r.tokenType+" "+r.accessToken},onProgress:i})).promise.then(e,(function(e){if(e.response){var n=e.response.error;t(lt({message:n.message,code:n.type.toUpperCase()}))}else t(e)}))}))})),cancel:function(){c||(c=!0,n&&n.cancel())}}},Rr=function(e){var t=e.licenseId,n=e.eventName;if("production"!==e.env)return Promise.resolve();var r={licence_id:t,event_id:"chat_widget_customer_sdk",message:JSON.stringify({event_name:n,severity:"Informational",sdkVersion:"3.1.5"})};return function(e,t){return new Promise((function(n){var r=new Image;r.src=e+"?"+t,r.onerror=g,r.onload=function(){return n()}}))}("https://queue.livechatinc.com/logs",w(r))},Ar="LISTENER_IDENTITY",Mr={},Ur=function(e,t){void 0===t&&(t="");var n=Object.keys(e);return n.map((function(n){var r=e[n];return function(){for(var e,o=arguments.length,a=Array(o),i=0;o>i;i++)a[i]=arguments[i];(e=console).info.apply(e,[t+"."+n+"() ===>"].concat(a));var c=r.apply(void 0,a);return"function"==typeof(null==c?void 0:c.then)?c.then((function(e){return console.info(t+"."+n+"() <===",e),e}),(function(e){throw console.error(t+"."+n+"() <===",e),e})):c}})).reduce((function(e,t,r){return e[n[r]]=t,e}),{})},Lr=function(e,t,n){if(void 0===n.LISTENER_IDENTITY&&Object.defineProperty(n,Ar,{value:{}}),n.LISTENER_IDENTITY[t])return Mr[n.LISTENER_IDENTITY[t]];var r=function(r){console.info("."+e+'("'+t+'") <===',r),n(r)},o=y(Mr);return n.LISTENER_IDENTITY[t]=o,Mr[o]=r,r};e.debug=function(e){var r=e;console.warn("You probably do not want to use debug(customerSDK) in your production environment.");var o=r.on,a=r.once,i=r.off,c=r.getChatHistory,s=r.auth,u=n(r,["on","once","off","getChatHistory","auth"]),d=Ur(u);return Object.freeze(t({auth:Object.freeze(Ur(s,".auth"))},d,{getChatHistory:function(){for(var e,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];(e=console).info.apply(e,[".getChatHistory()"].concat(n));var o=c.apply(void 0,n),a="history.next()";return{next:function(){var e;return(e=console).info.apply(e,[a+" ===>"].concat(n)),o.next().then((function(e){var t;return(t=console).info.apply(t,[a+" <==="].concat(n,[e])),e}),(function(e){var t;throw(t=console).error.apply(t,[a+" <==="].concat(n,[e])),e}))}}},off:function(e,t){console.info('.off("'+e+'", '+(t.name||"anonymous")+")");var n=t;void 0!==t.LISTENER_IDENTITY&&(n=Mr[t.LISTENER_IDENTITY[e]]);i(e,n)},on:function(e,t){o(e,Lr("on",e,t))},once:function(e,t){a(e,Lr("once",e,t))}}))},e.init=function(e,r){void 0===r&&(r="production"),U(e);var o=e.autoConnect,a=void 0===o||o,i=e.customerDataProvider,c=e.identityProvider,s=n(e,["autoConnect","customerDataProvider","identityProvider"]),u=pt(t({},s,{env:r})),d=H(),p=function(e){var n=H(),r=Xn(e,n);return t({},Object.keys(r).reduce((function(e,t){return e[t]=function(){var e;return(e=r)[t].apply(e,arguments)},e}),{}),{reinitialize:function(){r.disconnect(),(r=Xn(e,n)).connect()}})}(u),l="function"==typeof c?c():L(s,r);u.addSideEffectsHandler(Bn({emitter:d,socket:p,auth:l,customerDataProvider:i})),Or(u,p);var f=cn.bind(null,u),h=function(){u.dispatch({type:ie})},v=Object.freeze({acceptGreeting:function(e){return f(rn(fe,{greeting_id:e.greetingId,unique_id:e.uniqueId}))},auth:l,cancelGreeting:function(e){return f(rn(he,{unique_id:e.uniqueId}))},cancelRate:function(e){var t=e.chatId,n=e.properties,r=void 0===n?["score"]:n;return v.listThreads({chatId:t}).then((function(e){var n=e.threads;if(!n.length)throw lt({message:'There is no thread in "'+t+'".',code:pe});return v.deleteThreadProperties({chatId:t,threadId:n[0].id,properties:{rating:r}})}))},connect:h,deactivateChat:function(e){return f(rn("deactivate_chat",{id:e.id}))},deleteChatProperties:function(e){return f(rn(ve,{id:e.id,properties:e.properties}))},deleteEventProperties:function(e){return f(rn(_e,{chat_id:e.chatId,thread_id:e.threadId,event_id:e.eventId,properties:e.properties}))},deleteThreadProperties:function(e){return f(rn(ye,{chat_id:e.chatId,thread_id:e.threadId,properties:e.properties}))},destroy:function(){u.dispatch($t("manual"))},disconnect:function(){u.dispatch(en("manual"))},getChat:function(e){return f(rn(me,{chat_id:e.chatId,thread_id:e.threadId}))},getChatHistory:function(e){return function(e,t){var n={status:"idle",queuedTasks:[],nextPageId:null},r=function r(o,a){switch(n.status){case"idle":return n.status="fetching",void e.listThreads(n.nextPageId?{chatId:t,pageId:n.nextPageId}:{chatId:t,minEventsCount:25}).then((function(e){var t=e.threads;n.nextPageId=e.nextPageId,n.nextPageId?(n.status="idle",o({value:{threads:[].concat(t).reverse()},done:!1})):(n.status="done",o({value:{threads:[].concat(t).reverse()},done:!0}));var a=n.queuedTasks.shift();a&&r(a.resolve,a.reject)}),(function(e){var t=n.queuedTasks;n.status="idle",n.queuedTasks=[],a(e),t.forEach((function(t){return t.reject(e)}))}));case"fetching":return void n.queuedTasks.push({resolve:o,reject:a});case"done":return void o({value:void 0,done:!0})}};return{next:function(e){function t(){return e.apply(this,arguments)}return t.toString=function(){return""+e},t}((function(){return new Promise(r)}))}}(v,e.chatId)},getCustomer:function(){return f(rn(ge,{}))},getForm:function(e){return f(rn(Ie,{group_id:e.groupId,type:e.type}))},getPredictedAgent:function(e){void 0===e&&(e={});var t=e.groupId;return f(rn(Ee,"number"==typeof t?{group_id:t}:{}))},getUrlInfo:function(e){return f(rn(be,{url:e.url}))},listChats:function(e){return void 0===e&&(e={}),"limit"in e&&"number"==typeof e.limit&&e.limit>25?Promise.reject(Error("Specified limit is too high (max 25).")):f(rn(Te,void 0===e.pageId?{limit:e.limit||10}:{page_id:e.pageId}))},listGroupStatuses:function(e){var t=(void 0===e?{}:e).groupIds;return f(rn(we,t?{group_ids:t}:{all:!0}))},listThreads:function(e){return f(rn(Oe,void 0===e.pageId?{chat_id:e.chatId,sort_order:e.sortOrder,limit:e.limit,min_events_count:e.minEventsCount}:{chat_id:e.chatId,page_id:e.pageId}))},markEventsAsSeen:function(e){return f(rn(ke,{chat_id:e.chatId,seen_up_to:e.seenUpTo}))},on:d.on,once:d.once,off:d.off,rateChat:function(e){var t=e.chatId,n=e.rating;return v.listThreads({chatId:t}).then((function(e){var r=e.threads;if(!r.length)throw lt({message:'There is no thread in "'+t+'".',code:pe});return v.updateThreadProperties({chatId:t,threadId:r[0].id,properties:{rating:n}})}))},resumeChat:function(n){return Rr({env:r,licenseId:e.licenseId,eventName:"chat_started"}),f(rn(Pe,function(e){var n=Wt(e);return t({},n,{chat:t({},n.chat,{id:e.chat.id})})}(n)))},sendEvent:function(e){function t(t){return e.apply(this,arguments)}return t.toString=function(){return""+e},t}((function(e){return f(function(e){var t=e.attachToLastThread,n={chat_id:e.chatId,event:Xt(e.event)};return t&&(n.attach_to_last_thread=!0),rn(Ce,n)}(e))})),sendTicketForm:function(e){return Pr(u,l,e)},sendRichMessagePostback:function(e){return f(rn(Ne,{chat_id:e.chatId,event_id:e.eventId,thread_id:e.threadId,postback:e.postback}))},setCustomerSessionFields:function(e){return f(rn(je,{session_fields:Qt(e.sessionFields)}))},setSneakPeek:function(e){var t=e.chatId,n=e.sneakPeekText,r=u.getState();ot(r,t)&&at(r)&&f(rn(xe,{chat_id:t,sneak_peek_text:n})).catch(g)},startChat:function(t){return void 0===t&&(t={}),Rr({env:r,licenseId:e.licenseId,eventName:"chat_started"}),f(rn(De,Wt(t)))},updateChatProperties:function(e){return f(rn(qe,{id:e.id,properties:e.properties}))},updateCustomer:function(e){return f(rn(Re,Zt(e)))},updateCustomerPage:function(e){u.dispatch({type:ce,payload:E(["title","url"],e)})},updateEventProperties:function(e){return f(rn(Me,{chat_id:e.chatId,event_id:e.eventId,thread_id:e.threadId,properties:e.properties}))},updateThreadProperties:function(e){return f(rn(Ue,{chat_id:e.chatId,thread_id:e.threadId,properties:e.properties}))},uploadFile:function(e){return qr({auth:l,store:u},e)}});return a?h():u.dispatch({type:G,payload:{sessionFields:"function"==typeof i?i().sessionFields:{}}}),v},e.parseCustomEvent=Tn,e.parseEvent=kn,e.parseFile=In,e.parseFilledForm=En,e.parseForm=_r,e.parseGreeting=Pn,e.parseMessage=bn,e.parseRichMessage=On,e.parseSystemMessage=Sn,Object.defineProperty(e,"__esModule",{value:!0})}));
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).CustomerSDK={})}(this,(function(e){"use strict";function t(){return(t=Object.assign?Object.assign.bind():function(e){for(var t=1;arguments.length>t;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function n(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;a.length>r;r++)0>t.indexOf(n=a[r])&&(o[n]=e[n]);return o}function r(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}var o="__test_storage_support__",a="@@test",i=function(){var e=Object.create(null);return{getItem:function(t){var n=e[t];return"string"==typeof n?n:null},setItem:function(t,n){e[t]=n},removeItem:function(t){delete e[t]},clear:function(){e=Object.create(null)}}}(),c=function(e){void 0===e&&(e="local");try{var t="session"===e?window.sessionStorage:window.localStorage;return t.setItem(o,a),t.getItem(o)!==a?!1:(t.removeItem(o),!0)}catch(e){return!1}}()?window.localStorage:i,u=function(e,t){return new Promise((function(n){return n(c.setItem(e,t))}))},s=function(e){return new Promise((function(t){return t(c.getItem(e))}))},d=function(e){return new Promise((function(t){return t(c.removeItem(e))}))},p={}.hasOwnProperty;function l(e,t){return p.call(t,e)}function f(e,t){var n;return(n=[]).concat.apply(n,t.map(e))}function _(e){return Array.isArray(e)}function h(e){if("keys"in Object&&"function"==typeof Object.keys)return Object.keys(e);var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t}function v(e,t){return h(t).reduce((function(n,r){return n[r]=e(t[r]),n}),{})}function y(e){return e}function g(e){var t=Math.random().toString(36).substring(2);return l(t,e)?g(e):t}function m(e,t){return-1!==t.indexOf(e)}function I(){}function E(e){return h(e).map((function(t){return e[t]}))}function T(e,t){return e.reduce((function(e,n){return e[n]=t[n],e}),{})}function O(e,t){return e.reduce((function(e,n){return l(n,t)&&(e[n]=t[n]),e}),{})}function b(e){return h(e).map((function(t){return[t,e[t]]}))}function S(e,t){return e===t?0:t>e?-1:1}var N=function(e){return b(e).map((function(e){return e.map(encodeURIComponent).join("=")})).join("&")},w=/[^:]+:\/\/[^(/|?)\s]+/,C=function(e){return e.replace(/\w/g,"$&[\\r\\n\\t]*")},R=(RegExp("^[\0-]*("+C("javascript")+"|"+C("data")+"):","i"),/^((http(s)?:)?\/\/)/);function P(e,t){return t=t||{},new Promise((function(n,r){var o=new XMLHttpRequest,a=[],i=[],c={},u=function(){return{ok:2==(o.status/100|0),statusText:o.statusText,status:o.status,url:o.responseURL,text:function(){return Promise.resolve(o.responseText)},json:function(){return Promise.resolve(o.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([o.response]))},clone:u,headers:{keys:function(){return a},entries:function(){return i},get:function(e){return c[e.toLowerCase()]},has:function(e){return e.toLowerCase()in c}}}};for(var s in o.open(t.method||"get",e,!0),o.onload=function(){o.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,(function(e,t,n){a.push(t=t.toLowerCase()),i.push([t,n]),c[t]=c[t]?c[t]+","+n:n})),n(u())},o.onerror=r,o.withCredentials="include"==t.credentials,t.headers)o.setRequestHeader(s,t.headers[s]);o.send(t.body||null)}))}var A="https://accounts.livechatinc.com",D=function(e){var t=e.code,n=Error(e.message);return n.code=t,n},k=function(e,t){return P(""+function(e,t){return""+("production"===t?A:A.replace("accounts.","accounts."+t+"."))+function(e){return e.uniqueGroups?"/v2/customer/"+e.organizationId+"/"+e.groupId+"/token":"/v2/customer/token"}(e)}(e,t),{method:"POST",credentials:"include",body:JSON.stringify({response_type:"token",grant_type:"cookie",client_id:e.clientId,organization_id:e.organizationId,redirect_uri:(n=window.location+"",r=n.match(w),(r&&r[0])+window.location.pathname)})}).then((function(e){return e.json()})).then((function(t){return function(e,t){if("identity_exception"in e)throw D({code:"SSO_IDENTITY_EXCEPTION",message:e.identity_exception});if("oauth_exception"in e)throw D({code:"SSO_OAUTH_EXCEPTION",message:e.oauth_exception});return{accessToken:e.access_token,entityId:e.entity_id,expiresIn:1e3*e.expires_in,tokenType:e.token_type,creationDate:Date.now(),organizationId:t}}(t,e.organizationId)}));var n,r},U=function(e){if("string"!=typeof e.organizationId||"string"!=typeof e.clientId)throw Error("You need to pass valid configuration object: { organizationId, clientId }.")},x=function(e,t,n){U(e);var r=e.tokenStoragePrefix||"@@lc_auth_token:",o=""+r+t+(e.uniqueGroups?":"+e.groupId:""),a=""+r+e.organizationId+(e.uniqueGroups?":"+e.groupId:""),i=null,c=null,p=s(o).then((function(e){null!==p&&(p=null,e?u(a,e).then((function(){d(o).then((function(){c=JSON.parse(e)}))})):d(o).then((function(){return s(a).then((function(e){e&&(c=JSON.parse(e))}))})))})),l=function(){return i=k(e,n).then((function(e){return i=null,u(a,JSON.stringify(e)),c=e,e}),(function(e){throw i=null,e}))};return{getFreshToken:l,getToken:function e(){return i||(c&&!function(e){var t=e.creationDate,n=e.expiresIn;return Date.now()>=t+n}(c)?Promise.resolve(c):p?p.then(e):l())},hasToken:function e(){return p?p.then(e):Promise.resolve(!!c)},invalidate:function(){return c=null,p=null,d(a)}}};var j=function(){var e,r={all:e=e||new Map,on:function(t,n){var r=e.get(t);r?r.push(n):e.set(t,[n])},off:function(t,n){var r=e.get(t);r&&(n?r.splice(r.indexOf(n)>>>0,1):e.set(t,[]))},emit:function(t,n){var r=e.get(t);r&&r.slice().map((function(e){e(n)})),(r=e.get("*"))&&r.slice().map((function(e){e(t,n)}))}},o=r.all,a=n(r,["all"]);return t({},a,{off:function(e,t){e?a.off(e,t):o.clear()},once:function(e,t){a.on(e,(function n(r,o){a.off(e,n),t(r,o)}))}})},L="change_region",M="check_goals",q="destroy",G="fail_all_requests",H="login_success",F="pause_connection",z="prefetch_token",V="push_received",Y="push_response_received",B="reconnect",J="request_failed",K="response_received",X="send_request",Q="set_chat_active",W="set_self_id",Z="socket_connected",$="socket_disconnected",ee="socket_recovered",te="socket_unstable",ne="start_connection",re="update_customer_page",oe="CONNECTION_LOST",ae="IDENTITY_MISMATCH",ie="MISDIRECTED_CONNECTION",ce="MISSING_CHAT_THREAD",ue="SDK_DESTROYED",se="accept_greeting",de="cancel_greeting",pe="delete_chat_properties",le="delete_event_properties",fe="delete_thread_properties",_e="get_chat",he="get_customer",ve="get_form",ye="get_predicted_agent",ge="get_url_info",me="list_chats",Ie="list_group_statuses",Ee="list_threads",Te="login",Oe="mark_events_as_seen",be="resume_chat",Se="send_event",Ne="send_rich_message_postback",we="send_sneak_peek",Ce="set_customer_session_fields",Re="start_chat",Pe="update_chat_properties",Ae="update_customer",De="update_customer_page",ke="update_event_properties",Ue="update_thread_properties";var xe=function(e){var t,n=e.Symbol;return"function"==typeof n?n.observable?t=n.observable:(t=n("observable"),n.observable=t):t="@@observable",t}("undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof module?module:Function("return this")()),je=function(){return Math.random().toString(36).substring(7).split("").join(".")},Le={INIT:"@@redux/INIT"+je(),REPLACE:"@@redux/REPLACE"+je(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+je()}};function Me(e){if("object"!=typeof e||null===e)return!1;for(var t=e;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function qe(e,t,n){var r;if("function"==typeof t&&"function"==typeof n||"function"==typeof n&&"function"==typeof arguments[3])throw Error("It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function.");if("function"==typeof t&&void 0===n&&(n=t,t=void 0),void 0!==n){if("function"!=typeof n)throw Error("Expected the enhancer to be a function.");return n(qe)(e,t)}if("function"!=typeof e)throw Error("Expected the reducer to be a function.");var o=e,a=t,i=[],c=i,u=!1;function s(){c===i&&(c=i.slice())}function d(){if(u)throw Error("You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.");return a}function p(e){if("function"!=typeof e)throw Error("Expected the listener to be a function.");if(u)throw Error("You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api-reference/store#subscribe(listener) for more details.");var t=!0;return s(),c.push(e),function(){if(t){if(u)throw Error("You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api-reference/store#subscribe(listener) for more details.");t=!1,s();var n=c.indexOf(e);c.splice(n,1)}}}function l(e){if(!Me(e))throw Error("Actions must be plain objects. Use custom middleware for async actions.");if(void 0===e.type)throw Error('Actions may not have an undefined "type" property. Have you misspelled a constant?');if(u)throw Error("Reducers may not dispatch actions.");try{u=!0,a=o(a,e)}finally{u=!1}for(var t=i=c,n=0;t.length>n;n++){(0,t[n])()}return e}function f(e){if("function"!=typeof e)throw Error("Expected the nextReducer to be a function.");o=e,l({type:Le.REPLACE})}function _(){var e,t=p;return(e={subscribe:function(e){if("object"!=typeof e||null===e)throw new TypeError("Expected the observer to be an object.");function n(){e.next&&e.next(d())}return n(),{unsubscribe:t(n)}}})[xe]=function(){return this},e}return l({type:Le.INIT}),(r={dispatch:l,subscribe:p,getState:d,replaceReducer:f})[xe]=_,r}function Ge(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function He(e,t){var n=Object.keys(e);return Object.getOwnPropertySymbols&&n.push.apply(n,Object.getOwnPropertySymbols(e)),t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n}function Fe(e){for(var t=1;arguments.length>t;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?He(n,!0).forEach((function(t){Ge(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):He(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ze(){for(var e=arguments.length,t=Array(e),n=0;e>n;n++)t[n]=arguments[n];return 0===t.length?function(e){return e}:1===t.length?t[0]:t.reduce((function(e,t){return function(){return e(t.apply(void 0,arguments))}}))}function Ve(){for(var e=arguments.length,t=Array(e),n=0;e>n;n++)t[n]=arguments[n];return function(e){return function(){var n=e.apply(void 0,arguments),r=function(){throw Error("Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.")},o={getState:n.getState,dispatch:function(){return r.apply(void 0,arguments)}},a=t.map((function(e){return e(o)}));return Fe({},n,{dispatch:r=ze.apply(void 0,a)(n.dispatch)})}}}var Ye=function(e){var t=e.min,n=void 0===t?1e3:t,r=e.max,o=void 0===r?5e3:r,a=e.jitter,i=void 0===a?.5:a,c=0;return{duration:function(){var e=n*Math.pow(2,c++);if(i){var t=Math.random(),r=Math.floor(t*i*e);e=0==(1&Math.floor(10*t))?e-r:e+r}return 0|Math.min(e,o)},reset:function(){c=0}}};function Be(){var e={};return e.promise=new Promise((function(t,n){e.resolve=t,e.reject=n})),e}var Je="connected",Ke="destroyed",Xe="disconnected",Qe="paused",We="reconnecting",Ze=Object.freeze({__proto__:null,CONNECTED:Je,DESTROYED:Ke,DISCONNECTED:Xe,PAUSED:Qe,RECONNECTING:We}),$e="agent",et="customer",tt=Object.freeze({__proto__:null,AGENT:$e,CUSTOMER:et}),nt=function(e){return e.connection.status},rt=function(e,t){return e.requests[t]},ot=function(e){return e.users.self.id},at=function(e,t){var n=e.chats[t];return!!n&&n.active},it=function(e){return nt(e)===Je},ct=function(e){return function(e){var t=e.region;return"https://api"+(t?"-"+t:"")+function(e){var t=e.env;return"feaf6c0e-9f43-48ff-9ad0-8e24e0350932"===e.organizationId?".staging":"production"===t?"":"."+t}(e)+".livechatinc.com"}(e)+"/v3.5/customer"},ut=function(e,o){return t({},e,{requests:n(e.requests,[o.id].map(r))})},st=function(e,n){return t({},n,{connection:t({},n.connection,{status:e})})},dt=function(e){var n,r,o;return r=e,(n={}).change_region=function(e,n){return t({},e,{region:n.region})},n.destroy=function(e){return st(Ke,e)},n.login_success=function(e){return st(Je,e)},n.pause_connection=function(e){return st(Qe,e)},n.request_failed=ut,n.response_received=ut,n.push_response_received=ut,n.send_request=function(e,n){var r,o=n.id;return t({},e,{requests:t({},e.requests,(r={},r[o]={id:o,promise:n.promise,resolve:n.resolve,reject:n.reject,request:n.request},r))})},n.set_chat_active=function(e,n){var r,o=n.id;return t({},e,{chats:t({},e.chats,(r={},r[o]=t({},e.chats[o],{active:n.active}),r))})},n.set_self_id=function(e,n){return t({},e,{users:t({},e.users,{self:t({},e.users.self,{id:n.id})})})},n.socket_disconnected=function(e){var n=nt(e);return t({},st(n===Xe?Xe:We,e),{requests:{}})},n.update_customer_page=function(e,n){return t({},e,{page:t({},e.page,n)})},(o=n)[void 0]&&console.warn("Reducer contains an 'undefined' action type.\nHave you misspelled a constant?"),function(e,t){return void 0===e&&(e=r),l(t.type,o)?o[t.type](e,t.payload):e}};function pt(e){var n=y,r=function(){var e=[],t=function(t){return function(n){return function(r){var o=n(r);return e.forEach((function(e){e(r,t)})),o}}};return t.add=function(t){e.push(t)},t}(),o=qe(dt(function(e){var n=e.application,r=e.organizationId,o=e.groupId,a=void 0===o?null:o,i=e.env,c=e.page,u=void 0===c?null:c,s=e.region,d=void 0===s?null:s,p=e.referrer,l=void 0===p?null:p,f=e.uniqueGroups,_=void 0!==f&&f,h=e.mobile,v=void 0!==h&&h;return{application:t({},void 0===n?{}:n,{name:"customer_sdk",version:"4.0.0"}),organizationId:r,env:i,groupId:a,chats:{},connection:{status:Xe},page:u,region:d,referrer:l,requests:{},users:{self:{id:null,type:et},others:{}},uniqueGroups:_,mobile:v}}(e)),n(Ve(r)));return o.addSideEffectsHandler=r.add,o}function lt(e){var t=e.code,n=Error(e.message);return n.code=t,n}var ft="access_token_expired",_t="customer_banned",ht="customer_temporarily_blocked",vt="license_expired",yt="license_not_found",gt="misdirected_connection",mt="product_version_changed",It="service_temporarily_unavailable",Et="too_many_connections",Tt="too_many_unauthorized_connections",Ot="unsupported_version",bt="logged_out_remotely",St=Object.freeze({__proto__:null,ACCESS_TOKEN_EXPIRED:ft,CONNECTION_TIMEOUT:"connection_timeout",CUSTOMER_BANNED:_t,CUSTOMER_TEMPORARILY_BLOCKED:ht,INACTIVITY_TIMEOUT:"inactivity_timeout",INTERNAL_ERROR:"internal_error",LICENSE_EXPIRED:vt,LICENSE_NOT_FOUND:yt,MISDIRECTED_CONNECTION:gt,PRODUCT_VERSION_CHANGED:mt,SERVICE_TEMPORARILY_UNAVAILABLE:It,TOO_MANY_CONNECTIONS:Et,TOO_MANY_UNAUTHORIZED_CONNECTIONS:Tt,UNSUPPORTED_VERSION:Ot,LOGGED_OUT_REMOTELY:bt}),Nt="chat_deactivated",wt="chat_properties_deleted",Ct="chat_properties_updated",Rt="chat_transferred",Pt="customer_disconnected",At="customer_page_updated",Dt="customer_side_storage_updated",kt="customer_updated",Ut="event_properties_deleted",xt="event_properties_updated",jt="event_updated",Lt="events_marked_as_seen",Mt="greeting_accepted",qt="greeting_canceled",Gt="groups_status_updated",Ht="incoming_chat",Ft="incoming_event",zt="incoming_greeting",Vt="incoming_multicast",Yt="incoming_rich_message_postback",Bt="incoming_typing_indicator",Jt="queue_position_updated",Kt="thread_properties_deleted",Xt="thread_properties_updated",Qt="user_added_to_chat",Wt="user_removed_from_chat",Zt=Object.freeze({__proto__:null,CHAT_DEACTIVATED:Nt,CHAT_PROPERTIES_DELETED:wt,CHAT_PROPERTIES_UPDATED:Ct,CHAT_TRANSFERRED:Rt,CUSTOMER_DISCONNECTED:Pt,CUSTOMER_PAGE_UPDATED:At,CUSTOMER_SIDE_STORAGE_UPDATED:Dt,CUSTOMER_UPDATED:kt,EVENT_PROPERTIES_DELETED:Ut,EVENT_PROPERTIES_UPDATED:xt,EVENT_UPDATED:jt,EVENTS_MARKED_AS_SEEN:Lt,GREETING_ACCEPTED:Mt,GREETING_CANCELED:qt,GROUPS_STATUS_UPDATED:Gt,INCOMING_CHAT:Ht,INCOMING_EVENT:Ft,INCOMING_GREETING:zt,INCOMING_MULTICAST:Vt,INCOMING_RICH_MESSAGE_POSTBACK:Yt,INCOMING_TYPING_INDICATOR:Bt,QUEUE_POSITION_UPDATED:Jt,THREAD_PROPERTIES_DELETED:Kt,THREAD_PROPERTIES_UPDATED:Xt,USER_ADDED_TO_CHAT:Qt,USER_REMOVED_FROM_CHAT:Wt}),$t="file",en="form",tn="filled_form",nn="message",rn="rich_message",on="system_message",an="custom",cn=Object.freeze({__proto__:null,FILE:$t,FORM:en,FILLED_FORM:tn,MESSAGE:nn,RICH_MESSAGE:rn,SYSTEM_MESSAGE:on,CUSTOM:an}),un=function(e){var t,n={};return"string"==typeof e.customId&&(n.custom_id=e.customId),"object"!=typeof(t=e.properties)||null===t||_(t)||(n.properties=e.properties),n},sn=function(e){switch(e.type){case nn:var r=t({},un(e),{type:e.type,text:e.text});return e.postback&&(r.postback={id:e.postback.id,thread_id:e.postback.threadId,event_id:e.postback.eventId,type:e.postback.type,value:e.postback.value}),r;case $t:return t({},un(e),{type:e.type,url:e.url,alternative_text:e.alternativeText});case tn:return t({},un(e),{type:e.type,form_id:e.formId,fields:e.fields.map((function(e){switch(e.type){case"group_chooser":if(!e.answer)return e;var r=e.answer,o=r.groupId;return t({},e,{answer:t({},n(r,["groupId"]),{group_id:o})});default:return e}}))});case on:var o=t({},un(e),{type:e.type,text:e.text,system_message_type:e.systemMessageType});return e.recipients&&(o.recipients=e.recipients),o;case an:var a=t({},un(e),{type:e.type});return e.content&&(a.content=e.content),a}},dn=function(e){var t=e.active,n=e.chat,r=e.continuous,o={active:void 0===t||t,chat:{}};if("boolean"==typeof r&&(o.continuous=r),!n)return o;var a=n.access,i=n.thread,c=n.properties;return a&&a.groupIds&&(o.chat.access={group_ids:a.groupIds}),c&&(o.chat.properties=c),i&&(o.chat.thread=function(e){var t={},n=e.events,r=e.properties;return n&&(t.events=n.map(sn)),r&&(t.properties=r),t}(i)),o},pn=function(e){return b(e).map((function(e){var t;return(t={})[e[0]]=e[1],t}))},ln=function(e){var t=O(["avatar","name","email"],e);return e.sessionFields&&(t.session_fields=pn(e.sessionFields)),t},fn=function(e){return{type:q,payload:{reason:e}}},_n=function(e){return{type:F,payload:{reason:e}}},hn=function(e){return void 0===e&&(e=!1),{type:z,payload:{fresh:e}}},vn=function(e){return{type:B,payload:{delay:e}}},yn=function(e,n,r){return{type:X,payload:t({request:{action:e,payload:n}},r&&{source:r})}},gn=function(e,t){return{type:Q,payload:{id:e,active:t}}},mn=function(e){return{type:W,payload:{id:e}}},In=function(e,t){t.payload.id=g(e.getState().requests);var n=Be(),r=n.resolve,o=n.reject,a=n.promise;return t.payload.promise=a,t.payload.resolve=r,t.payload.reject=o,e.dispatch(t),a},En="AUTHENTICATION",Tn="CUSTOMER_BANNED",On="USERS_LIMIT_REACHED",bn="WRONG_PRODUCT_VERSION",Sn=Object.freeze({__proto__:null,AUTHENTICATION:En,AUTHORIZATION:"AUTHORIZATION",CHAT_ALREADY_ACTIVE:"CHAT_ALREADY_ACTIVE",CHAT_LIMIT_REACHED:"CHAT_LIMIT_REACHED",CUSTOMER_BANNED:Tn,CUSTOMER_SESSION_FIELDS_LIMIT_REACHED:"CUSTOMER_SESSION_FIELDS_LIMIT_REACHED",ENTITY_TOO_LARGE:"ENTITY_TOO_LARGE",GREETING_NOT_FOUND:"GREETING_NOT_FOUND",GROUP_OFFLINE:"GROUP_OFFLINE",GROUPS_OFFLINE:"GROUPS_OFFLINE",GROUP_NOT_FOUND:"GROUP_NOT_FOUND",GROUP_UNAVAILABLE:"GROUP_UNAVAILABLE",INTERNAL:"INTERNAL",LICENSE_EXPIRED:"LICENSE_EXPIRED",MISDIRECTED_REQUEST:"MISDIRECTED_REQUEST",PENDING_REQUESTS_LIMIT_REACHED:"PENDING_REQUESTS_LIMIT_REACHED",REQUEST_TIMEOUT:"REQUEST_TIMEOUT",SERVICE_UNAVAILABLE:"SERVICE_UNAVAILABLE",UNSUPPORTED_VERSION:"UNSUPPORTED_VERSION",USERS_LIMIT_REACHED:On,VALIDATION:"VALIDATION",WRONG_PRODUCT_VERSION:bn}),Nn=function(e){var t=e.getState();return"side_storage_"+t.organizationId+(t.uniqueGroups?":"+t.groupId:"")},wn=function(e,t){var n=function(e,t){var n=e.getState();return"side_storage_"+t+(n.uniqueGroups?":"+n.groupId:"")}(e,t),r=Nn(e);return s(n).catch(I).then((function(e){return e?u(r,e).catch(I).then((function(){return d(n).catch(I).then((function(){return JSON.parse(e)})).catch(I)})):s(r).catch(I).then((function(e){return JSON.parse(e||"{}")})).catch(I)})).catch(I)},Cn=function(e,t,n){var r=e.slice(0),o=!1;return function e(a){var i,c=r.shift();(i=function(){return c(a)},new Promise((function(e){e(i())}))).then((function(n){o||(r.length?e(n):t(n))}),(function(e){o||n(e)}))}(),{cancel:function(){o=!0}}},Rn=function(e,t,n){return In(e,yn(t,n,"login"))};function Pn(e,n,r){var o,a,i=null,c={min:300,max:6e4,jitter:.3},u=Ye(c),s=Ye(t({},c,{min:1e3})),d=u,p=function(e){return o.dispatch(fn(e))},l=function(){return o.dispatch(vn(d.duration()))},f=function(){return Promise.all([e.getToken(),wn(o,r)])},_=function(e){var t=e[0],n=e[1],r=ot(o.getState());if(null===r)o.dispatch(mn(t.entityId));else if(r!==t.entityId){var a=Error("Identity has changed.");throw a.code=ae,a}return[t,n]},h=function(e){var t,r=e[0],a=e[1],c=o.getState(),u=c.application,s=c.groupId,d=c.page,p=c.referrer,l=c.mobile,f={token:r.tokenType+" "+r.accessToken,customer:"function"==typeof n?ln(n()):{},customer_side_storage:a,is_mobile:l,application:T(["name","version"],u)};return"number"==typeof s&&(f.group_id=s),u.channelType&&(f.application.channel_type=u.channelType),null!==d&&(i=d,f.customer_page=d),null!==p&&(f.referrer=p),Promise.race([Rn(o,Te,f),(t=15e3,new Promise((function(e){setTimeout(e,t)}))).then((function(){return Promise.reject(lt({message:"Request timed out.",code:"REQUEST_TIMEOUT"}))}))])};return{sendLogin:function(t){var n;o=t,null==(n=a)||n.cancel(),a=Cn([f,_,h],(function(e){var t;a=null,u.reset(),s.reset(),d=u,t=o.getState().page,i!==t&&Rn(o,De,t).catch(I),i=null,o.dispatch({type:H,payload:e})}),(function(t){switch(a=null,t.code){case En:return e.getFreshToken(),void l();case oe:case ie:case ue:return;case"SSO_IDENTITY_EXCEPTION":case"SSO_OAUTH_EXCEPTION":return"server_error"===t.message||"temporarily_unavailable"===t.message?void l():void p(t.message);case On:return void o.dispatch(_n(t.code.toLowerCase()));case ae:case Tn:case bn:return void p(t.code.toLowerCase());case"SERVICE_TEMPORARILY_UNAVAILABLE":return d=s,void l();default:return void l()}}))},cancel:function(){var e;null==(e=a)||e.cancel()}}}var An,Dn=function(e,t){var n=e.dispatch,r=function(e){return e.requests}((0,e.getState)());n({type:G,payload:{rejects:Object.keys(r).map((function(e){return r[e].reject})),reason:t}})},kn=function(e,t,n){var r=t.payload.id;(0,e.dispatch)({type:J,payload:{id:r,reject:(0,e.getState)().requests[r].reject,error:n}})},Un=Object.freeze({success:!0}),xn=function(e,t){var n={id:t.id,authorId:t.author_id,createdAt:t.created_at,threadId:e,properties:t.properties||{}};return void 0!==t.custom_id&&(n.customId=t.custom_id),n},jn=function(e,t){var n,r,o,a,i;t.height>t.width?(r="height",o="width",a=t.height,i=t.width):(r="width",o="height",a=t.width,i=t.height);var c=e/a;return(n={})[r]=Math.ceil(Math.min(a,e)),n[o]=Math.ceil(Math.min(c*i,i)),n},Ln=function(e,n){return void 0!==n.width&&void 0!==n.height?function(e,n){return t({},xn(e,n),{type:$t,contentType:n.content_type,url:n.url,name:n.name,width:n.width,height:n.height,thumbnails:{default:t({url:n.thumbnail_url},jn(300,n)),high:t({url:n.thumbnail2x_url},jn(600,n))}},n.alternative_text&&{alternativeText:n.alternative_text})}(e,n):t({},xn(e,n),{type:$t,contentType:n.content_type,url:n.url,name:n.name})},Mn=function(e,r){return t({},xn(e,r),{type:tn,formId:r.form_id,fields:r.fields.map((function(e){switch(e.type){case"group_chooser":if(!e.answer)return e;var r=e.answer,o=r.group_id;return t({},e,{answer:t({},n(r,["group_id"]),{groupId:o})});default:return e}}))})},qn=function(e,n){return t({},xn(e,n),{type:nn,text:n.text})},Gn=function(e,n){return t({},xn(e,n),{type:an},n.content&&{content:n.content})},Hn=function(e){var n={};if("string"==typeof e.title&&(n.title=e.title),"string"==typeof e.subtitle&&(n.subtitle=e.subtitle),e.image){var r=e.image;n.image=t({url:r.url,name:r.name},r.alternative_text&&{alternativeText:r.alternative_text})}return e.buttons&&(n.buttons=e.buttons.map((function(e){switch(e.type){case"message":case"phone":return{type:e.type,text:e.text,postbackId:e.postback_id,userIds:e.user_ids,value:e.value,role:e.role||"default"};case"cancel":return{type:e.type,text:e.text,postbackId:e.postback_id,userIds:e.user_ids,role:e.role||"default"};case"url":var t={type:e.type,text:e.text,postbackId:e.postback_id,userIds:e.user_ids,value:e.value,role:e.role||"default"};return e.target&&(t.target=e.target),t;case"webview":var n={type:e.type,text:e.text,postbackId:e.postback_id,userIds:e.user_ids,value:e.value,role:e.role||"default"};return"string"==typeof e.webview_height&&(n.webviewHeight=e.webview_height),n;default:return{text:e.text,postbackId:e.postback_id,userIds:e.user_ids,role:e.role||"default"}}}))),n},Fn=function(e,n){switch(n.template_id){case"cards":case"quick_replies":case"sticker":return t({},xn(e,n),{type:rn,template:n.template_id,elements:n.elements.map(Hn)});default:return null}},zn=function(e,n){var r=t({},xn(e,t({},n,{author_id:"system"})),{type:on,text:n.text,systemMessageType:n.system_message_type});return n.text_vars&&(r.textVars=n.text_vars),r},Vn=function(e,n){switch(n.type){case $t:return Ln(e,n);case en:return function(e,n){return t({},xn(e,n),{authorId:"system",type:en,formId:n.form_id,fields:n.fields})}(e,n);case tn:return Mn(e,n);case nn:return qn(e,n);case rn:return Fn(e,n);case on:return zn(e,n);case an:return Gn(e,n);default:return null}},Yn=function(e){return{id:e.id,addon:e.addon||null,uniqueId:e.unique_id,displayedFirstTime:e.displayed_first_time,accepted:e.accepted||!1,subtype:e.subtype||"greeting",event:Vn(null,e.event),agent:{id:e.agent.id,name:e.agent.name,avatar:e.agent.avatar,jobTitle:e.agent.job_title,isBot:e.agent.is_bot||!1}}},Bn=function(e){return void 0===e&&(e={}),e.group_ids?{groupIds:e.group_ids}:{}},Jn=function(e){return v((function(e){return e.events_seen_up_to?e.events_seen_up_to:null}),(t="id",e.reduce((function(e,n){return e[n[t]]=n,e}),{})));var t},Kn=function(e,t){var n=t.properties||{};return{id:t.id,chatId:e,active:t.active,access:Bn(t.access),createdAt:t.created_at,userIds:t.user_ids,events:t.events.map((function(e){return Vn(t.id,e)})).filter(Boolean),properties:n,previousThreadId:t.previous_thread_id||null,nextThreadId:t.next_thread_id||null,queue:t.queue?tr(t.queue):null}},Xn=function(e){return{id:e.id,access:Bn(e.access),users:e.users.map(nr),properties:e.properties||{},eventsSeenUpToMap:Jn(e.users)}},Qn=function(e){var t=O(["avatar","email","name"],e);return e.session_fields&&(t.sessionFields=e.session_fields.reduce((function(e,t){var n=Object.keys(t)[0];return e[n]=t[n],e}),{})),t},Wn=function(e){var n=Qn(e);return t({id:e.id,type:et},n,{sessionFields:n.sessionFields||{}})},Zn=function(e){var n=e.statistics;return t({},Wn(e),{statistics:{chatsCount:n.chats_count,threadsCount:n.threads_count,visitsCount:n.visits_count,pageViewsCount:n.page_views_count,greetingsShownCount:n.greetings_shown_count,greetingsAcceptedCount:n.greetings_accepted_count}})},$n=function(e){var t=e.agent;return{agent:{id:t.id,type:$e,name:t.name,avatar:t.avatar,jobTitle:t.job_title,isBot:t.is_bot},queue:e.queue}},er=function(e){return{position:e.position,waitTime:e.wait_time}},tr=function(e){return t({},er(e),{queuedAt:e.queued_at})},nr=function(e){return e.type===et?t({},Wn(r=e),{present:r.present}):{id:(n=e).id,type:$e,name:n.name,avatar:n.avatar,jobTitle:n.job_title,present:n.present};var n,r},rr=((An={}).CONNECTION_LOST="Connection lost.",An.MISDIRECTED_CONNECTION="Connected to wrong region.",An),or=function(e,t){var n=e.getState();switch(t.type){case Y:case V:switch(t.payload.action){case Nt:return void e.dispatch(gn(t.payload.payload.chatId,!1));case Ht:return void e.dispatch(gn(t.payload.payload.chat.id,!0));default:return}case K:switch(t.payload.action){case me:return void t.payload.payload.chatsSummary.filter((function(e){var t=e.active;return at(n,e.id)!==t})).forEach((function(t){e.dispatch(gn(t.id,t.active))}));default:return}}},ar=function(e,t){t.forEach((function(t){if("present"in t){var r=n(t,["present"]);e("user_data",r)}else if(t.type!==et)e("user_data",t);else{var o=n(t,["statistics"]);e("user_data",o)}}))},ir=function(e,t){var n=e.emit,r=e.store,o=t.payload;switch(o.action){case Xt:return o.payload.properties.lc2&&"queue_pos"in o.payload.properties.lc2&&n(Jt,{chatId:o.payload.chatId,threadId:o.payload.threadId,queue:{position:o.payload.properties.lc2.queue_pos,waitTime:o.payload.properties.lc2.queue_waiting_time}}),void n("thread_properties_updated",o.payload);case Dt:return void function(e,t){u(Nn(e),JSON.stringify(t)).catch(I)}(r,o.payload.customer_side_storage);case Pt:switch(o.payload.reason){case ft:r.dispatch(hn(!0)),r.dispatch(vn(100)),n("disconnected",o.payload);break;case _t:case ht:case yt:case mt:case Et:case Ot:case bt:r.dispatch(fn(o.payload.reason));break;case gt:Dn(r,ie),r.dispatch({type:L,payload:o.payload.data});break;case It:case Tt:Dn(r,o.payload.reason.toUpperCase());break;default:r.dispatch(vn(100)),n("disconnected",o.payload)}return;case Gt:return void n("availability_updated",{availability:"offline"===o.payload.groups[0].status?"offline":"online"});case Ht:return ar(n,o.payload.chat.users),void n(o.action,o.payload);case Ft:if(null===o.payload.event)return;return void n(o.action,o.payload);case Bt:return void n(o.action,o.payload);case Qt:return ar(n,[o.payload.user]),void n(o.action,o.payload);default:return void n(o.action,o.payload)}},cr=function(e,t){var n=e.emit,r=t.payload;switch(r.action){case Nt:return void r.resolve(Un);case _e:return ar(n,r.payload.users),void r.resolve(r.payload);case Ht:return ar(n,r.payload.chat.users),void r.resolve(r.payload);case Ft:return void r.resolve(r.payload.event);case me:return ar(n,r.payload.users),void r.resolve(r.payload);default:return void r.resolve(r.payload)}},ur=function(e){var n=e.auth,r=e.emitter,o=e.socket,a=r.emit,i=Pn(n,e.customerDataProvider,e.licenseId);return function(e,c){switch(e.type){case L:return void o.reinitialize();case M:return void function(e,t,n){return t.getToken().then((function(t){var r=e.getState();null===ot(r)&&e.dispatch(mn(t.entityId));var o=r.page;if(o&&o.url){var a=N({organization_id:r.organizationId}),i={session_fields:pn(n||{}),group_id:r.groupId||0,page_url:o.url};return P(ct(r)+"/action/check_goals?"+a,{method:"POST",headers:{"Content-Type":"application/json",Authorization:t.tokenType+" "+t.accessToken},body:JSON.stringify(i)}).then((function(){}))}}))}(c,n,e.payload.sessionFields).catch(I);case q:var u=e.payload;switch(i.cancel(),o.destroy(),u.reason){case"manual":Dn(c,ue);break;case _t:case vt:case mt:case bt:Dn(c,oe),a("disconnected",u);break;default:a("disconnected",u)}return void r.off();case G:var s=e.payload,d=s.reason,p={message:rr[d],code:d};return void s.rejects.forEach((function(e){e(lt(p))}));case H:var l=e.payload,f=l.dynamicConfig,_=l.chats,h=l.greeting,v=t({customer:l.customer,availability:l.availability},h&&{greeting:h});return Object.defineProperty(v,"__unsafeDynamicConfig",{value:f}),Object.defineProperty(v,"__unsafeChats",{value:_}),void a("connected",v);case F:var y=e.payload;return o.disconnect(),void("manual"!==y.reason&&a("disconnected",y));case z:return e.payload.fresh?void n.getFreshToken().catch(I):void n.hasToken().then((function(e){return e?n.getToken().then((function(e){if(36e5>=e.creationDate+e.expiresIn-Date.now())return n.invalidate().then(n.getFreshToken)})):n.getToken()})).catch(I);case V:return e.payload.action===Pt||or(c,e),void ir({emit:a,store:c},e);case Y:return or(c,e),void cr({emit:a},e);case B:return Dn(c,oe),void o.reconnect(e.payload.delay);case J:var g=e.payload;return void(0,g.reject)(lt(g.error));case K:return or(c,e),void cr({emit:a},e);case X:var T=c.getState();return function(e){return nt(e)===Ke}(T)?void kn(c,e,{code:ue,message:"SDK destroyed."}):it(T)||"login"===e.payload.source?void function(e,n){var r=n.payload,o=t({request_id:r.id},r.request);switch(o.action){case Te:var a=[];return void e.emit(t({},o,{version:"3.5",payload:t({},o.payload,{pushes:{3.5:E(Zt).filter((function(e){return e!==Pt&&!m(e,a)}))}})}));default:e.emit(o)}}(o,e):void kn(c,e,{code:"NO_CONNECTION",message:"No connection."});case W:return void a("customer_id",e.payload.id);case $:return void a("disconnected",{reason:"connection_lost"});case Z:return void i.sendLogin(c);case ee:if(!it(c.getState()))return;return void a("connection_recovered");case te:if(!it(c.getState()))return;return void a("connection_unstable");case ne:return o.connect(),void c.dispatch(hn());case re:if(!it(c.getState()))return;return void In(c,yn(De,e.payload)).catch(I);default:return}}},sr=function(e,t){var n,r=(void 0===t?{}:t).query,o=N(void 0===r?{}:r),a=o?e+"?"+o:e,i=j(),c=Ye({min:1e3,max:5e3,jitter:.5}),u=3,s=null,d=function(){u=1,c.reset(),i.emit("connect")},p=function(){f(),h(),i.emit("disconnect")},l=function(e){i.emit("message",e.data)},f=function(){var e;(clearTimeout(n),u=3,s)&&((e=s).removeEventListener("open",d),e.removeEventListener("close",p),e.removeEventListener("message",l),s.close(),s=null)},_=function(){var e;u=0,s=new WebSocket(a),(e=s).addEventListener("open",d),e.addEventListener("close",p),e.addEventListener("message",l)},h=function(e){void 0===e&&(e=c.duration()),f(),0!==e?n=setTimeout(_,e):_()};return{connect:function(e){function t(){return e.apply(this,arguments)}return t.toString=function(){return""+e},t}((function(){if(3!==u)throw Error("Socket is already open or connecting.");clearTimeout(n),_()})),destroy:function(){i.off(),f()},disconnect:f,reconnect:h,emit:function(e){if(1!==u)throw Error("Socket is not connected.");s.send(e)},getReadyState:function(){return u},on:i.on,off:i.off}},dr=function(e,n){var r,o,a,i,c=void 0===n?{}:n,u=c.query,s=void 0===u?{}:u,d=c.emitter,p=void 0===d?j():d,l=sr(e,{query:s}),f=(o=I,{cancel:function(){clearTimeout(r),o=I},check:function(){var e=Be();return o=e.resolve,r=setTimeout((function(){var t=Error("Timeout.");t.code="TIMEOUT",e.reject(t)}),2e3),e.promise},resolve:function(e){function t(){return e.apply(this,arguments)}return t.toString=function(){return""+e},t}((function(){clearTimeout(r),o()}))}),_=function(){return 1===l.getReadyState()},h=function(){f.cancel()};return a=l,i=p,["connect","disconnect"].forEach((function(e){a.on(e,(function(t){i.emit(e,t)}))})),l.on("disconnect",h),l.on("message",(function(e){f.resolve();var t=JSON.parse(e);p.emit("message",t)})),"undefined"!=typeof window&&void 0!==window.addEventListener&&(window.addEventListener("online",(function(){_()&&f.check().then((function(){f.cancel(),p.emit("connection_recovered")}),(function(e){if(f.cancel(),"TIMEOUT"!==e.code)throw e;l.reconnect()}))})),window.addEventListener("offline",(function(){f.cancel(),_()&&p.emit("connection_unstable")}))),t({},l,{destroy:function(){h(),l.destroy()},disconnect:function(){h(),l.disconnect()},reconnect:function(e){h(),l.reconnect(e)},emit:function(e){l.emit(JSON.stringify(e))},on:p.on,off:p.off})},pr=function(e,t){var n=e.getState(),r=(ct(n)+"/rtm/ws").replace(/^https/,"wss");return dr(r,{query:{organization_id:n.organizationId},emitter:t})},lr=function(e){return{chatId:e.chat_id,properties:e.properties}},fr=function(e){var n={chatId:e.chat_id,threadId:e.thread_id,transferredTo:t({},e.transferred_to.agent_ids&&{agentIds:e.transferred_to.agent_ids},e.transferred_to.group_ids&&{groupIds:e.transferred_to.group_ids}),queue:e.queue?tr(e.queue):null};return t({},n,"manual"===e.reason?{reason:e.reason,requesterId:e.requester_id}:{reason:e.reason})},_r=function(e){return{url:e.url,title:e.title,openedAt:e.opened_at}},hr=function(e){return t({id:e.id},Qn(e))},vr=function(e){return{chatId:e.chat_id,threadId:e.thread_id,eventId:e.event_id,properties:e.properties}},yr=function(e){return{chatId:e.chat_id,threadId:e.thread_id,eventId:e.event_id,properties:e.properties}},gr=function(e){var t=e.thread_id;return{chatId:e.chat_id,threadId:t,event:Vn(t,e.event)}},mr=function(e){return{chatId:e.chat_id,userId:e.user_id,seenUpTo:e.seen_up_to}},Ir=function(e){return{uniqueId:e.unique_id}},Er=function(e){var n=e.chat;return{chat:t({},Xn(n),{thread:Kn(n.id,n.thread)})}},Tr=function(e){return{chatId:e.chat_id,event:Vn(e.thread_id,e.event)}},Or=function(e){return Yn(e)},br=function(e){return{userId:e.user_id,chatId:e.chat_id,threadId:e.thread_id,eventId:e.event_id,postback:e.postback}},Sr=function(e){var t=e.typing_indicator;return{chatId:e.chat_id,typingIndicator:{authorId:t.author_id,isTyping:t.is_typing}}},Nr=function(e){return{chatId:e.chat_id,threadId:e.thread_id,queue:er(e.queue)}},wr=function(e){return{chatId:e.chat_id,threadId:e.thread_id,properties:e.properties}},Cr=function(e){return{chatId:e.chat_id,threadId:e.thread_id,properties:e.properties}},Rr=function(e){return{chatId:e.chat_id,user:nr(e.user),present:e.user.present}},Pr=function(e){return{chatId:e.chat_id,userId:e.user_id}},Ar=function(e){return e.map((function(e){switch(e.type){case"group_chooser":return t({},e,{options:e.options.map((function(e){var r=e.group_id;return t({},n(e,["group_id"]),{groupId:r})}))});case"rating":var r=e.comment_label;return t({},n(e,["comment_label"]),{commentLabel:r});default:return e}}))},Dr=function(e){var n,r;return{id:e.id,fields:!("id"in e.fields[0])?(n=e.fields,r=n.map((function(e,n){return t({},e,{id:n+""})})),Ar(r)):Ar(e.fields)}},kr=function(e){return e.enabled?t({},e,{form:Dr(e.form)}):e},Ur=function(e){var t={url:e.url};return e.title&&(t.title=e.title),e.description&&(t.description=e.description),e.image_url&&(t.imageUrl="https://"+e.image_url.replace(R,""),e.image_width&&e.image_height&&(t.imageWidth=e.image_width,t.imageHeight=e.image_height)),t},xr=function(e){var t,n,r,o,a,i,c=e.chats_summary.map((function(e){var t=e.last_thread_created_at,n=e.last_thread_id,r=e.last_event_per_type,o=e.properties,a=void 0===o?{}:o,i=e.users,c={id:e.id,active:e.active,access:Bn(e.access),properties:a,users:i.map(nr),lastThreadId:n||null,lastThreadCreatedAt:t||null,eventsSeenUpToMap:Jn(i)};if(!r)return c;c.lastEventsPerType=v((function(e){return Vn(e.thread_id,e.event)}),r);var u,s=r,d=Object.keys(s).map((function(e){return s[e]})),p=(u=d.sort((function(e,t){return e.thread_id===t.thread_id?S(e.event.created_at,t.event.created_at):S(e.thread_created_at,t.thread_created_at)}))).length>0?u[u.length-1]:void 0;return p&&c.lastEventsPerType&&(c.lastEvent=c.lastEventsPerType[p.event.type]),c}));return{chatsSummary:(o=function(e){var t,n=e.lastEvent;return-1*(null!=(t=void 0!==n?n.timestamp:e.order)?t:0)},a=c,i="function"==typeof o?o:function(e){return function(e,t){for(var n="string"==typeof e?e.split("."):e,r=0,o=t;o&&n.length>r;)o=o[n[r++]];return o}(o,e)},(_(a)?[].concat(a):E(a)).sort((function(e,t){return i(e)-i(t)}))),totalChats:e.total_chats,users:(t=function(e){return e.id},n=f((function(e){return e.users}),c),r=[],n.filter((function(e){var n=t(e);return-1===r.indexOf(n)&&(r.push(n),!0)}))),previousPageId:e.previous_page_id||null,nextPageId:e.next_page_id||null}},jr=function(e){return e.groups_status},Lr=function(e,t){return{threads:t.threads.map((function(t){return Kn(e.payload.chat_id,t)})),previousPageId:t.previous_page_id||null,nextPageId:t.next_page_id||null}},Mr=function(e){var n,r,o=e.__priv_dynamic_config,a=e.chats,i=e.greeting;return t({dynamicConfig:o,customer:Zn(e.customer),availability:(n=o,r=n.online_groups_ids,r&&m(n.customer_groups.monitoring.id,r)?"online":"offline"),chats:a.map((function(t){return{id:t.chat_id,active:"has_active_thread"in t?t.has_active_thread:e.has_active_thread,hasUnreadEvents:t.has_unread_events}}))},i&&{greeting:Yn(i)})},qr=function(e){switch(e.action){case Nt:return{action:e.action,payload:{chatId:e.payload.chat_id}};case wt:return{action:e.action,payload:(t=e.payload,{chatId:t.chat_id,properties:t.properties})};case Ct:return{action:e.action,payload:lr(e.payload)};case Rt:return{action:e.action,payload:fr(e.payload)};case Dt:case Pt:return{action:e.action,payload:e.payload};case At:return{action:e.action,payload:_r(e.payload)};case kt:return{action:e.action,payload:hr(e.payload)};case Ut:return{action:e.action,payload:vr(e.payload)};case xt:return{action:e.action,payload:yr(e.payload)};case jt:return{action:e.action,payload:gr(e.payload)};case Lt:return{action:e.action,payload:mr(e.payload)};case Mt:case qt:return{action:e.action,payload:Ir(e.payload)};case Gt:return{action:e.action,payload:e.payload};case Ht:return{action:e.action,payload:Er(e.payload)};case Ft:return{action:e.action,payload:Tr(e.payload)};case zt:return{action:e.action,payload:Or(e.payload)};case Vt:return{action:e.action,payload:e.payload};case Yt:return{action:e.action,payload:br(e.payload)};case Bt:return{action:e.action,payload:Sr(e.payload)};case Jt:return{action:e.action,payload:Nr(e.payload)};case Kt:return{action:e.action,payload:wr(e.payload)};case Xt:return{action:e.action,payload:Cr(e.payload)};case Qt:return{action:e.action,payload:Rr(e.payload)};case Wt:return{action:e.action,payload:Pr(e.payload)}}var t},Gr=function(e,n){var r=e.dispatch,o=n.request_id,a=rt((0,e.getState)(),o),i=a.promise,c=a.resolve,u=function(e){var n,r=e.request,o=e.response;switch(o.action){case se:case de:case pe:case le:case fe:return{action:o.action,payload:Un};case _e:return{action:o.action,payload:(n=o.payload,t({},Xn(n),{thread:n.thread?Kn(n.id,n.thread):null}))};case he:return{action:o.action,payload:Zn(o.payload)};case ve:return{action:o.action,payload:kr(o.payload)};case ye:return{action:o.action,payload:$n(o.payload)};case ge:return{action:o.action,payload:Ur(o.payload)};case me:return{action:o.action,payload:xr(o.payload)};case Ie:return{action:o.action,payload:jr(o.payload)};case Ee:return{action:o.action,payload:Lr(r,o.payload)};case Te:return{action:o.action,payload:Mr(o.payload)};case Oe:case we:case Ce:case Ne:case Pe:case Ae:case De:case ke:case Ue:return{action:o.action,payload:Un}}}({request:a.request,response:n});r({type:K,payload:t({id:o,promise:i,resolve:c},u)})},Hr=function(e,n){var r=e.dispatch;return n.on("connect",(function(){r({type:Z})})),n.on("message",(function(n){if("response"===n.type){if(!n.success)return void function(e,t){var n,r=e.dispatch,o=t.request_id,a=t.payload,i=rt((0,e.getState)(),o);r({type:J,payload:{id:o,reject:i.reject,error:(n=a.error,{code:n.type.toUpperCase(),message:n.message})}})}(e,n);switch(n.action){case be:case Se:case Re:return;default:return void Gr(e,n)}}if("request_id"in n)switch(n.action){case Ht:case Ft:return void function(e,n){var r=e.dispatch,o=n.request_id,a=rt((0,e.getState)(),o),i=a.promise,c=a.resolve,u=qr(n);r({type:Y,payload:t({id:o,promise:i,resolve:c},u)})}(e,n)}!function(e,t){var n=qr(t);n&&e.dispatch({type:V,payload:n})}(e,n)})),n.on("disconnect",(function(){Dn(e,oe),nt(e.getState())===Je&&e.dispatch({type:$})})),n.on("connection_unstable",(function(){r({type:te})})),n.on("connection_recovered",(function(){r({type:ee})})),n.off},Fr="UPLOAD_FAILED",zr=function(e,t,n){var r=void 0===n?{}:n,o=r.headers,a=r.method,i=void 0===a?"POST":a,c=r.onProgress,u=r.withCredentials,s=void 0!==u&&u,d=new XMLHttpRequest;return{promise:new Promise((function(n,r){var a,u;"function"==typeof c&&(d.upload.onprogress=function(e){c(e.loaded/e.total)}),d.onload=function(){var e;try{e=JSON.parse(d.response)}catch(t){e=d.response}if(200>d.status||d.status>=300){var t=Error("Upload failed.");t.code=Fr,t.response=e,r(t)}else n(e)},d.onerror=function(){var e=Error("Upload failed.");e.code=Fr,r(e)},d.onabort=function(){var e=Error("Upload canceled.");e.code="UPLOAD_CANCELED",r(e)},d.open(i,e),d.withCredentials=s,o&&Object.keys(o).forEach((function(e){return d.setRequestHeader(e,o[e])})),d.send((a=t,u=new FormData,Object.keys(a).forEach((function(e){return u.append(e,a[e])})),u))})),cancel:function(){d.abort()}}},Vr=1048576,Yr=10485760,Br=function(e,t){if(void 0===t&&(t=2),1024>e)return e+" b";var n=e/1024;if(Vr>e)return n.toFixed(t)+" kb";var r=n/1024;return 1073741824>e?r.toFixed(t)+" MB":(r/1024).toFixed(t)+" GB"},Jr=function(e,t){var n,r=e.auth,o=e.store,a=t.file,i=t.onProgress,c=!1;return{promise:new Promise((function(e,t){!function(e){if(e.size>Yr)throw lt({message:"The file is too big (max size is "+Br(Yr)+").",code:"TOO_BIG_FILE"})}(a);var u=o.getState(),s=N({organization_id:u.organizationId}),d=ct(u)+"/action/upload_file?"+s,p={file:a};r.getToken().then((function(r){c?t(Error("Upload cancelled.")):(n=zr(d,p,{headers:{Authorization:r.tokenType+" "+r.accessToken},onProgress:i})).promise.then(e,(function(e){if(e.response){var n=e.response.error;t(lt({message:n.message,code:n.type.toUpperCase()}))}else t(e)}))}))})),cancel:function(){c||(c=!0,n&&n.cancel())}}},Kr=function(e){var t=e.organizationId,n=e.eventName;if("production"!==e.env)return Promise.resolve();var r={organizationId:t,event_id:"chat_widget_customer_sdk",message:JSON.stringify({event_name:n,severity:"Informational",sdkVersion:"4.0.0"})};return function(e,t){return new Promise((function(n){var r=new Image;r.src=e+"?"+t,r.onerror=I,r.onload=function(){return n()}}))}("https://queue.livechatinc.com/logs",N(r))},Xr="LISTENER_IDENTITY",Qr={},Wr=function(e,t){void 0===t&&(t="");var n=Object.keys(e);return n.map((function(n){var r=e[n];return function(){for(var e,o=arguments.length,a=Array(o),i=0;o>i;i++)a[i]=arguments[i];(e=console).info.apply(e,[t+"."+n+"() ===>"].concat(a));var c=r.apply(void 0,a);return"function"==typeof(null==c?void 0:c.then)?c.then((function(e){return console.info(t+"."+n+"() <===",e),e}),(function(e){throw console.error(t+"."+n+"() <===",e),e})):c}})).reduce((function(e,t,r){return e[n[r]]=t,e}),{})},Zr=function(e,t,n){if(void 0===n.LISTENER_IDENTITY&&Object.defineProperty(n,Xr,{value:{}}),n.LISTENER_IDENTITY[t])return Qr[n.LISTENER_IDENTITY[t]];var r=function(r){console.info("."+e+'("'+t+'") <===',r),n(r)},o=g(Qr);return n.LISTENER_IDENTITY[t]=o,Qr[o]=r,r},$r=Object.freeze({__proto__:null,ASC:"asc",DESC:"desc"});e.connectionStatuses=Ze,e.debug=function(e){var r=e;console.warn("You probably do not want to use debug(customerSDK) in your production environment.");var o=r.on,a=r.once,i=r.off,c=r.getChatHistory,u=r.auth,s=n(r,["on","once","off","getChatHistory","auth"]),d=Wr(s);return Object.freeze(t({auth:Object.freeze(Wr(u,".auth"))},d,{getChatHistory:function(){for(var e,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];(e=console).info.apply(e,[".getChatHistory()"].concat(n));var o=c.apply(void 0,n),a="history.next()";return{next:function(){var e;return(e=console).info.apply(e,[a+" ===>"].concat(n)),o.next().then((function(e){var t;return(t=console).info.apply(t,[a+" <==="].concat(n,[e])),e}),(function(e){var t;throw(t=console).error.apply(t,[a+" <==="].concat(n,[e])),e}))}}},off:function(e,t){console.info('.off("'+e+'", '+(t.name||"anonymous")+")");var n=t;void 0!==t.LISTENER_IDENTITY&&(n=Qr[t.LISTENER_IDENTITY[e]]);i(e,n)},on:function(e,t){o(e,Zr("on",e,t))},once:function(e,t){a(e,Zr("once",e,t))}}))},e.eventTypes=cn,e.init=function(e,r,o){void 0===r&&(r="production"),U(e);var a=e.autoConnect,i=void 0===a||a,c=e.customerDataProvider,u=e.identityProvider,s=n(e,["autoConnect","customerDataProvider","identityProvider"]),d=pt(t({},s,{env:r})),p=j(),l=function(e){var n=j(),r=pr(e,n);return t({},Object.keys(r).reduce((function(e,t){return e[t]=function(){var e;return(e=r)[t].apply(e,arguments)},e}),{}),{reinitialize:function(){r.disconnect(),(r=pr(e,n)).connect()}})}(d),f="function"==typeof u?u():x(s,o,r);d.addSideEffectsHandler(ur({emitter:p,socket:l,auth:f,customerDataProvider:c,licenseId:o})),Hr(d,l);var _=In.bind(null,d),h=function(){d.dispatch({type:ne})},v=Object.freeze({acceptGreeting:function(e){return _(yn(se,{greeting_id:e.greetingId,unique_id:e.uniqueId}))},auth:f,cancelGreeting:function(e){return _(yn(de,{unique_id:e.uniqueId}))},cancelRate:function(e){var t=e.chatId,n=e.properties,r=void 0===n?["score"]:n;return v.listThreads({chatId:t}).then((function(e){var n=e.threads;if(!n.length)throw lt({message:'There is no thread in "'+t+'".',code:ce});return v.deleteThreadProperties({chatId:t,threadId:n[0].id,properties:{rating:r}})}))},connect:h,deactivateChat:function(e){return _(yn("deactivate_chat",{id:e.id}))},deleteChatProperties:function(e){return _(yn(pe,{id:e.id,properties:e.properties}))},deleteEventProperties:function(e){return _(yn(le,{chat_id:e.chatId,thread_id:e.threadId,event_id:e.eventId,properties:e.properties}))},deleteThreadProperties:function(e){return _(yn(fe,{chat_id:e.chatId,thread_id:e.threadId,properties:e.properties}))},destroy:function(){d.dispatch(fn("manual"))},disconnect:function(){d.dispatch(_n("manual"))},getChat:function(e){return _(yn(_e,{chat_id:e.chatId,thread_id:e.threadId}))},getChatHistory:function(e){return function(e,t){var n={status:"idle",queuedTasks:[],nextPageId:null},r=function r(o,a){switch(n.status){case"idle":return n.status="fetching",void e.listThreads(n.nextPageId?{chatId:t,pageId:n.nextPageId}:{chatId:t,minEventsCount:25}).then((function(e){var t=e.threads;n.nextPageId=e.nextPageId,n.nextPageId?(n.status="idle",o({value:{threads:[].concat(t).reverse()},done:!1})):(n.status="done",o({value:{threads:[].concat(t).reverse()},done:!0}));var a=n.queuedTasks.shift();a&&r(a.resolve,a.reject)}),(function(e){var t=n.queuedTasks;n.status="idle",n.queuedTasks=[],a(e),t.forEach((function(t){return t.reject(e)}))}));case"fetching":return void n.queuedTasks.push({resolve:o,reject:a});case"done":return void o({value:void 0,done:!0})}};return{next:function(e){function t(){return e.apply(this,arguments)}return t.toString=function(){return""+e},t}((function(){return new Promise(r)}))}}(v,e.chatId)},getCustomer:function(){return _(yn(he,{}))},getForm:function(e){return _(yn(ve,{group_id:e.groupId,type:e.type}))},getPredictedAgent:function(e){void 0===e&&(e={});var t=e.groupId;return _(yn(ye,"number"==typeof t?{group_id:t}:{}))},getUrlInfo:function(e){return _(yn(ge,{url:e.url}))},listChats:function(e){return void 0===e&&(e={}),"limit"in e&&"number"==typeof e.limit&&e.limit>25?Promise.reject(Error("Specified limit is too high (max 25).")):_(yn(me,void 0===e.pageId?{limit:e.limit||10}:{page_id:e.pageId}))},listGroupStatuses:function(e){var t=(void 0===e?{}:e).groupIds;return _(yn(Ie,t?{group_ids:t}:{all:!0}))},listThreads:function(e){return _(yn(Ee,void 0===e.pageId?{chat_id:e.chatId,sort_order:e.sortOrder,limit:e.limit,min_events_count:e.minEventsCount}:{chat_id:e.chatId,page_id:e.pageId}))},markEventsAsSeen:function(e){return _(yn(Oe,{chat_id:e.chatId,seen_up_to:e.seenUpTo}))},on:p.on,once:p.once,off:p.off,rateChat:function(e){var t=e.chatId,n=e.rating;return v.listThreads({chatId:t}).then((function(e){var r=e.threads;if(!r.length)throw lt({message:'There is no thread in "'+t+'".',code:ce});return v.updateThreadProperties({chatId:t,threadId:r[0].id,properties:{rating:n}})}))},resumeChat:function(n){return Kr({env:r,organizationId:e.organizationId,eventName:"chat_started"}),_(yn(be,function(e){var n=dn(e);return t({},n,{chat:t({},n.chat,{id:e.chat.id})})}(n)))},sendEvent:function(e){function t(t){return e.apply(this,arguments)}return t.toString=function(){return""+e},t}((function(e){return _(function(e){var t=e.attachToLastThread,n={chat_id:e.chatId,event:sn(e.event)};return t&&(n.attach_to_last_thread=!0),yn(Se,n)}(e))})),sendRichMessagePostback:function(e){return _(yn(Ne,{chat_id:e.chatId,event_id:e.eventId,thread_id:e.threadId,postback:e.postback}))},setCustomerSessionFields:function(e){return _(yn(Ce,{session_fields:pn(e.sessionFields)}))},setSneakPeek:function(e){var t=e.chatId,n=e.sneakPeekText,r=d.getState();at(r,t)&&it(r)&&_(yn(we,{chat_id:t,sneak_peek_text:n})).catch(I)},startChat:function(t){return void 0===t&&(t={}),Kr({env:r,organizationId:e.organizationId,eventName:"chat_started"}),_(yn(Re,dn(t)))},updateChatProperties:function(e){return _(yn(Pe,{id:e.id,properties:e.properties}))},updateCustomer:function(e){return _(yn(Ae,ln(e)))},updateCustomerPage:function(e){d.dispatch({type:re,payload:O(["title","url"],e)})},updateEventProperties:function(e){return _(yn(ke,{chat_id:e.chatId,event_id:e.eventId,thread_id:e.threadId,properties:e.properties}))},updateThreadProperties:function(e){return _(yn(Ue,{chat_id:e.chatId,thread_id:e.threadId,properties:e.properties}))},uploadFile:function(e){return Jr({auth:f,store:d},e)}});return i?h():d.dispatch({type:M,payload:{sessionFields:"function"==typeof c?c().sessionFields:{}}}),v},e.parseCustomEvent=Gn,e.parseEvent=Vn,e.parseFile=Ln,e.parseFilledForm=Mn,e.parseForm=Dr,e.parseGreeting=Yn,e.parseMessage=qn,e.parseRichMessage=Fn,e.parseSystemMessage=zn,e.serverDisconnectionReasons=St,e.serverErrorCodes=Sn,e.serverPushActions=Zt,e.sortOrders=$r,e.userTypes=tt,Object.defineProperty(e,"__esModule",{value:!0})}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@livechat/customer-sdk",
3
- "version": "3.1.5",
3
+ "version": "4.0.0",
4
4
  "description": "SDK for connecting to LiveChat as a customer",
5
5
  "contributors": [
6
6
  "Konrad Kruk <k.kruk@livechatinc.com>",
@@ -23,15 +23,14 @@
23
23
  "dependencies": {
24
24
  "@livechat/backoff": "^0.1.0",
25
25
  "@livechat/customer-auth": "^0.4.0-alpha.7",
26
- "@livechat/data-utils": "^0.2.16",
27
- "@livechat/deferred": "^1.1.0",
26
+ "@livechat/data-utils": "^1.0.3",
28
27
  "@livechat/file-upload": "^0.3.0",
29
28
  "@livechat/isomorphic-storage": "^0.1.0",
30
- "@livechat/mitt": "^0.1.2",
29
+ "@livechat/mitt": "^0.1.3",
31
30
  "@livechat/platform-client": "^0.3.1",
32
- "@livechat/promise-try": "^0.1.0",
31
+ "@livechat/promise-utils": "^1.0.1",
33
32
  "@livechat/side-effects-middleware": "^0.2.0",
34
- "@livechat/url-utils": "^0.2.0",
33
+ "@livechat/url-utils": "^0.2.1",
35
34
  "redux": "^4.0.4",
36
35
  "ts-toolbelt": "^6.7.5",
37
36
  "unfetch": "^4.2.0"
@@ -6,7 +6,7 @@ export declare const loginSuccess: (payload: Actions.LoginSuccessAction['payload
6
6
  export declare const pauseConnection: (reason: string) => Actions.PauseConnectionAction;
7
7
  export declare const prefetchToken: (fresh?: boolean) => Actions.PrefetchTokenAction;
8
8
  export declare const reconnect: (delay: number) => Actions.ReconnectAction;
9
- export declare const sendRequest: <A extends "update_customer_page" | "accept_greeting" | "cancel_greeting" | "deactivate_chat" | "delete_chat_properties" | "delete_event_properties" | "delete_thread_properties" | "get_chat" | "get_customer" | "get_form" | "get_predicted_agent" | "get_url_info" | "list_chats" | "list_group_statuses" | "list_threads" | "login" | "mark_events_as_seen" | "resume_chat" | "send_event" | "send_rich_message_postback" | "send_sneak_peek" | "set_customer_session_fields" | "start_chat" | "update_chat_properties" | "update_customer" | "update_event_properties" | "update_thread_properties">(action: A, payload: (Extract<{
9
+ export declare const sendRequest: <A extends "accept_greeting" | "cancel_greeting" | "deactivate_chat" | "delete_chat_properties" | "delete_event_properties" | "delete_thread_properties" | "get_chat" | "get_customer" | "get_form" | "get_predicted_agent" | "get_url_info" | "list_chats" | "list_group_statuses" | "list_threads" | "login" | "mark_events_as_seen" | "resume_chat" | "send_event" | "send_rich_message_postback" | "send_sneak_peek" | "set_customer_session_fields" | "start_chat" | "update_chat_properties" | "update_customer" | "update_customer_page" | "update_event_properties" | "update_thread_properties">(action: A, payload: (Extract<{
10
10
  request_id: string;
11
11
  version?: string | undefined;
12
12
  action: "accept_greeting";
@@ -117,21 +117,21 @@ export declare const sendRequest: <A extends "update_customer_page" | "accept_gr
117
117
  }> | Extract<{
118
118
  request_id: string;
119
119
  version?: string | undefined;
120
- action: "list_chats";
120
+ action: "list_group_statuses";
121
121
  payload: {
122
- limit?: number | undefined;
123
- page_id?: string | undefined;
122
+ group_ids: number[];
123
+ } | {
124
+ all: true;
124
125
  };
125
126
  }, {
126
127
  action: A;
127
128
  }> | Extract<{
128
129
  request_id: string;
129
130
  version?: string | undefined;
130
- action: "list_group_statuses";
131
+ action: "list_chats";
131
132
  payload: {
132
- group_ids: number[];
133
- } | {
134
- all: true;
133
+ limit?: number | undefined;
134
+ page_id?: string | undefined;
135
135
  };
136
136
  }, {
137
137
  action: A;
@@ -0,0 +1,2 @@
1
+ export declare const LIVECHAT_ORGANIZATION_ID = "feaf6c0e-9f43-48ff-9ad0-8e24e0350932";
2
+ //# sourceMappingURL=organizationIds.d.ts.map
@@ -12,4 +12,5 @@ export declare const SERVICE_TEMPORARILY_UNAVAILABLE = "service_temporarily_unav
12
12
  export declare const TOO_MANY_CONNECTIONS = "too_many_connections";
13
13
  export declare const TOO_MANY_UNAUTHORIZED_CONNECTIONS = "too_many_unauthorized_connections";
14
14
  export declare const UNSUPPORTED_VERSION = "unsupported_version";
15
+ export declare const LOGGED_OUT_REMOTELY = "logged_out_remotely";
15
16
  //# sourceMappingURL=serverDisconnectionReasons.d.ts.map
@@ -12,6 +12,7 @@ export declare const EVENT_UPDATED = "event_updated";
12
12
  export declare const EVENTS_MARKED_AS_SEEN = "events_marked_as_seen";
13
13
  export declare const GREETING_ACCEPTED = "greeting_accepted";
14
14
  export declare const GREETING_CANCELED = "greeting_canceled";
15
+ export declare const GROUPS_STATUS_UPDATED = "groups_status_updated";
15
16
  export declare const INCOMING_CHAT = "incoming_chat";
16
17
  export declare const INCOMING_EVENT = "incoming_event";
17
18
  export declare const INCOMING_GREETING = "incoming_greeting";
@@ -1,4 +1,4 @@
1
- import { compose } from 'redux';
1
+ import type { compose } from 'redux';
2
2
  import { Store } from './types';
3
3
  import { InitialStateData } from './types/state';
4
4
  declare global {
@@ -1,7 +1,7 @@
1
1
  import { Env } from '@livechat/customer-auth/src/types';
2
2
  export type Config = {
3
3
  env: Env;
4
- licenseId: number;
4
+ organizationId: string;
5
5
  eventName: string;
6
6
  };
7
7
  /**
@@ -10,5 +10,5 @@ export type Config = {
10
10
  * 1. package is used in lc production environment
11
11
  * 2. package is used standalone because only then process.env.CUSTOMER_SDK_PACKAGE_NAME will be set to customer_sdk
12
12
  */
13
- export declare const log: ({ env, licenseId, eventName }: Config) => Promise<void>;
13
+ export declare const log: ({ env, organizationId, eventName }: Config) => Promise<void>;
14
14
  //# sourceMappingURL=index.d.ts.map
package/types/index.d.ts CHANGED
@@ -1,13 +1,23 @@
1
- import sendTicketForm from './sendTicketForm';
2
1
  import { UploadFileOptions } from './uploadFile';
3
2
  import * as actions from './actions';
4
3
  import { RequestBodyResumeChatData, RequestBodyStartChatData } from './clientDataParsers';
5
4
  import { Config, Env, Page, SortOrder } from './types';
6
5
  import * as clientEntities from './types/clientEntities';
7
6
  export { default as debug } from './debug';
7
+ import * as connectionStatuses from './constants/connectionStatuses';
8
+ import * as eventTypes from './constants/eventTypes';
9
+ import * as serverDisconnectionReasons from './constants/serverDisconnectionReasons';
10
+ import * as serverErrorCodes from './constants/serverErrorCodes';
11
+ import * as serverPushActions from './constants/serverPushActions';
12
+ import * as sortOrders from './constants/sortOrders';
13
+ import * as userTypes from './constants/userTypes';
14
+ export { connectionStatuses, eventTypes, serverDisconnectionReasons, serverErrorCodes, serverPushActions, sortOrders, userTypes, };
15
+ export * from './types/clientEntities';
16
+ export type { CustomerSessionFields, CustomerData, CustomerDataProvider, IdentityProvider, Config, ConnectionStatus, Page, SortOrder, SubscribablePush, } from './types/index';
17
+ export type { CustomerAuth, CustomerAuthToken } from '@livechat/customer-auth';
8
18
  export * from './serverEventParser';
9
19
  export { parseForm } from './serverFrameParser';
10
- export declare const init: (config: Config, env?: Env) => Readonly<{
20
+ export declare const init: (config: Config, env: Env | undefined, licenseId: number) => Readonly<{
11
21
  acceptGreeting({ greetingId, uniqueId }: {
12
22
  greetingId: number;
13
23
  uniqueId: string;
@@ -109,7 +119,7 @@ export declare const init: (config: Config, env?: Env) => Readonly<{
109
119
  pageId?: undefined;
110
120
  limit?: number;
111
121
  }): Promise<{
112
- chatsSummary: any;
122
+ chatsSummary: clientEntities.ChatSummary[];
113
123
  totalChats: number;
114
124
  users: clientEntities.ChatUser[];
115
125
  previousPageId: string | null;
@@ -167,7 +177,13 @@ export declare const init: (config: Config, env?: Env) => Readonly<{
167
177
  [x: string]: unknown;
168
178
  [x: symbol]: unknown;
169
179
  }>): void;
170
- } & (() => void);
180
+ } & {
181
+ (type: "*", handler: import("mitt").WildcardHandler<{
182
+ [x: string]: unknown;
183
+ [x: symbol]: unknown;
184
+ }>): void;
185
+ (): void;
186
+ };
171
187
  rateChat(params: {
172
188
  chatId: string;
173
189
  rating: {
@@ -179,9 +195,6 @@ export declare const init: (config: Config, env?: Env) => Readonly<{
179
195
  }>>;
180
196
  resumeChat(data: RequestBodyResumeChatData): Promise<clientEntities.IncomingChat>;
181
197
  sendEvent(params: Parameters<typeof actions.sendEvent>[0]): Promise<clientEntities.Event>;
182
- sendTicketForm(options: Parameters<typeof sendTicketForm>['2']): Promise<{
183
- id: string;
184
- }>;
185
198
  sendRichMessagePostback({ chatId, threadId, eventId, postback, }: {
186
199
  chatId: string;
187
200
  threadId: string;
@@ -1,4 +1,3 @@
1
- /// <reference types="ts-toolbelt" />
2
1
  import { Action } from './types/actions';
3
2
  import { InitialStateData, State } from './types/state';
4
3
  export declare const getAllRequests: (state: State) => Record<string, {
@@ -95,19 +94,19 @@ export declare const getAllRequests: (state: State) => Record<string, {
95
94
  }, "action" | "payload"> | import("Object/Pick")._Pick<{
96
95
  request_id: string;
97
96
  version?: string | undefined;
98
- action: "list_chats";
97
+ action: "list_group_statuses";
99
98
  payload: {
100
- limit?: number | undefined;
101
- page_id?: string | undefined;
99
+ group_ids: number[];
100
+ } | {
101
+ all: true;
102
102
  };
103
103
  }, "action" | "payload"> | import("Object/Pick")._Pick<{
104
104
  request_id: string;
105
105
  version?: string | undefined;
106
- action: "list_group_statuses";
106
+ action: "list_chats";
107
107
  payload: {
108
- group_ids: number[];
109
- } | {
110
- all: true;
108
+ limit?: number | undefined;
109
+ page_id?: string | undefined;
111
110
  };
112
111
  }, "action" | "payload"> | import("Object/Pick")._Pick<{
113
112
  request_id: string;
@@ -362,19 +361,19 @@ export declare const getRequest: (state: State, id: string) => {
362
361
  }, "action" | "payload"> | import("Object/Pick")._Pick<{
363
362
  request_id: string;
364
363
  version?: string | undefined;
365
- action: "list_chats";
364
+ action: "list_group_statuses";
366
365
  payload: {
367
- limit?: number | undefined;
368
- page_id?: string | undefined;
366
+ group_ids: number[];
367
+ } | {
368
+ all: true;
369
369
  };
370
370
  }, "action" | "payload"> | import("Object/Pick")._Pick<{
371
371
  request_id: string;
372
372
  version?: string | undefined;
373
- action: "list_group_statuses";
373
+ action: "list_chats";
374
374
  payload: {
375
- group_ids: number[];
376
- } | {
377
- all: true;
375
+ limit?: number | undefined;
376
+ page_id?: string | undefined;
378
377
  };
379
378
  }, "action" | "payload"> | import("Object/Pick")._Pick<{
380
379
  request_id: string;
@@ -64,7 +64,7 @@ export declare const parsePush: (push: Push) => {
64
64
  } | {
65
65
  action: "customer_disconnected";
66
66
  payload: {
67
- reason: "access_token_expired" | "connection_timeout" | "customer_banned" | "customer_temporarily_blocked" | "inactivity_timeout" | "internal_error" | "license_expired" | "license_not_found" | "misdirected_connection" | "product_version_changed" | "service_temporarily_unavailable" | "too_many_connections" | "too_many_unauthorized_connections" | "unsupported_version";
67
+ reason: "customer_banned" | "license_expired" | "product_version_changed" | "logged_out_remotely" | "misdirected_connection" | "access_token_expired" | "connection_timeout" | "customer_temporarily_blocked" | "inactivity_timeout" | "internal_error" | "license_not_found" | "service_temporarily_unavailable" | "too_many_connections" | "too_many_unauthorized_connections" | "unsupported_version";
68
68
  data?: any;
69
69
  };
70
70
  } | {
@@ -123,6 +123,14 @@ export declare const parsePush: (push: Push) => {
123
123
  payload: {
124
124
  uniqueId: string;
125
125
  };
126
+ } | {
127
+ action: "groups_status_updated";
128
+ payload: {
129
+ groups: {
130
+ id: number;
131
+ status: serverEntities.GroupStatus;
132
+ }[];
133
+ };
126
134
  } | {
127
135
  action: "incoming_chat";
128
136
  payload: {
@@ -285,7 +293,7 @@ export declare const parseResponse: ({ request, response, }: {
285
293
  } | {
286
294
  action: "list_chats";
287
295
  payload: {
288
- chatsSummary: any;
296
+ chatsSummary: clientEntities.ChatSummary[];
289
297
  totalChats: number;
290
298
  users: clientEntities.ChatUser[];
291
299
  previousPageId: string | null;
@@ -2,11 +2,12 @@ import { CustomerAuth } from '@livechat/customer-auth';
2
2
  import { SocketClient } from '../socketClient';
3
3
  import { Action } from '../types/actions';
4
4
  import { CustomerDataProvider, Store } from '../types';
5
- declare const _default: ({ auth, customerDataProvider, emitter, socket, }: {
5
+ declare const _default: ({ auth, customerDataProvider, emitter, socket, licenseId, }: {
6
6
  auth: CustomerAuth;
7
7
  customerDataProvider?: CustomerDataProvider | undefined;
8
8
  socket: SocketClient;
9
9
  emitter: any;
10
+ licenseId: number;
10
11
  }) => (action: Action, store: Store) => void;
11
12
  export default _default;
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1,5 +1,5 @@
1
1
  import { Store } from './types';
2
2
  import { SideStorage } from './types/serverEntities';
3
- export declare const getSideStorage: (store: Store) => Promise<SideStorage>;
4
- export declare const saveSideStorage: (store: Store, sideStorage: SideStorage) => Promise<void>;
3
+ export declare const getSideStorage: (store: Store, licenseId: number) => Promise<SideStorage>;
4
+ export declare const saveSideStorage: (store: Store, sideStorage: SideStorage) => void;
5
5
  //# sourceMappingURL=sideStorage.d.ts.map
@@ -2,8 +2,11 @@ import { SocketClient } from './socketClient';
2
2
  import { Store } from './types';
3
3
  import { Push, PushResponse, ResponseError } from './types/frames';
4
4
  declare const _default: (store: Store, socket: SocketClient) => {
5
- <Key extends keyof import("@livechat/platform-client/types").PlatformClientEvents<PushResponse | Push | import("./types/frames").Response | ResponseError>>(type: Key, handler?: import("mitt").Handler<import("@livechat/platform-client/types").PlatformClientEvents<PushResponse | Push | import("./types/frames").Response | ResponseError>[Key]> | undefined): void;
6
- (type: "*", handler: import("mitt").WildcardHandler<import("@livechat/platform-client/types").PlatformClientEvents<PushResponse | Push | import("./types/frames").Response | ResponseError>>): void;
7
- } & (() => void);
5
+ <Key extends keyof import("@livechat/platform-client/types").PlatformClientEvents<import("./types/frames").Response | Push | PushResponse | ResponseError>>(type: Key, handler?: import("mitt").Handler<import("@livechat/platform-client/types").PlatformClientEvents<import("./types/frames").Response | Push | PushResponse | ResponseError>[Key]> | undefined): void;
6
+ (type: "*", handler: import("mitt").WildcardHandler<import("@livechat/platform-client/types").PlatformClientEvents<import("./types/frames").Response | Push | PushResponse | ResponseError>>): void;
7
+ } & {
8
+ (type: "*", handler: import("mitt").WildcardHandler<import("@livechat/platform-client/types").PlatformClientEvents<import("./types/frames").Response | Push | PushResponse | ResponseError>>): void;
9
+ (): void;
10
+ };
8
11
  export default _default;
9
12
  //# sourceMappingURL=socketListener.d.ts.map
@@ -63,6 +63,7 @@ export type ChatSummary = {
63
63
  }>;
64
64
  };
65
65
  lastEvent?: Event;
66
+ order?: number;
66
67
  };
67
68
  export type Chat = {
68
69
  id: string;
@@ -282,6 +283,7 @@ type ClientGeneratedEventBase = {
282
283
  type EventBase = {
283
284
  customId?: string;
284
285
  properties: Properties;
286
+ timestamp?: number;
285
287
  };
286
288
  export type NonSpecificEventBase = ServerGeneratedEventBase & ClientGeneratedEventBase & EventBase;
287
289
  type FileSpecificProps = {