react-use-zendesk
Version:
React Zendesk Web Widget integration written in typescript
14 lines (9 loc) • 4.51 kB
JavaScript
;
var s = require('react');
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
var s__default = /*#__PURE__*/_interopDefault(s);
var c=s.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=s.useRef(!1),[L,z]=s__default.default.useState(!1),[T,I]=s__default.default.useState(void 0),d=s.useRef(i),g=s.useRef(o),l=s.useRef(a),m=s.useRef(Z),f=s.useRef(h),v=s.useRef(x),p=s.useRef(b),C=s.useRef(R),k=s.useRef(y),w=s.useRef(S),E=s.useRef(A),M=s.useRef(P);s.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);}s.useEffect(()=>(F(t,N),()=>{u.current=!1,O();}),[t]);let U=s__default.default.useCallback(()=>{n("messenger","show");},[]),q=s__default.default.useCallback(()=>{n("messenger","hide");},[]),D=s__default.default.useCallback(()=>{n("messenger","open");},[]),j=s__default.default.useCallback(()=>{n("messenger","close");},[]),J=s__default.default.useCallback(e=>{n("messenger:set","locale",e);},[]),G=s__default.default.useCallback(e=>{n("messenger:set","zIndex",e);},[]),H=s__default.default.useCallback(e=>{n("messenger:set","cookies",e);},[]),Q=s__default.default.useCallback(e=>{n("messenger:set","conversationFields",e);},[]),X=s__default.default.useCallback(e=>{n("messenger:set","conversationTags",e);},[]),Y=s__default.default.useCallback(e=>{n("messenger:ui","newConversation",e);},[]),_=s__default.default.useCallback((e,se)=>{n("messenger","loginUser",te=>{te(e);},se);},[]),$=s__default.default.useCallback(()=>{n("messenger","logoutUser");},[]),O=s__default.default.useCallback(()=>{n("messenger","resetWidget",e=>{m.current&&m.current();});},[]),K=s__default.default.useCallback(e=>{n("messenger:set","customization",e);},[]),ee=s__default.default.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__default.default.createElement(c.Provider,{value:ne},B)};function ge(){let t=s__default.default.useContext(c);if(t===void 0)throw new Error('"useZendesk" must be used within "ZendeskProvider"');return t}
exports.ZendeskProvider = ue;
exports.useZendesk = ge;
//# sourceMappingURL=out.js.map
//# sourceMappingURL=index.js.map