UNPKG

react-use-zendesk

Version:

React Zendesk Web Widget integration written in typescript

7 lines (5 loc) 4.06 kB
import s, { createContext, useRef, useLayoutEffect, useEffect } from 'react'; var c=createContext(void 0);var W="ze-snippet";function F(t,i){if(t&&typeof window!="undefined"){let o=()=>{re(),ie(t,i);};document.readyState==="complete"?o():window.attachEvent?window.attachEvent("onload",o):window.addEventListener("load",o,!1);}}function re(){if(typeof window!="undefined"){delete window.zE,delete window.zEmbed,delete window.zEACLoaded,delete window.zEWebpackACJsonp;var t=document.getElementById(W),i=document.querySelector("iframe#launcher");t&&t.remove(),i&&i.remove();}}function ie(t,i){setTimeout(function(){let o=document.createElement("script");o.id=W,o.type="text/javascript",o.async=!0,o.onload=i,o.src="https://static.zdassets.com/ekr/snippet.js?key="+t;let a=document.getElementsByTagName("script")[0];a==null||a.parentNode.insertBefore(o,a);},0);}var V=typeof window=="undefined";var n=(t,i,...o)=>{if(!V&&window&&window.zE)return window.zE.apply(null,[t,i,...o])};var ue=({apiKey:t,onOpen:i,onClose:o,onUnreadMessages:a,onResetWidget:Z,onProactiveMessageDisplayed:h,onProactiveMessageClicked:x,onConversationStarted:b,onConversationOpened:R,onNewConversationButtonClicked:y,onConversationWithAgentRequested:S,onConversationAgentAssigned:A,onMessagesShown:P,children:B})=>{let u=useRef(!1),[L,z]=s.useState(!1),[T,I]=s.useState(void 0),d=useRef(i),g=useRef(o),l=useRef(a),m=useRef(Z),f=useRef(h),v=useRef(x),p=useRef(b),C=useRef(R),k=useRef(y),w=useRef(S),E=useRef(A),M=useRef(P);useLayoutEffect(()=>{d.current=i,g.current=o,l.current=a,m.current=Z,f.current=h,v.current=x,p.current=b,C.current=R,k.current=y,w.current=S,E.current=A,M.current=P;});function N(){u.current||(n("messenger:on","open",function(e){z(!0),d.current&&d.current(e);}),n("messenger:on","close",function(e){z(!1),g.current&&g.current(e);}),n("messenger:on","unreadMessages",function(e){I(e),l.current&&l.current(e);}),n("messenger:on","proactiveMessageDisplayed",function(e){f.current&&f.current(e);}),n("messenger:on","proactiveMessageClicked",function(e){v.current&&v.current(e);}),n("messenger:on","conversationStarted",function(e){p.current&&p.current(e);}),n("messenger:on","conversationOpened",function(e){C.current&&C.current(e);}),n("messenger:on","newConversationButtonClicked",function(e){k.current&&k.current(e);}),n("messenger:on","conversationWithAgentRequested",function(e){w.current&&w.current(e);}),n("messenger:on","conversationAgentAssigned",function(e){E.current&&E.current(e);}),n("messenger:on","messagesShown",function(e){M.current&&M.current(e);}),u.current=!0);}useEffect(()=>(F(t,N),()=>{u.current=!1,O();}),[t]);let U=s.useCallback(()=>{n("messenger","show");},[]),q=s.useCallback(()=>{n("messenger","hide");},[]),D=s.useCallback(()=>{n("messenger","open");},[]),j=s.useCallback(()=>{n("messenger","close");},[]),J=s.useCallback(e=>{n("messenger:set","locale",e);},[]),G=s.useCallback(e=>{n("messenger:set","zIndex",e);},[]),H=s.useCallback(e=>{n("messenger:set","cookies",e);},[]),Q=s.useCallback(e=>{n("messenger:set","conversationFields",e);},[]),X=s.useCallback(e=>{n("messenger:set","conversationTags",e);},[]),Y=s.useCallback(e=>{n("messenger:ui","newConversation",e);},[]),_=s.useCallback((e,se)=>{n("messenger","loginUser",te=>{te(e);},se);},[]),$=s.useCallback(()=>{n("messenger","logoutUser");},[]),O=s.useCallback(()=>{n("messenger","resetWidget",e=>{m.current&&m.current();});},[]),K=s.useCallback(e=>{n("messenger:set","customization",e);},[]),ee=s.useCallback(()=>{n("messenger","useSessionAuth");},[]),ne={show:U,hide:q,open:D,close:j,setLocale:J,setZIndex:G,setCookies:H,setConversationFields:Q,setConversationTags:X,loginUser:_,logoutUser:$,resetWidget:O,setCustomize:K,newConversation:Y,useSessionAuth:ee,isOpen:L,unreadMessages:T};return s.createElement(c.Provider,{value:ne},B)};function ge(){let t=s.useContext(c);if(t===void 0)throw new Error('"useZendesk" must be used within "ZendeskProvider"');return t} export { ue as ZendeskProvider, ge as useZendesk }; //# sourceMappingURL=out.js.map //# sourceMappingURL=index.mjs.map