Built files from Bizgaze WebServer
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.chat.min.js 153KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887
  1. var __awaiter,Unibase;(function(n){let t;(function(t){let i;(function(t){let i;(function(t){class i{getChatTemplate(){const n=t.Chat.isFullScreen;return`<div class="chatapp ${n?"chat-fullscreen":""}" id="chatAppWrap">
  2. <div class="chatapp-body h-100 position-relative" id="chatAppBody">
  3. <section class="chats-contacts-wrap chat-flex-column" id="chatsContactsSection">
  4. <div id="chatHeaderNav" class="chat-header-nav d-flex chat-header">
  5. <a href="javascript:;" id="closeChatPanel" class="nav-link px-0 flex-center">
  6. <i class="icon dripicons-chevron-right font-20 text-danger"></i>
  7. </a>
  8. <ul class="nav nav-tabs nav-light nav-line d-flex justify-content-between flex-grow-1 flex-shrink-0 text-center px-1 h-100 chat-header-nav-tabs"
  9. role="tablist" id="chatHeaderNavTabs">
  10. <li class="nav-item chat-tab w-50">
  11. <a onclick="Unibase.Platform.Connect.Components.Chat.Instance().displayRecentChats()"
  12. href="javascript:;" class="nav-link _btncomment active">
  13. <i class="las la-sms font-24"></i><span>Chats</span>
  14. </a>
  15. </li>
  16. <li class="nav-item contact-tab w-50">
  17. <a onclick="Unibase.Platform.Connect.Components.Chat.Instance().Displaycontacts();"
  18. href="javascript:;" class="nav-link _btnDisplayUser">
  19. <i class="las la-address-book font-24"></i><span>Contacts</span>
  20. </a>
  21. </li>
  22. <li class="nav-item w-20 d-none">
  23. <a href="javascript:;"
  24. onclick="Unibase.Platform.Connect.Components.Chat.Instance().makeACall();"
  25. class="nav-link _btnmakeacall"><i class="las la-phone font-24"></i><span>Call</span></a>
  26. </li>
  27. <li class="nav-item d-none">
  28. <a href="javascript:;" class="nav-link" id="drpdwn" data-toggle="dropdown" role="button"
  29. aria-haspopup="false" aria-expanded="false"><i class="fa fa-ellipsis-v"></i></a>
  30. <div class="dropdown-menu dropdown-menu-right font-12" id="drpdownmenu">
  31. <a class="dropdown-item" href="javascript:;"
  32. onclick=" Unibase.Platform.Connect.Components.Chat.Instance().createnewgroup()">
  33. <i class="dropdown-icon zmdi zmdi-accounts-add"></i><span>New group</span></a>
  34. <a class="dropdown-item" href="javascript:;">
  35. <i class="dropdown-icon zmdi zmdi-settings"></i><span>Settings</span></a>
  36. <a class="dropdown-item" href="javascript:;" onclick="_BizgazeNotify_Chats.refreshChat()">
  37. <i class="dropdown-icon zmdi zmdi-refresh-sync"></i><span>Refresh</span></a>
  38. <a class="dropdown-item" href="javascript:;" id="closeChatPanel"
  39. onclick="Unibase.Platform.Connect.Components.Chat.Instance().closechatpanel();">
  40. <i class="dropdown-icon icon dripicons-cross"></i><span>Exit chat</span></a>
  41. </div>
  42. </li>
  43. </ul>
  44. <div class="dropdown chat-header-dropdown flex-center">
  45. <a class="nav-link dropdown-toggle no-caret btn btn-flush-biz-theme btn-icon btn-rounded flush-soft-hover d-30" href="javascript:;" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  46. <span class="btn-icon-wrap"><i class="icon dripicons-dots-3 rotate-90d font-20 text-dark"></i></span>
  47. </a>
  48. <div class="dropdown-menu">
  49. <a class="dropdown-item p-1 font-14 view-my-profile" href="javascript:;" id="viewMyProfile">My Info</a>
  50. <a class="dropdown-item p-1 font-14 chat-fullscreen-btn ${n?"":"d-md-flex"}" href="javascript:;" id="chatFullScreenBtn" onclick="Unibase.Platform.Connect.Components.Chat.Instance().toggleChatFullScreen();">Fullscreen</a>
  51. </div>
  52. </div>
  53. </div>
  54. <div class="chatapp-users-list chat-flex-column flex-grow-1 overflow-y-auto">
  55. <div class="div-chat-search c-gap-10 pa-10">
  56. <div class="chatapp-search-div flex-grow-1">
  57. <input type="text" id="txtSearchChats" name="txtSearchChats"
  58. class="custom-chat-input chatAppSearch recentchatsearch search-input" placeholder="Search"
  59. onkeyup="Unibase.Platform.Connect.Components.Chat.Instance().searchParticipants('recentchatsearch','recentchats','');">
  60. <i class="fa fa-search chatappSearchIcon search-icon biz-highlight-bg-color"
  61. id="search_contactlist"></i><i id="txt_chats_clearSearch"
  62. class="icon dripicons-cross search-close hidden"></i>
  63. </div>
  64. <a href="javascript:;" class="avatar avatar-sm d-30 newlabel"
  65. onclick="Unibase.Platform.Connect.Components.Chat.Instance().Displaycontacts();"
  66. title="New Chat">
  67. <div class="avatar-text avatar-text-primary rounded-circle"><span class="initial-wrap"><span><i class="las la-edit font-20"></i></span></span></div>
  68. </a>
  69. </div>
  70. <div data-simplebar class="userlist simple-scroll-bar px-10 pb-10 flex-grow-1" id="chatGroupsWrap">
  71. <ul class="list-groupchat list-group list-group-flush"></ul>
  72. </div>
  73. </div>
  74. <div class="div_ContactsList chat-flex-column flex-grow-1 overflow-y-auto hidden">
  75. <div class="div-chat-search c-gap-10 pa-10">
  76. <div class="chatapp-search-div flex-grow-1">
  77. <input id="txtSearchContacts" type="text" name="txtSearchContacts"
  78. class="custom-chat-input pl-25 chatAppSearch search-input" placeholder="Search"
  79. onkeyup="Unibase.Platform.Connect.Components.Chat.Instance().loadContacts(true);">
  80. <i class="fa fa-search chatappSearchIcon biz-highlight-bg-color search-icon"
  81. id="search_contactlist"></i>
  82. <i class="icon dripicons-cross search-close hidden" id="clearContactsSearch"></i>
  83. </div>
  84. <a href="javascript:;" class="avatar avatar-sm d-30 newlabel"
  85. onclick="Unibase.Platform.Connect.Components.Chat.Instance().createnewgroup();"
  86. title="New Group">
  87. <div class="avatar-text avatar-text-primary rounded-circle">
  88. <span class="initial-wrap"><span><i class="las la-users font-24"></i></span></span>
  89. </div>
  90. </a>
  91. </div>
  92. <div data-simplebar class="userlist simple-scroll-bar px-10 pb-10" id="chatContactsWrap">
  93. <ul class="list-group list-chat-contacts list-group-flush">
  94. </ul>
  95. <div class="contacts-morebtn mt-10 text-center">
  96. <a class="btn btn-outline-primary btn-sm load-more-list-btn"
  97. onclick="Unibase.Platform.Connect.Components.Chat.Instance().loadContacts()"><span
  98. class="contacts_more mr-10 d-none">0</span>More</a>
  99. </div>
  100. </div>
  101. </div>
  102. </section>
  103. ${n?"":this.getChatMessagesBodyHtml()}
  104. <section class="new-group chat-flex-column hidden" id="newGroupSection">
  105. <div id="createGroupHeader" class="chat-header d-flex align-items-center c-gap-10">
  106. <div class="btn_backChatWindow chatanchorhoverdark">
  107. <a onclick="Unibase.Platform.Connect.Components.Chat.Instance().closechatgroup();"
  108. href="javascript:;"
  109. class="btn btn-flush-biz-theme btn-icon btn-rounded flush-soft-hover d-30">
  110. <span class="btn-icon-wrap"><i class="text-dark" data-icon="l"></i></span>
  111. </a>
  112. </div>
  113. <div class="div-user-group-Name flex-between-center flex-grow-1 c-gap-10 r-gap-5 mnw-0">
  114. <div class="Profile_name font-weight-500 text-dark font-15 text-truncate">Create New Group</div>
  115. </div>
  116. </div>
  117. <div class="CreateNewChatGroup chat-flex-column flex-grow-1 overflow-y-auto"></div>
  118. </section>
  119. <section class="profiledetails chat-flex-column h-100 hidden" id="profileDetailsSection"></section>
  120. <section class="forward-contacts-section chat-flex-column hidden" id="forwardContactsSection"></section>
  121. <section class="message-info chat-flex-column h-100 hidden" id="messageInfoSection"></section>
  122. </div>${n?this.getChatFullScreenHtml():""}
  123. <div class="webcam hidden"></div>
  124. </div>`}getChatFullScreenHtml(){return`<div class="chat-convo-section" id="chatConvoSection">
  125. <div class="chat-noconvomsg-wrap flex-grow-1 overflow-y-auto flex-center flex-column r-gap-25 biz-bg-hightlight-color_10 hidden" id="chatNoConvoMsgWrap">
  126. <i class="las la-comments noconvo-icon font-50"></i>
  127. <div class="noconvo-msg-text text-center">
  128. <h5 class="mb-15">No chats found!</h5>
  129. <p class="w-300p">Pick a person from contacts tab and start your conversation.</p>
  130. </div>
  131. </div>
  132. ${$("#chatConvoBody").length?"":this.getChatMessagesBodyHtml()}</div>
  133. <div class="chat-fullscreen-modal-wrap">
  134. <div class="modal fade fullscreen-modal" id="fullScreenModal">
  135. <div class="modal-dialog h-100 modal-dialog-centered mt-0" role="document">
  136. <div class="modal-content" id="fullScreenModalContent"></div>
  137. </div>
  138. </div>
  139. <div class="modal-backdrop fade show hidden position-absolute" id="fullScreenModalBackdrop"></div>
  140. </div>`}getChatMessagesBodyHtml(){return`<section class="chat-convo-body chat-flex-column hidden" id="chatConvoBody"><input type="hidden" class="prevcontactname">
  141. <div id="chatMsgHeaderWrap" class="chat-header">
  142. ${t.Chat.isFullScreen?"":'<div id="chatMsgHeader" class="h-100"><\/div>'}
  143. <div id="selectedMsgsCountHeader" class="h-100 hidden">
  144. <div class="d-flex h-100 align-items-center c-gap-5">
  145. <a href="javascript:;" class="btn btn-flush-biz-theme btn-icon btn-rounded flush-soft-hover d-30"
  146. id="closeMsgMultiActionBtn">
  147. <span class="btn-icon-wrap"><i class="text-dark" data-icon="l"></i></span>
  148. </a>
  149. <div class="font-weight-500 text-dark font-15 text-truncate d-flex align-items-center c-gap-5"><span class="selected-msgs-count">0</span><span>messages selected</span></div>
  150. </div>
  151. </div>
  152. <div id="starMsgHeader" class="h-100 hidden">
  153. <div class="d-flex h-100 align-items-center c-gap-5">
  154. <a href="javascript:;" class="btn btn-flush-biz-theme btn-icon btn-rounded flush-soft-hover d-30"
  155. onclick="Unibase.Platform.Connect.Components.Chat.Instance().closeStarMessages();"><span
  156. class="btn-icon-wrap"><i class="text-dark" data-icon="l"></i></span>
  157. </a>
  158. <div class="font-weight-500 text-dark font-15 text-truncate">Stared Messages</div>
  159. </div>
  160. </div>
  161. </div>
  162. <div data-simplebar class="simple-scroll-bar pt-15 flex-grow-1 biz-bg-hightlight-color_5 msg-list-wrap" id="msgList">
  163. <ul class="grpdetails"></ul>
  164. <div class="more_msg d-none"><a href="javascript:;" class="btn btn-flush-biz-theme btn-icon btn-rounded flush-soft-hover d-30 morediv"
  165. onclick="Unibase.Platform.Connect.Components.Chat.Instance().LoadMessages()" data-moreindex='0' ;
  166. data-isfirst='true'><span class="btn-icon-wrap"><i class="fa fa-angle-double-up font-25"></i></span></a></div>
  167. <ul class="list-unstyled messageslist"></ul>
  168. <div class="mx-2 typing" id="chatTypingMsg"></div>
  169. </div>
  170. <div class="remove_template text-danger text-center font-12 hidden" style="position:relative;bottom:25px">
  171. <hr style="margin:0px 0px 5px 0px">You can't send messages to this group because you're not a participant of this group
  172. <hr style="margin:5px 0px 0px 0px">
  173. </div>
  174. <div id="chatFooter" class="chat-footer biz-bg-hightlight-color_10">
  175. <div class="chat-emojis hidden" id="chatEmojis"></div>
  176. <ul class="list-group list-group-flush biz-bg-hightlight-color_10 pt-10 px-10 mentionable-contact-list biz-custom-scrollbar hidden"
  177. id="mentionableContactList"></ul>
  178. <div class="div_selected_files hidden c-gap-15"></div>
  179. <div id="quoteMsgWrap" class="quote-msg-wrap biz-bg-hightlight-color_20 hidden"></div>
  180. <div class="d-flex align-items-center c-gap-10 flex-grow-1 msg-input-wrap">
  181. <div class="flex-grow-1 chatapp-search-div">
  182. <textarea type="text" rows="1" id="input_msg_send_chatapp" name="send-msg"
  183. class="input-msg-send custom-chat-input pl-35" placeholder="Type something" /></textarea>
  184. <a href="javascript:;"
  185. class="btn btn-icon btn-rounded btn-soft-primary d-26 search-icon chat-emoji-icon"
  186. id="chatEmojiIcon">
  187. <span class="btn-icon-wrap"><i class="las la-smile font-25"></i></span>
  188. </a>
  189. <div class="hidden div_CLose search-close">
  190. <a href="javascript:;" class="text-danger">
  191. <i class="icon dripicons-cross empty_text"></i>
  192. </a>
  193. </div>
  194. </div>
  195. <div class="msg-option-container d-flex align-items-center c-gap-15 font-20">
  196. <div class="msg-compose-options align-items-center c-gap-15">
  197. <div class="btn-file msg-option attachments-btn cursor-pointer">
  198. <label class="my-0" for="chat_attachments">
  199. <i class="las la-paperclip font-22 biz-highlight-bg-color"></i></span>
  200. <input type="file" id="chat_attachments" class="fileUpload hidden" multiple="multiple"
  201. onchange="Unibase.Platform.Connect.Components.Chat.Instance().LoadAttachments(this)">
  202. </div>
  203. <div class="div_camera">
  204. <div class="btn-file msg-option">
  205. <a href="javascript:;" class="input_camera"
  206. onclick="Unibase.Platform.Connect.Components.Chat.Instance().webcam();">
  207. <i class="las la-camera biz-highlight-bg-color font-22"></i>
  208. </a>
  209. </div>
  210. </div>
  211. <div class="div_video hidden">
  212. <div class="msg-option">
  213. <a href="javascript:;" class="video btn-icon-wrap"
  214. onclick="Unibase.Platform.Connect.Components.Chat.Instance().openvideo();">
  215. <i class="las la-video biz-highlight-bg-color font-22"></i>
  216. </a>
  217. </div>
  218. </div>
  219. </div>
  220. <div class="hidden" id="icon_send">
  221. <a href="javascript:;" class="btn btn-icon btn-primary btn-rounded d-30 msg-send-btn">
  222. <span class="btn-icon-wrap"> <i class="las la-paper-plane msg-option font-20"></i></span>
  223. </a>
  224. </div>
  225. </div>
  226. </div>
  227. <div class="msg-multiaction-btns hidden">
  228. <div class="d-flex justify-content-between c-gap-10">
  229. <a href="javascript:;"
  230. class="btn btn-icon btn-flush-biz-theme btn-rounded flush-soft-hover delete-icon footer-multiaction"
  231. data-item="Delete"><span class="btn-icon-wrap"><i
  232. class="icon dripicons-trash font-18"></i></span></a>
  233. <a href="javascript:;"
  234. class="btn btn-icon btn-flush-biz-theme btn-rounded flush-soft-hover star-icon footer-multiaction"
  235. data-item="Star"><span class="btn-icon-wrap"><i class="icon dripicons-star font-18"></i></span></a>
  236. <a href="javascript:;"
  237. class="btn btn-icon btn-flush-biz-theme btn-rounded flush-soft-hover copy-icon footer-multiaction"
  238. data-item="Copy"><span class="btn-icon-wrap"><i class="icon dripicons-copy font-18"></i></span></a>
  239. <a href="javascript:;"
  240. class="btn btn-icon btn-flush-biz-theme btn-rounded flush-soft-hover forward-icon footer-multiaction"
  241. data-item="Forward"><span class="btn-icon-wrap"><i class="icon dripicons-forward font-18"></i></span></a>
  242. </div>
  243. </div>
  244. </div>
  245. </section>`}getMsgInfoBodyHtml(){return` <div id="msgInfoHeader" class="chat-header">
  246. <div class="d-flex h-100 align-items-center c-gap-5">
  247. <a href="javascript:;" class="btn btn-flush-biz-theme btn-icon btn-rounded flush-soft-hover d-30" id="msgInfoBackBtn"
  248. onclick="Unibase.Platform.Connect.Components.Chat.Instance().closeMsgInfo();">
  249. <span class="btn-icon-wrap"><i class="text-dark" data-icon="l"></i></span>
  250. </a>
  251. <div class="font-weight-500 text-dark font-15 text-truncate">Message info</div>
  252. </div>
  253. </div>
  254. <div class="msg-info-body chat-flex-column flex-grow-1" id="msfInfoBody">
  255. <div id="msgInfoTxt" class="msg-info-text text-right py-20 px-10 flex-shrink-0">
  256. <span class="badge badge-primary font-14 rounded-20 msg-span"></span></div>
  257. <div data-simplebar class="simple-scroll-bar chat-scrollbar pb-20 px-10 flex-grow-1">
  258. <div class="d-flex flex-column r-gap-10">
  259. <div class="delivered-user-list-wrap biz-bg-hightlight-color_10 rounded-10 pa-10"
  260. id="deliveredUserListWrap">
  261. <div class="d-flex flex-column r-gap-10">
  262. <div class="flex-between-center c-gap-10">
  263. <h6 class="deliver">Delivered To</h6>
  264. <i class="las la-check-double font-20"></i>
  265. </div>
  266. <ul class="list-group list-group-flush delivereduserslist hidden"></ul>
  267. </div>
  268. </div>
  269. <div class="read-user-list-wrap biz-bg-hightlight-color_10 rounded-10 pa-10" id="readUserListWrap">
  270. <div class="d-flex flex-column r-gap-10">
  271. <div class="flex-between-center c-gap-10">
  272. <h6 class="read">Read by</h6>
  273. <i class="las la-check-double font-20"></i>
  274. </div>
  275. <ul class="list-group list-group-flush readuserslist hidden"></ul>
  276. </div>
  277. </div>
  278. </div>
  279. </div>
  280. </div>`}getContactsTemplate(n){const e=this;i.contacts=n;let u="",o=[];n.sort((n,t)=>n.contactName.localeCompare(t.contactName));let r="";if(n.length){for(let i=0;i<n.length;i++)if(n[i].contactId!=t.Chat.currentUser.userId){var s=0,f=t.Chat.recentChats.find(t=>t.contactId==n[i].contactId);f!=undefined&&(s=f.chatGroupId);const c=e.getUserAvatarHtml(n[i]);o[0]=n[i].photoUrl?n[i].photoUrl:"";let h=n[i].contactName[0].toLowerCase();r==""?(r=h,u+=`<li class="list-group-item py-2 first-letter-heading h5 text-capitalize">${r}</li>`):r!=h&&(r=h,u+=`<li class="list-group-item py-2 first-letter-heading h5 text-capitalize">${r.toUpperCase()}</li>`);n[i].about="";u+=`<li class="contactuser${i} list-group-item border-0 px-1 py-1 flex-between-center c-gap-10">
  281. <a href="javascript:void(0);" data-contactId=${n[i].contactId} data-chatgroupid=${n[i].chatGroupId} data-isprivate=true class="media contactuser chatUserList flex-between-center c-gap-10 flex-grow-1 mnw-0" onclick="Unibase.Platform.Connect.Components.Chat.Instance().privatewindow(${n[i].contactId})" id="msgConvoItem_${n[i].contactId}">${c}<div class="media-body mnw-0"><div class="username text-dark font-weight-500 font-15 text-truncate" title="${n[i].contactName}">${n[i].contactName}</div><div class="last-chat-msg" title="${n[i].about}">${n[i].about}</div></div></a><div class="chat-call-options d-none"></div></li>`}}else u="<li class='d-flex align-items-center justify-content-center mt-4'>No contacts found<\/li>";return u}getPrivateWindowTemplate(i){const r=this.getUserAvatarHtml(i,!1,!0);var u=i.lastSeen==null||i.lastSeen==""||i.lastSeen==undefined||i.lastSeen=="null"?"":n.Platform.Helpers.DateTimeHelper.Instance().formatLocal(i.lastSeen);return`<div class="media div_chatMediaHeader align-items-center chatanchorhoverdark h-100 c-gap-5">
  282. <a href="javascript:;" class="btn btn-flush-biz-theme btn-icon btn-rounded flush-soft-hover flex-shrink-0 d-30 ${t.Chat.isFullScreen?"hidden":""}" onclick="Unibase.Platform.Connect.Components.Chat.Instance().closeprivatewindow();" id="closePrivateWindowBtn"><span class="btn-icon-wrap"><i class="text-dark" data-icon="l"></i></span></a>
  283. <input type="hidden" value="${i.contactName}" id="hfChats_chatGroupName">
  284. <input type="hidden" value='${i.chatGroupId}' id="hfChats_chatGroupId">
  285. <input type="hidden" value='${i.contactId}' id="private_id">
  286. <div class="d-flex imgchatUser_${i.chatGroupId} align-items-center c-gap-10 flex-grow-1 mnw-0">${r}
  287. <div class="media-body text-truncate">
  288. <a onclick="Unibase.Platform.Connect.Components.Chat.Instance().profileDetails();" href = "javascript:void(0);" class="user-name" title="${i.contactName}"><span class="text-dark grpname_${i.chatGroupId} font-weight-500 font-15">${i.contactName}</span><div class="lastseen_${i.contactId} text-light-60 font-11 text-truncate" data-lastseen='${i.lastSeen}'>${u}</div></div></a></div>
  289. <div class="chat-options-wrap">
  290. <ul class="navbar-nav hk-navbar-content div_chatMediaHeader">
  291. <li class="nav-item dropdown dropdown-authentication">
  292. <a class="nav-link dropdown-toggle no-caret btn btn-flush-biz-theme btn-icon btn-rounded flush-soft-hover d-30" href="javascript:;" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  293. <span class="btn-icon-wrap"><i class="icon dripicons-dots-3 rotate-90d font-23 text-dark"></i></span>
  294. </a>
  295. <div class="dropdown-menu dropdown-menu-right" id="t1" style="position:absolute;font-size:12px">
  296. <a class="dropdown-item d-none" href="javascript:;"><i class="dropdown-icon zmdi zmdi-star-outline biz-highlight-bg-color"></i>Stared Messages</a>
  297. <a class="dropdown-item btnSearchChat p-1 font-14" href="javascript:;" onclick="Unibase.Platform.Connect.Components.Chat.Instance().searchdesign();">Search</a>
  298. <a onclick="Unibase.Platform.Connect.Components.Chat.Instance().muteAlert();" class="dropdown-item p-1 font-14 mute-option Mute" data-mute="Mute" href="javascript:;">Mute</a>
  299. <a onclick="Unibase.Platform.Connect.Components.Chat.Instance().clearChat();" class="dropdown-item p-1 font-14" href="javascript:;">Clear Chat</a>
  300. </div></li></ul></div></div>`}getTypingTemplate(n){var i=t.Chat.contacts.find(t=>t.contactName==n).contactId;return'<span class="badge badge-light pull-left mt-3 typingspan_'+i+'"style="position:relative;">'+n+' is typing<div class="dot_wave pt-5"><div class="dot"><\/div><div class="dot"><\/div><div class="dot"><\/div><\/div><\/span><br><br><br>'}getNewGroupTemplate(){return`
  301. <div class="chat-group-top-header flex-shrink-0 px-5">
  302. <div class="divtxt_ContactsSearch">
  303. <div class="chatapp-search-div">
  304. <input id="txtSearchParticipants" type="text" class="custom-chat-input required txt_SearchNewParticipants search-input" value="" placeholder="Search Contacts..." onkeyup="Unibase.Platform.Connect.Components.Chat.Instance().searchParticipants('txt_SearchNewParticipants','grp_newparticipants');">
  305. <i class="fa fa-search search-icon"></i>
  306. <i class="icon dripicons-cross search-close hidden" id="clearGroupContactsSearch"></i>
  307. </div></div>
  308. <div class="div-ChatNewParticipants mt-10">
  309. <div class="divtxt_chatGroupName flex-between-center c-gap-5">
  310. <div class="group-pic-upload-btn position-relative">
  311. <a href="javascript:;" class="btn btn-icon btn-icon-circle btn-primary btn-rounded btn-xs btn-file"><span class="btn-icon-wrap"><i class="las la-camera font-18"></i></span><input type="file" class="groupImgUpload" onclick="Unibase.Platform.Connect.Components.Chat.Instance().newGroupProfile(this);"></a></div>
  312. <div class="input-group">
  313. <input id="txt_GroupName" type="text" class="text-center custom-chat-input required rounded-20 txt_chatGroupName" onkeyup="Unibase.Platform.Connect.Components.Chat.Instance().groupname();" value="" placeholder="Enter Group Name">
  314. </div>
  315. <div class="participant_avatar avatar-group avatar-group-sm avatar-group-overlapped flex-center hidden"></div>
  316. </div>
  317. </div>
  318. </div>
  319. <div data-simplebar class="Chat-NewParticipants userlist simple-scroll-bar px-10 pb-10 flex-grow-1"><ul class="list-chatgroup list-group list-group-flush h-100" id="chatGroupList"></ul></div>
  320. <div class="chat-group-footer btn_saveGroup hidden"><a href="javascript:;" class="btn btn-outline-smoke mr-10" onclick="Unibase.Platform.Connect.Components.Chat.Instance().closechatgroup();">Cancel</a><a href="javascript:;" class="btn btn-primary" id="btn_addtoGrpName" onclick="Unibase.Platform.Connect.Components.Chat.Instance().Savegroup();">Create</a></div>
  321. </div>`}getGroupContactsTemplate(t){let r="",f=n.Platform.Membership.Infos.Identity.currentUser,u=t.length;t.sort((n,t)=>n.contactName.localeCompare(t.contactName));let i="";for(let n=0;n<u;n++){const u=t[n].contactId,e=this.getUserAvatarHtml(t[n]);let f=t[n].contactName[0].toLowerCase();i==""?(i=f,r+=`<li class="list-group-item py-2 first-letter-heading h5 text-capitalize hidden">${i.toUpperCase()}</li>`):i!=f&&(i=f,r+=`<li class="list-group-item py-2 first-letter-heading h5 text-capitalize hidden">${i.toUpperCase()}</li>`);t[n].about="";r+='<li class="groupuser grp_newparticipants list-group-item px-1 py-2" id="groupContactUser_'+u+'" data-contactname="'+t[n].contactName+'"><a href="javascript:void(0);" class="media flex-between-center flex-grow-1 c-gap-10 mnw-0">'+e+'<div class="media-body flex-grow-1 mnw-0"><div class="username text-dark font-weight-500 font-15 text-truncate" title="'+t[n].contactName+'">'+t[n].contactName+'<\/div><div class="last-chat-msg" title="'+t[n].about+'">'+t[n].about+'<\/div><\/div><div class="chat-call-options justify-content-between"><div class="custom-control custom-checkbox checkbox-primary"><input type="checkbox" name="chatgroupuser" id="chkuser_'+u+'" value='+u+' class="custom-control-input groupusercheckbox chkuser_'+u+'"><label class="custom-control-label" for="chkuser_'+u+'"><span id="contactid_'+u+'" class="hidden">'+u+"<\/span><\/label><\/div><\/div><\/div><\/a><\/li>"}return r}getProfileTemplate(){return`<div id="profileHeaderWrap" class="chat-header">
  322. <div id="profileHeader" class="h-100"></div>
  323. <div id="mediaHeader" class="h-100 hidden">
  324. <div class="d-flex h-100 align-items-center c-gap-5">
  325. <a href="javascript:;"
  326. class="btn btn-flush-biz-theme btn-icon btn-rounded flush-soft-hover d-30"
  327. id="mediaBackBtn" onclick="Unibase.Platform.Connect.Components.Chat.Instance().closeMediaInfo();"><span class="btn-icon-wrap"><i class="text-dark" data-icon="l"></i></span>
  328. </a>
  329. <div class="font-weight-500 text-dark font-15 text-truncate">Media,links,docs</div>
  330. </div>
  331. </div>
  332. </div>
  333. <div class="Search_participants flex-shrink-0 mx-10 my-5 hidden">
  334. <div class="flex-between-center c-gap-5">
  335. <div class="chatapp-search-div flex-grow-1"><input id="txtSearchParticipants" type="text"
  336. class="custom-chat-input required txt_SearchChat oldgrp_newparticipanrsearch search-input" value="" placeholder="Search Contacts..."
  337. onkeyup="Unibase.Platform.Connect.Components.Chat.Instance().searchParticipants('oldgrp_newparticipanrsearch','oldgrp_newparticipants');">
  338. <i class="fa fa-search search-icon"></i><a href="javascript:;" class="search-close hidden"><i class="icon dripicons-cross"></i></a></div>
  339. <div class="participant_avatar avatar-group avatar-group-sm avatar-group-overlapped flex-center hidden">
  340. </div>
  341. </div>
  342. </div>
  343. <div data-simplebar class="simple-scroll-bar profilebody flex-grow-1 px-10 pb-20 pt-5 h-100">
  344. <div class="profileDetails"></div>
  345. </div>`}getprofileheader(){return`<div class="group-info-header h-100">
  346. <div class="d-flex h-100 align-items-center c-gap-10">
  347. <div class="flex-grow-1 d-flex align-items-center c-gap-10"><a href="javascript:;" data-contactid=${t.Chat.contactId} class="btn btn-flush-biz-theme btn-icon btn-rounded flush-soft-hover d-30" id="closeContactInfoBtn" onclick="Unibase.Platform.Connect.Components.Chat.Instance().closeContactInfo();"><span class="btn-icon-wrap"><i class="text-dark" data-icon="l"></i></span></a><div class="profile-heading text-truncate text-dark font-weight-500 font-15">${t.Chat.contactId!=0?"Contact":"Group"} Info</div></div><a href="javascript:;" class="btn_AddChatParticipants btn btn-flush-biz-theme btn-icon btn-rounded flush-soft-hover d-30 hidden" onclick="Unibase.Platform.Connect.Components.Chat.Instance().AddParticipants();"><span class="btn-icon-wrap"><i class="las la-user-plus font-20 "></i></span></a></div></div></div><div class="add-participants-header h-100 hidden">
  348. <div class="d-flex h-100 align-items-center c-gap-10">
  349. <div class="flex-grow-1 d-flex align-items-center c-gap-10"><a href="javascript:;" class="btn btn-flush-biz-theme btn-icon btn-rounded flush-soft-hover d-30" id="closeAddParticipantsBtn" onclick="Unibase.Platform.Connect.Components.Chat.Instance().closeAddParticipants();"><span class="btn-icon-wrap"><i class="text-dark" data-icon="l"></i></span></a><div class="profile-heading text-truncate text-dark font-weight-500 font-15">Add Participants</div></div><a href="javascript:;" onclick="Unibase.Platform.Connect.Components.Chat.Instance().Savegroup();" id="btn_addtoGrpName" class="btn_saveGroup hidden font-14 ml-auto"><span class="btn btn-xs btn-primary">Save</span></a></div>
  350. </div></div>`}getprofilebody(){var n=t.Chat.contacts.find(n=>n.contactId==t.Chat.contactId),u,f,i;t.Chat.contactId==0&&(n=t.Chat.recentChats.find(n=>n.chatGroupId==t.Chat.chatGroupId));u="";f="";n!=undefined&&t.Chat.contactId!=0&&(u=n.phoneNumber,f=n.emailId);i=n.contactName;let r=this.getUserAvatarHtml(n,!1,!0);r=r.replace("avatar-sm","avatar-xl d-100");t.Chat.isPrivate||(r+='<input type="file" id="profileImageInput" class="Profile_image hidden" onchange="Unibase.Platform.Connect.Components.Chat.Instance().changeProfileImage(this);" accept="image/png,image/jpeg">');return`<div class="d-flex flex-column r-gap-15 profile-details-wrap" id="profileDetailsWrap"><div class="user-profile-info flex-center flex-column r-gap-10" id="userProfileInfo"><label class="profile-header-img flex-center flex-shrink-0 my-0 cursor-pointer" for="profileImageInput" imgchatUser_${t.Chat.chatGroupId} title="Upload Image">${r}</label>
  351. <div class="div-user-group-Name d-flex flex-column justify-content-center mnw-0 r-gap-5 w-100">
  352. <div class="profile-name-wrap position-relative flex-center c-gap-10"><span class="Profile_name grpname_${t.Chat.chatGroupId} font-weight-500 font-18 text-center text-dark">${i}</span><div class="edit-group-input-wrap position-relative mb-5 hidden" id="editGroupInputWrap"><input type="text" class="custom-chat-input text-dark font-weight-500 edit_groupdetailsInput pr-30" value="${i} " data-prevvalue="${i} "></a>
  353. <a href="javascript:;" class="save_changes btn btn-flush-biz-theme btn-icon btn-rounded flush-soft-hover d-26" onclick="Unibase.Platform.Connect.Components.Chat.Instance().changeGroupName();"><span class="btn-icon-wrap"><i class="icon dripicons-checkmark"></i></span></a></div><a href="javascript:;" class="edit_grpdetails btn btn-flush-biz-theme btn-icon btn-rounded flush-soft-hover d-26 hidden" onclick="Unibase.Platform.Connect.Components.Chat.Instance().EditgroupDetails('${i}');"><span class="btn-icon-wrap"><i class="fa fa-pencil font-14"></i></span></a></div>
  354. <div class="flex-center flex-column font-12 r-gap-3 text-center user-info-section hidden" id="userInfoSection"><span class="partipant-count hidden">
  355. </span><span class="user-mobile-no">${u}</span><span class="user-email">${f}</span></div></div>
  356. </div>
  357. <div class="profile-media-link flex-between-center c-gap-10 pa-10 biz-bg-hightlight-color_10 rounded-10 font-weight-500 text-dark cursor-pointer" id="profileMediaLink"><h6>Media, links and docs</h6><span class="badge badge-primary badge-sm rounded-10 font-10 media-links-count">0</span></div>
  358. <div class="star-messages-link flex-between-center c-gap-10 pa-10 biz-bg-hightlight-color_10 rounded-10 font-weight-500 text-dark cursor-pointer" id="starMessagesLink" onclick="Unibase.Platform.Connect.Components.Chat.Instance().starmessages();"><span class="d-flex c-gap-10"><h6>Star messages</h6><a href="javascript:;" class="btn btn-icon btn-icon-circle btn-primary btn-xs d-20"><span class="btn-icon-wrap"><i class="icon dripicons-star"></i></span></a></span><span class="badge badge-primary badge-sm rounded-10 font-10 star-messages-count">0</span></div>
  359. <div class="div-Chat-Groups biz-bg-hightlight-color_10 rounded-10 pa-10 hidden">
  360. <div class="d-flex flex-column r-gap-10"><div class="groups-header flex-between-center c-gap-10">
  361. <h6>Groups</h6>
  362. <span class="badge badge-primary badge-sm rounded-10 font-10 countChatGroups">0</span>
  363. </div>
  364. <ul class="list-group list-group-flush Chat-Chat-Group hidden">
  365. </ul>
  366. </div></div>
  367. <div class="div-Chat-Participants biz-bg-hightlight-color_10 rounded-10 pa-10 hidden">
  368. <div class="d-flex flex-column r-gap-10"><div class="participants-header flex-between-center c-gap-10">
  369. <h6>Participants</h6>
  370. <span class="badge badge-primary badge-sm rounded-10 font-10 countChatParticipants">0</span>
  371. </div>
  372. <div class="chatapp-search-div"><i class="fa fa-search search-icon biz-highlight-bg-color"></i><input type="text" class="participants_search custom-chat-input search-input" placeholder="Search Participants" onkeyup="Unibase.Platform.Connect.Components.Chat.Instance().searchParticipants('participants_search','grp_participents');"></div>
  373. <ul class="list-group list-group-flush Notify-Chat-Participants hidden">
  374. </ul>
  375. </div></div>
  376. <div class="div-Chat-AddParticipants biz-bg-hightlight-color_10 rounded-10 pa-10 hidden">
  377. <div class="d-flex flex-column r-gap-10"><div class="add-participants-header flex-between-center c-gap-10">
  378. <h6>Add Participants</h6>
  379. <span class="badge badge-primary badge-sm rounded-10 font-10 countChatAddParticipants">0</span>
  380. </div>
  381. <ul class="list-group list-group-flush Notify-Chat-AddParticipants hidden">
  382. </ul>
  383. </div></div>
  384. <div class="profile-action-div div-Chat-Block text-center">
  385. <a href="javascript:void(0);" class="btn btn-sm btn-outline-danger blockUser hidden" onclick="Unibase.Platform.Connect.Components.Chat.Instance().BlockAlert()">
  386. <span class="icon-label mr-5"><i class="fa fa-ban"></i></span>
  387. <span class="blkbtn-text">Block User</span>
  388. </a>
  389. <a href="javascript:void(0);" onclick="Unibase.Platform.Connect.Components.Chat.Instance().exitGroup();" class="btn btn-sm btn-outline-danger ExitFromGroup hidden">
  390. <span class="icon-label mr-5"><i class="fa fa-sign-out"></i></span>
  391. <span class="btn-text">Exit Group</span>
  392. </a>
  393. </div>
  394. </div>
  395. <div id="profileMediaWrap" class="hidden"><ul class="nav nav-tabs nav-line profile-media-tabs px-10" role="tablist" id="profileMediaTabs">
  396. <li class="nav-item"><a href="javascript:void(0);" onclick="Unibase.Platform.Connect.Components.Chat.Instance().mediaFiles();" class="nav-link div-Chat-Media">Media <span class="countMediaFiles hidden count-span badge badge-primary badge-sm rounded-10 font-10">0</span></a></li>
  397. <li class="nav-item"><a href="javascript:void(0);"onclick=" Unibase.Platform.Connect.Components.Chat.Instance().links();" class="nav-link div-Chat-Links">Links<span class="linkCount hidden count-span badge badge-primary badge-sm rounded-10 font-10">0</span></a></li>
  398. <li class="nav-item"><a href="javascript:void(0);"onclick=" Unibase.Platform.Connect.Components.Chat.Instance().documentFiles();" class="nav-link div-Chat-Docs">Documents <span class="countDocFiles hidden count-span badge badge-primary badge-sm rounded-10 font-10">0</span></a></li>
  399. </ul>
  400. <div class="tab-content mb-20" id="profileTabContent">
  401. <div class="links-content-tab tab-pane fade" role="tabpanel" id="links_files">
  402. <div id="Chat-Links" class="Chat-ListUrls d-flex flex-column r-gap-15">
  403. <div class="text-center text-danger">No Links</div>
  404. </div>
  405. </div>
  406. <div class="links-content-tab tab-pane fade" role="tabpanel" id="Chat-Mediafiles">
  407. <div id="Chat-Media" class="chat-media d-flex flex-column r-gap-15">
  408. <div class="text-center text-danger">No Media</div>
  409. </div>
  410. </div>
  411. <div class="links-content-tab tab-pane fade" role="tabpanel" id="Chat-docfiles">
  412. <div id="Chat-Docs" class="Chat-Chat-Docs d-flex flex-column r-gap-15">
  413. <div class="text-center text-danger">No Documents</h6>
  414. </div>
  415. </div>
  416. </div>
  417. </div>`}getAddParticipants(n,i){var r=t.Chat.contacts.find(t=>t.contactId==n);const u=this.getUserAvatarHtml(r);return`<li class="list-group-item groupuser oldgrp_newparticipants px-1 py-2" id="groupParticipant_${n}" data-contactname="${i}">
  418. <a href ="javascript:;" class="flex-between-center c-gap-10 groupParticipant_${n}">
  419. <div class="d-flex align-items-center c-gap-10 flex-grow-1 mnw-0">${u}<div class="name text-dark font-15 font-weight-500 text-truncate" id="contactname_${n}">${i}</div></div>
  420. <input type="checkbox" name="selected_participants" id="checkuser_${n}" value='${n}' class="checkuser_${n} transform-scale-1_1"></div>
  421. <label id="contactid_${n}" class="hidden">${n}</label>
  422. </a></li>`}getgroupsbycid(n){var i=0,r=t.Chat.recentChats.find(t=>t.contactName==n&&!t.isPrivate);r!=undefined&&(i=r.chatGroupId);const u=this.getUserAvatarHtml(r);return`<li class="list-group-item px-1 py-2 common-group-item" id="groupuser_${i}"><a href="javascript:;" data-contactid="0" data-chatgroupid="${i}" onclick="Unibase.Platform.Connect.Components.Chat.Instance().privatewindow(${i});" class="media participent d-flex align-items-center c-gap-10 mnw-0" id="msgConvoItem_${i}">${u}
  423. <div class="media-body mnw-0 flex-grow-1"><div class="username text-dark font-weight-500 font-15 text-truncate" title="${n}">${n}</div></div></a></li>`}getForwardContacts(n){var t="";let i=n.length;for(let r=0;r<i;r++){const i=this.getUserAvatarHtml(n[r]);t+='<li class="list-group-item forwardcontact px-1 py-2" id="Forwarduser_'+r+'" data-contactname='+n[r].contactName+'><a href ="javascript:;"class="d-flex align-items-center c-gap-10 groupuser_'+r+'"><div class="d-flex align-items-center c-gap-10 flex-grow-1 mnw-0">'+i+'<div class="name font-15 font-weight-500 text-dark text-truncate" id = "forwardcontactname_'+r+'" > '+n[r].contactName+' <\/div><\/div><input type="checkbox" name="forwardcontact" id="chkuser_'+r+'" class=" chkforward_'+n[r].contactId+'" value='+n[r].contactId+" data-contactid="+n[r].contactId+" data-chatgroupid="+n[r].chatGroupId+'><input type="checkbox" name="forwardcontact" id="chkuser_'+r+'" class=" chkforward_'+n[r].contactId+'" data-contactid='+n[r].contactId+" data-chatgroupid="+n[r].chatGroupId+'><lable id="forwardcontactid_'+r+'" class="hidden">'+n[r].contactId+"<\/lable><\/a><\/li>"}return t}getForwardTemplate(){return`<div id="forwardContactsHeader" class="chat-header flex-between-center c-gap-10"><div class="d-flex align-items-center c-gap-10"><a onclick="Unibase.Platform.Connect.Components.Chat.Instance().closeForwardContacts();" href="javascript:;" class="btn btn-flush-biz-theme btn-icon btn-rounded flush-soft-hover d-30"><span class="btn-icon-wrap"><i class="text-dark" data-icon="l"></i></span></a><div class="div-user-group-Name flex-between-center flex-grow-1 c-gap-10 r-gap-5 mnw-0"><div class="Profile_name font-weight-500 text-dark font-15 text-truncate">Forward Contacts</div></div></div><a class="btn btn-flush-biz-theme btn-icon btn-rounded flush-soft-hover d-30 _btnSendToMany hidden" href="javascript:;" id="forwardSendBtn"><span class="btn-icon-wrap"><i class="zmdi zmdi-mail-send zmdi-hc-lg"></i></span></a></div>
  424. <div class="Forward_Contacts flex-grow-1 chat-flex-column overflow-y-auto">
  425. <div class="div_forwardMessage chat-flex-column">
  426. <div class="pt-1 pb-2 flex-shrink-0">
  427. <div role ="search" class="chatapp-search-div chat-search mx-2">
  428. <input type="text" id="search_forwardcontacts" name ="search_forwardcontacts" class="custom-chat-input search_forwardcontacts search-input" placeholder="Search" onkeyup="Unibase.Platform.Connect.Components.Chat.Instance().searchParticipants('search_forwardcontacts','forwardcontact');"><i class="fa fa-search search-icon"></i></div></div>
  429. <div data-simplebar class="Forward_messaagecontacts simple-scroll-bar px-10 pb-10 flex-grow-1"><ul class="forwardcontacts_list list-group list-group-flush"></ul></div></div></div>`}getselectedcontacts(n,t){return'<li class="selected_groupcontaccts_'+t+'"><span class="badge badge-light">'+n+"<\/span><\/li>"}getMediaFiles(n,t){return'<div class="preview_file"><a href="javascript:void(0);" onclick="Unibase.Platform.Connect.Components.Chat.Instance().filePreview(\''+n+'\')" class="d-inline-block"><img src="'+t+'" onerror="ReloadImage(event)" data-dynamic="1" class="d-50"><\/a><\/div>'}getLinks(n){return`<div class="text-truncate w-100"><span class="link-message text-truncate font-14"><a href='${n}' target="_blank" title="${n}">${n}</a></span></div>`}getProfileSettings(n,t){return'<div class="profilesettings"><span class="imageProfile"><center><img src='+n+' style="height:30%;width:30%" class="profile_image rounded-circle"><i class="fa fa-pencil"><input type="file" class="change_profile hidden"><\/i><\/center><span class="profile_contactname">'+t+'<\/span><span class="profile_contactid"><\/span><\/div>'}getMentionableContactTemplate(n){const{contactId:r,contactName:t}=n;let i=this.getUserAvatarHtml(n);i=i.replace("avatar-sm","avatar-xs d-30");return`<li class="list-group-item pa-5 flex-between-center mentionble-contact" id="mentionbleContact_${r}" data-contactname="@${t}">
  430. <a href ="javascript:;" class="d-flex align-items-center c-gap-10 w-100 mnw-0">${i}
  431. <div class="media-body flex-grow-1 mnw-0 d-flex flex-column justify-content-center">
  432. <div class="flex-between-center c-gap-10 text-dark font-weight-500 font-13 text-truncate" title="${t}">${t}</div>
  433. </div>
  434. </a></li>`}getUserAvatarHtml(n,i=false,r=false){let u='<div class="media-img-wrap avatar ImagePng_'+n.chatGroupId+' avatar-sm flex-shrink-0">';if(n.photoUrl){var f=t.Chat.Instance().getFilePath(n.photoUrl);u+=`<img src='${f}' data-dynamic="1" class="avatar-img chatuser-img" data-loaded="0">`}else{let t="",i=n.contactName;if(i){let n=i.match(/\b(\w)/g);t=n.length==1?$.trim(i).substr(0,2):n.join("").slice(0,2);u+=`<div class="avatar-text avatar-text-${r?"inv-":""}primary rounded-circle" data-text="${t}"><span class="initial-wrap"><span>${t}</span></span></div>`}else u=""}return u+=`${i?`<span class="badge ${n.isonline?"active":""} badge-green badge-indicator online-status-icon" id ="contact_badge_${n.contactId}"></span>`:""}</div>`}getEmojiPattern(){return/^(?:\uD83D(?:\uDD73\uFE0F?|\uDC41(?:(?:\uFE0F(?:\u200D\uD83D\uDDE8\uFE0F?)?|\u200D\uD83D\uDDE8\uFE0F?))?|[\uDDE8\uDDEF]\uFE0F?|\uDC4B(?:\uD83C[\uDFFB-\uDFFF])?|\uDD90(?:(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F))?|[\uDD96\uDC4C\uDC48\uDC49\uDC46\uDD95\uDC47\uDC4D\uDC4E\uDC4A\uDC4F\uDE4C\uDC50\uDE4F\uDC85\uDCAA\uDC42\uDC43\uDC76\uDC66\uDC67](?:\uD83C[\uDFFB-\uDFFF])?|\uDC71(?:(?:\uD83C(?:[\uDFFB-\uDFFF](?:\u200D(?:[\u2640\u2642]\uFE0F?))?)|\u200D(?:[\u2640\u2642]\uFE0F?)))?|\uDC68(?:(?:\uD83C(?:\uDFFB(?:\u200D(?:\uD83E(?:\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF]|[\uDDB0\uDDB1\uDDB3\uDDB2\uDDAF\uDDBC\uDDBD])|\u2695\uFE0F?|\uD83C[\uDF93\uDFEB\uDF3E\uDF73\uDFED\uDFA4\uDFA8]|\u2696\uFE0F?|\uD83D[\uDD27\uDCBC\uDD2C\uDCBB\uDE80\uDE92]|\u2708\uFE0F?))?|\uDFFC(?:\u200D(?:\uD83E(?:\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF]|[\uDDB0\uDDB1\uDDB3\uDDB2\uDDAF\uDDBC\uDDBD])|\u2695\uFE0F?|\uD83C[\uDF93\uDFEB\uDF3E\uDF73\uDFED\uDFA4\uDFA8]|\u2696\uFE0F?|\uD83D[\uDD27\uDCBC\uDD2C\uDCBB\uDE80\uDE92]|\u2708\uFE0F?))?|\uDFFD(?:\u200D(?:\uD83E(?:\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|[\uDDB0\uDDB1\uDDB3\uDDB2\uDDAF\uDDBC\uDDBD])|\u2695\uFE0F?|\uD83C[\uDF93\uDFEB\uDF3E\uDF73\uDFED\uDFA4\uDFA8]|\u2696\uFE0F?|\uD83D[\uDD27\uDCBC\uDD2C\uDCBB\uDE80\uDE92]|\u2708\uFE0F?))?|\uDFFE(?:\u200D(?:\uD83E(?:\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF]|[\uDDB0\uDDB1\uDDB3\uDDB2\uDDAF\uDDBC\uDDBD])|\u2695\uFE0F?|\uD83C[\uDF93\uDFEB\uDF3E\uDF73\uDFED\uDFA4\uDFA8]|\u2696\uFE0F?|\uD83D[\uDD27\uDCBC\uDD2C\uDCBB\uDE80\uDE92]|\u2708\uFE0F?))?|\uDFFF(?:\u200D(?:\uD83E(?:\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE]|[\uDDB0\uDDB1\uDDB3\uDDB2\uDDAF\uDDBC\uDDBD])|\u2695\uFE0F?|\uD83C[\uDF93\uDFEB\uDF3E\uDF73\uDFED\uDFA4\uDFA8]|\u2696\uFE0F?|\uD83D[\uDD27\uDCBC\uDD2C\uDCBB\uDE80\uDE92]|\u2708\uFE0F?))?)|\u200D(?:\uD83E[\uDDB0\uDDB1\uDDB3\uDDB2\uDDAF\uDDBC\uDDBD]|\u2695\uFE0F?|\uD83C[\uDF93\uDFEB\uDF3E\uDF73\uDFED\uDFA4\uDFA8]|\u2696\uFE0F?|\uD83D(?:\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uDC68\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|[\uDD27\uDCBC\uDD2C\uDCBB\uDE80\uDE92])|\u2708\uFE0F?|\u2764(?:\uFE0F\u200D\uD83D(?:\uDC8B\u200D\uD83D\uDC68|\uDC68)|\u200D\uD83D(?:\uDC8B\u200D\uD83D\uDC68|\uDC68)))))?|\uDC69(?:(?:\uD83C(?:\uDFFB(?:\u200D(?:\uD83E(?:\uDD1D\u200D\uD83D(?:\uDC69\uD83C[\uDFFC-\uDFFF]|\uDC68\uD83C[\uDFFC-\uDFFF])|[\uDDB0\uDDB1\uDDB3\uDDB2\uDDAF\uDDBC\uDDBD])|\u2695\uFE0F?|\uD83C[\uDF93\uDFEB\uDF3E\uDF73\uDFED\uDFA4\uDFA8]|\u2696\uFE0F?|\uD83D[\uDD27\uDCBC\uDD2C\uDCBB\uDE80\uDE92]|\u2708\uFE0F?))?|\uDFFC(?:\u200D(?:\uD83E(?:\uDD1D\u200D\uD83D(?:\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF]|\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])|[\uDDB0\uDDB1\uDDB3\uDDB2\uDDAF\uDDBC\uDDBD])|\u2695\uFE0F?|\uD83C[\uDF93\uDFEB\uDF3E\uDF73\uDFED\uDFA4\uDFA8]|\u2696\uFE0F?|\uD83D[\uDD27\uDCBC\uDD2C\uDCBB\uDE80\uDE92]|\u2708\uFE0F?))?|\uDFFD(?:\u200D(?:\uD83E(?:\uDD1D\u200D\uD83D(?:\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|[\uDDB0\uDDB1\uDDB3\uDDB2\uDDAF\uDDBC\uDDBD])|\u2695\uFE0F?|\uD83C[\uDF93\uDFEB\uDF3E\uDF73\uDFED\uDFA4\uDFA8]|\u2696\uFE0F?|\uD83D[\uDD27\uDCBC\uDD2C\uDCBB\uDE80\uDE92]|\u2708\uFE0F?))?|\uDFFE(?:\u200D(?:\uD83E(?:\uDD1D\u200D\uD83D(?:\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF]|\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])|[\uDDB0\uDDB1\uDDB3\uDDB2\uDDAF\uDDBC\uDDBD])|\u2695\uFE0F?|\uD83C[\uDF93\uDFEB\uDF3E\uDF73\uDFED\uDFA4\uDFA8]|\u2696\uFE0F?|\uD83D[\uDD27\uDCBC\uDD2C\uDCBB\uDE80\uDE92]|\u2708\uFE0F?))?|\uDFFF(?:\u200D(?:\uD83E(?:\uDD1D\u200D\uD83D(?:\uDC69\uD83C[\uDFFB-\uDFFE]|\uDC68\uD83C[\uDFFB-\uDFFE])|[\uDDB0\uDDB1\uDDB3\uDDB2\uDDAF\uDDBC\uDDBD])|\u2695\uFE0F?|\uD83C[\uDF93\uDFEB\uDF3E\uDF73\uDFED\uDFA4\uDFA8]|\u2696\uFE0F?|\uD83D[\uDD27\uDCBC\uDD2C\uDCBB\uDE80\uDE92]|\u2708\uFE0F?))?)|\u200D(?:\uD83E[\uDDB0\uDDB1\uDDB3\uDDB2\uDDAF\uDDBC\uDDBD]|\u2695\uFE0F?|\uD83C[\uDF93\uDFEB\uDF3E\uDF73\uDFED\uDFA4\uDFA8]|\u2696\uFE0F?|\uD83D(?:\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|[\uDD27\uDCBC\uDD2C\uDCBB\uDE80\uDE92])|\u2708\uFE0F?|\u2764(?:\uFE0F\u200D\uD83D(?:\uDC8B\u200D\uD83D[\uDC68\uDC69]|[\uDC68\uDC69])|\u200D\uD83D(?:\uDC8B\u200D\uD83D[\uDC68\uDC69]|[\uDC68\uDC69])))))?|[\uDC74\uDC75](?:\uD83C[\uDFFB-\uDFFF])?|[\uDE4D\uDE4E\uDE45\uDE46\uDC81\uDE4B\uDE47\uDC6E](?:(?:\uD83C(?:[\uDFFB-\uDFFF](?:\u200D(?:[\u2642\u2640]\uFE0F?))?)|\u200D(?:[\u2642\u2640]\uFE0F?)))?|\uDD75(?:(?:\uFE0F(?:\u200D(?:[\u2642\u2640]\uFE0F?))?|\uD83C(?:[\uDFFB-\uDFFF](?:\u200D(?:[\u2642\u2640]\uFE0F?))?)|\u200D(?:[\u2642\u2640]\uFE0F?)))?|[\uDC82\uDC77](?:(?:\uD83C(?:[\uDFFB-\uDFFF](?:\u200D(?:[\u2642\u2640]\uFE0F?))?)|\u200D(?:[\u2642\u2640]\uFE0F?)))?|\uDC78(?:\uD83C[\uDFFB-\uDFFF])?|\uDC73(?:(?:\uD83C(?:[\uDFFB-\uDFFF](?:\u200D(?:[\u2642\u2640]\uFE0F?))?)|\u200D(?:[\u2642\u2640]\uFE0F?)))?|[\uDC72\uDC70\uDC7C](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC86\uDC87\uDEB6](?:(?:\uD83C(?:[\uDFFB-\uDFFF](?:\u200D(?:[\u2642\u2640]\uFE0F?))?)|\u200D(?:[\u2642\u2640]\uFE0F?)))?|[\uDC83\uDD7A](?:\uD83C[\uDFFB-\uDFFF])?|\uDD74(?:(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F))?|\uDC6F(?:\u200D(?:[\u2642\u2640]\uFE0F?))?|[\uDEA3\uDEB4\uDEB5](?:(?:\uD83C(?:[\uDFFB-\uDFFF](?:\u200D(?:[\u2642\u2640]\uFE0F?))?)|\u200D(?:[\u2642\u2640]\uFE0F?)))?|[\uDEC0\uDECC\uDC6D\uDC6B\uDC6C](?:\uD83C[\uDFFB-\uDFFF])?|\uDDE3\uFE0F?|\uDC15(?:\u200D\uD83E\uDDBA)?|[\uDC3F\uDD4A\uDD77\uDD78\uDDFA\uDEE3\uDEE4\uDEE2\uDEF3\uDEE5\uDEE9\uDEF0\uDECE\uDD70\uDD79\uDDBC\uDD76\uDECD\uDDA5\uDDA8\uDDB1\uDDB2\uDCFD\uDD6F\uDDDE\uDDF3\uDD8B\uDD8A\uDD8C\uDD8D\uDDC2\uDDD2\uDDD3\uDD87\uDDC3\uDDC4\uDDD1\uDDDD\uDEE0\uDDE1\uDEE1\uDDDC\uDECF\uDECB\uDD49]\uFE0F?|[\uDE00\uDE03\uDE04\uDE01\uDE06\uDE05\uDE02\uDE42\uDE43\uDE09\uDE0A\uDE07\uDE0D\uDE18\uDE17\uDE1A\uDE19\uDE0B\uDE1B-\uDE1D\uDE10\uDE11\uDE36\uDE0F\uDE12\uDE44\uDE2C\uDE0C\uDE14\uDE2A\uDE34\uDE37\uDE35\uDE0E\uDE15\uDE1F\uDE41\uDE2E\uDE2F\uDE32\uDE33\uDE26-\uDE28\uDE30\uDE25\uDE22\uDE2D\uDE31\uDE16\uDE23\uDE1E\uDE13\uDE29\uDE2B\uDE24\uDE21\uDE20\uDE08\uDC7F\uDC80\uDCA9\uDC79-\uDC7B\uDC7D\uDC7E\uDE3A\uDE38\uDE39\uDE3B-\uDE3D\uDE40\uDE3F\uDE3E\uDE48-\uDE4A\uDC8B\uDC8C\uDC98\uDC9D\uDC96\uDC97\uDC93\uDC9E\uDC95\uDC9F\uDC94\uDC9B\uDC9A\uDC99\uDC9C\uDDA4\uDCAF\uDCA2\uDCA5\uDCAB\uDCA6\uDCA8\uDCA3\uDCAC\uDCAD\uDCA4\uDC40\uDC45\uDC44\uDC8F\uDC91\uDC6A\uDC64\uDC65\uDC63\uDC35\uDC12\uDC36\uDC29\uDC3A\uDC31\uDC08\uDC2F\uDC05\uDC06\uDC34\uDC0E\uDC2E\uDC02-\uDC04\uDC37\uDC16\uDC17\uDC3D\uDC0F\uDC11\uDC10\uDC2A\uDC2B\uDC18\uDC2D\uDC01\uDC00\uDC39\uDC30\uDC07\uDC3B\uDC28\uDC3C\uDC3E\uDC14\uDC13\uDC23-\uDC27\uDC38\uDC0A\uDC22\uDC0D\uDC32\uDC09\uDC33\uDC0B\uDC2C\uDC1F-\uDC21\uDC19\uDC1A\uDC0C\uDC1B-\uDC1E\uDC90\uDCAE\uDD2A\uDDFE\uDDFB\uDC92\uDDFC\uDDFD\uDD4C\uDED5\uDD4D\uDD4B\uDC88\uDE82-\uDE8A\uDE9D\uDE9E\uDE8B-\uDE8E\uDE90-\uDE9C\uDEF5\uDEFA\uDEB2\uDEF4\uDEF9\uDE8F\uDEA8\uDEA5\uDEA6\uDED1\uDEA7\uDEF6\uDEA4\uDEA2\uDEEB\uDEEC\uDCBA\uDE81\uDE9F-\uDEA1\uDE80\uDEF8\uDD5B\uDD67\uDD50\uDD5C\uDD51\uDD5D\uDD52\uDD5E\uDD53\uDD5F\uDD54\uDD60\uDD55\uDD61\uDD56\uDD62\uDD57\uDD63\uDD58\uDD64\uDD59\uDD65\uDD5A\uDD66\uDD25\uDCA7\uDEF7\uDD2E\uDC53-\uDC62\uDC51\uDC52\uDCFF\uDC84\uDC8D\uDC8E\uDD07-\uDD0A\uDCE2\uDCE3\uDCEF\uDD14\uDD15\uDCFB\uDCF1\uDCF2\uDCDE-\uDCE0\uDD0B\uDD0C\uDCBB\uDCBD-\uDCC0\uDCFA\uDCF7-\uDCF9\uDCFC\uDD0D\uDD0E\uDCA1\uDD26\uDCD4-\uDCDA\uDCD3\uDCD2\uDCC3\uDCDC\uDCC4\uDCF0\uDCD1\uDD16\uDCB0\uDCB4-\uDCB8\uDCB3\uDCB9\uDCB1\uDCB2\uDCE7-\uDCE9\uDCE4-\uDCE6\uDCEB\uDCEA\uDCEC-\uDCEE\uDCDD\uDCBC\uDCC1\uDCC2\uDCC5-\uDCD0\uDD12\uDD13\uDD0F-\uDD11\uDD28\uDD2B\uDD27\uDD29\uDD17\uDD2C\uDD2D\uDCE1\uDC89\uDC8A\uDEAA\uDEBD\uDEBF\uDEC1\uDED2\uDEAC\uDDFF\uDEAE\uDEB0\uDEB9-\uDEBC\uDEBE\uDEC2-\uDEC5\uDEB8\uDEAB\uDEB3\uDEAD\uDEAF\uDEB1\uDEB7\uDCF5\uDD1E\uDD03\uDD04\uDD19-\uDD1D\uDED0\uDD4E\uDD2F\uDD00-\uDD02\uDD3C\uDD3D\uDD05\uDD06\uDCF6\uDCF3\uDCF4\uDD31\uDCDB\uDD30\uDD1F-\uDD24\uDD34\uDFE0-\uDFE2\uDD35\uDFE3-\uDFE5\uDFE7-\uDFE9\uDFE6\uDFEA\uDFEB\uDD36-\uDD3B\uDCA0\uDD18\uDD33\uDD32\uDEA9])|\uD83E(?:[\uDD1A\uDD0F\uDD1E\uDD1F\uDD18\uDD19\uDD1B\uDD1C\uDD32\uDD33\uDDB5\uDDB6\uDDBB\uDDD2](?:\uD83C[\uDFFB-\uDFFF])?|\uDDD1(?:(?:\uD83C(?:[\uDFFB-\uDFFF](?:\u200D(?:\uD83E(?:\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|[\uDDB0\uDDB1\uDDB3\uDDB2\uDDAF\uDDBC\uDDBD])|\u2695\uFE0F?|\uD83C[\uDF93\uDFEB\uDF3E\uDF73\uDFED\uDFA4\uDFA8]|\u2696\uFE0F?|\uD83D[\uDD27\uDCBC\uDD2C\uDCBB\uDE80\uDE92]|\u2708\uFE0F?))?)|\u200D(?:\uD83E(?:\uDD1D\u200D\uD83E\uDDD1|[\uDDB0\uDDB1\uDDB3\uDDB2\uDDAF\uDDBC\uDDBD])|\u2695\uFE0F?|\uD83C[\uDF93\uDFEB\uDF3E\uDF73\uDFED\uDFA4\uDFA8]|\u2696\uFE0F?|\uD83D[\uDD27\uDCBC\uDD2C\uDCBB\uDE80\uDE92]|\u2708\uFE0F?)))?|[\uDDD4\uDDD3](?:\uD83C[\uDFFB-\uDFFF])?|[\uDDCF\uDD26\uDD37](?:(?:\uD83C(?:[\uDFFB-\uDFFF](?:\u200D(?:[\u2642\u2640]\uFE0F?))?)|\u200D(?:[\u2642\u2640]\uFE0F?)))?|[\uDD34\uDDD5\uDD35\uDD30\uDD31\uDD36](?:\uD83C[\uDFFB-\uDFFF])?|[\uDDB8\uDDB9\uDDD9-\uDDDD](?:(?:\uD83C(?:[\uDFFB-\uDFFF](?:\u200D(?:[\u2642\u2640]\uFE0F?))?)|\u200D(?:[\u2642\u2640]\uFE0F?)))?|[\uDDDE\uDDDF](?:\u200D(?:[\u2642\u2640]\uFE0F?))?|[\uDDCD\uDDCE\uDDD6\uDDD7\uDD38](?:(?:\uD83C(?:[\uDFFB-\uDFFF](?:\u200D(?:[\u2642\u2640]\uFE0F?))?)|\u200D(?:[\u2642\u2640]\uFE0F?)))?|\uDD3C(?:\u200D(?:[\u2642\u2640]\uFE0F?))?|[\uDD3D\uDD3E\uDD39\uDDD8](?:(?:\uD83C(?:[\uDFFB-\uDFFF](?:\u200D(?:[\u2642\u2640]\uFE0F?))?)|\u200D(?:[\u2642\u2640]\uFE0F?)))?|[\uDD23\uDD70\uDD29\uDD2A\uDD11\uDD17\uDD2D\uDD2B\uDD14\uDD10\uDD28\uDD25\uDD24\uDD12\uDD15\uDD22\uDD2E\uDD27\uDD75\uDD76\uDD74\uDD2F\uDD20\uDD73\uDD13\uDDD0\uDD7A\uDD71\uDD2C\uDD21\uDD16\uDDE1\uDD0E\uDD0D\uDD1D\uDDBE\uDDBF\uDDE0\uDDB7\uDDB4\uDD3A\uDDB0\uDDB1\uDDB3\uDDB2\uDD8D\uDDA7\uDDAE\uDD8A\uDD9D\uDD81\uDD84\uDD93\uDD8C\uDD99\uDD92\uDD8F\uDD9B\uDD94\uDD87\uDDA5\uDDA6\uDDA8\uDD98\uDDA1\uDD83\uDD85\uDD86\uDDA2\uDD89\uDDA9\uDD9A\uDD9C\uDD8E\uDD95\uDD96\uDD88\uDD8B\uDD97\uDD82\uDD9F\uDDA0\uDD40\uDD6D\uDD5D\uDD65\uDD51\uDD54\uDD55\uDD52\uDD6C\uDD66\uDDC4\uDDC5\uDD5C\uDD50\uDD56\uDD68\uDD6F\uDD5E\uDDC7\uDDC0\uDD69\uDD53\uDD6A\uDD59\uDDC6\uDD5A\uDD58\uDD63\uDD57\uDDC8\uDDC2\uDD6B\uDD6E\uDD5F-\uDD61\uDD80\uDD9E\uDD90\uDD91\uDDAA\uDDC1\uDD67\uDD5B\uDD42\uDD43\uDD64\uDDC3\uDDC9\uDDCA\uDD62\uDD44\uDDED\uDDF1\uDDBD\uDDBC\uDE82\uDDF3\uDE90\uDDE8\uDDE7\uDD47-\uDD49\uDD4E\uDD4F\uDD4D\uDD4A\uDD4B\uDD45\uDD3F\uDD4C\uDE80\uDE81\uDDFF\uDDE9\uDDF8\uDDF5\uDDF6\uDD7D\uDD7C\uDDBA\uDDE3-\uDDE6\uDD7B\uDE71-\uDE73\uDD7E\uDD7F\uDE70\uDDE2\uDE95\uDD41\uDDEE\uDE94\uDDFE\uDE93\uDDAF\uDDF0\uDDF2\uDDEA-\uDDEC\uDE78-\uDE7A\uDE91\uDE92\uDDF4\uDDF7\uDDF9-\uDDFD\uDDEF])|[\u263A\u2639\u2620\u2763\u2764]\uFE0F?|\u270B(?:\uD83C[\uDFFB-\uDFFF])?|[\u270C\u261D](?:(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F))?|\u270A(?:\uD83C[\uDFFB-\uDFFF])?|\u270D(?:(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F))?|\uD83C(?:\uDF85(?:\uD83C[\uDFFB-\uDFFF])?|\uDFC3(?:(?:\uD83C(?:[\uDFFB-\uDFFF](?:\u200D(?:[\u2642\u2640]\uFE0F?))?)|\u200D(?:[\u2642\u2640]\uFE0F?)))?|[\uDFC7\uDFC2](?:\uD83C[\uDFFB-\uDFFF])?|\uDFCC(?:(?:\uFE0F(?:\u200D(?:[\u2642\u2640]\uFE0F?))?|\uD83C(?:[\uDFFB-\uDFFF](?:\u200D(?:[\u2642\u2640]\uFE0F?))?)|\u200D(?:[\u2642\u2640]\uFE0F?)))?|[\uDFC4\uDFCA](?:(?:\uD83C(?:[\uDFFB-\uDFFF](?:\u200D(?:[\u2642\u2640]\uFE0F?))?)|\u200D(?:[\u2642\u2640]\uFE0F?)))?|\uDFCB(?:(?:\uFE0F(?:\u200D(?:[\u2642\u2640]\uFE0F?))?|\uD83C(?:[\uDFFB-\uDFFF](?:\u200D(?:[\u2642\u2640]\uFE0F?))?)|\u200D(?:[\u2642\u2640]\uFE0F?)))?|[\uDFF5\uDF36\uDF7D\uDFD4-\uDFD6\uDFDC-\uDFDF\uDFDB\uDFD7\uDFD8\uDFDA\uDFD9\uDFCE\uDFCD\uDF21\uDF24-\uDF2C\uDF97\uDF9F\uDF96\uDF99-\uDF9B\uDF9E\uDFF7\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37]\uFE0F?|\uDFF4(?:(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67\uDB40\uDC7F|\uDC73\uDB40\uDC63\uDB40\uDC74\uDB40\uDC7F|\uDC77\uDB40\uDC6C\uDB40\uDC73\uDB40\uDC7F)))?|\uDFF3(?:(?:\uFE0F(?:\u200D\uD83C\uDF08)?|\u200D\uD83C\uDF08))?|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|[\uDFFB-\uDFFF\uDF38-\uDF3C\uDF37\uDF31-\uDF35\uDF3E-\uDF43\uDF47-\uDF53\uDF45\uDF46\uDF3D\uDF44\uDF30\uDF5E\uDF56\uDF57\uDF54\uDF5F\uDF55\uDF2D-\uDF2F\uDF73\uDF72\uDF7F\uDF71\uDF58-\uDF5D\uDF60\uDF62-\uDF65\uDF61\uDF66-\uDF6A\uDF82\uDF70\uDF6B-\uDF6F\uDF7C\uDF75\uDF76\uDF7E\uDF77-\uDF7B\uDF74\uDFFA\uDF0D-\uDF10\uDF0B\uDFE0-\uDFE6\uDFE8-\uDFED\uDFEF\uDFF0\uDF01\uDF03-\uDF07\uDF09\uDFA0-\uDFA2\uDFAA\uDF11-\uDF20\uDF0C\uDF00\uDF08\uDF02\uDF0A\uDF83\uDF84\uDF86-\uDF8B\uDF8D-\uDF91\uDF80\uDF81\uDFAB\uDFC6\uDFC5\uDFC0\uDFD0\uDFC8\uDFC9\uDFBE\uDFB3\uDFCF\uDFD1-\uDFD3\uDFF8\uDFA3\uDFBD\uDFBF\uDFAF\uDFB1\uDFAE\uDFB0\uDFB2\uDCCF\uDC04\uDFB4\uDFAD\uDFA8\uDF92\uDFA9\uDF93\uDFBC\uDFB5\uDFB6\uDFA4\uDFA7\uDFB7-\uDFBB\uDFA5\uDFAC\uDFEE\uDFF9\uDFE7\uDFA6\uDD8E\uDD91-\uDD9A\uDE01\uDE36\uDE2F\uDE50\uDE39\uDE1A\uDE32\uDE51\uDE38\uDE34\uDE33\uDE3A\uDE35\uDFC1\uDF8C])|\u26F7\uFE0F?|\u26F9(?:(?:\uFE0F(?:\u200D(?:[\u2642\u2640]\uFE0F?))?|\uD83C(?:[\uDFFB-\uDFFF](?:\u200D(?:[\u2642\u2640]\uFE0F?))?)|\u200D(?:[\u2642\u2640]\uFE0F?)))?|[\u2618\u26F0\u26E9\u2668\u26F4\u2708\u23F1\u23F2\u2600\u2601\u26C8\u2602\u26F1\u2744\u2603\u2604\u26F8\u2660\u2665\u2666\u2663\u265F\u26D1\u260E\u2328\u2709\u270F\u2712\u2702\u26CF\u2692\u2694\u2699\u2696\u26D3\u2697\u26B0\u26B1\u26A0\u2622\u2623\u2B06\u2197\u27A1\u2198\u2B07\u2199\u2B05\u2196\u2195\u2194\u21A9\u21AA\u2934\u2935\u269B\u2721\u2638\u262F\u271D\u2626\u262A\u262E\u25B6\u23ED\u23EF\u25C0\u23EE\u23F8-\u23FA\u23CF\u2640\u2642\u2695\u267E\u267B\u269C\u2611\u2714\u2716\u303D\u2733\u2734\u2747\u203C\u2049\u3030\u00A9\u00AE\u2122]\uFE0F?|[\u0023\u002A\u0030-\u0039](?:\uFE0F\u20E3|\u20E3)|[\u2139\u24C2\u3297\u3299\u25FC\u25FB\u25AA\u25AB]\uFE0F?|[\u2615\u26EA\u26F2\u26FA\u26FD\u2693\u26F5\u231B\u23F3\u231A\u23F0\u2B50\u26C5\u2614\u26A1\u26C4\u2728\u26BD\u26BE\u26F3\u267F\u26D4\u2648-\u2653\u26CE\u23E9-\u23EC\u2B55\u2705\u274C\u274E\u2795-\u2797\u27B0\u27BF\u2753-\u2755\u2757\u26AB\u26AA\u2B1B\u2B1C\u25FE\u25FD])$/}getGroupParticipants(n){var r="",u="",i=t.Chat.contacts.find(t=>t.contactId==n.recipientId),f='<a href="javascript:;" onclick="Unibase.Platform.Connect.Components.Chat.Instance().adminOptions()" data-isadmin='+n.isAdmin+" data-contactid="+i.contactId+" data-chatGroupId="+i.chatGroupId+' class="dotsicon btn btn-flush-biz-theme btn-icon btn-rounded flush-soft-hover d-26 flex-shrink-0 fromParticipant_'+i.contactId+'" data-toggle="dropdown" role = "button" aria-haspopup="false" aria-expanded="false" > <span class="btn-icon-wrap"><i class="icon dripicons-dots-3 rotate-90d font-20 text-dark"><\/i><\/span><div class="dropdown-menu-right dropdown-menu grpoptionshtml" id ="drpdownmenu"><\/div><\/a>';n.recipientId==t.Chat.currentUser.userId&&(i.contactName="You",f="",n.isAdmin?$(".btn_AddChatParticipants").removeClass("hidden"):"");n.isAdmin&&(u='style="position:absolute;right:26px"',r='<span class="badge badge-sm badge-soft-primary font-10 recipientbadge" '+u+">Admin<\/span>");const e=this.getUserAvatarHtml(i);return`<li class="list-group-item px-1 py-2 flex-between-center position-relative grp_participents isadmin_${n.isAdmin} participant_${n.recipientId}" data-contactname='${i.contactName}' data-isAdmin=${n.isAdmin} id="groupParticipantUser_${i.contactId}">
  435. <a href ="javascript:;" class="d-flex align-items-center c-gap-10 participent w-100 mnw-0">${e}
  436. <div class="media-body flex-grow-1 mnw-0 d-flex flex-column justify-content-center">
  437. <label id="contactid" class="hidden">${i.contactId}</label>
  438. <input type="hidden" class="contactname_hidden_${i.contactName}" value="${i.contactId}"><div class="name flex-between-center c-gap-10 text-dark font-weight-500 font-15" id="contactName_${i.contactId}" title="${i.contactName}"><span class="text-truncate">${i.contactName}</span> ${r}</div>
  439. <div class="user-about hidden"></div>
  440. </div>
  441. </a>${f}</li>`}getRecentChatsTemplate(n){var u=this,f=n.lastMessage,r,i;const e=u.getUserAvatarHtml(n,!0);return r="",n.unReadMessagesCount>0&&(r=`<span class="badge badge-sm badge-primary unread_messages_${n.chatGroupId} rounded-10 font-10">${n.unReadMessagesCount}</span>`),i="",n.messageLastUpdatedDate!=undefined&&n.messageLastUpdatedDate!=""&&(i=t.Chat.Instance().timeAnddateFormat(n.messageLastUpdatedDate),i=i=="Invalid date"?n.messageLastUpdatedDate:i),`<li class="userChat_${n.chatGroupId} recentchats list-group-item chat-group-item pa-0" data-contactname=${n.contactName}>
  442. <a href="javascript:void(0);" data-isprivate=${n.isPrivate} data-chatgroupid=${n.chatGroupId} data-contactId=${n.contactId} class="media contactuser d-flex px-1 py-2 c-gap-10 chatUserList" onclick="Unibase.Platform.Connect.Components.Chat.Instance().privatewindow(${n.chatGroupId})" id="msgConvoItem_${n.chatGroupId}"><div class="d-flex align-items-center c-gap-10 flex-grow-1 mnw-0">${e}
  443. <div class="media-body mnw-0 flex-grow-1"><div class="username text-dark grpname_${n.chatGroupId} font-weight-500 font-15 text-truncate" title="${n.contactName}">${n.contactName}</div><div class="user-last-chat_${n.chatGroupId} last-chat-msg" title="last_message">${f}</div><div class="text-green font-12 text-truncate w-80p typing_active_${n.chatGroupId} hidden" data-typingcontacts=''><strong>typing...</strong></div></div></div>
  444. <div class="chat-details flex-shrink-0 d-flex flex-column justify-content-between align-items-end r-gap-5"><div class="last-chat-time">${i}</div>${r}</div></a></li>`}getWebCamHtml(){return`<div class="web_cam position-relative biz-bg-hightlight-color_10 h-100"><span class="back_btn position-absolute r-0 bg-trans-dark-50 d-26 z-index-1 flex-center"><a href="javascript:;" onclick="Unibase.Platform.Connect.Components.Chat.Instance().closecam();" title="Close"><i class="icon dripicons-cross text-white font-18"></i></a></span><div class="cam_hidden flex-center h-100"><video id="cam_pic" autoplay="true" class="w-100 h-100" style="object-fit: fill"></video><div id="camErrMsg" class="hidden text-danger text-center"></div></div><center class="camera-controls bg-trans-dark-50" id="camerControls"><a class="back_cam d-none" href="javascript:;" onclick="Unibase.Platform.Connect.Components.Chat.Instance().back_tocam();"><i class="las la-arrow-left"></i></a><a href="javascript:;" class="btn-file" onclick="Unibase.Platform.Connect.Components.Chat.Instance().webcampicture();"><i class="las la-camera"></i></a><a href="javascript:;" class="send_pic d-none" onclick="Unibase.Platform.Connect.Components.Chat.Instance().webcamimage();"><i class="las la-caret-right"></i></a></center><div class="canvas_hidden w-100 h-100 hidden"><canvas id="chat_size" class="hidden border w-100 h-100"></canvas><img id="cam_image" class="cam_data w-100 h-100"></div></div>`}static Instance(){return this.instance===undefined&&(this.instance=new i),this.instance}}t.ChatTemplate=i})(i=t.Components||(t.Components={}))})(i=t.Connect||(t.Connect={}))})(t=n.Platform||(n.Platform={}))})(Unibase||(Unibase={})),function(n){let t;(function(n){let t;(function(n){let t;(function(n){let t;(function(n){class t{}n.Connect=t;class i{}n.Typing=i;class r{}n.MessageDetails=r})(t=n.Packets||(n.Packets={}))})(t=n.Client||(n.Client={}))})(t=n.Connect||(n.Connect={}))})(t=n.Platform||(n.Platform={}))}(Unibase||(Unibase={})),function(n){let t;(function(n){let t;(function(n){let t;(function(n){class t{constructor(){}}n.BasePacket=t})(t=n.Providers||(n.Providers={}))})(t=n.Hubs||(n.Hubs={}))})(t=n.Platform||(n.Platform={}))}(Unibase||(Unibase={})),function(n){let t;(function(t){let i;(function(t){let i;(function(t){let i;(function(t){class i{}t.Connect=i;class r{}t.Typing=r;class u extends n.Platform.Hubs.Providers.BasePacket{constructor(){super()}}t.MessageDetails=u;class f extends n.Platform.Hubs.Providers.BasePacket{constructor(){super()}}t.Conference=f})(i=t.Packets||(t.Packets={}))})(i=t.Server||(t.Server={}))})(i=t.Connect||(t.Connect={}))})(t=n.Platform||(n.Platform={}))}(Unibase||(Unibase={}));__awaiter=this&&this.__awaiter||function(n,t,i,r){function u(n){return n instanceof i?n:new i(function(t){t(n)})}return new(i||(i=Promise))(function(i,f){function o(n){try{e(r.next(n))}catch(t){f(t)}}function s(n){try{e(r["throw"](n))}catch(t){f(t)}}function e(n){n.done?i(n.value):u(n.value).then(o,s)}e((r=r.apply(n,t||[])).next())})},function(n){let t;(function(n){let t;(function(t){let i;(function(t){class i extends n.Core.BaseManager{static Instance(){return this._instance===undefined&&(this._instance=new i),this._instance}saveChatGroup(n){return __awaiter(this,void 0,void 0,function*(){return yield this.dataHelper().postAsync("apis/uniconnect/chats/savechatgroup",n).then(function(n){return n})})}getChats(){return __awaiter(this,void 0,void 0,function*(){return yield this.dataHelper().getAsync("apis/uniconnect/chats/getchats").then(function(n){return n})})}getChatsByGroupId(n){return __awaiter(this,void 0,void 0,function*(){const t="apis/uniconnect/chats/chatlist/chatgroupid/"+n;return yield this.dataHelper().getAsync(t).then(function(n){return n})})}forwardmultiple(n){return __awaiter(this,void 0,void 0,function*(){return yield this.dataHelper().postAsync("apis/uniconnect/chats/multiforward",n).then(function(n){return n})})}Deletemultiple(n){return __awaiter(this,void 0,void 0,function*(){return yield this.dataHelper().postAsync("apis/uniconnect/chats/multidelete",n).then(function(n){return n})})}Starmultiple(n){return __awaiter(this,void 0,void 0,function*(){return yield this.dataHelper().postAsync("apis/uniconnect/chats/multistar",n).then(function(n){return n})})}MuteNotifications(n){return __awaiter(this,void 0,void 0,function*(){const t="apis/uniconnect/chats/mutenotification/chatgroupid/"+n;return yield this.dataHelper().postAsync(t,null).then(function(n){return n})})}getChatContacts(){return __awaiter(this,void 0,void 0,function*(){return yield this.dataHelper().getAsync("apis/uniconnect/chats/getchatcontacts").then(function(n){return n})})}getChatMessages(n){return __awaiter(this,void 0,void 0,function*(){const t="apis/uniconnect/chats/chatlist/conversation/"+n;return yield this.dataHelper().getAsync(t).then(function(n){return n})})}getLastMessage(n){return __awaiter(this,void 0,void 0,function*(){const t="apis/uniconnect/chats/chatlist/conversation/"+n;return yield this.dataHelper().getAsync(t).then(function(n){return n})})}saveChat(n){return __awaiter(this,void 0,void 0,function*(){return yield this.dataHelper().postAsync("apis/uniconnect/chats/savechat",n).then(function(n){return n})})}getChatGroup(n,t,i,r){return __awaiter(this,void 0,void 0,function*(){const u="apis/uniconnect/chats/getchatgroup/fromuserid/"+n+"/touserid/"+t+"/isprivate/"+i+"/groupname/"+r;return yield this.dataHelper().getAsync(u).then(function(n){return n})})}getChatRecipientsByGroupId(n){return __awaiter(this,void 0,void 0,function*(){const t="apis/uniconnect/chats/getchatrecipients/chatgroupid/"+n;return yield this.dataHelper().getAsync(t).then(function(n){return n})})}getChatgroups(n){return __awaiter(this,void 0,void 0,function*(){const t="apis/uniconnect/chats/getchatgroups/contactid/"+n;return yield this.dataHelper().getAsync(t).then(function(n){return n})})}updateLastSeen(n){return __awaiter(this,void 0,void 0,function*(){const t="apis/uniconnect/chats/updatelastseen/recipientid/"+n;return yield this.dataHelper().postAsync(t,null).then(function(n){return n})})}Delete(n,t){return __awaiter(this,void 0,void 0,function*(){const i="apis/uniconnect/chats/deletemessage/chatid/"+n+"/fromuserid/"+t;return yield this.dataHelper().postAsync(i,null).then(function(n){return n})})}DeleteForEveryone(n,t){return __awaiter(this,void 0,void 0,function*(){const i="apis/uniconnect/chats/deleteforeveryone/chatid/"+n+"/chatgroupid/"+t;return yield this.dataHelper().postAsync(i,null).then(function(n){return n})})}EditMessage(n,t){return __awaiter(this,void 0,void 0,function*(){const i="apis/uniconnect/chats/editmessage/chatid/"+n+"/message/"+t;return yield this.dataHelper().postAsync(i,t).then(function(n){return n})})}StarMessage(n,t){return __awaiter(this,void 0,void 0,function*(){const i="apis/uniconnect/chats/starmessage/chatid/"+n+"/currentUser/"+t;return yield this.dataHelper().postAsync(i,null).then(function(n){return n})})}RemoveParticipant(n,t){return __awaiter(this,void 0,void 0,function*(){const i="apis/uniconnect/chats/removeparticipant/chatgroupid/"+n+"/recipientid/"+t;return yield this.dataHelper().postAsync(i,null).then(function(n){return n})})}clearChat(n,t){return __awaiter(this,void 0,void 0,function*(){const i="apis/uniconnect/chats/clearchat/chatgroupid/"+n+"/fromuserid/"+t;return yield this.dataHelper().postAsync(i,null).then(function(n){return n})})}mediafiles(n){return __awaiter(this,void 0,void 0,function*(){const t="apis/uniconnect/chats/getmediafiles/chatgroupid/"+n;return yield this.dataHelper().getAsync(t).then(function(n){return n})})}documentfiles(n){return __awaiter(this,void 0,void 0,function*(){const t="apis/uniconnect/chats/getdocumentfiles/chatgroupid/"+n;return yield this.dataHelper().getAsync(t).then(function(n){return n})})}getlinks(n){return __awaiter(this,void 0,void 0,function*(){const t="apis/uniconnect/chats/getlinks/chatgroupid/"+n;return yield this.dataHelper().getAsync(t).then(function(n){return n})})}changeGroupName(n,t){return __awaiter(this,void 0,void 0,function*(){const i="apis/uniconnect/chats/changegroupname/chatgroupid/"+n+"/groupname/"+t;return yield this.dataHelper().postAsync(i,null).then(function(n){return n})})}updateAdminStatus(n,t,i){return __awaiter(this,void 0,void 0,function*(){const r="apis/uniconnect/chats/updateadminstatus/chatgroupid/"+n+"/recipientid/"+t+"/isadmin/"+i;return yield this.dataHelper().postAsync(r,null).then(function(n){return n})})}messageinfo(n){return __awaiter(this,void 0,void 0,function*(){const t="apis/uniconnect/chats/messageinfo/chatid/"+n;return yield this.dataHelper().getAsync(t).then(function(n){return n})})}getChatRecipientInfo(n,t){return __awaiter(this,void 0,void 0,function*(){const i="apis/uniconnect/chats/getchatrecipient/chatgroupid/"+n+"/recipientid/"+t;return yield this.dataHelper().getAsync(i).then(function(n){return n})})}draftMessage(n,t){return __awaiter(this,void 0,void 0,function*(){const i="apis/uniconnect/chats/draftMessage/chatgroupid/"+t+"/message/"+n;return yield this.dataHelper().postAsync(i,null).then(function(n){return n})})}getMediaCount(n){return __awaiter(this,void 0,void 0,function*(){const t="apis/uniconnect/chats/getMedia/chatgroupid/"+n;return yield this.dataHelper().getAsync(t).then(function(n){return n})})}blockOrunBlock(n){return __awaiter(this,void 0,void 0,function*(){const t="apis/uniconnect/chats/blockUser/chatgroupid/"+n;return yield this.dataHelper().postAsync(t,null).then(function(n){return n})})}getUnreadChatCount(){return __awaiter(this,void 0,void 0,function*(){return yield this.dataHelper().getAsync("apis/uniconnect/chats/getUnreadChatCount").then(function(n){return n})})}}t.ChatManager=i})(i=t.Managers||(t.Managers={}))})(t=n.Connect||(n.Connect={}))})(t=n.Platform||(n.Platform={}))}(Unibase||(Unibase={})),function(n){let t;(function(t){let i;(function(t){let i;(function(t){class i{constructor(t){this.server={UserConnected:function(t,i){n.Platform.Connect.Hubs.ChatHub.instance.invoke("UserConnected",t,i)},UserTyping:function(t,i){n.Platform.Connect.Hubs.ChatHub.instance.invoke("UserTyping",t,i)},SendPrivateMessage:function(t,i){n.Platform.Connect.Hubs.ChatHub.instance.invoke("SendPrivateMessage",t,i)},OpenVideo:function(t){n.Platform.Connect.Hubs.ChatHub.instance.invoke("OpenVideo",t,null)},UpdateDeliveryStatus:function(t,i){n.Platform.Connect.Hubs.ChatHub.instance.invoke("UpdateDeliveryStatus",t,i)},UpdateActiveChatGroup:function(t,i){n.Platform.Connect.Hubs.ChatHub.instance.invoke("UpdateActiveChatGroup",t,i)},UpdateReadStatus:function(t,i){n.Platform.Connect.Hubs.ChatHub.instance.invoke("UpdateReadStatus",t,i)},OnPrivateWindowOpened:function(t,i){n.Platform.Connect.Hubs.ChatHub.instance.invoke("OnPrivateWindowOpened",t,i)},EditMessage:function(t,i){n.Platform.Connect.Hubs.ChatHub.instance.invoke("Editmessage",t,i)},Deleteall:function(t,i){n.Platform.Connect.Hubs.ChatHub.instance.invoke("DeleteForAll",t,i)},updateLastMessage:function(t,i){n.Platform.Connect.Hubs.ChatHub.instance.invoke("UpdateLastMessage",t,i)},OnGroupNameChanged:function(t,i){n.Platform.Connect.Hubs.ChatHub.instance.invoke("OnGroupNameChanged",t,i)},EnableAudio:function(t,i){n.Platform.Connect.Hubs.ChatHub.instance.invoke("EnableAudio",t,i)},EnableVedio:function(t,i){n.Platform.Connect.Hubs.ChatHub.instance.invoke("EnableVedio",t,i)},updategroupparticipants:function(t){n.Platform.Connect.Hubs.ChatHub.instance.invoke("Updategroupparticipants",t,null)},removeParticipant:function(t){n.Platform.Connect.Hubs.ChatHub.instance.invoke("RemoveParticipants",t,null)},GetUnreadChatCount:function(t){n.Platform.Connect.Hubs.ChatHub.instance.invoke("GetUserChatCount",t,null)},addParticipantsInGrp:function(t){n.Platform.Connect.Hubs.ChatHub.instance.invoke("Addparticipants",t,null)}};this.huburl=t;this.connection=(new window.signalR.HubConnectionBuilder).withUrl(this.huburl).withAutomaticReconnect().build()}getConnection(){return this.connection}connect(n){this.getConnection().start().then(function(){n()})}LogOut(){n.Platform.Connect.Hubs.ChatHub.Instance(_appsettings.chathub_url()).getConnection().stop()}register(n,t){this.getConnection().on(n,t)}invoke(t,i){n.Platform.Connect.Hubs.ChatHub.Instance(_appsettings.chathub_url()).getConnection().invoke(t,i).catch(function(n){return console.error(n.toString())})}static Instance(n){return this.instance===undefined&&(this.instance=new i(n)),this.instance}}t.ChatHub=i})(i=t.Hubs||(t.Hubs={}))})(i=t.Connect||(t.Connect={}))})(t=n.Platform||(n.Platform={}))}(Unibase||(Unibase={})),function(n){let t;(function(t){let i;(function(t){let i;(function(t){class i{getChatTemplate(){const n=t.Chat.isFullScreen;return`<div class="chatapp ${n?"chat-fullscreen":""}" id="chatAppWrap">
  445. <div class="chatapp-body h-100 position-relative" id="chatAppBody">
  446. <section class="chats-contacts-wrap chat-flex-column" id="chatsContactsSection">
  447. <div id="chatHeaderNav" class="chat-header-nav d-flex chat-header">
  448. <a href="javascript:;" id="closeChatPanel" class="nav-link px-0 flex-center">
  449. <i class="icon dripicons-chevron-right font-20 text-danger"></i>
  450. </a>
  451. <ul class="nav nav-tabs nav-light nav-line d-flex justify-content-between flex-grow-1 flex-shrink-0 text-center px-1 h-100 chat-header-nav-tabs"
  452. role="tablist" id="chatHeaderNavTabs">
  453. <li class="nav-item chat-tab w-50">
  454. <a onclick="Unibase.Platform.Connect.Components.Chat.Instance().displayRecentChats()"
  455. href="javascript:;" class="nav-link _btncomment active">
  456. <i class="las la-sms font-24"></i><span>Chats</span>
  457. </a>
  458. </li>
  459. <li class="nav-item contact-tab w-50">
  460. <a onclick="Unibase.Platform.Connect.Components.Chat.Instance().Displaycontacts();"
  461. href="javascript:;" class="nav-link _btnDisplayUser">
  462. <i class="las la-address-book font-24"></i><span>Contacts</span>
  463. </a>
  464. </li>
  465. <li class="nav-item w-20 d-none">
  466. <a href="javascript:;"
  467. onclick="Unibase.Platform.Connect.Components.Chat.Instance().makeACall();"
  468. class="nav-link _btnmakeacall"><i class="las la-phone font-24"></i><span>Call</span></a>
  469. </li>
  470. <li class="nav-item d-none">
  471. <a href="javascript:;" class="nav-link" id="drpdwn" data-toggle="dropdown" role="button"
  472. aria-haspopup="false" aria-expanded="false"><i class="fa fa-ellipsis-v"></i></a>
  473. <div class="dropdown-menu dropdown-menu-right font-12" id="drpdownmenu">
  474. <a class="dropdown-item" href="javascript:;"
  475. onclick=" Unibase.Platform.Connect.Components.Chat.Instance().createnewgroup()">
  476. <i class="dropdown-icon zmdi zmdi-accounts-add"></i><span>New group</span></a>
  477. <a class="dropdown-item" href="javascript:;">
  478. <i class="dropdown-icon zmdi zmdi-settings"></i><span>Settings</span></a>
  479. <a class="dropdown-item" href="javascript:;" onclick="_BizgazeNotify_Chats.refreshChat()">
  480. <i class="dropdown-icon zmdi zmdi-refresh-sync"></i><span>Refresh</span></a>
  481. <a class="dropdown-item" href="javascript:;" id="closeChatPanel"
  482. onclick="Unibase.Platform.Connect.Components.Chat.Instance().closechatpanel();">
  483. <i class="dropdown-icon icon dripicons-cross"></i><span>Exit chat</span></a>
  484. </div>
  485. </li>
  486. </ul>
  487. <div class="dropdown chat-header-dropdown flex-center">
  488. <a class="nav-link dropdown-toggle no-caret btn btn-flush-biz-theme btn-icon btn-rounded flush-soft-hover d-30" href="javascript:;" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  489. <span class="btn-icon-wrap"><i class="icon dripicons-dots-3 rotate-90d font-20 text-dark"></i></span>
  490. </a>
  491. <div class="dropdown-menu">
  492. <a class="dropdown-item p-1 font-14 view-my-profile" href="javascript:;" id="viewMyProfile">My Info</a>
  493. <a class="dropdown-item p-1 font-14 chat-fullscreen-btn ${n?"":"d-md-flex"}" href="javascript:;" id="chatFullScreenBtn" onclick="Unibase.Platform.Connect.Components.Chat.Instance().toggleChatFullScreen();">Fullscreen</a>
  494. </div>
  495. </div>
  496. </div>
  497. <div class="chatapp-users-list chat-flex-column flex-grow-1 overflow-y-auto">
  498. <div class="div-chat-search c-gap-10 pa-10">
  499. <div class="chatapp-search-div flex-grow-1">
  500. <input type="text" id="txtSearchChats" name="txtSearchChats"
  501. class="custom-chat-input chatAppSearch recentchatsearch search-input" placeholder="Search"
  502. onkeyup="Unibase.Platform.Connect.Components.Chat.Instance().searchParticipants('recentchatsearch','recentchats','');">
  503. <i class="fa fa-search chatappSearchIcon search-icon biz-highlight-bg-color"
  504. id="search_contactlist"></i><i id="txt_chats_clearSearch"
  505. class="icon dripicons-cross search-close hidden"></i>
  506. </div>
  507. <a href="javascript:;" class="avatar avatar-sm d-30 newlabel"
  508. onclick="Unibase.Platform.Connect.Components.Chat.Instance().Displaycontacts();"
  509. title="New Chat">
  510. <div class="avatar-text avatar-text-primary rounded-circle"><span class="initial-wrap"><span><i class="las la-edit font-20"></i></span></span></div>
  511. </a>
  512. </div>
  513. <div data-simplebar class="userlist simple-scroll-bar px-10 pb-10 flex-grow-1" id="chatGroupsWrap">
  514. <ul class="list-groupchat list-group list-group-flush"></ul>
  515. </div>
  516. </div>
  517. <div class="div_ContactsList chat-flex-column flex-grow-1 overflow-y-auto hidden">
  518. <div class="div-chat-search c-gap-10 pa-10">
  519. <div class="chatapp-search-div flex-grow-1">
  520. <input id="txtSearchContacts" type="text" name="txtSearchContacts"
  521. class="custom-chat-input pl-25 chatAppSearch search-input" placeholder="Search"
  522. onkeyup="Unibase.Platform.Connect.Components.Chat.Instance().loadContacts(true);">
  523. <i class="fa fa-search chatappSearchIcon biz-highlight-bg-color search-icon"
  524. id="search_contactlist"></i>
  525. <i class="icon dripicons-cross search-close hidden" id="clearContactsSearch"></i>
  526. </div>
  527. <a href="javascript:;" class="avatar avatar-sm d-30 newlabel"
  528. onclick="Unibase.Platform.Connect.Components.Chat.Instance().createnewgroup();"
  529. title="New Group">
  530. <div class="avatar-text avatar-text-primary rounded-circle">
  531. <span class="initial-wrap"><span><i class="las la-users font-24"></i></span></span>
  532. </div>
  533. </a>
  534. </div>
  535. <div data-simplebar class="userlist simple-scroll-bar px-10 pb-10" id="chatContactsWrap">
  536. <ul class="list-group list-chat-contacts list-group-flush">
  537. </ul>
  538. <div class="contacts-morebtn mt-10 text-center">
  539. <a class="btn btn-outline-primary btn-sm load-more-list-btn"
  540. onclick="Unibase.Platform.Connect.Components.Chat.Instance().loadContacts()"><span
  541. class="contacts_more mr-10 d-none">0</span>More</a>
  542. </div>
  543. </div>
  544. </div>
  545. </section>
  546. ${n?"":this.getChatMessagesBodyHtml()}
  547. <section class="new-group chat-flex-column hidden" id="newGroupSection">
  548. <div id="createGroupHeader" class="chat-header d-flex align-items-center c-gap-10">
  549. <div class="btn_backChatWindow chatanchorhoverdark">
  550. <a onclick="Unibase.Platform.Connect.Components.Chat.Instance().closechatgroup();"
  551. href="javascript:;"
  552. class="btn btn-flush-biz-theme btn-icon btn-rounded flush-soft-hover d-30">
  553. <span class="btn-icon-wrap"><i class="text-dark" data-icon="l"></i></span>
  554. </a>
  555. </div>
  556. <div class="div-user-group-Name flex-between-center flex-grow-1 c-gap-10 r-gap-5 mnw-0">
  557. <div class="Profile_name font-weight-500 text-dark font-15 text-truncate">Create New Group</div>
  558. </div>
  559. </div>
  560. <div class="CreateNewChatGroup chat-flex-column flex-grow-1 overflow-y-auto"></div>
  561. </section>
  562. <section class="profiledetails chat-flex-column h-100 hidden" id="profileDetailsSection"></section>
  563. <section class="forward-contacts-section chat-flex-column hidden" id="forwardContactsSection"></section>
  564. <section class="message-info chat-flex-column h-100 hidden" id="messageInfoSection"></section>
  565. </div>${n?this.getChatFullScreenHtml():""}
  566. <div class="webcam hidden"></div>
  567. </div>`}getChatFullScreenHtml(){return`<div class="chat-convo-section" id="chatConvoSection">
  568. <div class="chat-noconvomsg-wrap flex-grow-1 overflow-y-auto flex-center flex-column r-gap-25 biz-bg-hightlight-color_10 hidden" id="chatNoConvoMsgWrap">
  569. <i class="las la-comments noconvo-icon font-50"></i>
  570. <div class="noconvo-msg-text text-center">
  571. <h5 class="mb-15">No chats found!</h5>
  572. <p class="w-300p">Pick a person from contacts tab and start your conversation.</p>
  573. </div>
  574. </div>
  575. ${$("#chatConvoBody").length?"":this.getChatMessagesBodyHtml()}</div>
  576. <div class="chat-fullscreen-modal-wrap">
  577. <div class="modal fade fullscreen-modal" id="fullScreenModal">
  578. <div class="modal-dialog h-100 modal-dialog-centered mt-0" role="document">
  579. <div class="modal-content" id="fullScreenModalContent"></div>
  580. </div>
  581. </div>
  582. <div class="modal-backdrop fade show hidden position-absolute" id="fullScreenModalBackdrop"></div>
  583. </div>`}getChatMessagesBodyHtml(){return`<section class="chat-convo-body chat-flex-column hidden" id="chatConvoBody"><input type="hidden" class="prevcontactname">
  584. <div id="chatMsgHeaderWrap" class="chat-header">
  585. ${t.Chat.isFullScreen?"":'<div id="chatMsgHeader" class="h-100"><\/div>'}
  586. <div id="selectedMsgsCountHeader" class="h-100 hidden">
  587. <div class="d-flex h-100 align-items-center c-gap-5">
  588. <a href="javascript:;" class="btn btn-flush-biz-theme btn-icon btn-rounded flush-soft-hover d-30"
  589. id="closeMsgMultiActionBtn">
  590. <span class="btn-icon-wrap"><i class="text-dark" data-icon="l"></i></span>
  591. </a>
  592. <div class="font-weight-500 text-dark font-15 text-truncate d-flex align-items-center c-gap-5"><span class="selected-msgs-count">0</span><span>messages selected</span></div>
  593. </div>
  594. </div>
  595. <div id="starMsgHeader" class="h-100 hidden">
  596. <div class="d-flex h-100 align-items-center c-gap-5">
  597. <a href="javascript:;" class="btn btn-flush-biz-theme btn-icon btn-rounded flush-soft-hover d-30"
  598. onclick="Unibase.Platform.Connect.Components.Chat.Instance().closeStarMessages();"><span
  599. class="btn-icon-wrap"><i class="text-dark" data-icon="l"></i></span>
  600. </a>
  601. <div class="font-weight-500 text-dark font-15 text-truncate">Stared Messages</div>
  602. </div>
  603. </div>
  604. </div>
  605. <div data-simplebar class="simple-scroll-bar pt-15 flex-grow-1 biz-bg-hightlight-color_5 msg-list-wrap" id="msgList">
  606. <ul class="grpdetails"></ul>
  607. <div class="more_msg d-none"><a href="javascript:;" class="btn btn-flush-biz-theme btn-icon btn-rounded flush-soft-hover d-30 morediv"
  608. onclick="Unibase.Platform.Connect.Components.Chat.Instance().LoadMessages()" data-moreindex='0' ;
  609. data-isfirst='true'><span class="btn-icon-wrap"><i class="fa fa-angle-double-up font-25"></i></span></a></div>
  610. <ul class="list-unstyled messageslist"></ul>
  611. <div class="mx-2 typing" id="chatTypingMsg"></div>
  612. </div>
  613. <div class="remove_template text-danger text-center font-12 hidden" style="position:relative;bottom:25px">
  614. <hr style="margin:0px 0px 5px 0px">You can't send messages to this group because you're not a participant of this group
  615. <hr style="margin:5px 0px 0px 0px">
  616. </div>
  617. <div id="chatFooter" class="chat-footer biz-bg-hightlight-color_10">
  618. <div class="chat-emojis hidden" id="chatEmojis"></div>
  619. <ul class="list-group list-group-flush biz-bg-hightlight-color_10 pt-10 px-10 mentionable-contact-list biz-custom-scrollbar hidden"
  620. id="mentionableContactList"></ul>
  621. <div class="div_selected_files hidden c-gap-15"></div>
  622. <div id="quoteMsgWrap" class="quote-msg-wrap biz-bg-hightlight-color_20 hidden"></div>
  623. <div class="d-flex align-items-center c-gap-10 flex-grow-1 msg-input-wrap">
  624. <div class="flex-grow-1 chatapp-search-div">
  625. <textarea type="text" rows="1" id="input_msg_send_chatapp" name="send-msg"
  626. class="input-msg-send custom-chat-input pl-35" placeholder="Type something" /></textarea>
  627. <a href="javascript:;"
  628. class="btn btn-icon btn-rounded btn-soft-primary d-26 search-icon chat-emoji-icon"
  629. id="chatEmojiIcon">
  630. <span class="btn-icon-wrap"><i class="las la-smile font-25"></i></span>
  631. </a>
  632. <div class="hidden div_CLose search-close">
  633. <a href="javascript:;" class="text-danger">
  634. <i class="icon dripicons-cross empty_text"></i>
  635. </a>
  636. </div>
  637. </div>
  638. <div class="msg-option-container d-flex align-items-center c-gap-15 font-20">
  639. <div class="msg-compose-options align-items-center c-gap-15">
  640. <div class="btn-file msg-option attachments-btn cursor-pointer">
  641. <label class="my-0" for="chat_attachments">
  642. <i class="las la-paperclip font-22 biz-highlight-bg-color"></i></span>
  643. <input type="file" id="chat_attachments" class="fileUpload hidden" multiple="multiple"
  644. onchange="Unibase.Platform.Connect.Components.Chat.Instance().LoadAttachments(this)">
  645. </div>
  646. <div class="div_camera">
  647. <div class="btn-file msg-option">
  648. <a href="javascript:;" class="input_camera"
  649. onclick="Unibase.Platform.Connect.Components.Chat.Instance().webcam();">
  650. <i class="las la-camera biz-highlight-bg-color font-22"></i>
  651. </a>
  652. </div>
  653. </div>
  654. <div class="div_video hidden">
  655. <div class="msg-option">
  656. <a href="javascript:;" class="video btn-icon-wrap"
  657. onclick="Unibase.Platform.Connect.Components.Chat.Instance().openvideo();">
  658. <i class="las la-video biz-highlight-bg-color font-22"></i>
  659. </a>
  660. </div>
  661. </div>
  662. </div>
  663. <div class="hidden" id="icon_send">
  664. <a href="javascript:;" class="btn btn-icon btn-primary btn-rounded d-30 msg-send-btn">
  665. <span class="btn-icon-wrap"> <i class="las la-paper-plane msg-option font-20"></i></span>
  666. </a>
  667. </div>
  668. </div>
  669. </div>
  670. <div class="msg-multiaction-btns hidden">
  671. <div class="d-flex justify-content-between c-gap-10">
  672. <a href="javascript:;"
  673. class="btn btn-icon btn-flush-biz-theme btn-rounded flush-soft-hover delete-icon footer-multiaction"
  674. data-item="Delete"><span class="btn-icon-wrap"><i
  675. class="icon dripicons-trash font-18"></i></span></a>
  676. <a href="javascript:;"
  677. class="btn btn-icon btn-flush-biz-theme btn-rounded flush-soft-hover star-icon footer-multiaction"
  678. data-item="Star"><span class="btn-icon-wrap"><i class="icon dripicons-star font-18"></i></span></a>
  679. <a href="javascript:;"
  680. class="btn btn-icon btn-flush-biz-theme btn-rounded flush-soft-hover copy-icon footer-multiaction"
  681. data-item="Copy"><span class="btn-icon-wrap"><i class="icon dripicons-copy font-18"></i></span></a>
  682. <a href="javascript:;"
  683. class="btn btn-icon btn-flush-biz-theme btn-rounded flush-soft-hover forward-icon footer-multiaction"
  684. data-item="Forward"><span class="btn-icon-wrap"><i class="icon dripicons-forward font-18"></i></span></a>
  685. </div>
  686. </div>
  687. </div>
  688. </section>`}getMsgInfoBodyHtml(){return` <div id="msgInfoHeader" class="chat-header">
  689. <div class="d-flex h-100 align-items-center c-gap-5">
  690. <a href="javascript:;" class="btn btn-flush-biz-theme btn-icon btn-rounded flush-soft-hover d-30" id="msgInfoBackBtn"
  691. onclick="Unibase.Platform.Connect.Components.Chat.Instance().closeMsgInfo();">
  692. <span class="btn-icon-wrap"><i class="text-dark" data-icon="l"></i></span>
  693. </a>
  694. <div class="font-weight-500 text-dark font-15 text-truncate">Message info</div>
  695. </div>
  696. </div>
  697. <div class="msg-info-body chat-flex-column flex-grow-1" id="msfInfoBody">
  698. <div id="msgInfoTxt" class="msg-info-text text-right py-20 px-10 flex-shrink-0">
  699. <span class="badge badge-primary font-14 rounded-20 msg-span"></span></div>
  700. <div data-simplebar class="simple-scroll-bar chat-scrollbar pb-20 px-10 flex-grow-1">
  701. <div class="d-flex flex-column r-gap-10">
  702. <div class="delivered-user-list-wrap biz-bg-hightlight-color_10 rounded-10 pa-10"
  703. id="deliveredUserListWrap">
  704. <div class="d-flex flex-column r-gap-10">
  705. <div class="flex-between-center c-gap-10">
  706. <h6 class="deliver">Delivered To</h6>
  707. <i class="las la-check-double font-20"></i>
  708. </div>
  709. <ul class="list-group list-group-flush delivereduserslist hidden"></ul>
  710. </div>
  711. </div>
  712. <div class="read-user-list-wrap biz-bg-hightlight-color_10 rounded-10 pa-10" id="readUserListWrap">
  713. <div class="d-flex flex-column r-gap-10">
  714. <div class="flex-between-center c-gap-10">
  715. <h6 class="read">Read by</h6>
  716. <i class="las la-check-double font-20"></i>
  717. </div>
  718. <ul class="list-group list-group-flush readuserslist hidden"></ul>
  719. </div>
  720. </div>
  721. </div>
  722. </div>
  723. </div>`}getContactsTemplate(n){const e=this;i.contacts=n;let u="",o=[];n.sort((n,t)=>n.contactName.localeCompare(t.contactName));let r="";if(n.length){for(let i=0;i<n.length;i++)if(n[i].contactId!=t.Chat.currentUser.userId){var s=0,f=t.Chat.recentChats.find(t=>t.contactId==n[i].contactId);f!=undefined&&(s=f.chatGroupId);const c=e.getUserAvatarHtml(n[i]);o[0]=n[i].photoUrl?n[i].photoUrl:"";let h=n[i].contactName[0].toLowerCase();r==""?(r=h,u+=`<li class="list-group-item py-2 first-letter-heading h5 text-capitalize">${r}</li>`):r!=h&&(r=h,u+=`<li class="list-group-item py-2 first-letter-heading h5 text-capitalize">${r.toUpperCase()}</li>`);n[i].about="";u+=`<li class="contactuser${i} list-group-item border-0 px-1 py-1 flex-between-center c-gap-10">
  724. <a href="javascript:void(0);" data-contactId=${n[i].contactId} data-chatgroupid=${n[i].chatGroupId} data-isprivate=true class="media contactuser chatUserList flex-between-center c-gap-10 flex-grow-1 mnw-0" onclick="Unibase.Platform.Connect.Components.Chat.Instance().privatewindow(${n[i].contactId})" id="msgConvoItem_${n[i].contactId}">${c}<div class="media-body mnw-0"><div class="username text-dark font-weight-500 font-15 text-truncate" title="${n[i].contactName}">${n[i].contactName}</div><div class="last-chat-msg" title="${n[i].about}">${n[i].about}</div></div></a><div class="chat-call-options d-none"></div></li>`}}else u="<li class='d-flex align-items-center justify-content-center mt-4'>No contacts found<\/li>";return u}getPrivateWindowTemplate(i){const r=this.getUserAvatarHtml(i,!1,!0);var u=i.lastSeen==null||i.lastSeen==""||i.lastSeen==undefined||i.lastSeen=="null"?"":n.Platform.Helpers.DateTimeHelper.Instance().formatLocal(i.lastSeen);return`<div class="media div_chatMediaHeader align-items-center chatanchorhoverdark h-100 c-gap-5">
  725. <a href="javascript:;" class="btn btn-flush-biz-theme btn-icon btn-rounded flush-soft-hover flex-shrink-0 d-30 ${t.Chat.isFullScreen?"hidden":""}" onclick="Unibase.Platform.Connect.Components.Chat.Instance().closeprivatewindow();" id="closePrivateWindowBtn"><span class="btn-icon-wrap"><i class="text-dark" data-icon="l"></i></span></a>
  726. <input type="hidden" value="${i.contactName}" id="hfChats_chatGroupName">
  727. <input type="hidden" value='${i.chatGroupId}' id="hfChats_chatGroupId">
  728. <input type="hidden" value='${i.contactId}' id="private_id">
  729. <div class="d-flex imgchatUser_${i.chatGroupId} align-items-center c-gap-10 flex-grow-1 mnw-0">${r}
  730. <div class="media-body text-truncate">
  731. <a onclick="Unibase.Platform.Connect.Components.Chat.Instance().profileDetails();" href = "javascript:void(0);" class="user-name" title="${i.contactName}"><span class="text-dark grpname_${i.chatGroupId} font-weight-500 font-15">${i.contactName}</span><div class="lastseen_${i.contactId} text-light-60 font-11 text-truncate" data-lastseen='${i.lastSeen}'>${u}</div></div></a></div>
  732. <div class="chat-options-wrap">
  733. <ul class="navbar-nav hk-navbar-content div_chatMediaHeader">
  734. <li class="nav-item dropdown dropdown-authentication">
  735. <a class="nav-link dropdown-toggle no-caret btn btn-flush-biz-theme btn-icon btn-rounded flush-soft-hover d-30" href="javascript:;" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  736. <span class="btn-icon-wrap"><i class="icon dripicons-dots-3 rotate-90d font-23 text-dark"></i></span>
  737. </a>
  738. <div class="dropdown-menu dropdown-menu-right" id="t1" style="position:absolute;font-size:12px">
  739. <a class="dropdown-item d-none" href="javascript:;"><i class="dropdown-icon zmdi zmdi-star-outline biz-highlight-bg-color"></i>Stared Messages</a>
  740. <a class="dropdown-item btnSearchChat p-1 font-14" href="javascript:;" onclick="Unibase.Platform.Connect.Components.Chat.Instance().searchdesign();">Search</a>
  741. <a onclick="Unibase.Platform.Connect.Components.Chat.Instance().muteAlert();" class="dropdown-item p-1 font-14 mute-option Mute" data-mute="Mute" href="javascript:;">Mute</a>
  742. <a onclick="Unibase.Platform.Connect.Components.Chat.Instance().clearChat();" class="dropdown-item p-1 font-14" href="javascript:;">Clear Chat</a>
  743. </div></li></ul></div></div>`}getTypingTemplate(n){var i=t.Chat.contacts.find(t=>t.contactName==n).contactId;return'<span class="badge badge-light pull-left mt-3 typingspan_'+i+'"style="position:relative;">'+n+' is typing<div class="dot_wave pt-5"><div class="dot"><\/div><div class="dot"><\/div><div class="dot"><\/div><\/div><\/span><br><br><br>'}getNewGroupTemplate(){return`
  744. <div class="chat-group-top-header flex-shrink-0 px-5">
  745. <div class="divtxt_ContactsSearch">
  746. <div class="chatapp-search-div">
  747. <input id="txtSearchParticipants" type="text" class="custom-chat-input required txt_SearchNewParticipants search-input" value="" placeholder="Search Contacts..." onkeyup="Unibase.Platform.Connect.Components.Chat.Instance().searchParticipants('txt_SearchNewParticipants','grp_newparticipants');">
  748. <i class="fa fa-search search-icon"></i>
  749. <i class="icon dripicons-cross search-close hidden" id="clearGroupContactsSearch"></i>
  750. </div></div>
  751. <div class="div-ChatNewParticipants mt-10">
  752. <div class="divtxt_chatGroupName flex-between-center c-gap-5">
  753. <div class="group-pic-upload-btn position-relative">
  754. <a href="javascript:;" class="btn btn-icon btn-icon-circle btn-primary btn-rounded btn-xs btn-file"><span class="btn-icon-wrap"><i class="las la-camera font-18"></i></span><input type="file" class="groupImgUpload" onclick="Unibase.Platform.Connect.Components.Chat.Instance().newGroupProfile(this);"></a></div>
  755. <div class="input-group">
  756. <input id="txt_GroupName" type="text" class="text-center custom-chat-input required rounded-20 txt_chatGroupName" onkeyup="Unibase.Platform.Connect.Components.Chat.Instance().groupname();" value="" placeholder="Enter Group Name">
  757. </div>
  758. <div class="participant_avatar avatar-group avatar-group-sm avatar-group-overlapped flex-center hidden"></div>
  759. </div>
  760. </div>
  761. </div>
  762. <div data-simplebar class="Chat-NewParticipants userlist simple-scroll-bar px-10 pb-10 flex-grow-1"><ul class="list-chatgroup list-group list-group-flush h-100" id="chatGroupList"></ul></div>
  763. <div class="chat-group-footer btn_saveGroup hidden"><a href="javascript:;" class="btn btn-outline-smoke mr-10" onclick="Unibase.Platform.Connect.Components.Chat.Instance().closechatgroup();">Cancel</a><a href="javascript:;" class="btn btn-primary" id="btn_addtoGrpName" onclick="Unibase.Platform.Connect.Components.Chat.Instance().Savegroup();">Create</a></div>
  764. </div>`}getGroupContactsTemplate(t){let r="",f=n.Platform.Membership.Infos.Identity.currentUser,u=t.length;t.sort((n,t)=>n.contactName.localeCompare(t.contactName));let i="";for(let n=0;n<u;n++){const u=t[n].contactId,e=this.getUserAvatarHtml(t[n]);let f=t[n].contactName[0].toLowerCase();i==""?(i=f,r+=`<li class="list-group-item py-2 first-letter-heading h5 text-capitalize hidden">${i.toUpperCase()}</li>`):i!=f&&(i=f,r+=`<li class="list-group-item py-2 first-letter-heading h5 text-capitalize hidden">${i.toUpperCase()}</li>`);t[n].about="";r+='<li class="groupuser grp_newparticipants list-group-item px-1 py-2" id="groupContactUser_'+u+'" data-contactname="'+t[n].contactName+'"><a href="javascript:void(0);" class="media flex-between-center flex-grow-1 c-gap-10 mnw-0">'+e+'<div class="media-body flex-grow-1 mnw-0"><div class="username text-dark font-weight-500 font-15 text-truncate" title="'+t[n].contactName+'">'+t[n].contactName+'<\/div><div class="last-chat-msg" title="'+t[n].about+'">'+t[n].about+'<\/div><\/div><div class="chat-call-options justify-content-between"><div class="custom-control custom-checkbox checkbox-primary"><input type="checkbox" name="chatgroupuser" id="chkuser_'+u+'" value='+u+' class="custom-control-input groupusercheckbox chkuser_'+u+'"><label class="custom-control-label" for="chkuser_'+u+'"><span id="contactid_'+u+'" class="hidden">'+u+"<\/span><\/label><\/div><\/div><\/div><\/a><\/li>"}return r}getProfileTemplate(){return`<div id="profileHeaderWrap" class="chat-header">
  765. <div id="profileHeader" class="h-100"></div>
  766. <div id="mediaHeader" class="h-100 hidden">
  767. <div class="d-flex h-100 align-items-center c-gap-5">
  768. <a href="javascript:;"
  769. class="btn btn-flush-biz-theme btn-icon btn-rounded flush-soft-hover d-30"
  770. id="mediaBackBtn" onclick="Unibase.Platform.Connect.Components.Chat.Instance().closeMediaInfo();"><span class="btn-icon-wrap"><i class="text-dark" data-icon="l"></i></span>
  771. </a>
  772. <div class="font-weight-500 text-dark font-15 text-truncate">Media,links,docs</div>
  773. </div>
  774. </div>
  775. </div>
  776. <div class="Search_participants flex-shrink-0 mx-10 my-5 hidden">
  777. <div class="flex-between-center c-gap-5">
  778. <div class="chatapp-search-div flex-grow-1"><input id="txtSearchParticipants" type="text"
  779. class="custom-chat-input required txt_SearchChat oldgrp_newparticipanrsearch search-input" value="" placeholder="Search Contacts..."
  780. onkeyup="Unibase.Platform.Connect.Components.Chat.Instance().searchParticipants('oldgrp_newparticipanrsearch','oldgrp_newparticipants');">
  781. <i class="fa fa-search search-icon"></i><a href="javascript:;" class="search-close hidden"><i class="icon dripicons-cross"></i></a></div>
  782. <div class="participant_avatar avatar-group avatar-group-sm avatar-group-overlapped flex-center hidden">
  783. </div>
  784. </div>
  785. </div>
  786. <div data-simplebar class="simple-scroll-bar profilebody flex-grow-1 px-10 pb-20 pt-5 h-100">
  787. <div class="profileDetails"></div>
  788. </div>`}getprofileheader(){return`<div class="group-info-header h-100">
  789. <div class="d-flex h-100 align-items-center c-gap-10">
  790. <div class="flex-grow-1 d-flex align-items-center c-gap-10"><a href="javascript:;" data-contactid=${t.Chat.contactId} class="btn btn-flush-biz-theme btn-icon btn-rounded flush-soft-hover d-30" id="closeContactInfoBtn" onclick="Unibase.Platform.Connect.Components.Chat.Instance().closeContactInfo();"><span class="btn-icon-wrap"><i class="text-dark" data-icon="l"></i></span></a><div class="profile-heading text-truncate text-dark font-weight-500 font-15">${t.Chat.contactId!=0?"Contact":"Group"} Info</div></div><a href="javascript:;" class="btn_AddChatParticipants btn btn-flush-biz-theme btn-icon btn-rounded flush-soft-hover d-30 hidden" onclick="Unibase.Platform.Connect.Components.Chat.Instance().AddParticipants();"><span class="btn-icon-wrap"><i class="las la-user-plus font-20 "></i></span></a></div></div></div><div class="add-participants-header h-100 hidden">
  791. <div class="d-flex h-100 align-items-center c-gap-10">
  792. <div class="flex-grow-1 d-flex align-items-center c-gap-10"><a href="javascript:;" class="btn btn-flush-biz-theme btn-icon btn-rounded flush-soft-hover d-30" id="closeAddParticipantsBtn" onclick="Unibase.Platform.Connect.Components.Chat.Instance().closeAddParticipants();"><span class="btn-icon-wrap"><i class="text-dark" data-icon="l"></i></span></a><div class="profile-heading text-truncate text-dark font-weight-500 font-15">Add Participants</div></div><a href="javascript:;" onclick="Unibase.Platform.Connect.Components.Chat.Instance().Savegroup();" id="btn_addtoGrpName" class="btn_saveGroup hidden font-14 ml-auto"><span class="btn btn-xs btn-primary">Save</span></a></div>
  793. </div></div>`}getprofilebody(){var n=t.Chat.contacts.find(n=>n.contactId==t.Chat.contactId),u,f,i;t.Chat.contactId==0&&(n=t.Chat.recentChats.find(n=>n.chatGroupId==t.Chat.chatGroupId));u="";f="";n!=undefined&&t.Chat.contactId!=0&&(u=n.phoneNumber,f=n.emailId);i=n.contactName;let r=this.getUserAvatarHtml(n,!1,!0);r=r.replace("avatar-sm","avatar-xl d-100");t.Chat.isPrivate||(r+='<input type="file" id="profileImageInput" class="Profile_image hidden" onchange="Unibase.Platform.Connect.Components.Chat.Instance().changeProfileImage(this);" accept="image/png,image/jpeg">');return`<div class="d-flex flex-column r-gap-15 profile-details-wrap" id="profileDetailsWrap"><div class="user-profile-info flex-center flex-column r-gap-10" id="userProfileInfo"><label class="profile-header-img flex-center flex-shrink-0 my-0 cursor-pointer" for="profileImageInput" imgchatUser_${t.Chat.chatGroupId} title="Upload Image">${r}</label>
  794. <div class="div-user-group-Name d-flex flex-column justify-content-center mnw-0 r-gap-5 w-100">
  795. <div class="profile-name-wrap position-relative flex-center c-gap-10"><span class="Profile_name grpname_${t.Chat.chatGroupId} font-weight-500 font-18 text-center text-dark">${i}</span><div class="edit-group-input-wrap position-relative mb-5 hidden" id="editGroupInputWrap"><input type="text" class="custom-chat-input text-dark font-weight-500 edit_groupdetailsInput pr-30" value="${i} " data-prevvalue="${i} "></a>
  796. <a href="javascript:;" class="save_changes btn btn-flush-biz-theme btn-icon btn-rounded flush-soft-hover d-26" onclick="Unibase.Platform.Connect.Components.Chat.Instance().changeGroupName();"><span class="btn-icon-wrap"><i class="icon dripicons-checkmark"></i></span></a></div><a href="javascript:;" class="edit_grpdetails btn btn-flush-biz-theme btn-icon btn-rounded flush-soft-hover d-26 hidden" onclick="Unibase.Platform.Connect.Components.Chat.Instance().EditgroupDetails('${i}');"><span class="btn-icon-wrap"><i class="fa fa-pencil font-14"></i></span></a></div>
  797. <div class="flex-center flex-column font-12 r-gap-3 text-center user-info-section hidden" id="userInfoSection"><span class="partipant-count hidden">
  798. </span><span class="user-mobile-no">${u}</span><span class="user-email">${f}</span></div></div>
  799. </div>
  800. <div class="profile-media-link flex-between-center c-gap-10 pa-10 biz-bg-hightlight-color_10 rounded-10 font-weight-500 text-dark cursor-pointer" id="profileMediaLink"><h6>Media, links and docs</h6><span class="badge badge-primary badge-sm rounded-10 font-10 media-links-count">0</span></div>
  801. <div class="star-messages-link flex-between-center c-gap-10 pa-10 biz-bg-hightlight-color_10 rounded-10 font-weight-500 text-dark cursor-pointer" id="starMessagesLink" onclick="Unibase.Platform.Connect.Components.Chat.Instance().starmessages();"><span class="d-flex c-gap-10"><h6>Star messages</h6><a href="javascript:;" class="btn btn-icon btn-icon-circle btn-primary btn-xs d-20"><span class="btn-icon-wrap"><i class="icon dripicons-star"></i></span></a></span><span class="badge badge-primary badge-sm rounded-10 font-10 star-messages-count">0</span></div>
  802. <div class="div-Chat-Groups biz-bg-hightlight-color_10 rounded-10 pa-10 hidden">
  803. <div class="d-flex flex-column r-gap-10"><div class="groups-header flex-between-center c-gap-10">
  804. <h6>Groups</h6>
  805. <span class="badge badge-primary badge-sm rounded-10 font-10 countChatGroups">0</span>
  806. </div>
  807. <ul class="list-group list-group-flush Chat-Chat-Group hidden">
  808. </ul>
  809. </div></div>
  810. <div class="div-Chat-Participants biz-bg-hightlight-color_10 rounded-10 pa-10 hidden">
  811. <div class="d-flex flex-column r-gap-10"><div class="participants-header flex-between-center c-gap-10">
  812. <h6>Participants</h6>
  813. <span class="badge badge-primary badge-sm rounded-10 font-10 countChatParticipants">0</span>
  814. </div>
  815. <div class="chatapp-search-div"><i class="fa fa-search search-icon biz-highlight-bg-color"></i><input type="text" class="participants_search custom-chat-input search-input" placeholder="Search Participants" onkeyup="Unibase.Platform.Connect.Components.Chat.Instance().searchParticipants('participants_search','grp_participents');"></div>
  816. <ul class="list-group list-group-flush Notify-Chat-Participants hidden">
  817. </ul>
  818. </div></div>
  819. <div class="div-Chat-AddParticipants biz-bg-hightlight-color_10 rounded-10 pa-10 hidden">
  820. <div class="d-flex flex-column r-gap-10"><div class="add-participants-header flex-between-center c-gap-10">
  821. <h6>Add Participants</h6>
  822. <span class="badge badge-primary badge-sm rounded-10 font-10 countChatAddParticipants">0</span>
  823. </div>
  824. <ul class="list-group list-group-flush Notify-Chat-AddParticipants hidden">
  825. </ul>
  826. </div></div>
  827. <div class="profile-action-div div-Chat-Block text-center">
  828. <a href="javascript:void(0);" class="btn btn-sm btn-outline-danger blockUser hidden" onclick="Unibase.Platform.Connect.Components.Chat.Instance().BlockAlert()">
  829. <span class="icon-label mr-5"><i class="fa fa-ban"></i></span>
  830. <span class="blkbtn-text">Block User</span>
  831. </a>
  832. <a href="javascript:void(0);" onclick="Unibase.Platform.Connect.Components.Chat.Instance().exitGroup();" class="btn btn-sm btn-outline-danger ExitFromGroup hidden">
  833. <span class="icon-label mr-5"><i class="fa fa-sign-out"></i></span>
  834. <span class="btn-text">Exit Group</span>
  835. </a>
  836. </div>
  837. </div>
  838. <div id="profileMediaWrap" class="hidden"><ul class="nav nav-tabs nav-line profile-media-tabs px-10" role="tablist" id="profileMediaTabs">
  839. <li class="nav-item"><a href="javascript:void(0);" onclick="Unibase.Platform.Connect.Components.Chat.Instance().mediaFiles();" class="nav-link div-Chat-Media">Media <span class="countMediaFiles hidden count-span badge badge-primary badge-sm rounded-10 font-10">0</span></a></li>
  840. <li class="nav-item"><a href="javascript:void(0);"onclick=" Unibase.Platform.Connect.Components.Chat.Instance().links();" class="nav-link div-Chat-Links">Links<span class="linkCount hidden count-span badge badge-primary badge-sm rounded-10 font-10">0</span></a></li>
  841. <li class="nav-item"><a href="javascript:void(0);"onclick=" Unibase.Platform.Connect.Components.Chat.Instance().documentFiles();" class="nav-link div-Chat-Docs">Documents <span class="countDocFiles hidden count-span badge badge-primary badge-sm rounded-10 font-10">0</span></a></li>
  842. </ul>
  843. <div class="tab-content mb-20" id="profileTabContent">
  844. <div class="links-content-tab tab-pane fade" role="tabpanel" id="links_files">
  845. <div id="Chat-Links" class="Chat-ListUrls d-flex flex-column r-gap-15">
  846. <div class="text-center text-danger">No Links</div>
  847. </div>
  848. </div>
  849. <div class="links-content-tab tab-pane fade" role="tabpanel" id="Chat-Mediafiles">
  850. <div id="Chat-Media" class="chat-media d-flex flex-column r-gap-15">
  851. <div class="text-center text-danger">No Media</div>
  852. </div>
  853. </div>
  854. <div class="links-content-tab tab-pane fade" role="tabpanel" id="Chat-docfiles">
  855. <div id="Chat-Docs" class="Chat-Chat-Docs d-flex flex-column r-gap-15">
  856. <div class="text-center text-danger">No Documents</h6>
  857. </div>
  858. </div>
  859. </div>
  860. </div>`}getAddParticipants(n,i){var r=t.Chat.contacts.find(t=>t.contactId==n);const u=this.getUserAvatarHtml(r);return`<li class="list-group-item groupuser oldgrp_newparticipants px-1 py-2" id="groupParticipant_${n}" data-contactname="${i}">
  861. <a href ="javascript:;" class="flex-between-center c-gap-10 groupParticipant_${n}">
  862. <div class="d-flex align-items-center c-gap-10 flex-grow-1 mnw-0">${u}<div class="name text-dark font-15 font-weight-500 text-truncate" id="contactname_${n}">${i}</div></div>
  863. <input type="checkbox" name="selected_participants" id="checkuser_${n}" value='${n}' class="checkuser_${n} transform-scale-1_1"></div>
  864. <label id="contactid_${n}" class="hidden">${n}</label>
  865. </a></li>`}getgroupsbycid(n){var i=0,r=t.Chat.recentChats.find(t=>t.contactName==n&&!t.isPrivate);r!=undefined&&(i=r.chatGroupId);const u=this.getUserAvatarHtml(r);return`<li class="list-group-item px-1 py-2 common-group-item" id="groupuser_${i}"><a href="javascript:;" data-contactid="0" data-chatgroupid="${i}" onclick="Unibase.Platform.Connect.Components.Chat.Instance().privatewindow(${i});" class="media participent d-flex align-items-center c-gap-10 mnw-0" id="msgConvoItem_${i}">${u}
  866. <div class="media-body mnw-0 flex-grow-1"><div class="username text-dark font-weight-500 font-15 text-truncate" title="${n}">${n}</div></div></a></li>`}getForwardContacts(n){var t="";let i=n.length;for(let r=0;r<i;r++){const i=this.getUserAvatarHtml(n[r]);t+='<li class="list-group-item forwardcontact px-1 py-2" id="Forwarduser_'+r+'" data-contactname='+n[r].contactName+'><a href ="javascript:;"class="d-flex align-items-center c-gap-10 groupuser_'+r+'"><div class="d-flex align-items-center c-gap-10 flex-grow-1 mnw-0">'+i+'<div class="name font-15 font-weight-500 text-dark text-truncate" id = "forwardcontactname_'+r+'" > '+n[r].contactName+' <\/div><\/div><input type="checkbox" name="forwardcontact" id="chkuser_'+r+'" class=" chkforward_'+n[r].contactId+'" value='+n[r].contactId+" data-contactid="+n[r].contactId+" data-chatgroupid="+n[r].chatGroupId+'><input type="checkbox" name="forwardcontact" id="chkuser_'+r+'" class=" chkforward_'+n[r].contactId+'" data-contactid='+n[r].contactId+" data-chatgroupid="+n[r].chatGroupId+'><lable id="forwardcontactid_'+r+'" class="hidden">'+n[r].contactId+"<\/lable><\/a><\/li>"}return t}getForwardTemplate(){return`<div id="forwardContactsHeader" class="chat-header flex-between-center c-gap-10"><div class="d-flex align-items-center c-gap-10"><a onclick="Unibase.Platform.Connect.Components.Chat.Instance().closeForwardContacts();" href="javascript:;" class="btn btn-flush-biz-theme btn-icon btn-rounded flush-soft-hover d-30"><span class="btn-icon-wrap"><i class="text-dark" data-icon="l"></i></span></a><div class="div-user-group-Name flex-between-center flex-grow-1 c-gap-10 r-gap-5 mnw-0"><div class="Profile_name font-weight-500 text-dark font-15 text-truncate">Forward Contacts</div></div></div><a class="btn btn-flush-biz-theme btn-icon btn-rounded flush-soft-hover d-30 _btnSendToMany hidden" href="javascript:;" id="forwardSendBtn"><span class="btn-icon-wrap"><i class="zmdi zmdi-mail-send zmdi-hc-lg"></i></span></a></div>
  867. <div class="Forward_Contacts flex-grow-1 chat-flex-column overflow-y-auto">
  868. <div class="div_forwardMessage chat-flex-column">
  869. <div class="pt-1 pb-2 flex-shrink-0">
  870. <div role ="search" class="chatapp-search-div chat-search mx-2">
  871. <input type="text" id="search_forwardcontacts" name ="search_forwardcontacts" class="custom-chat-input search_forwardcontacts search-input" placeholder="Search" onkeyup="Unibase.Platform.Connect.Components.Chat.Instance().searchParticipants('search_forwardcontacts','forwardcontact');"><i class="fa fa-search search-icon"></i></div></div>
  872. <div data-simplebar class="Forward_messaagecontacts simple-scroll-bar px-10 pb-10 flex-grow-1"><ul class="forwardcontacts_list list-group list-group-flush"></ul></div></div></div>`}getselectedcontacts(n,t){return'<li class="selected_groupcontaccts_'+t+'"><span class="badge badge-light">'+n+"<\/span><\/li>"}getMediaFiles(n,t){return'<div class="preview_file"><a href="javascript:void(0);" onclick="Unibase.Platform.Connect.Components.Chat.Instance().filePreview(\''+n+'\')" class="d-inline-block"><img src="'+t+'" onerror="ReloadImage(event)" data-dynamic="1" class="d-50"><\/a><\/div>'}getLinks(n){return`<div class="text-truncate w-100"><span class="link-message text-truncate font-14"><a href='${n}' target="_blank" title="${n}">${n}</a></span></div>`}getProfileSettings(n,t){return'<div class="profilesettings"><span class="imageProfile"><center><img src='+n+' style="height:30%;width:30%" class="profile_image rounded-circle"><i class="fa fa-pencil"><input type="file" class="change_profile hidden"><\/i><\/center><span class="profile_contactname">'+t+'<\/span><span class="profile_contactid"><\/span><\/div>'}getMentionableContactTemplate(n){const{contactId:r,contactName:t}=n;let i=this.getUserAvatarHtml(n);i=i.replace("avatar-sm","avatar-xs d-30");return`<li class="list-group-item pa-5 flex-between-center mentionble-contact" id="mentionbleContact_${r}" data-contactname="@${t}">
  873. <a href ="javascript:;" class="d-flex align-items-center c-gap-10 w-100 mnw-0">${i}
  874. <div class="media-body flex-grow-1 mnw-0 d-flex flex-column justify-content-center">
  875. <div class="flex-between-center c-gap-10 text-dark font-weight-500 font-13 text-truncate" title="${t}">${t}</div>
  876. </div>
  877. </a></li>`}getUserAvatarHtml(n,i=false,r=false){let u='<div class="media-img-wrap avatar ImagePng_'+n.chatGroupId+' avatar-sm flex-shrink-0">';if(n.photoUrl){var f=t.Chat.Instance().getFilePath(n.photoUrl);u+=`<img src='${f}' data-dynamic="1" class="avatar-img chatuser-img" data-loaded="0">`}else{let t="",i=n.contactName;if(i){let n=i.match(/\b(\w)/g);t=n.length==1?$.trim(i).substr(0,2):n.join("").slice(0,2);u+=`<div class="avatar-text avatar-text-${r?"inv-":""}primary rounded-circle" data-text="${t}"><span class="initial-wrap"><span>${t}</span></span></div>`}else u=""}return u+=`${i?`<span class="badge ${n.isonline?"active":""} badge-green badge-indicator online-status-icon" id ="contact_badge_${n.contactId}"></span>`:""}</div>`}getEmojiPattern(){return/^(?:\uD83D(?:\uDD73\uFE0F?|\uDC41(?:(?:\uFE0F(?:\u200D\uD83D\uDDE8\uFE0F?)?|\u200D\uD83D\uDDE8\uFE0F?))?|[\uDDE8\uDDEF]\uFE0F?|\uDC4B(?:\uD83C[\uDFFB-\uDFFF])?|\uDD90(?:(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F))?|[\uDD96\uDC4C\uDC48\uDC49\uDC46\uDD95\uDC47\uDC4D\uDC4E\uDC4A\uDC4F\uDE4C\uDC50\uDE4F\uDC85\uDCAA\uDC42\uDC43\uDC76\uDC66\uDC67](?:\uD83C[\uDFFB-\uDFFF])?|\uDC71(?:(?:\uD83C(?:[\uDFFB-\uDFFF](?:\u200D(?:[\u2640\u2642]\uFE0F?))?)|\u200D(?:[\u2640\u2642]\uFE0F?)))?|\uDC68(?:(?:\uD83C(?:\uDFFB(?:\u200D(?:\uD83E(?:\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF]|[\uDDB0\uDDB1\uDDB3\uDDB2\uDDAF\uDDBC\uDDBD])|\u2695\uFE0F?|\uD83C[\uDF93\uDFEB\uDF3E\uDF73\uDFED\uDFA4\uDFA8]|\u2696\uFE0F?|\uD83D[\uDD27\uDCBC\uDD2C\uDCBB\uDE80\uDE92]|\u2708\uFE0F?))?|\uDFFC(?:\u200D(?:\uD83E(?:\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF]|[\uDDB0\uDDB1\uDDB3\uDDB2\uDDAF\uDDBC\uDDBD])|\u2695\uFE0F?|\uD83C[\uDF93\uDFEB\uDF3E\uDF73\uDFED\uDFA4\uDFA8]|\u2696\uFE0F?|\uD83D[\uDD27\uDCBC\uDD2C\uDCBB\uDE80\uDE92]|\u2708\uFE0F?))?|\uDFFD(?:\u200D(?:\uD83E(?:\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|[\uDDB0\uDDB1\uDDB3\uDDB2\uDDAF\uDDBC\uDDBD])|\u2695\uFE0F?|\uD83C[\uDF93\uDFEB\uDF3E\uDF73\uDFED\uDFA4\uDFA8]|\u2696\uFE0F?|\uD83D[\uDD27\uDCBC\uDD2C\uDCBB\uDE80\uDE92]|\u2708\uFE0F?))?|\uDFFE(?:\u200D(?:\uD83E(?:\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF]|[\uDDB0\uDDB1\uDDB3\uDDB2\uDDAF\uDDBC\uDDBD])|\u2695\uFE0F?|\uD83C[\uDF93\uDFEB\uDF3E\uDF73\uDFED\uDFA4\uDFA8]|\u2696\uFE0F?|\uD83D[\uDD27\uDCBC\uDD2C\uDCBB\uDE80\uDE92]|\u2708\uFE0F?))?|\uDFFF(?:\u200D(?:\uD83E(?:\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE]|[\uDDB0\uDDB1\uDDB3\uDDB2\uDDAF\uDDBC\uDDBD])|\u2695\uFE0F?|\uD83C[\uDF93\uDFEB\uDF3E\uDF73\uDFED\uDFA4\uDFA8]|\u2696\uFE0F?|\uD83D[\uDD27\uDCBC\uDD2C\uDCBB\uDE80\uDE92]|\u2708\uFE0F?))?)|\u200D(?:\uD83E[\uDDB0\uDDB1\uDDB3\uDDB2\uDDAF\uDDBC\uDDBD]|\u2695\uFE0F?|\uD83C[\uDF93\uDFEB\uDF3E\uDF73\uDFED\uDFA4\uDFA8]|\u2696\uFE0F?|\uD83D(?:\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uDC68\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|[\uDD27\uDCBC\uDD2C\uDCBB\uDE80\uDE92])|\u2708\uFE0F?|\u2764(?:\uFE0F\u200D\uD83D(?:\uDC8B\u200D\uD83D\uDC68|\uDC68)|\u200D\uD83D(?:\uDC8B\u200D\uD83D\uDC68|\uDC68)))))?|\uDC69(?:(?:\uD83C(?:\uDFFB(?:\u200D(?:\uD83E(?:\uDD1D\u200D\uD83D(?:\uDC69\uD83C[\uDFFC-\uDFFF]|\uDC68\uD83C[\uDFFC-\uDFFF])|[\uDDB0\uDDB1\uDDB3\uDDB2\uDDAF\uDDBC\uDDBD])|\u2695\uFE0F?|\uD83C[\uDF93\uDFEB\uDF3E\uDF73\uDFED\uDFA4\uDFA8]|\u2696\uFE0F?|\uD83D[\uDD27\uDCBC\uDD2C\uDCBB\uDE80\uDE92]|\u2708\uFE0F?))?|\uDFFC(?:\u200D(?:\uD83E(?:\uDD1D\u200D\uD83D(?:\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF]|\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])|[\uDDB0\uDDB1\uDDB3\uDDB2\uDDAF\uDDBC\uDDBD])|\u2695\uFE0F?|\uD83C[\uDF93\uDFEB\uDF3E\uDF73\uDFED\uDFA4\uDFA8]|\u2696\uFE0F?|\uD83D[\uDD27\uDCBC\uDD2C\uDCBB\uDE80\uDE92]|\u2708\uFE0F?))?|\uDFFD(?:\u200D(?:\uD83E(?:\uDD1D\u200D\uD83D(?:\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|[\uDDB0\uDDB1\uDDB3\uDDB2\uDDAF\uDDBC\uDDBD])|\u2695\uFE0F?|\uD83C[\uDF93\uDFEB\uDF3E\uDF73\uDFED\uDFA4\uDFA8]|\u2696\uFE0F?|\uD83D[\uDD27\uDCBC\uDD2C\uDCBB\uDE80\uDE92]|\u2708\uFE0F?))?|\uDFFE(?:\u200D(?:\uD83E(?:\uDD1D\u200D\uD83D(?:\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF]|\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])|[\uDDB0\uDDB1\uDDB3\uDDB2\uDDAF\uDDBC\uDDBD])|\u2695\uFE0F?|\uD83C[\uDF93\uDFEB\uDF3E\uDF73\uDFED\uDFA4\uDFA8]|\u2696\uFE0F?|\uD83D[\uDD27\uDCBC\uDD2C\uDCBB\uDE80\uDE92]|\u2708\uFE0F?))?|\uDFFF(?:\u200D(?:\uD83E(?:\uDD1D\u200D\uD83D(?:\uDC69\uD83C[\uDFFB-\uDFFE]|\uDC68\uD83C[\uDFFB-\uDFFE])|[\uDDB0\uDDB1\uDDB3\uDDB2\uDDAF\uDDBC\uDDBD])|\u2695\uFE0F?|\uD83C[\uDF93\uDFEB\uDF3E\uDF73\uDFED\uDFA4\uDFA8]|\u2696\uFE0F?|\uD83D[\uDD27\uDCBC\uDD2C\uDCBB\uDE80\uDE92]|\u2708\uFE0F?))?)|\u200D(?:\uD83E[\uDDB0\uDDB1\uDDB3\uDDB2\uDDAF\uDDBC\uDDBD]|\u2695\uFE0F?|\uD83C[\uDF93\uDFEB\uDF3E\uDF73\uDFED\uDFA4\uDFA8]|\u2696\uFE0F?|\uD83D(?:\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|[\uDD27\uDCBC\uDD2C\uDCBB\uDE80\uDE92])|\u2708\uFE0F?|\u2764(?:\uFE0F\u200D\uD83D(?:\uDC8B\u200D\uD83D[\uDC68\uDC69]|[\uDC68\uDC69])|\u200D\uD83D(?:\uDC8B\u200D\uD83D[\uDC68\uDC69]|[\uDC68\uDC69])))))?|[\uDC74\uDC75](?:\uD83C[\uDFFB-\uDFFF])?|[\uDE4D\uDE4E\uDE45\uDE46\uDC81\uDE4B\uDE47\uDC6E](?:(?:\uD83C(?:[\uDFFB-\uDFFF](?:\u200D(?:[\u2642\u2640]\uFE0F?))?)|\u200D(?:[\u2642\u2640]\uFE0F?)))?|\uDD75(?:(?:\uFE0F(?:\u200D(?:[\u2642\u2640]\uFE0F?))?|\uD83C(?:[\uDFFB-\uDFFF](?:\u200D(?:[\u2642\u2640]\uFE0F?))?)|\u200D(?:[\u2642\u2640]\uFE0F?)))?|[\uDC82\uDC77](?:(?:\uD83C(?:[\uDFFB-\uDFFF](?:\u200D(?:[\u2642\u2640]\uFE0F?))?)|\u200D(?:[\u2642\u2640]\uFE0F?)))?|\uDC78(?:\uD83C[\uDFFB-\uDFFF])?|\uDC73(?:(?:\uD83C(?:[\uDFFB-\uDFFF](?:\u200D(?:[\u2642\u2640]\uFE0F?))?)|\u200D(?:[\u2642\u2640]\uFE0F?)))?|[\uDC72\uDC70\uDC7C](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC86\uDC87\uDEB6](?:(?:\uD83C(?:[\uDFFB-\uDFFF](?:\u200D(?:[\u2642\u2640]\uFE0F?))?)|\u200D(?:[\u2642\u2640]\uFE0F?)))?|[\uDC83\uDD7A](?:\uD83C[\uDFFB-\uDFFF])?|\uDD74(?:(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F))?|\uDC6F(?:\u200D(?:[\u2642\u2640]\uFE0F?))?|[\uDEA3\uDEB4\uDEB5](?:(?:\uD83C(?:[\uDFFB-\uDFFF](?:\u200D(?:[\u2642\u2640]\uFE0F?))?)|\u200D(?:[\u2642\u2640]\uFE0F?)))?|[\uDEC0\uDECC\uDC6D\uDC6B\uDC6C](?:\uD83C[\uDFFB-\uDFFF])?|\uDDE3\uFE0F?|\uDC15(?:\u200D\uD83E\uDDBA)?|[\uDC3F\uDD4A\uDD77\uDD78\uDDFA\uDEE3\uDEE4\uDEE2\uDEF3\uDEE5\uDEE9\uDEF0\uDECE\uDD70\uDD79\uDDBC\uDD76\uDECD\uDDA5\uDDA8\uDDB1\uDDB2\uDCFD\uDD6F\uDDDE\uDDF3\uDD8B\uDD8A\uDD8C\uDD8D\uDDC2\uDDD2\uDDD3\uDD87\uDDC3\uDDC4\uDDD1\uDDDD\uDEE0\uDDE1\uDEE1\uDDDC\uDECF\uDECB\uDD49]\uFE0F?|[\uDE00\uDE03\uDE04\uDE01\uDE06\uDE05\uDE02\uDE42\uDE43\uDE09\uDE0A\uDE07\uDE0D\uDE18\uDE17\uDE1A\uDE19\uDE0B\uDE1B-\uDE1D\uDE10\uDE11\uDE36\uDE0F\uDE12\uDE44\uDE2C\uDE0C\uDE14\uDE2A\uDE34\uDE37\uDE35\uDE0E\uDE15\uDE1F\uDE41\uDE2E\uDE2F\uDE32\uDE33\uDE26-\uDE28\uDE30\uDE25\uDE22\uDE2D\uDE31\uDE16\uDE23\uDE1E\uDE13\uDE29\uDE2B\uDE24\uDE21\uDE20\uDE08\uDC7F\uDC80\uDCA9\uDC79-\uDC7B\uDC7D\uDC7E\uDE3A\uDE38\uDE39\uDE3B-\uDE3D\uDE40\uDE3F\uDE3E\uDE48-\uDE4A\uDC8B\uDC8C\uDC98\uDC9D\uDC96\uDC97\uDC93\uDC9E\uDC95\uDC9F\uDC94\uDC9B\uDC9A\uDC99\uDC9C\uDDA4\uDCAF\uDCA2\uDCA5\uDCAB\uDCA6\uDCA8\uDCA3\uDCAC\uDCAD\uDCA4\uDC40\uDC45\uDC44\uDC8F\uDC91\uDC6A\uDC64\uDC65\uDC63\uDC35\uDC12\uDC36\uDC29\uDC3A\uDC31\uDC08\uDC2F\uDC05\uDC06\uDC34\uDC0E\uDC2E\uDC02-\uDC04\uDC37\uDC16\uDC17\uDC3D\uDC0F\uDC11\uDC10\uDC2A\uDC2B\uDC18\uDC2D\uDC01\uDC00\uDC39\uDC30\uDC07\uDC3B\uDC28\uDC3C\uDC3E\uDC14\uDC13\uDC23-\uDC27\uDC38\uDC0A\uDC22\uDC0D\uDC32\uDC09\uDC33\uDC0B\uDC2C\uDC1F-\uDC21\uDC19\uDC1A\uDC0C\uDC1B-\uDC1E\uDC90\uDCAE\uDD2A\uDDFE\uDDFB\uDC92\uDDFC\uDDFD\uDD4C\uDED5\uDD4D\uDD4B\uDC88\uDE82-\uDE8A\uDE9D\uDE9E\uDE8B-\uDE8E\uDE90-\uDE9C\uDEF5\uDEFA\uDEB2\uDEF4\uDEF9\uDE8F\uDEA8\uDEA5\uDEA6\uDED1\uDEA7\uDEF6\uDEA4\uDEA2\uDEEB\uDEEC\uDCBA\uDE81\uDE9F-\uDEA1\uDE80\uDEF8\uDD5B\uDD67\uDD50\uDD5C\uDD51\uDD5D\uDD52\uDD5E\uDD53\uDD5F\uDD54\uDD60\uDD55\uDD61\uDD56\uDD62\uDD57\uDD63\uDD58\uDD64\uDD59\uDD65\uDD5A\uDD66\uDD25\uDCA7\uDEF7\uDD2E\uDC53-\uDC62\uDC51\uDC52\uDCFF\uDC84\uDC8D\uDC8E\uDD07-\uDD0A\uDCE2\uDCE3\uDCEF\uDD14\uDD15\uDCFB\uDCF1\uDCF2\uDCDE-\uDCE0\uDD0B\uDD0C\uDCBB\uDCBD-\uDCC0\uDCFA\uDCF7-\uDCF9\uDCFC\uDD0D\uDD0E\uDCA1\uDD26\uDCD4-\uDCDA\uDCD3\uDCD2\uDCC3\uDCDC\uDCC4\uDCF0\uDCD1\uDD16\uDCB0\uDCB4-\uDCB8\uDCB3\uDCB9\uDCB1\uDCB2\uDCE7-\uDCE9\uDCE4-\uDCE6\uDCEB\uDCEA\uDCEC-\uDCEE\uDCDD\uDCBC\uDCC1\uDCC2\uDCC5-\uDCD0\uDD12\uDD13\uDD0F-\uDD11\uDD28\uDD2B\uDD27\uDD29\uDD17\uDD2C\uDD2D\uDCE1\uDC89\uDC8A\uDEAA\uDEBD\uDEBF\uDEC1\uDED2\uDEAC\uDDFF\uDEAE\uDEB0\uDEB9-\uDEBC\uDEBE\uDEC2-\uDEC5\uDEB8\uDEAB\uDEB3\uDEAD\uDEAF\uDEB1\uDEB7\uDCF5\uDD1E\uDD03\uDD04\uDD19-\uDD1D\uDED0\uDD4E\uDD2F\uDD00-\uDD02\uDD3C\uDD3D\uDD05\uDD06\uDCF6\uDCF3\uDCF4\uDD31\uDCDB\uDD30\uDD1F-\uDD24\uDD34\uDFE0-\uDFE2\uDD35\uDFE3-\uDFE5\uDFE7-\uDFE9\uDFE6\uDFEA\uDFEB\uDD36-\uDD3B\uDCA0\uDD18\uDD33\uDD32\uDEA9])|\uD83E(?:[\uDD1A\uDD0F\uDD1E\uDD1F\uDD18\uDD19\uDD1B\uDD1C\uDD32\uDD33\uDDB5\uDDB6\uDDBB\uDDD2](?:\uD83C[\uDFFB-\uDFFF])?|\uDDD1(?:(?:\uD83C(?:[\uDFFB-\uDFFF](?:\u200D(?:\uD83E(?:\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|[\uDDB0\uDDB1\uDDB3\uDDB2\uDDAF\uDDBC\uDDBD])|\u2695\uFE0F?|\uD83C[\uDF93\uDFEB\uDF3E\uDF73\uDFED\uDFA4\uDFA8]|\u2696\uFE0F?|\uD83D[\uDD27\uDCBC\uDD2C\uDCBB\uDE80\uDE92]|\u2708\uFE0F?))?)|\u200D(?:\uD83E(?:\uDD1D\u200D\uD83E\uDDD1|[\uDDB0\uDDB1\uDDB3\uDDB2\uDDAF\uDDBC\uDDBD])|\u2695\uFE0F?|\uD83C[\uDF93\uDFEB\uDF3E\uDF73\uDFED\uDFA4\uDFA8]|\u2696\uFE0F?|\uD83D[\uDD27\uDCBC\uDD2C\uDCBB\uDE80\uDE92]|\u2708\uFE0F?)))?|[\uDDD4\uDDD3](?:\uD83C[\uDFFB-\uDFFF])?|[\uDDCF\uDD26\uDD37](?:(?:\uD83C(?:[\uDFFB-\uDFFF](?:\u200D(?:[\u2642\u2640]\uFE0F?))?)|\u200D(?:[\u2642\u2640]\uFE0F?)))?|[\uDD34\uDDD5\uDD35\uDD30\uDD31\uDD36](?:\uD83C[\uDFFB-\uDFFF])?|[\uDDB8\uDDB9\uDDD9-\uDDDD](?:(?:\uD83C(?:[\uDFFB-\uDFFF](?:\u200D(?:[\u2642\u2640]\uFE0F?))?)|\u200D(?:[\u2642\u2640]\uFE0F?)))?|[\uDDDE\uDDDF](?:\u200D(?:[\u2642\u2640]\uFE0F?))?|[\uDDCD\uDDCE\uDDD6\uDDD7\uDD38](?:(?:\uD83C(?:[\uDFFB-\uDFFF](?:\u200D(?:[\u2642\u2640]\uFE0F?))?)|\u200D(?:[\u2642\u2640]\uFE0F?)))?|\uDD3C(?:\u200D(?:[\u2642\u2640]\uFE0F?))?|[\uDD3D\uDD3E\uDD39\uDDD8](?:(?:\uD83C(?:[\uDFFB-\uDFFF](?:\u200D(?:[\u2642\u2640]\uFE0F?))?)|\u200D(?:[\u2642\u2640]\uFE0F?)))?|[\uDD23\uDD70\uDD29\uDD2A\uDD11\uDD17\uDD2D\uDD2B\uDD14\uDD10\uDD28\uDD25\uDD24\uDD12\uDD15\uDD22\uDD2E\uDD27\uDD75\uDD76\uDD74\uDD2F\uDD20\uDD73\uDD13\uDDD0\uDD7A\uDD71\uDD2C\uDD21\uDD16\uDDE1\uDD0E\uDD0D\uDD1D\uDDBE\uDDBF\uDDE0\uDDB7\uDDB4\uDD3A\uDDB0\uDDB1\uDDB3\uDDB2\uDD8D\uDDA7\uDDAE\uDD8A\uDD9D\uDD81\uDD84\uDD93\uDD8C\uDD99\uDD92\uDD8F\uDD9B\uDD94\uDD87\uDDA5\uDDA6\uDDA8\uDD98\uDDA1\uDD83\uDD85\uDD86\uDDA2\uDD89\uDDA9\uDD9A\uDD9C\uDD8E\uDD95\uDD96\uDD88\uDD8B\uDD97\uDD82\uDD9F\uDDA0\uDD40\uDD6D\uDD5D\uDD65\uDD51\uDD54\uDD55\uDD52\uDD6C\uDD66\uDDC4\uDDC5\uDD5C\uDD50\uDD56\uDD68\uDD6F\uDD5E\uDDC7\uDDC0\uDD69\uDD53\uDD6A\uDD59\uDDC6\uDD5A\uDD58\uDD63\uDD57\uDDC8\uDDC2\uDD6B\uDD6E\uDD5F-\uDD61\uDD80\uDD9E\uDD90\uDD91\uDDAA\uDDC1\uDD67\uDD5B\uDD42\uDD43\uDD64\uDDC3\uDDC9\uDDCA\uDD62\uDD44\uDDED\uDDF1\uDDBD\uDDBC\uDE82\uDDF3\uDE90\uDDE8\uDDE7\uDD47-\uDD49\uDD4E\uDD4F\uDD4D\uDD4A\uDD4B\uDD45\uDD3F\uDD4C\uDE80\uDE81\uDDFF\uDDE9\uDDF8\uDDF5\uDDF6\uDD7D\uDD7C\uDDBA\uDDE3-\uDDE6\uDD7B\uDE71-\uDE73\uDD7E\uDD7F\uDE70\uDDE2\uDE95\uDD41\uDDEE\uDE94\uDDFE\uDE93\uDDAF\uDDF0\uDDF2\uDDEA-\uDDEC\uDE78-\uDE7A\uDE91\uDE92\uDDF4\uDDF7\uDDF9-\uDDFD\uDDEF])|[\u263A\u2639\u2620\u2763\u2764]\uFE0F?|\u270B(?:\uD83C[\uDFFB-\uDFFF])?|[\u270C\u261D](?:(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F))?|\u270A(?:\uD83C[\uDFFB-\uDFFF])?|\u270D(?:(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F))?|\uD83C(?:\uDF85(?:\uD83C[\uDFFB-\uDFFF])?|\uDFC3(?:(?:\uD83C(?:[\uDFFB-\uDFFF](?:\u200D(?:[\u2642\u2640]\uFE0F?))?)|\u200D(?:[\u2642\u2640]\uFE0F?)))?|[\uDFC7\uDFC2](?:\uD83C[\uDFFB-\uDFFF])?|\uDFCC(?:(?:\uFE0F(?:\u200D(?:[\u2642\u2640]\uFE0F?))?|\uD83C(?:[\uDFFB-\uDFFF](?:\u200D(?:[\u2642\u2640]\uFE0F?))?)|\u200D(?:[\u2642\u2640]\uFE0F?)))?|[\uDFC4\uDFCA](?:(?:\uD83C(?:[\uDFFB-\uDFFF](?:\u200D(?:[\u2642\u2640]\uFE0F?))?)|\u200D(?:[\u2642\u2640]\uFE0F?)))?|\uDFCB(?:(?:\uFE0F(?:\u200D(?:[\u2642\u2640]\uFE0F?))?|\uD83C(?:[\uDFFB-\uDFFF](?:\u200D(?:[\u2642\u2640]\uFE0F?))?)|\u200D(?:[\u2642\u2640]\uFE0F?)))?|[\uDFF5\uDF36\uDF7D\uDFD4-\uDFD6\uDFDC-\uDFDF\uDFDB\uDFD7\uDFD8\uDFDA\uDFD9\uDFCE\uDFCD\uDF21\uDF24-\uDF2C\uDF97\uDF9F\uDF96\uDF99-\uDF9B\uDF9E\uDFF7\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37]\uFE0F?|\uDFF4(?:(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67\uDB40\uDC7F|\uDC73\uDB40\uDC63\uDB40\uDC74\uDB40\uDC7F|\uDC77\uDB40\uDC6C\uDB40\uDC73\uDB40\uDC7F)))?|\uDFF3(?:(?:\uFE0F(?:\u200D\uD83C\uDF08)?|\u200D\uD83C\uDF08))?|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|[\uDFFB-\uDFFF\uDF38-\uDF3C\uDF37\uDF31-\uDF35\uDF3E-\uDF43\uDF47-\uDF53\uDF45\uDF46\uDF3D\uDF44\uDF30\uDF5E\uDF56\uDF57\uDF54\uDF5F\uDF55\uDF2D-\uDF2F\uDF73\uDF72\uDF7F\uDF71\uDF58-\uDF5D\uDF60\uDF62-\uDF65\uDF61\uDF66-\uDF6A\uDF82\uDF70\uDF6B-\uDF6F\uDF7C\uDF75\uDF76\uDF7E\uDF77-\uDF7B\uDF74\uDFFA\uDF0D-\uDF10\uDF0B\uDFE0-\uDFE6\uDFE8-\uDFED\uDFEF\uDFF0\uDF01\uDF03-\uDF07\uDF09\uDFA0-\uDFA2\uDFAA\uDF11-\uDF20\uDF0C\uDF00\uDF08\uDF02\uDF0A\uDF83\uDF84\uDF86-\uDF8B\uDF8D-\uDF91\uDF80\uDF81\uDFAB\uDFC6\uDFC5\uDFC0\uDFD0\uDFC8\uDFC9\uDFBE\uDFB3\uDFCF\uDFD1-\uDFD3\uDFF8\uDFA3\uDFBD\uDFBF\uDFAF\uDFB1\uDFAE\uDFB0\uDFB2\uDCCF\uDC04\uDFB4\uDFAD\uDFA8\uDF92\uDFA9\uDF93\uDFBC\uDFB5\uDFB6\uDFA4\uDFA7\uDFB7-\uDFBB\uDFA5\uDFAC\uDFEE\uDFF9\uDFE7\uDFA6\uDD8E\uDD91-\uDD9A\uDE01\uDE36\uDE2F\uDE50\uDE39\uDE1A\uDE32\uDE51\uDE38\uDE34\uDE33\uDE3A\uDE35\uDFC1\uDF8C])|\u26F7\uFE0F?|\u26F9(?:(?:\uFE0F(?:\u200D(?:[\u2642\u2640]\uFE0F?))?|\uD83C(?:[\uDFFB-\uDFFF](?:\u200D(?:[\u2642\u2640]\uFE0F?))?)|\u200D(?:[\u2642\u2640]\uFE0F?)))?|[\u2618\u26F0\u26E9\u2668\u26F4\u2708\u23F1\u23F2\u2600\u2601\u26C8\u2602\u26F1\u2744\u2603\u2604\u26F8\u2660\u2665\u2666\u2663\u265F\u26D1\u260E\u2328\u2709\u270F\u2712\u2702\u26CF\u2692\u2694\u2699\u2696\u26D3\u2697\u26B0\u26B1\u26A0\u2622\u2623\u2B06\u2197\u27A1\u2198\u2B07\u2199\u2B05\u2196\u2195\u2194\u21A9\u21AA\u2934\u2935\u269B\u2721\u2638\u262F\u271D\u2626\u262A\u262E\u25B6\u23ED\u23EF\u25C0\u23EE\u23F8-\u23FA\u23CF\u2640\u2642\u2695\u267E\u267B\u269C\u2611\u2714\u2716\u303D\u2733\u2734\u2747\u203C\u2049\u3030\u00A9\u00AE\u2122]\uFE0F?|[\u0023\u002A\u0030-\u0039](?:\uFE0F\u20E3|\u20E3)|[\u2139\u24C2\u3297\u3299\u25FC\u25FB\u25AA\u25AB]\uFE0F?|[\u2615\u26EA\u26F2\u26FA\u26FD\u2693\u26F5\u231B\u23F3\u231A\u23F0\u2B50\u26C5\u2614\u26A1\u26C4\u2728\u26BD\u26BE\u26F3\u267F\u26D4\u2648-\u2653\u26CE\u23E9-\u23EC\u2B55\u2705\u274C\u274E\u2795-\u2797\u27B0\u27BF\u2753-\u2755\u2757\u26AB\u26AA\u2B1B\u2B1C\u25FE\u25FD])$/}getGroupParticipants(n){var r="",u="",i=t.Chat.contacts.find(t=>t.contactId==n.recipientId),f='<a href="javascript:;" onclick="Unibase.Platform.Connect.Components.Chat.Instance().adminOptions()" data-isadmin='+n.isAdmin+" data-contactid="+i.contactId+" data-chatGroupId="+i.chatGroupId+' class="dotsicon btn btn-flush-biz-theme btn-icon btn-rounded flush-soft-hover d-26 flex-shrink-0 fromParticipant_'+i.contactId+'" data-toggle="dropdown" role = "button" aria-haspopup="false" aria-expanded="false" > <span class="btn-icon-wrap"><i class="icon dripicons-dots-3 rotate-90d font-20 text-dark"><\/i><\/span><div class="dropdown-menu-right dropdown-menu grpoptionshtml" id ="drpdownmenu"><\/div><\/a>';n.recipientId==t.Chat.currentUser.userId&&(i.contactName="You",f="",n.isAdmin?$(".btn_AddChatParticipants").removeClass("hidden"):"");n.isAdmin&&(u='style="position:absolute;right:26px"',r='<span class="badge badge-sm badge-soft-primary font-10 recipientbadge" '+u+">Admin<\/span>");const e=this.getUserAvatarHtml(i);return`<li class="list-group-item px-1 py-2 flex-between-center position-relative grp_participents isadmin_${n.isAdmin} participant_${n.recipientId}" data-contactname='${i.contactName}' data-isAdmin=${n.isAdmin} id="groupParticipantUser_${i.contactId}">
  878. <a href ="javascript:;" class="d-flex align-items-center c-gap-10 participent w-100 mnw-0">${e}
  879. <div class="media-body flex-grow-1 mnw-0 d-flex flex-column justify-content-center">
  880. <label id="contactid" class="hidden">${i.contactId}</label>
  881. <input type="hidden" class="contactname_hidden_${i.contactName}" value="${i.contactId}"><div class="name flex-between-center c-gap-10 text-dark font-weight-500 font-15" id="contactName_${i.contactId}" title="${i.contactName}"><span class="text-truncate">${i.contactName}</span> ${r}</div>
  882. <div class="user-about hidden"></div>
  883. </div>
  884. </a>${f}</li>`}getRecentChatsTemplate(n){var u=this,f=n.lastMessage,r,i;const e=u.getUserAvatarHtml(n,!0);return r="",n.unReadMessagesCount>0&&(r=`<span class="badge badge-sm badge-primary unread_messages_${n.chatGroupId} rounded-10 font-10">${n.unReadMessagesCount}</span>`),i="",n.messageLastUpdatedDate!=undefined&&n.messageLastUpdatedDate!=""&&(i=t.Chat.Instance().timeAnddateFormat(n.messageLastUpdatedDate),i=i=="Invalid date"?n.messageLastUpdatedDate:i),`<li class="userChat_${n.chatGroupId} recentchats list-group-item chat-group-item pa-0" data-contactname=${n.contactName}>
  885. <a href="javascript:void(0);" data-isprivate=${n.isPrivate} data-chatgroupid=${n.chatGroupId} data-contactId=${n.contactId} class="media contactuser d-flex px-1 py-2 c-gap-10 chatUserList" onclick="Unibase.Platform.Connect.Components.Chat.Instance().privatewindow(${n.chatGroupId})" id="msgConvoItem_${n.chatGroupId}"><div class="d-flex align-items-center c-gap-10 flex-grow-1 mnw-0">${e}
  886. <div class="media-body mnw-0 flex-grow-1"><div class="username text-dark grpname_${n.chatGroupId} font-weight-500 font-15 text-truncate" title="${n.contactName}">${n.contactName}</div><div class="user-last-chat_${n.chatGroupId} last-chat-msg" title="last_message">${f}</div><div class="text-green font-12 text-truncate w-80p typing_active_${n.chatGroupId} hidden" data-typingcontacts=''><strong>typing...</strong></div></div></div>
  887. <div class="chat-details flex-shrink-0 d-flex flex-column justify-content-between align-items-end r-gap-5"><div class="last-chat-time">${i}</div>${r}</div></a></li>`}getWebCamHtml(){return`<div class="web_cam position-relative biz-bg-hightlight-color_10 h-100"><span class="back_btn position-absolute r-0 bg-trans-dark-50 d-26 z-index-1 flex-center"><a href="javascript:;" onclick="Unibase.Platform.Connect.Components.Chat.Instance().closecam();" title="Close"><i class="icon dripicons-cross text-white font-18"></i></a></span><div class="cam_hidden flex-center h-100"><video id="cam_pic" autoplay="true" class="w-100 h-100" style="object-fit: fill"></video><div id="camErrMsg" class="hidden text-danger text-center"></div></div><center class="camera-controls bg-trans-dark-50" id="camerControls"><a class="back_cam d-none" href="javascript:;" onclick="Unibase.Platform.Connect.Components.Chat.Instance().back_tocam();"><i class="las la-arrow-left"></i></a><a href="javascript:;" class="btn-file" onclick="Unibase.Platform.Connect.Components.Chat.Instance().webcampicture();"><i class="las la-camera"></i></a><a href="javascript:;" class="send_pic d-none" onclick="Unibase.Platform.Connect.Components.Chat.Instance().webcamimage();"><i class="las la-caret-right"></i></a></center><div class="canvas_hidden w-100 h-100 hidden"><canvas id="chat_size" class="hidden border w-100 h-100"></canvas><img id="cam_image" class="cam_data w-100 h-100"></div></div>`}static Instance(){return this.instance===undefined&&(this.instance=new i),this.instance}}t.ChatTemplate=i})(i=t.Components||(t.Components={}))})(i=t.Connect||(t.Connect={}))})(t=n.Platform||(n.Platform={}))}(Unibase||(Unibase={}));__awaiter=this&&this.__awaiter||function(n,t,i,r){function u(n){return n instanceof i?n:new i(function(t){t(n)})}return new(i||(i=Promise))(function(i,f){function o(n){try{e(r.next(n))}catch(t){f(t)}}function s(n){try{e(r["throw"](n))}catch(t){f(t)}}function e(n){n.done?i(n.value):u(n.value).then(o,s)}e((r=r.apply(n,t||[])).next())})},function(n){let t;(function(t){let i;(function(t){let i;(function(t){class i{constructor(){this.methods={onMessageSent:function(n){console.log("Connected !"+n.fromUserId+n.message)},onUserTyping:function(t){t.isTyping?n.Platform.Connect.Components.Chat.Instance().showtyping(t.userName,t.fromUserId,t.chatGroupId,t.isPrivate):n.Platform.Connect.Components.Chat.Instance().hidestatus(t.chatGroupId,t.userName)},onMessageReceived:function(t){n.Platform.Connect.Components.Chat.Instance().onMessageReceived(t)},EnableVedio:function(t){n.Platform.Connect.Components.Chat.Instance().EnableVedio(t)},UpdateDeliveryStatus:function(t){n.Platform.Connect.Components.Chat.Instance().UpdateDeliveryStatus(t)},UpdateReadStatus:function(t){n.Platform.Connect.Components.Chat.Instance().UpdateReadStatus(t)},onUserDisconnected:function(){},Editedmsg:function(t){n.Platform.Connect.Components.Chat.Instance().editedMsg(t)},Deleteforeveryone:function(t){n.Platform.Connect.Components.Chat.Instance().deleteall(t)},ChangeProfileImage:function(t){n.Platform.Connect.Components.Chat.Instance().updateProfile(t.photoUrl,t.chatGroupId)},OnGroupNameChanged:function(t){n.Platform.Connect.Components.Chat.Instance().updateGroupName(t.groupName,t.chatgroupid)},OnPrivateWindowOpened:function(t){n.Platform.Connect.Components.Chat.Instance().OnPrivateWindowOpened(t)},EnableMeeting:function(t,i){n.Platform.Connect.Components.Chat.Instance().EnableMeeting(t,i)},addParticipants:function(t){n.Platform.Connect.Components.Chat.Instance().addParticipants(t)},onlinestatus:function(t,i){n.Platform.Connect.Components.Chat.Instance().onlinestatus(t,i)},updatedstatus:function(t){n.Platform.Connect.Components.Chat.Instance().status(t)},GetChatUnreadCount:function(n){$("#chatIconBadge").text(n).removeClass("d-none")},updatechatcount:function(){$("#chatIconBadge").text(Number($("#chatIconBadge").text())+1).removeClass("d-none")},removeadmin:function(t,i){n.Platform.Connect.Components.Chat.Instance().removeAdmin(t,i)},makeadmin:function(t,i){n.Platform.Connect.Components.Chat.Instance().makeAdmin(t,i)},removeparticipant:function(t,i){n.Platform.Connect.Components.Chat.Instance().removeParticipants(t,i)}}}init(){this._chatHub=n.Platform.Connect.Hubs.ChatHub.Instance(_appsettings.chathub_url());this.connection=this._chatHub;this.start()}getClientMethods(){return[{MethodName:"removeadmin",Method:this.methods.removeadmin},{MethodName:"makeadmin",Method:this.methods.makeadmin},{MethodName:"removeparticipant",Method:this.methods.removeparticipant},{MethodName:"onMessageSent",Method:this.methods.onMessageSent},{MethodName:"onUserTyping",Method:this.methods.onUserTyping},{MethodName:"onMessageReceived",Method:this.methods.onMessageReceived},{MethodName:"EnableVedio",Method:this.methods.EnableVedio},{MethodName:"UpdateDeliveryStatus",Method:this.methods.UpdateDeliveryStatus},{MethodName:"UpdateReadStatus",Method:this.methods.UpdateReadStatus},{MethodName:"onUserDisconnected",Method:this.methods.onUserDisconnected},{MethodName:"Editedmsg",Method:this.methods.Editedmsg},{MethodName:"Deleteforeveryone",Method:this.methods.Deleteforeveryone},{MethodName:"ChangeProfileImage",Method:this.methods.ChangeProfileImage},{MethodName:"OnPrivateWindowOpened",Method:this.methods.OnPrivateWindowOpened},{MethodName:"OnGroupNameChanged",Method:this.methods.OnGroupNameChanged},{MethodName:"EnableMeeting",Method:this.methods.EnableMeeting},{MethodName:"addParticipants",Method:this.methods.addParticipants},{MethodName:"onlinestatus",Method:this.methods.onlinestatus},{MethodName:"updatedstatus",Method:this.methods.updatedstatus},{MethodName:"GetChatUnreadCount",Method:this.methods.GetChatUnreadCount},{MethodName:"updatechatcount",Method:this.methods.updatechatcount},]}registerClientMethods(){let n=this.getClientMethods();if(n)for(var t=0;t<n.length;t++)this.connection.register(n[t].MethodName,n[t].Method)}start(){return __awaiter(this,void 0,void 0,function*(){try{this.registerClientMethods();this.connection.connect(function(){let i=n.Platform.Membership.Infos.Identity.getCurrentUser(),t=new n.Platform.Connect.Server.Packets.Connect;t.SessionId=i.sessionId;t.UnibaseId=i.unibaseId;t.UserId=i.userId;t.UserName=i.name;t.ActiveChatGroupId=0;n.Platform.Connect.Components.Chatter.instance._chatHub.server.UserConnected(t,null)})}catch(t){console.log(t);setTimeout(this.start,5e3)}})}onTyping(i,r){t.Chat.isBlock||(i.IsTyping=!0,n.Platform.Connect.Components.Chatter.instance._chatHub.server.UserTyping(i,r))}onTypingStop(i,r){t.Chat.isBlock||(i.IsTyping=!1,n.Platform.Connect.Components.Chatter.instance._chatHub.server.UserTyping(i,r))}onMessageSent(t,i){n.Platform.Connect.Components.Chatter.instance._chatHub.server.SendPrivateMessage(t,i)}openvideo(t){n.Platform.Connect.Components.Chatter.instance._chatHub.server.OpenVideo(t)}updateActiveChatGroup(t,i){n.Platform.Connect.Components.Chatter.instance._chatHub.server.UpdateActiveChatGroup(t,i)}updateDeliveryStatus(t,i){n.Platform.Connect.Components.Chatter.instance._chatHub.server.UpdateDeliveryStatus(t,i)}updateReadStatus(t,i){n.Platform.Connect.Components.Chatter.instance._chatHub.server.UpdateReadStatus(t,i)}editMessage(t,i){n.Platform.Connect.Components.Chatter.instance._chatHub.server.EditMessage(t,i)}Deleteforeveryone(t,i){n.Platform.Connect.Components.Chatter.instance._chatHub.server.Deleteall(t,i)}updateLastMessage(t,i){n.Platform.Connect.Components.Chatter.instance._chatHub.server.updateLastMessage(t,i)}OnPrivateWindowOpened(t,i){n.Platform.Connect.Components.Chatter.instance._chatHub.server.OnPrivateWindowOpened(t,i)}OnGroupNameChanged(t,i){n.Platform.Connect.Components.Chatter.instance._chatHub.server.OnGroupNameChanged(t,i)}EnableAudio(t,i){n.Platform.Connect.Components.Chatter.instance._chatHub.server.EnableAudio(t,i)}EnableVedio(t,i){n.Platform.Connect.Components.Chatter.instance._chatHub.server.EnableVedio(t,i)}GetUnreadChatCount(){var t=n.Platform.Membership.Infos.Identity.currentUser.sessionId;n.Platform.Connect.Components.Chatter.instance._chatHub.server.GetUnreadChatCount(t)}addParticipants(t){n.Platform.Connect.Components.Chatter.instance._chatHub.server.addParticipantsInGrp(t)}static Instance(){return this.instance===undefined&&(this.instance=new i),this.instance}}t.Chatter=i})(i=t.Components||(t.Components={}))})(i=t.Connect||(t.Connect={}))})(t=n.Platform||(n.Platform={}))}(Unibase||(Unibase={})),function(n){let t;(function(n){let t;(function(n){let t;(function(n){class t{}n.Chat=t})(t=n.Requests||(n.Requests={}))})(t=n.Connect||(n.Connect={}))})(t=n.Platform||(n.Platform={}))}(Unibase||(Unibase={}));