{"version":3,"sources":["../../../src/providers/clientStateProvider.tsx","../../../src/components/modals/index.tsx"],"sourcesContent":["import React, { createContext, useContext, useState } from \"react\";\r\nimport { Conversation, Media, Message } from \"softchatjs-core\";\r\n\r\nexport type ConversationItem = {\r\n  conversation: Conversation;\r\n  lastMessage: Message;\r\n  unread: string[];\r\n};\r\n\r\nexport type ConnectionStatus = {\r\n  isConnected: boolean;\r\n  fetchingConversations: boolean;\r\n  connecting: boolean;\r\n};\r\n\r\ntype Context = {\r\n  activeConversation: ConversationItem | null;\r\n  setActiveConversation: React.Dispatch<\r\n    React.SetStateAction<ConversationItem | null>\r\n  >;\r\n  conversations: ConversationItem[];\r\n  setConversations: React.Dispatch<React.SetStateAction<ConversationItem[]>>;\r\n  showImageModal: Media[];\r\n  setShowImageModal: React.Dispatch<React.SetStateAction<Media[]>>;\r\n  connectionStatus: ConnectionStatus;\r\n  setConnectionStatus: React.Dispatch<React.SetStateAction<ConnectionStatus>>;\r\n};\r\n\r\nexport const ChatStateContext = createContext<Context>({\r\n  activeConversation: null,\r\n  setActiveConversation: () => {},\r\n  conversations: [],\r\n  setConversations: () => {},\r\n  showImageModal: [],\r\n  setShowImageModal: () => {},\r\n  connectionStatus: {\r\n    isConnected: false,\r\n    fetchingConversations: false,\r\n    connecting: false,\r\n  },\r\n  setConnectionStatus: () => {},\r\n});\r\n\r\nexport const useChatState = () => useContext(ChatStateContext);\r\n\r\nexport const ChatStateProvider = ({ children }: { children: JSX.Element }) => {\r\n  const [activeConversation, setActiveConversation] =\r\n    useState<ConversationItem | null>(null);\r\n  const [conversations, setConversations] = useState<ConversationItem[]>([]);\r\n  const [showImageModal, setShowImageModal] = useState<Media[]>([]);\r\n  const [connectionStatus, setConnectionStatus] = useState<ConnectionStatus>({\r\n    isConnected: false,\r\n    fetchingConversations: false,\r\n    connecting: false,\r\n  });\r\n\r\n  return (\r\n    <ChatStateContext.Provider\r\n      value={{\r\n        activeConversation,\r\n        setActiveConversation,\r\n        conversations,\r\n        setConversations,\r\n        showImageModal,\r\n        setShowImageModal,\r\n        connectionStatus,\r\n        setConnectionStatus,\r\n      }}\r\n    >\r\n      {children}\r\n    </ChatStateContext.Provider>\r\n  );\r\n};\r\n","import { useChatState } from \"../../providers/clientStateProvider\";\r\nimport styles from \"./image.module.css\";\r\nimport { GrNext, GrPrevious } from \"react-icons/gr\";\r\nimport { useState } from \"react\";\r\nimport { LiaTimesSolid } from \"react-icons/lia\";\r\n\r\nexport const ImageViewer = () => {\r\n  const { showImageModal, setShowImageModal } = useChatState();\r\n  const [activeIndex, setActiveIndex] = useState(0);\r\n  return (\r\n    <div className={styles.images}>\r\n      <LiaTimesSolid\r\n        color=\"white\"\r\n        size={35}\r\n        onClick={() => {\r\n          setShowImageModal([]);\r\n        }}\r\n        style={{ position: \"absolute\", top: \"20px\", right: \"20px\" }}\r\n      />\r\n      <div className={styles.images__prev}>\r\n        {activeIndex === 0 ? null : (\r\n          <div style={{ padding: \"10px\" }}>\r\n            <GrPrevious\r\n              onClick={() => {\r\n                return setActiveIndex(activeIndex - 1);\r\n              }}\r\n              color=\"white\"\r\n              size={35}\r\n              style={{ cursor: \"pointer\" }}\r\n            />\r\n          </div>\r\n        )}\r\n      </div>\r\n      <div className={styles.images__center}>\r\n        <div className={styles.images__center__items}>\r\n          {showImageModal[activeIndex].type === \"image\" && (\r\n            <img\r\n              onClick={(e) => {\r\n                e.stopPropagation();\r\n              }}\r\n              src={showImageModal[activeIndex].mediaUrl}\r\n              alt=\"\"\r\n            />\r\n          )}\r\n          {showImageModal[activeIndex].type === \"video\" && (\r\n            <video\r\n              onClick={(e) => {\r\n                e.stopPropagation();\r\n              }}\r\n              src={showImageModal[activeIndex].mediaUrl}\r\n             controls\r\n            />\r\n          )}\r\n        </div>\r\n      </div>\r\n      <div className={styles.images__next}>\r\n        {activeIndex === showImageModal.length - 1 ? null : (\r\n          <div style={{ padding: \"10px\" }}>\r\n            <GrNext\r\n              onClick={() => {\r\n                return setActiveIndex(activeIndex + 1);\r\n              }}\r\n              color=\"white\"\r\n              size={35}\r\n              style={{ cursor: \"pointer\" }}\r\n            />\r\n          </div>\r\n        )}\r\n      </div>\r\n    </div>\r\n  );\r\n};\r\n"],"mappings":"AAAA,OAAgB,iBAAAA,EAAe,cAAAC,EAAY,YAAAC,MAAgB,QAyDvD,cAAAC,MAAA,oBA7BG,IAAMC,EAAmBJ,EAAuB,CACrD,mBAAoB,KACpB,sBAAuB,IAAM,CAAC,EAC9B,cAAe,CAAC,EAChB,iBAAkB,IAAM,CAAC,EACzB,eAAgB,CAAC,EACjB,kBAAmB,IAAM,CAAC,EAC1B,iBAAkB,CAChB,YAAa,GACb,sBAAuB,GACvB,WAAY,EACd,EACA,oBAAqB,IAAM,CAAC,CAC9B,CAAC,EAEYK,EAAe,IAAMJ,EAAWG,CAAgB,EC1C7D,OAAOE,MAAY,4BACnB,OAAS,UAAAC,EAAQ,cAAAC,MAAkB,iBACnC,OAAS,YAAAC,MAAgB,QACzB,OAAS,iBAAAC,MAAqB,kBAOxB,cAAAC,EAuBE,QAAAC,MAvBF,oBALC,IAAMC,EAAc,IAAM,CAC/B,GAAM,CAAE,eAAAC,EAAgB,kBAAAC,CAAkB,EAAIC,EAAa,EACrD,CAACC,EAAaC,CAAc,EAAIT,EAAS,CAAC,EAChD,OACEG,EAAC,OAAI,UAAWN,EAAO,OACrB,UAAAK,EAACD,EAAA,CACC,MAAM,QACN,KAAM,GACN,QAAS,IAAM,CACbK,EAAkB,CAAC,CAAC,CACtB,EACA,MAAO,CAAE,SAAU,WAAY,IAAK,OAAQ,MAAO,MAAO,EAC5D,EACAJ,EAAC,OAAI,UAAWL,EAAO,aACpB,SAAAW,IAAgB,EAAI,KACnBN,EAAC,OAAI,MAAO,CAAE,QAAS,MAAO,EAC5B,SAAAA,EAACH,EAAA,CACC,QAAS,IACAU,EAAeD,EAAc,CAAC,EAEvC,MAAM,QACN,KAAM,GACN,MAAO,CAAE,OAAQ,SAAU,EAC7B,EACF,EAEJ,EACAN,EAAC,OAAI,UAAWL,EAAO,eACrB,SAAAM,EAAC,OAAI,UAAWN,EAAO,sBACpB,UAAAQ,EAAeG,CAAW,EAAE,OAAS,SACpCN,EAAC,OACC,QAAUQ,GAAM,CACdA,EAAE,gBAAgB,CACpB,EACA,IAAKL,EAAeG,CAAW,EAAE,SACjC,IAAI,GACN,EAEDH,EAAeG,CAAW,EAAE,OAAS,SACpCN,EAAC,SACC,QAAUQ,GAAM,CACdA,EAAE,gBAAgB,CACpB,EACA,IAAKL,EAAeG,CAAW,EAAE,SAClC,SAAQ,GACT,GAEJ,EACF,EACAN,EAAC,OAAI,UAAWL,EAAO,aACpB,SAAAW,IAAgBH,EAAe,OAAS,EAAI,KAC3CH,EAAC,OAAI,MAAO,CAAE,QAAS,MAAO,EAC5B,SAAAA,EAACJ,EAAA,CACC,QAAS,IACAW,EAAeD,EAAc,CAAC,EAEvC,MAAM,QACN,KAAM,GACN,MAAO,CAAE,OAAQ,SAAU,EAC7B,EACF,EAEJ,GACF,CAEJ","names":["createContext","useContext","useState","jsx","ChatStateContext","useChatState","styles","GrNext","GrPrevious","useState","LiaTimesSolid","jsx","jsxs","ImageViewer","showImageModal","setShowImageModal","useChatState","activeIndex","setActiveIndex","e"]}