@opencx/widget 3.0.88 → 3.0.90

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@opencx/widget",
3
3
  "private": false,
4
- "version": "3.0.88",
4
+ "version": "3.0.90",
5
5
  "type": "module",
6
6
  "publishConfig": {
7
7
  "access": "public"
@@ -39,9 +39,6 @@
39
39
  "require": "./dist/designs.cjs"
40
40
  }
41
41
  },
42
- "optionalDependencies": {
43
- "zod": "^3.23.8"
44
- },
45
42
  "dependencies": {
46
43
  "lodash.isequal": "^4.5.0",
47
44
  "openapi-fetch": "^0.13.4",
@@ -1,2 +0,0 @@
1
- "use strict";const F=require("swr"),a=require("react"),y=require("./widget.ctx-HuLTTMAM.cjs"),W=require("react/jsx-runtime"),P="3.0.88";class R{constructor(t){this.components=[];const{components:n}=t;if(n&&n.forEach(o=>this.register(o)),this.components.length===0)throw new Error("No components registered");if(!this.get("fallback"))throw new Error("No fallback component registered")}register(t){const n=this.components.findIndex(o=>o.key===t.key);return n!==-1?this.components[n]=t:this.components.push(t),this}get(t){const n=this.components.find(o=>o.key.toUpperCase()===t.toUpperCase());return n||null}getComponent(t){var n;return(n=this.get(t))==null?void 0:n.component}}const v=a.createContext(null);function b({options:e,children:t,components:n,modesComponents:o,storage:i,loadingComponent:c}){const l=a.useRef(null),d=a.useRef(!1),[p,S]=a.useState(null),s=a.useMemo(()=>new R({components:n}),[n]);return a.useEffect(()=>{d.current||(d.current=!0,y.WidgetCtx.initialize({config:e,storage:i}).then(S))},[]),p?W.jsx(v.Provider,{value:{widgetCtx:p,config:e,components:n,componentStore:s,modesComponents:o,version:P,contentIframeRef:l},children:t}):c||null}function g(){const e=a.useContext(v);if(!e)throw new Error("useWidget must be used within a WidgetProvider");return e}function h(){const{config:e}=g();return e}function m(e){return a.useSyncExternalStore(e.subscribe,e.get,e.get)}function A(){const{widgetCtx:e}=g();return{contactState:m(e.contactCtx.state),createUnverifiedContact:e.contactCtx.createUnverifiedContact}}function E(){const{widgetCtx:e}=g();return{messagesState:m(e.messageCtx.state),sendMessage:e.messageCtx.sendMessage}}function w(){const{widgetCtx:e}=g(),{oneOpenSessionAllowed:t}=h(),n=m(e.sessionCtx.sessionState),o=m(e.sessionCtx.sessionsState),{openSessions:i,closedSessions:c}=a.useMemo(()=>({openSessions:o.data.filter(d=>d.isOpened===!0),closedSessions:o.data.filter(d=>d.isOpened===!1)}),[o.data]),l=a.useMemo(()=>t?i.length===0:!0,[t,i.length]);return{sessionState:n,sessionsState:o,loadMoreSessions:e.sessionCtx.loadMoreSessions,resolveSession:e.sessionCtx.resolveSession,createStateCheckpoint:e.sessionCtx.createStateCheckpoint,openSessions:i,closedSessions:c,canCreateNewSession:l}}function M(){var l;const{sessionState:e}=w(),{messagesState:t}=E(),n=((l=e.session)==null?void 0:l.assignee.kind)==="ai",o=t.messages.length>0?t.messages[t.messages.length-1]:null,i=(o==null?void 0:o.type)==="FROM_USER";return{isAwaitingBotReply:(n||e.isCreatingSession)&&(t.isSendingMessage||i)}}function k(){const{widgetCtx:e}=g();return F([e.config.token],e.api.widgetPrelude,{revalidateOnFocus:!1})}function O(){const{widgetCtx:e}=g();return{routerState:m(e.routerCtx.state),toSessionsScreen:e.routerCtx.toSessionsScreen,toChatScreen:e.routerCtx.toChatScreen}}const f=new Map;function T(){const[e,t]=a.useState([]),{widgetCtx:{api:n}}=g();function o(s){const r=s.map(u=>({file:u,id:y.v4(),status:"pending",progress:0}));t(u=>[...u,...r]),r.forEach(l)}function i(s,r){t(u=>u.map(C=>C.id===s?{...C,...r}:C))}function c(s){t(r=>r.filter(u=>u.id!==s))}const l=async s=>{const r=new AbortController;f.set(s.id,r);try{t(C=>C.map(x=>x.id===s.id?{...x,status:"uploading",progress:0}:x));const u=await n.uploadFile({file:s.file,abortSignal:r.signal,onProgress:C=>{i(s.id,{progress:C})}});i(s.id,{status:"success",fileUrl:u.fileUrl,progress:100})}catch(u){r.signal.aborted||i(s.id,{status:"error",error:u instanceof Error?u.message:"Upload failed",progress:0})}finally{f.delete(s.id)}},d=s=>{const r=f.get(s);r&&(r.abort(),f.delete(s)),c(s)},p=a.useMemo(()=>e.filter(s=>s.status==="success"&&s.fileUrl),[e]);function S(){f.forEach(s=>s.abort()),f.clear(),t([])}return a.useEffect(()=>()=>{f.forEach(s=>s.abort()),f.clear()},[]),{allFiles:e,appendFiles:o,handleCancelUpload:d,successFiles:p,emptyTheFiles:S,getFileById:s=>e.find(r=>r.id===s),getUploadProgress:s=>{var r;return((r=e.find(u=>u.id===s))==null?void 0:r.progress)??0},getUploadStatus:s=>{var r;return(r=e.find(u=>u.id===s))==null?void 0:r.status},hasErrors:e.some(s=>s.status==="error"),isUploading:e.some(s=>s.status==="uploading")}}const U=a.createContext(null);function N({children:e}){const t=h(),[n,o]=a.useState(t.isOpen??!1);return a.useEffect(()=>{o(i=>t.isOpen??i)},[t.isOpen]),a.useEffect(()=>{const i=t.openAfterNSeconds;if(typeof i!="number"||isNaN(i))return;const c=setTimeout(()=>o(!0),i*1e3);return()=>clearTimeout(c)},[t.openAfterNSeconds]),W.jsx(U.Provider,{value:{isOpen:n,setIsOpen:o},children:e})}function B(){const e=a.useContext(U);if(!e)throw new Error("useWidgetTrigger must be used within a WidgetTriggerProvider");return e}function q(){var d,p;const{widgetCtx:e,modesComponents:t}=g(),{sessionState:n}=w(),o=e.modes,i=(d=n.session)==null?void 0:d.modeId,c=o.find(S=>S.id===i),l=(p=t==null?void 0:t.find(S=>{var s,r;return[(c==null?void 0:c.id)||"",((s=c==null?void 0:c.name)==null?void 0:s.toLowerCase())||"",((r=c==null?void 0:c.slug)==null?void 0:r.toLowerCase())||""].includes(S.key.toLowerCase())}))==null?void 0:p.component;return{modes:o,modesComponents:t,activeModeId:i,activeMode:c,Component:l}}exports.WidgetProvider=b;exports.WidgetTriggerProvider=N;exports.useConfig=h;exports.useContact=A;exports.useIsAwaitingBotReply=M;exports.useMessages=E;exports.useModes=q;exports.usePreludeData=k;exports.usePrimitiveState=m;exports.useSessions=w;exports.useUploadFiles=T;exports.useWidget=g;exports.useWidgetRouter=O;exports.useWidgetTrigger=B;
2
- //# sourceMappingURL=useModes-DSFNdOy3.cjs.map