@talkjs/react
Version:
Official TalkJS SDK for React
2 lines (1 loc) • 7.08 kB
JavaScript
(function(c,r){typeof exports=="object"&&typeof module!="undefined"?r(exports,require("react/jsx-runtime"),require("react"),require("talkjs")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","react","talkjs"],r):(c=typeof globalThis!="undefined"?globalThis:c||self,r(c.TalkJSReact={},c.jsxRuntime,c.React,c.TalkJS))})(this,function(c,r,o,d){"use strict";"use client";var te=Object.defineProperty,ne=Object.defineProperties;var se=Object.getOwnPropertyDescriptors;var M=Object.getOwnPropertySymbols;var H=Object.prototype.hasOwnProperty,K=Object.prototype.propertyIsEnumerable;var G=(c,r,o)=>r in c?te(c,r,{enumerable:!0,configurable:!0,writable:!0,value:o}):c[r]=o,C=(c,r)=>{for(var o in r||(r={}))H.call(r,o)&&G(c,o,r[o]);if(M)for(var o of M(r))K.call(r,o)&&G(c,o,r[o]);return c},x=(c,r)=>ne(c,se(r));var j=(c,r)=>{var o={};for(var d in c)H.call(c,d)&&r.indexOf(d)<0&&(o[d]=c[d]);if(c!=null&&M)for(var d of M(c))r.indexOf(d)<0&&K.call(c,d)&&(o[d]=c[d]);return o};const B=o.createContext(void 0);function F(){const e=o.useContext(B);return e!=null&&e.isAlive?e:void 0}function J(){const e=F(),[t,n]=o.useState();return o.useEffect(()=>{if(!e||!e.isAlive){n(void 0);return}const s=e.unreads.onChange(u=>{n(u)});return()=>s.unsubscribe()},[e]),t}function P({target:e,handlers:t}){return e!=null&&e.isAlive?Object.keys(t).filter(s=>s.startsWith("on")).filter(s=>typeof t[s]=="function").map(s=>r.jsx(L,{name:s,handler:t[s],target:e},s)):null}function L(e){const{handler:t}=e;return o.useEffect(()=>{var i,f;if(!((i=e.target)!=null&&i.isAlive))return;const{name:n,target:s}=e.name==="onUnreadsChange"?{name:"onChange",target:e.target.unreads}:{name:e.name,target:e.target};if(typeof s[n]!="function"){console.warn(`[@talkjs/react] Trying to handle event ${n} which does not exist on ${(f=s==null?void 0:s.constructor)==null?void 0:f.name}. Did you make a typo?`);return}const u=s[n](t);return()=>{u.unsubscribe()}},[e.target,e.name,t]),null}function _(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var $=function e(t,n){if(t===n)return!0;if(t&&n&&typeof t=="object"&&typeof n=="object"){if(t.constructor!==n.constructor)return!1;var s,u,i;if(Array.isArray(t)){if(s=t.length,s!=n.length)return!1;for(u=s;u--!==0;)if(!e(t[u],n[u]))return!1;return!0}if(t.constructor===RegExp)return t.source===n.source&&t.flags===n.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===n.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===n.toString();if(i=Object.keys(t),s=i.length,s!==Object.keys(n).length)return!1;for(u=s;u--!==0;)if(!Object.prototype.hasOwnProperty.call(n,i[u]))return!1;for(u=s;u--!==0;){var f=i[u];if(!e(t[f],n[f]))return!1}return!0}return t!==t&&n!==n};const b=_($);function I(e){const t=o.useRef();return(!t.current||!b(e,t.current.val))&&(t.current={val:e}),t.current.val}function v(e,t,n){t=I(t),o.useEffect(()=>{t!==void 0&&(e!=null&&e.isAlive)&&e[n](t)},[n,e,t])}function z(e,t,n){t=I(t),o.useEffect(()=>{t!==void 0&&(e!=null&&e.isAlive)&&e[n](...t)},[n,e,t])}function N(e,t,n,s,u){const i=o.useMemo(()=>typeof n=="function"?e!=null&&e.isAlive?n(e):void 0:n!=null?n:s,[e,n,s]);z(t,i!==void 0?[i,{asGuest:u}]:void 0,"select")}function W(e,t,n,s){const[u,i]=o.useState();return n=I(n),o.useEffect(()=>{if(e!=null&&e.isAlive){const f=e[t](n);return i(f),s&&(s.current=f),()=>{f.destroy(),i(void 0)}}else i(void 0),s&&(s.current=void 0)},[e,t,n]),u}function D(e,t){const[n,s]=o.useState(!1);return o.useEffect(()=>{e!=null&&e.isAlive&&e.mount(t).then(()=>s(!0))},[e]),n}function Q(e){const[t,n]=o.useState(!1),[s,u]=o.useState(),{userId:i,syncUser:f,appId:y,token:m,tokenFetcher:E,signature:p,sessionRef:h,desktopNotificationEnabled:O}=e;return o.useEffect(()=>{d.ready.then(()=>n(!0))},[]),o.useEffect(()=>{if(t){const S=typeof f=="function"?f():f!=null?f:new d.User(i),l=new d.Session({appId:y,me:S,token:m,tokenFetcher:E,signature:p});return u(l),h&&(h.current=l),()=>{l.destroy(),u(void 0),h&&(h.current=void 0)}}},[t,p,y,i,f,h]),v(s,O,"setDesktopNotificationEnabled"),r.jsxs(r.Fragment,{children:[r.jsx(B.Provider,{value:s,children:e.children}),r.jsx(P,{target:s,handlers:e})]})}const w=(()=>{const e=new WeakMap;let t=0;return function(s){return e.has(s)||e.set(s,++t),e.get(s)}})();function q(e,t){const n={},s={};for(const[u,i]of Object.entries(e))u.startsWith(t)?n[u]=i:s[u]=i;return[n,s]}function U(e){const{box:t,loadingComponent:n,className:s,handlers:u}=e,i=o.useRef(null),f=D(t,i.current),y=f?e.style:x(C({},e.style),{display:"none"});return r.jsxs(r.Fragment,{children:[!f&&r.jsx("div",{style:e.style,className:s,children:n}),r.jsx("div",{ref:i,style:y,className:s}),r.jsx(P,{target:t,handlers:u})]})}function V(e){const t=F();if(t){const n=w(t);return r.jsx(X,C({session:t},e),n)}else return r.jsx("div",{style:e.style,className:e.className,children:e.loadingComponent})}function X(e){const a=e,{session:t,conversationId:n,syncConversation:s,asGuest:u,chatboxRef:i,style:f,className:y,loadingComponent:m}=a,E=j(a,["session","conversationId","syncConversation","asGuest","chatboxRef","style","className","loadingComponent"]),[p,h]=q(E,"on"),k=h,{messageFilter:O,presence:S,highlightedWords:l}=k,A=j(k,["messageFilter","presence","highlightedWords"]),g=W(t,"createChatbox",A,i);return v(g,O,"setMessageFilter"),v(g,S,"setPresence"),v(g,l,"setHighlightedWords"),N(t,g,s,n,u),r.jsx(U,{box:g,session:t,className:y,style:f,loadingComponent:m,handlers:p})}function Y(e){const t=F();if(t){const n=w(t);return r.jsx(Z,C({session:t},e),n)}else return r.jsx("div",{style:e.style,className:e.className,children:e.loadingComponent})}function Z(e){const k=e,{session:t,conversationId:n,syncConversation:s,asGuest:u,inboxRef:i,style:f,className:y,loadingComponent:m}=k,E=j(k,["session","conversationId","syncConversation","asGuest","inboxRef","style","className","loadingComponent"]),[p,h]=q(E,"on"),T=h,{messageFilter:O,feedFilter:S,presence:l,highlightedWords:A}=T,g=j(T,["messageFilter","feedFilter","presence","highlightedWords"]),a=W(t,"createInbox",g,i);return v(a,O,"setMessageFilter"),v(a,S,"setFeedFilter"),v(a,l,"setPresence"),v(a,A,"setHighlightedWords"),N(t,a,s,n,u),r.jsx(U,{box:a,session:t,className:y,style:f,loadingComponent:m,handlers:p})}function R(e){const t=F();if(t){const n=w(t);return r.jsx(ee,C({session:t},e),n)}return null}function ee(e){const g=e,{session:t,conversationId:n,syncConversation:s,asGuest:u,show:i,popupRef:f}=g,y=j(g,["session","conversationId","syncConversation","asGuest","show","popupRef"]),[m,E]=q(y,"on"),a=E,{messageFilter:p,presence:h,highlightedWords:O}=a,S=j(a,["messageFilter","presence","highlightedWords"]),l=W(t,"createPopup",S,f);v(l,p,"setMessageFilter"),v(l,h,"setPresence"),v(l,O,"setHighlightedWords"),N(t,l,s,n,u);const A=D(l,{show:i!=null?i:!0});return o.useEffect(()=>{i===void 0||!A||(i?l==null||l.show():l==null||l.hide())},[i,A,l]),r.jsx(P,{target:l,handlers:m})}c.Chatbox=V,c.Inbox=Y,c.Popup=R,c.Session=Q,c.useSession=F,c.useUnreads=J,Object.defineProperty(c,Symbol.toStringTag,{value:"Module"})});