@cometchat/chat-uikit-angular 4.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (249) hide show
  1. package/Calls/CallingExtension.d.ts +5 -0
  2. package/Calls/CallingExtensionDecorator.d.ts +17 -0
  3. package/Calls/CometChatCallButtons/cometchat-call-buttons/cometchat-call-buttons.component.d.ts +75 -0
  4. package/Calls/CometChatCallButtons/cometchat-call-buttons.module.d.ts +11 -0
  5. package/Calls/CometChatIncomingCall/cometchat-incoming-call/cometchat-incoming-call.component.d.ts +80 -0
  6. package/Calls/CometChatIncomingCall/cometchat-incoming-call.module.d.ts +11 -0
  7. package/Calls/CometChatOngoingCall/cometchat-ongoing-call/cometchat-ongoing-call.component.d.ts +26 -0
  8. package/Calls/CometChatOngoingCall/cometchat-ongoing-call.module.d.ts +9 -0
  9. package/Calls/CometChatOutgoingCall/cometchat-outgoing-call/cometchat-outgoing-call.component.d.ts +58 -0
  10. package/Calls/CometChatOutgoingCall/cometchat-outgoing-call.module.d.ts +10 -0
  11. package/CometChatAddMembers/cometchat-add-members/cometchat-add-members.component.d.ts +109 -0
  12. package/CometChatAddMembers/cometchat-add-members.module.d.ts +12 -0
  13. package/CometChatBannedMembers/cometchat-banned-members/cometchat-banned-members.component.d.ts +140 -0
  14. package/CometChatBannedMembers/cometchat-banned-members.module.d.ts +13 -0
  15. package/CometChatConversations/cometchat-conversations/cometchat-conversations.component.d.ts +335 -0
  16. package/CometChatConversations/cometchat-conversations.module.d.ts +10 -0
  17. package/CometChatConversationsWithMessages/cometchat-conversations-with-messages/cometchat-conversations-with-messages.component.d.ts +86 -0
  18. package/CometChatConversationsWithMessages/cometchat-conversations-with-messages.module.d.ts +12 -0
  19. package/CometChatDetails/cometchat-details/cometchat-details.component.d.ts +149 -0
  20. package/CometChatDetails/cometchat-details.module.d.ts +12 -0
  21. package/CometChatGroupMembers/cometchat-group-members/cometchat-group-members.component.d.ts +145 -0
  22. package/CometChatGroupMembers/cometchat-group-members.module.d.ts +13 -0
  23. package/CometChatGroups/cometchat-groups/cometchat-groups.component.d.ts +136 -0
  24. package/CometChatGroups/cometchat-groups.module.d.ts +10 -0
  25. package/CometChatGroupsWithMessages/cometchat-groups-with-messages/cometchat-groups-with-messages.component.d.ts +100 -0
  26. package/CometChatGroupsWithMessages/cometchat-groups-with-messages.module.d.ts +13 -0
  27. package/CometChatList/cometchat-list.component.d.ts +87 -0
  28. package/CometChatList/cometchat-list.module.d.ts +10 -0
  29. package/CometChatMessageBubble/cometchat-message-bubble/cometchat-message-bubble.component.d.ts +62 -0
  30. package/CometChatMessageBubble/cometchat-message-bubble.module.d.ts +8 -0
  31. package/CometChatMessageComposer/cometchat-message-composer/cometchat-message-composer.component.d.ts +165 -0
  32. package/CometChatMessageComposer/cometchat-message-composer.module.d.ts +9 -0
  33. package/CometChatMessageHeader/cometchat-message-header/cometchat-message-header.component.d.ts +85 -0
  34. package/CometChatMessageHeader/cometchat-message-header.module.d.ts +9 -0
  35. package/CometChatMessageList/cometchat-message-list/cometchat-message-list.component.d.ts +510 -0
  36. package/CometChatMessageList/cometchat-message-list.module.d.ts +11 -0
  37. package/CometChatMessages/cometchat-messages/cometchat-messages.component.d.ts +136 -0
  38. package/CometChatMessages/cometchat-messages.module.d.ts +15 -0
  39. package/CometChatTheme.service.d.ts +7 -0
  40. package/CometChatThreadedMessages/cometchat-threaded-messages/cometchat-threaded-messages.component.d.ts +73 -0
  41. package/CometChatThreadedMessages/cometchat-threaded-messages.module.d.ts +12 -0
  42. package/CometChatTransferOwnership/cometchat-transfer-ownership/cometchat-transfer-ownership.component.d.ts +88 -0
  43. package/CometChatTransferOwnership/cometchat-transfer-ownership.module.d.ts +10 -0
  44. package/CometChatUsers/cometchat-users/cometchat-users.component.d.ts +105 -0
  45. package/CometChatUsers/cometchat-users.module.d.ts +11 -0
  46. package/CometChatUsersWithMessages/cometchat-users-with-messages/cometchat-users-with-messages.component.d.ts +71 -0
  47. package/CometChatUsersWithMessages/cometchat-users-with-messages.module.d.ts +12 -0
  48. package/Extensions/CollaborativeDocument/CollaborativeDocumentExtension.d.ts +9 -0
  49. package/Extensions/CollaborativeDocument/CollaborativeDocumentExtensionDecorator.d.ts +17 -0
  50. package/Extensions/CollaborativeWhiteboard/CollaborativeWhiteboardExtension.d.ts +9 -0
  51. package/Extensions/CollaborativeWhiteboard/CollaborativeWhiteboardExtensionDecorator.d.ts +17 -0
  52. package/Extensions/ImageModeration/ImageModerationExtension.d.ts +5 -0
  53. package/Extensions/ImageModeration/ImageModerationExtensionDecorator.d.ts +6 -0
  54. package/Extensions/LinkPreviewExtension/LinkPreviewExtension.d.ts +5 -0
  55. package/Extensions/LinkPreviewExtension/LinkPreviewExtensionDecorator.d.ts +6 -0
  56. package/Extensions/MessageTranslation/MessageTranslationExtension.d.ts +9 -0
  57. package/Extensions/MessageTranslation/MessageTranslationExtensionDecorator.d.ts +12 -0
  58. package/Extensions/PollsExtension/PollsExtension.d.ts +5 -0
  59. package/Extensions/PollsExtension/PollsExtensionDecorator.d.ts +15 -0
  60. package/Extensions/Reactions/ReactionExtension.d.ts +5 -0
  61. package/Extensions/Reactions/ReactionExtensionDecorator.d.ts +10 -0
  62. package/Extensions/SmartReplies/SmartRepliesExtension.d.ts +9 -0
  63. package/Extensions/SmartReplies/SmartRepliesExtensionDecorator.d.ts +16 -0
  64. package/Extensions/Stickers/StickersExtension.d.ts +9 -0
  65. package/Extensions/Stickers/StickersExtensionDecorator.d.ts +27 -0
  66. package/Extensions/TextModerator/TextModeratorExtension.d.ts +5 -0
  67. package/Extensions/TextModerator/TextModeratorExtensionDecorator.d.ts +9 -0
  68. package/Extensions/ThumbnailGeneration/ThumbnailGenerationExtension.d.ts +5 -0
  69. package/Extensions/ThumbnailGeneration/ThumbnailGenerationExtensionDecorator.d.ts +6 -0
  70. package/README.md +60 -0
  71. package/Shared/CometChatUIkit/CometChatUIKit.d.ts +18 -0
  72. package/Shared/Framework/ChatConfigurator.d.ts +8 -0
  73. package/Shared/Framework/DataSource.d.ts +29 -0
  74. package/Shared/Framework/DataSourceDecorator.d.ts +32 -0
  75. package/Shared/Framework/ExtensionDataSource.d.ts +3 -0
  76. package/Shared/Utils/MessageUtils.d.ts +43 -0
  77. package/assets/.gitkeep +0 -0
  78. package/assets/Audio-Call.svg +11 -0
  79. package/assets/Audio-Call2x.svg +11 -0
  80. package/assets/Copy.svg +17 -0
  81. package/assets/Grid-layout.svg +1 -0
  82. package/assets/Heart.svg +11 -0
  83. package/assets/Imagemoderation.svg +14 -0
  84. package/assets/Info.svg +13 -0
  85. package/assets/Locked.svg +10 -0
  86. package/assets/More@2x.svg +9 -0
  87. package/assets/Plus.svg +13 -0
  88. package/assets/Private.svg +10 -0
  89. package/assets/Reactionsicon.svg +9 -0
  90. package/assets/Send.svg +12 -0
  91. package/assets/Spinner.svg +15 -0
  92. package/assets/Stickers.svg +16 -0
  93. package/assets/Stipop.svg +9 -0
  94. package/assets/Video-call.svg +12 -0
  95. package/assets/Video-call2x.svg +12 -0
  96. package/assets/activity.svg +22 -0
  97. package/assets/addreaction.svg +9 -0
  98. package/assets/animals.svg +15 -0
  99. package/assets/attachment-file.svg +14 -0
  100. package/assets/audio-file.svg +12 -0
  101. package/assets/back.png +0 -0
  102. package/assets/backbutton.svg +12 -0
  103. package/assets/call.svg +1 -0
  104. package/assets/chats.svg +1 -0
  105. package/assets/checkmark.svg +11 -0
  106. package/assets/close.svg +12 -0
  107. package/assets/close2x.svg +12 -0
  108. package/assets/collaborativedocument.svg +13 -0
  109. package/assets/collaborativewhiteboard.svg +12 -0
  110. package/assets/create-button.svg +12 -0
  111. package/assets/declaration.d.ts +3 -0
  112. package/assets/delete.svg +7 -0
  113. package/assets/deleteicon.svg +15 -0
  114. package/assets/down-arrow.svg +1 -0
  115. package/assets/download.svg +13 -0
  116. package/assets/editicon.svg +14 -0
  117. package/assets/emoji.svg +2693 -0
  118. package/assets/file-upload.svg +2693 -0
  119. package/assets/flags.svg +12 -0
  120. package/assets/food.svg +26 -0
  121. package/assets/group.svg +40 -0
  122. package/assets/heart-reaction.png +0 -0
  123. package/assets/heart.png +0 -0
  124. package/assets/image.svg +2693 -0
  125. package/assets/incomingcall.wav +0 -0
  126. package/assets/increase-size.svg +6 -0
  127. package/assets/location.svg +2693 -0
  128. package/assets/message-delivered.png +0 -0
  129. package/assets/message-delivered.svg +4 -0
  130. package/assets/message-read.png +0 -0
  131. package/assets/message-read.svg +4 -0
  132. package/assets/message-sent.png +0 -0
  133. package/assets/message-sent.svg +3 -0
  134. package/assets/moreicon.svg +9 -0
  135. package/assets/objects.svg +13 -0
  136. package/assets/open-thread.svg +11 -0
  137. package/assets/password-protected-group.svg +3 -0
  138. package/assets/photolibrary.svg +11 -0
  139. package/assets/placeholder.png +0 -0
  140. package/assets/plus-rotated.svg +13 -0
  141. package/assets/polls.svg +14 -0
  142. package/assets/privacy.svg +4 -0
  143. package/assets/private-group.svg +9 -0
  144. package/assets/public.svg +3 -0
  145. package/assets/reduce-size.svg +6 -0
  146. package/assets/right-arrow.svg +6 -0
  147. package/assets/search.png +0 -0
  148. package/assets/search.svg +4 -0
  149. package/assets/side-arrow.svg +1 -0
  150. package/assets/smileys.svg +16 -0
  151. package/assets/start-chat.svg +1 -0
  152. package/assets/symbols.svg +16 -0
  153. package/assets/thread-arrow.svg +1 -0
  154. package/assets/thread-icon.svg +38 -0
  155. package/assets/threadicon.svg +14 -0
  156. package/assets/translation.svg +16 -0
  157. package/assets/travel.svg +18 -0
  158. package/assets/unsafe-content.svg +23 -0
  159. package/assets/user.svg +31 -0
  160. package/assets/video-upload.svg +2693 -0
  161. package/assets/video.svg +12 -0
  162. package/assets/wait.png +0 -0
  163. package/assets/wait.svg +4 -0
  164. package/assets/warning-small.png +0 -0
  165. package/assets/warning-small.svg +5 -0
  166. package/cometchat-chat-uikit-angular.d.ts +5 -0
  167. package/esm2020/Calls/CallingExtension.mjs +11 -0
  168. package/esm2020/Calls/CallingExtensionDecorator.mjs +114 -0
  169. package/esm2020/Calls/CometChatCallButtons/cometchat-call-buttons/cometchat-call-buttons.component.mjs +358 -0
  170. package/esm2020/Calls/CometChatCallButtons/cometchat-call-buttons.module.mjs +32 -0
  171. package/esm2020/Calls/CometChatIncomingCall/cometchat-incoming-call/cometchat-incoming-call.component.mjs +423 -0
  172. package/esm2020/Calls/CometChatIncomingCall/cometchat-incoming-call.module.mjs +32 -0
  173. package/esm2020/Calls/CometChatOngoingCall/cometchat-ongoing-call/cometchat-ongoing-call.component.mjs +54 -0
  174. package/esm2020/Calls/CometChatOngoingCall/cometchat-ongoing-call.module.mjs +27 -0
  175. package/esm2020/Calls/CometChatOutgoingCall/cometchat-outgoing-call/cometchat-outgoing-call.component.mjs +196 -0
  176. package/esm2020/Calls/CometChatOutgoingCall/cometchat-outgoing-call.module.mjs +28 -0
  177. package/esm2020/CometChatAddMembers/cometchat-add-members/cometchat-add-members.component.mjs +353 -0
  178. package/esm2020/CometChatAddMembers/cometchat-add-members.module.mjs +23 -0
  179. package/esm2020/CometChatBannedMembers/cometchat-banned-members/cometchat-banned-members.component.mjs +446 -0
  180. package/esm2020/CometChatBannedMembers/cometchat-banned-members.module.mjs +24 -0
  181. package/esm2020/CometChatConversations/cometchat-conversations/cometchat-conversations.component.mjs +1400 -0
  182. package/esm2020/CometChatConversations/cometchat-conversations.module.mjs +28 -0
  183. package/esm2020/CometChatConversationsWithMessages/cometchat-conversations-with-messages/cometchat-conversations-with-messages.component.mjs +272 -0
  184. package/esm2020/CometChatConversationsWithMessages/cometchat-conversations-with-messages.module.mjs +39 -0
  185. package/esm2020/CometChatDetails/cometchat-details/cometchat-details.component.mjs +696 -0
  186. package/esm2020/CometChatDetails/cometchat-details.module.mjs +27 -0
  187. package/esm2020/CometChatGroupMembers/cometchat-group-members/cometchat-group-members.component.mjs +676 -0
  188. package/esm2020/CometChatGroupMembers/cometchat-group-members.module.mjs +24 -0
  189. package/esm2020/CometChatGroups/cometchat-groups/cometchat-groups.component.mjs +564 -0
  190. package/esm2020/CometChatGroups/cometchat-groups.module.mjs +28 -0
  191. package/esm2020/CometChatGroupsWithMessages/cometchat-groups-with-messages/cometchat-groups-with-messages.component.mjs +430 -0
  192. package/esm2020/CometChatGroupsWithMessages/cometchat-groups-with-messages.module.mjs +43 -0
  193. package/esm2020/CometChatList/cometchat-list.component.mjs +210 -0
  194. package/esm2020/CometChatList/cometchat-list.module.mjs +28 -0
  195. package/esm2020/CometChatMessageBubble/cometchat-message-bubble/cometchat-message-bubble.component.mjs +157 -0
  196. package/esm2020/CometChatMessageBubble/cometchat-message-bubble.module.mjs +23 -0
  197. package/esm2020/CometChatMessageComposer/cometchat-message-composer/cometchat-message-composer.component.mjs +930 -0
  198. package/esm2020/CometChatMessageComposer/cometchat-message-composer.module.mjs +24 -0
  199. package/esm2020/CometChatMessageHeader/cometchat-message-header/cometchat-message-header.component.mjs +420 -0
  200. package/esm2020/CometChatMessageHeader/cometchat-message-header.module.mjs +26 -0
  201. package/esm2020/CometChatMessageList/cometchat-message-list/cometchat-message-list.component.mjs +2598 -0
  202. package/esm2020/CometChatMessageList/cometchat-message-list.module.mjs +34 -0
  203. package/esm2020/CometChatMessages/cometchat-messages/cometchat-messages.component.mjs +393 -0
  204. package/esm2020/CometChatMessages/cometchat-messages.module.mjs +48 -0
  205. package/esm2020/CometChatTheme.service.mjs +17 -0
  206. package/esm2020/CometChatThreadedMessages/cometchat-threaded-messages/cometchat-threaded-messages.component.mjs +304 -0
  207. package/esm2020/CometChatThreadedMessages/cometchat-threaded-messages.module.mjs +36 -0
  208. package/esm2020/CometChatTransferOwnership/cometchat-transfer-ownership/cometchat-transfer-ownership.component.mjs +337 -0
  209. package/esm2020/CometChatTransferOwnership/cometchat-transfer-ownership.module.mjs +21 -0
  210. package/esm2020/CometChatUsers/cometchat-users/cometchat-users.component.mjs +447 -0
  211. package/esm2020/CometChatUsers/cometchat-users.module.mjs +32 -0
  212. package/esm2020/CometChatUsersWithMessages/cometchat-users-with-messages/cometchat-users-with-messages.component.mjs +185 -0
  213. package/esm2020/CometChatUsersWithMessages/cometchat-users-with-messages.module.mjs +39 -0
  214. package/esm2020/Extensions/CollaborativeDocument/CollaborativeDocumentExtension.mjs +11 -0
  215. package/esm2020/Extensions/CollaborativeDocument/CollaborativeDocumentExtensionDecorator.mjs +89 -0
  216. package/esm2020/Extensions/CollaborativeWhiteboard/CollaborativeWhiteboardExtension.mjs +11 -0
  217. package/esm2020/Extensions/CollaborativeWhiteboard/CollaborativeWhiteboardExtensionDecorator.mjs +89 -0
  218. package/esm2020/Extensions/ImageModeration/ImageModerationExtension.mjs +10 -0
  219. package/esm2020/Extensions/ImageModeration/ImageModerationExtensionDecorator.mjs +10 -0
  220. package/esm2020/Extensions/LinkPreviewExtension/LinkPreviewExtension.mjs +10 -0
  221. package/esm2020/Extensions/LinkPreviewExtension/LinkPreviewExtensionDecorator.mjs +10 -0
  222. package/esm2020/Extensions/MessageTranslation/MessageTranslationExtension.mjs +11 -0
  223. package/esm2020/Extensions/MessageTranslation/MessageTranslationExtensionDecorator.mjs +33 -0
  224. package/esm2020/Extensions/PollsExtension/PollsExtension.mjs +10 -0
  225. package/esm2020/Extensions/PollsExtension/PollsExtensionDecorator.mjs +75 -0
  226. package/esm2020/Extensions/Reactions/ReactionExtension.mjs +10 -0
  227. package/esm2020/Extensions/Reactions/ReactionExtensionDecorator.mjs +30 -0
  228. package/esm2020/Extensions/SmartReplies/SmartRepliesExtension.mjs +11 -0
  229. package/esm2020/Extensions/SmartReplies/SmartRepliesExtensionDecorator.mjs +117 -0
  230. package/esm2020/Extensions/Stickers/StickersExtension.mjs +15 -0
  231. package/esm2020/Extensions/Stickers/StickersExtensionDecorator.mjs +118 -0
  232. package/esm2020/Extensions/TextModerator/TextModeratorExtension.mjs +10 -0
  233. package/esm2020/Extensions/TextModerator/TextModeratorExtensionDecorator.mjs +32 -0
  234. package/esm2020/Extensions/ThumbnailGeneration/ThumbnailGenerationExtension.mjs +10 -0
  235. package/esm2020/Extensions/ThumbnailGeneration/ThumbnailGenerationExtensionDecorator.mjs +10 -0
  236. package/esm2020/Shared/CometChatUIkit/CometChatUIKit.mjs +180 -0
  237. package/esm2020/Shared/Framework/ChatConfigurator.mjs +20 -0
  238. package/esm2020/Shared/Framework/DataSource.mjs +3 -0
  239. package/esm2020/Shared/Framework/DataSourceDecorator.mjs +80 -0
  240. package/esm2020/Shared/Framework/ExtensionDataSource.mjs +4 -0
  241. package/esm2020/Shared/Utils/MessageUtils.mjs +342 -0
  242. package/esm2020/cometchat-chat-uikit-angular.mjs +5 -0
  243. package/esm2020/public-api.mjs +93 -0
  244. package/fesm2015/cometchat-chat-uikit-angular.mjs +13683 -0
  245. package/fesm2015/cometchat-chat-uikit-angular.mjs.map +1 -0
  246. package/fesm2020/cometchat-chat-uikit-angular.mjs +13586 -0
  247. package/fesm2020/cometchat-chat-uikit-angular.mjs.map +1 -0
  248. package/package.json +51 -0
  249. package/public-api.d.ts +79 -0
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <title>Icons/24/Video</title>
4
+ <g id="Icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round">
5
+ <g id="Icons/24/Video" stroke="#000000" stroke-width="1.5">
6
+ <g id="Group" transform="translate(2.000000, 6.500000)">
7
+ <path d="M1.79471961,-7.25088203e-17 L11.9552804,7.25088203e-17 C12.5793435,-4.21297127e-17 12.8056439,0.0649779267 13.033792,0.186992889 C13.2619401,0.309007852 13.4409921,0.488059851 13.5630071,0.716207995 C13.6850221,0.94435614 13.75,1.1706565 13.75,1.79471961 L13.75,9.20528039 C13.75,9.8293435 13.6850221,10.0556439 13.5630071,10.283792 C13.4409921,10.5119401 13.2619401,10.6909921 13.033792,10.8130071 C12.8056439,10.9350221 12.5793435,11 11.9552804,11 L1.79471961,11 C1.1706565,11 0.94435614,10.9350221 0.716207995,10.8130071 C0.488059851,10.6909921 0.309007852,10.5119401 0.186992889,10.283792 C0.0649779267,10.0556439 9.39485689e-17,9.8293435 -1.61693481e-16,9.20528039 L4.83392135e-17,1.79471961 C-2.80864751e-17,1.1706565 0.0649779267,0.94435614 0.186992889,0.716207995 C0.309007852,0.488059851 0.488059851,0.309007852 0.716207995,0.186992889 C0.94435614,0.0649779267 1.1706565,4.21297127e-17 1.79471961,-7.25088203e-17 Z" id="Rectangle"></path>
8
+ <path d="M17.2599167,8.63041667 L19.6304167,9.81475 C19.8435282,9.92114296 20.096526,9.90964554 20.299109,9.78436146 C20.5016921,9.65907738 20.625,9.43785985 20.625,9.19966667 L20.625,1.80033333 C20.625,1.56214015 20.5016921,1.34092262 20.299109,1.21563854 C20.096526,1.09035446 19.8435282,1.07885704 19.6304167,1.18525 L17.2599167,2.36958333 C16.7940465,2.60259636 16.4998441,3.07885646 16.4999999,3.59975 L16.4999999,7.40025 C16.4998441,7.92114354 16.7940465,8.39740364 17.2599167,8.63041667 Z" id="Path"></path>
9
+ </g>
10
+ </g>
11
+ </g>
12
+ </svg>
Binary file
@@ -0,0 +1,4 @@
1
+ <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M8.01057 8.04728C8.34753 9.99213 9.53177 11.3242 11.6239 12C13.716 11.3242 14.9002 9.99213 15.2372 8.04728C15.2572 7.91731 15.2488 7.78455 15.2125 7.65816C15.1762 7.53177 15.1129 7.41476 15.027 7.3152C14.9411 7.21564 14.8346 7.1359 14.7149 7.08149C14.5952 7.02707 14.4651 6.99928 14.3336 7.00001H8.9142C8.7827 6.99928 8.65261 7.02707 8.5329 7.08149C8.41319 7.1359 8.30671 7.21564 8.2208 7.3152C8.1349 7.41476 8.07161 7.53177 8.03532 7.65816C7.99902 7.78455 7.99058 7.91731 8.01057 8.04728Z" fill="#808080" stroke="#808080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
3
+ <path d="M8.91423 17C8.78279 17.0007 8.65276 16.9729 8.5331 16.9185C8.41343 16.8642 8.30699 16.7845 8.22109 16.685C8.1352 16.5855 8.0719 16.4686 8.03556 16.3423C7.99922 16.2159 7.9907 16.0832 8.01059 15.9533C8.34756 14.0085 9.5318 12.6764 11.6239 12C13.716 12.6764 14.9003 14.0085 15.2372 15.9533C15.2571 16.0832 15.2486 16.2159 15.2123 16.3423C15.1759 16.4686 15.1126 16.5855 15.0267 16.685C14.9408 16.7845 14.8344 16.8642 14.7147 16.9185C14.5951 16.9729 14.465 17.0007 14.3336 17H8.91423Z" stroke="#808080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </svg>
Binary file
@@ -0,0 +1,5 @@
1
+ <svg width="18" height="17" viewBox="0 0 18 17" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M8.99992 11C8.96695 11 8.93473 11.0098 8.90732 11.0281C8.87992 11.0464 8.85855 11.0724 8.84594 11.1029C8.83332 11.1333 8.83002 11.1669 8.83645 11.1992C8.84289 11.2315 8.85876 11.2612 8.88207 11.2845C8.90538 11.3078 8.93507 11.3237 8.9674 11.3301C8.99973 11.3366 9.03324 11.3333 9.0637 11.3206C9.09415 11.308 9.12018 11.2867 9.1385 11.2593C9.15681 11.2319 9.16659 11.1996 9.16659 11.1667C9.16659 11.1225 9.14903 11.0801 9.11777 11.0488C9.08651 11.0176 9.04412 11 8.99992 11Z" stroke="#ff3b30" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/>
3
+ <path d="M9 9.66667V6" stroke="#ff3b30" stroke-width="1.2" stroke-linecap="round"/>
4
+ <path d="M4 9C4 10.3261 4.52678 11.5979 5.46447 12.5355C6.40215 13.4732 7.67392 14 9 14C10.3261 14 11.5979 13.4732 12.5355 12.5355C13.4732 11.5979 14 10.3261 14 9C14 7.67392 13.4732 6.40215 12.5355 5.46447C11.5979 4.52678 10.3261 4 9 4C7.67392 4 6.40215 4.52678 5.46447 5.46447C4.52678 6.40215 4 7.67392 4 9V9Z" stroke="#ff3b30" stroke-width="1.2"/>
5
+ </svg>
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@cometchat/chat-uikit-angular" />
5
+ export * from './public-api';
@@ -0,0 +1,11 @@
1
+ import { ChatConfigurator } from '../Shared/Framework/ChatConfigurator';
2
+ import { CallingExtensionDecorator } from './CallingExtensionDecorator';
3
+ export class CallingExtension {
4
+ constructor() {
5
+ }
6
+ // override enable method from ExtensionsDataSource interface
7
+ enable() {
8
+ ChatConfigurator.enable((dataSource) => new CallingExtensionDecorator(dataSource));
9
+ }
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FsbGluZ0V4dGVuc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NoYXQtdWlraXQtYW5ndWxhci9zcmMvQ2FsbHMvQ2FsbGluZ0V4dGVuc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUd4RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUV4RSxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCO0lBQ0EsQ0FBQztJQUVELDZEQUE2RDtJQUM3RCxNQUFNO1FBQ0osZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBc0IsRUFBRSxFQUFFLENBQ2pELElBQUkseUJBQXlCLENBQUMsVUFBVSxDQUFDLENBQzFDLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IENoYXRDb25maWd1cmF0b3IgfSBmcm9tICcuLi9TaGFyZWQvRnJhbWV3b3JrL0NoYXRDb25maWd1cmF0b3InO1xuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJy4uL1NoYXJlZC9GcmFtZXdvcmsvRGF0YVNvdXJjZSc7XG5pbXBvcnQgeyBFeHRlbnNpb25zRGF0YVNvdXJjZSB9IGZyb20gJy4uL1NoYXJlZC9GcmFtZXdvcmsvRXh0ZW5zaW9uRGF0YVNvdXJjZSc7XG5pbXBvcnQgeyBDYWxsaW5nRXh0ZW5zaW9uRGVjb3JhdG9yIH0gZnJvbSAnLi9DYWxsaW5nRXh0ZW5zaW9uRGVjb3JhdG9yJztcblxuZXhwb3J0IGNsYXNzIENhbGxpbmdFeHRlbnNpb24gaW1wbGVtZW50cyBFeHRlbnNpb25zRGF0YVNvdXJjZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICB9XG5cbiAgLy8gb3ZlcnJpZGUgZW5hYmxlIG1ldGhvZCBmcm9tIEV4dGVuc2lvbnNEYXRhU291cmNlIGludGVyZmFjZVxuICBlbmFibGUoKTogdm9pZCB7XG4gICAgQ2hhdENvbmZpZ3VyYXRvci5lbmFibGUoKGRhdGFTb3VyY2U6IERhdGFTb3VyY2UpID0+XG4gICAgICBuZXcgQ2FsbGluZ0V4dGVuc2lvbkRlY29yYXRvcihkYXRhU291cmNlKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,114 @@
1
+ import { CometChat } from "@cometchat-pro/chat";
2
+ import { CometChatUIKitConstants, CometChatMessageTemplate, localize } from "@cometchat/uikit-resources";
3
+ import { CallingDetailsUtils } from "@cometchat/uikit-shared";
4
+ import { ChatConfigurator } from "../Shared/Framework/ChatConfigurator";
5
+ import { DataSourceDecorator } from "../Shared/Framework/DataSourceDecorator";
6
+ export class CallingExtensionDecorator extends DataSourceDecorator {
7
+ constructor(dataSource) {
8
+ super(dataSource);
9
+ this.onLogout();
10
+ }
11
+ // end active call when user logs out
12
+ onLogout() {
13
+ var listenerID = "logout_listener";
14
+ CometChat.addLoginListener(listenerID, new CometChat.LoginListener({
15
+ logoutSuccess: () => {
16
+ let call = CometChat.getActiveCall();
17
+ if (call) {
18
+ CometChat.endCall(call.getSessionId());
19
+ }
20
+ else {
21
+ return;
22
+ }
23
+ },
24
+ logoutFailure: (error) => {
25
+ console.log("LoginListener :: logoutFailure", error);
26
+ }
27
+ }));
28
+ }
29
+ getAllMessageTypes() {
30
+ const types = super.getAllMessageTypes();
31
+ if (!types.includes(CometChatUIKitConstants.calls.meeting)) {
32
+ types.push(CometChatUIKitConstants.calls.meeting);
33
+ }
34
+ if (!types.includes(CometChatUIKitConstants.MessageTypes.audio)) {
35
+ types.push(CometChatUIKitConstants.MessageTypes.audio);
36
+ }
37
+ if (!types.includes(CometChatUIKitConstants.MessageTypes.video)) {
38
+ types.push(CometChatUIKitConstants.MessageTypes.video);
39
+ }
40
+ return types;
41
+ }
42
+ getId() {
43
+ return "calling";
44
+ }
45
+ getAllMessageCategories() {
46
+ const categories = super.getAllMessageCategories();
47
+ if (!categories.includes(CometChatUIKitConstants.MessageCategory.call)) {
48
+ categories.push(CometChatUIKitConstants.MessageCategory.call);
49
+ }
50
+ if (!categories.includes(CometChatUIKitConstants.MessageCategory.custom)) {
51
+ categories.push(CometChatUIKitConstants.MessageCategory.custom);
52
+ }
53
+ return categories;
54
+ }
55
+ checkIfTemplateTypeExist(template, type) {
56
+ return template.some(obj => obj.type === type);
57
+ }
58
+ checkIfTemplateCategoryExist(template, category) {
59
+ return template.some(obj => obj.category === category);
60
+ }
61
+ getAllMessageTemplates() {
62
+ const templates = super.getAllMessageTemplates();
63
+ if (!this.checkIfTemplateTypeExist(templates, CometChatUIKitConstants.calls.meeting)) {
64
+ templates.push(this.getDirectCallTemplate());
65
+ }
66
+ if (!this.checkIfTemplateCategoryExist(templates, CometChatUIKitConstants.MessageCategory.call)) {
67
+ templates.push(...this.getDefaultCallTemplate());
68
+ }
69
+ return templates;
70
+ }
71
+ getDirectCallTemplate() {
72
+ return new CometChatMessageTemplate({
73
+ type: CometChatUIKitConstants.calls.meeting,
74
+ category: CometChatUIKitConstants.MessageCategory.custom,
75
+ options: (loggedInUser, messageObject, theme, group) => {
76
+ return ChatConfigurator.getDataSource().getCommonOptions(loggedInUser, messageObject, theme, group);
77
+ }
78
+ });
79
+ }
80
+ getDefaultCallTemplate() {
81
+ let templates = [
82
+ new CometChatMessageTemplate({
83
+ type: CometChatUIKitConstants.MessageTypes.audio,
84
+ category: CometChatUIKitConstants.MessageCategory.call,
85
+ }),
86
+ new CometChatMessageTemplate({
87
+ type: CometChatUIKitConstants.MessageTypes.video,
88
+ category: CometChatUIKitConstants.MessageCategory.call,
89
+ })
90
+ ];
91
+ return templates;
92
+ }
93
+ getLastConversationMessage(conversation, loggedInUser) {
94
+ let actionMessage = "";
95
+ if (conversation.getLastMessage() && conversation.getLastMessage().category == CometChatUIKitConstants.MessageCategory.call) {
96
+ let call = conversation.getLastMessage();
97
+ actionMessage = CallingDetailsUtils.getCallStatus(call, loggedInUser);
98
+ }
99
+ else if (conversation.getLastMessage() && conversation.getLastMessage().type == CometChatUIKitConstants.calls.meeting) {
100
+ let message = conversation.getLastMessage();
101
+ if (!message.getSender() || message.getSender().getUid() == loggedInUser.getUid()) {
102
+ actionMessage = localize("YOU_INITIATED_GROUP_CALL");
103
+ }
104
+ else {
105
+ actionMessage = `${message.getSender().getName()} ${localize("INITIATED_GROUP_CALL")}`;
106
+ }
107
+ }
108
+ else {
109
+ actionMessage = super.getLastConversationMessage(conversation, loggedInUser);
110
+ }
111
+ return actionMessage;
112
+ }
113
+ }
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FsbGluZ0V4dGVuc2lvbkRlY29yYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NoYXQtdWlraXQtYW5ndWxhci9zcmMvQ2FsbHMvQ2FsbGluZ0V4dGVuc2lvbkRlY29yYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLHdCQUF3QixFQUFrRCxRQUFRLEVBQWMsTUFBTSw0QkFBNEIsQ0FBQztBQUNySyxPQUFPLEVBQUUsbUJBQW1CLEVBQXNFLE1BQU0seUJBQXlCLENBQUM7QUFDbEksT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFeEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFHOUUsTUFBTSxPQUFPLHlCQUEwQixTQUFRLG1CQUFtQjtJQUM5RCxZQUFZLFVBQXNCO1FBQzlCLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDbEIsQ0FBQztJQUNELHFDQUFxQztJQUNyQyxRQUFRO1FBQ04sSUFBSSxVQUFVLEdBQVcsaUJBQWlCLENBQUM7UUFDM0MsU0FBUyxDQUFDLGdCQUFnQixDQUMxQixVQUFVLEVBQ1YsSUFBSSxTQUFTLENBQUMsYUFBYSxDQUFDO1lBQzFCLGFBQWEsRUFBRSxHQUFHLEVBQUU7Z0JBQ25CLElBQUksSUFBSSxHQUFtQixTQUFTLENBQUMsYUFBYSxFQUFFLENBQUE7Z0JBQ2pELElBQUcsSUFBSSxFQUFDO29CQUNOLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUE7aUJBRXZDO3FCQUNHO29CQUNGLE9BQU07aUJBQ1A7WUFDTCxDQUFDO1lBQ0QsYUFBYSxFQUFFLENBQUMsS0FBbUMsRUFBRSxFQUFFO2dCQUNuRCxPQUFPLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3pELENBQUM7U0FDSixDQUFDLENBQ0wsQ0FBQztJQUNFLENBQUM7SUFDUSxrQkFBa0I7UUFDdkIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUUsdUJBQXVCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3pELEtBQUssQ0FBQyxJQUFJLENBQUUsdUJBQXVCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3REO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsdUJBQXVCLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzdELEtBQUssQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzFEO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsdUJBQXVCLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzdELEtBQUssQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzFEO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUNRLEtBQUs7UUFDVixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ00sdUJBQXVCO1FBQzVCLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQ25ELElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNwRSxVQUFVLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNqRTtRQUNELElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN0RSxVQUFVLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNuRTtRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFDRCx3QkFBd0IsQ0FBQyxRQUFtQyxFQUFFLElBQVc7UUFDckUsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQTtJQUNoRCxDQUFDO0lBQ0QsNEJBQTRCLENBQUMsUUFBbUMsRUFBRSxRQUFlO1FBQy9FLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUE7SUFDeEQsQ0FBQztJQUNNLHNCQUFzQjtRQUMzQixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUNqRCxJQUFHLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFNBQVMsRUFBRSx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUM7WUFDL0UsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFBO1NBQzdDO1FBQ0QsSUFBRyxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxTQUFTLEVBQUMsdUJBQXVCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFDO1lBQzdGLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFBO1NBQ2pEO1FBQ0UsT0FBTyxTQUFTLENBQUE7SUFFekIsQ0FBQztJQUNELHFCQUFxQjtRQUNyQixPQUFPLElBQUksd0JBQXdCLENBQUM7WUFDbEMsSUFBSSxFQUFFLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxPQUFPO1lBQzNDLFFBQVEsRUFBQyx1QkFBdUIsQ0FBQyxlQUFlLENBQUMsTUFBTTtZQUN2RCxPQUFPLEVBQUUsQ0FBQyxZQUE0QixFQUFFLGFBQW9DLEVBQUUsS0FBcUIsRUFBRSxLQUF1QixFQUFDLEVBQUU7Z0JBQzdILE9BQU8sZ0JBQWdCLENBQUMsYUFBYSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUE7WUFDcEcsQ0FBQztTQUNILENBQUMsQ0FBQTtJQUNGLENBQUM7SUFDRCxzQkFBc0I7UUFDcEIsSUFBSSxTQUFTLEdBQThCO1lBQ3pDLElBQUksd0JBQXdCLENBQUM7Z0JBQ3pCLElBQUksRUFBQyx1QkFBdUIsQ0FBQyxZQUFZLENBQUMsS0FBSztnQkFDL0MsUUFBUSxFQUFDLHVCQUF1QixDQUFDLGVBQWUsQ0FBQyxJQUFJO2FBQ3RELENBQUM7WUFDRixJQUFJLHdCQUF3QixDQUFDO2dCQUMzQixJQUFJLEVBQUMsdUJBQXVCLENBQUMsWUFBWSxDQUFDLEtBQUs7Z0JBQy9DLFFBQVEsRUFBQyx1QkFBdUIsQ0FBQyxlQUFlLENBQUMsSUFBSTthQUN0RCxDQUFDO1NBRUwsQ0FBQTtRQUNELE9BQU8sU0FBUyxDQUFBO0lBQ2xCLENBQUM7SUFDYywwQkFBMEIsQ0FBQyxZQUFvQyxFQUFFLFlBQTRCO1FBQzNHLElBQUksYUFBYSxHQUFVLEVBQUUsQ0FBQztRQUUvQixJQUFHLFlBQVksQ0FBQyxjQUFjLEVBQUUsSUFBSSxZQUFZLENBQUMsY0FBYyxFQUFFLENBQUMsUUFBUSxJQUFJLHVCQUF1QixDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUM7WUFDekgsSUFBSSxJQUFJLEdBQWlCLFlBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUV2RCxhQUFhLEdBQUcsbUJBQW1CLENBQUMsYUFBYSxDQUFDLElBQUksRUFBQyxZQUFZLENBQUMsQ0FBQTtTQUNyRTthQUNJLElBQUksWUFBWSxDQUFDLGNBQWMsRUFBRSxJQUFJLFlBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLElBQUssdUJBQXVCLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBQztZQUNySCxJQUFJLE9BQU8sR0FBMkIsWUFBWSxDQUFDLGNBQWMsRUFBRSxDQUFBO1lBQ25FLElBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUUsRUFBQztnQkFDL0UsYUFBYSxHQUFHLFFBQVEsQ0FBQywwQkFBMEIsQ0FBQyxDQUFBO2FBQ3JEO2lCQUNJO2dCQUNILGFBQWEsR0FBRyxHQUFHLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxRQUFRLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFBO2FBQ3hGO1NBRUY7YUFDRztZQUNGLGFBQWEsR0FBRyxLQUFLLENBQUMsMEJBQTBCLENBQUMsWUFBWSxFQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzdFO1FBQ0QsT0FBTyxhQUFhLENBQUE7SUFFckIsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tZXRDaGF0IH0gZnJvbSBcIkBjb21ldGNoYXQtcHJvL2NoYXRcIjtcbmltcG9ydCB7IENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLCBDb21ldENoYXRNZXNzYWdlVGVtcGxhdGUsIENvbWV0Q2hhdFRoZW1lLCBDb21ldENoYXRNZXNzYWdlQ29tcG9zZXJBY3Rpb24sIGxvY2FsaXplLCBmb250SGVscGVyIH0gZnJvbSBcIkBjb21ldGNoYXQvdWlraXQtcmVzb3VyY2VzXCI7XG5pbXBvcnQgeyBDYWxsaW5nRGV0YWlsc1V0aWxzLCBDb2xsYWJvcmF0aXZlRG9jdW1lbnRDb25maWd1cmF0aW9uLCBDb2xsYWJvcmF0aXZlRG9jdW1lbnRDb25zdGFudHMgfSBmcm9tIFwiQGNvbWV0Y2hhdC91aWtpdC1zaGFyZWRcIjtcbmltcG9ydCB7IENoYXRDb25maWd1cmF0b3IgfSBmcm9tIFwiLi4vU2hhcmVkL0ZyYW1ld29yay9DaGF0Q29uZmlndXJhdG9yXCI7XG5pbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSBcIi4uL1NoYXJlZC9GcmFtZXdvcmsvRGF0YVNvdXJjZVwiO1xuaW1wb3J0IHsgRGF0YVNvdXJjZURlY29yYXRvciB9IGZyb20gXCIuLi9TaGFyZWQvRnJhbWV3b3JrL0RhdGFTb3VyY2VEZWNvcmF0b3JcIjtcbmltcG9ydCB7ICB9IGZyb20gXCJAY29tZXRjaGF0L3Vpa2l0LXNoYXJlZFwiO1xuXG5leHBvcnQgY2xhc3MgQ2FsbGluZ0V4dGVuc2lvbkRlY29yYXRvciBleHRlbmRzIERhdGFTb3VyY2VEZWNvcmF0b3Ige1xuICAgIGNvbnN0cnVjdG9yKGRhdGFTb3VyY2U6IERhdGFTb3VyY2UpIHtcbiAgICAgICAgc3VwZXIoZGF0YVNvdXJjZSk7XG4gICAgICAgdGhpcy5vbkxvZ291dCgpXG4gICAgfVxuICAgIC8vIGVuZCBhY3RpdmUgY2FsbCB3aGVuIHVzZXIgbG9ncyBvdXRcbiAgICBvbkxvZ291dCgpe1xuICAgICAgdmFyIGxpc3RlbmVySUQ6IHN0cmluZyA9IFwibG9nb3V0X2xpc3RlbmVyXCI7XG4gICAgICBDb21ldENoYXQuYWRkTG9naW5MaXN0ZW5lcihcbiAgICAgIGxpc3RlbmVySUQsXG4gICAgICBuZXcgQ29tZXRDaGF0LkxvZ2luTGlzdGVuZXIoe1xuICAgICAgICBsb2dvdXRTdWNjZXNzOiAoKSA9PiB7XG4gICAgICAgICBsZXQgY2FsbDpDb21ldENoYXQuQ2FsbCA9ICBDb21ldENoYXQuZ2V0QWN0aXZlQ2FsbCgpXG4gICAgICAgICAgICBpZihjYWxsKXtcbiAgICAgICAgICAgICAgQ29tZXRDaGF0LmVuZENhbGwoY2FsbC5nZXRTZXNzaW9uSWQoKSlcblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZXtcbiAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGxvZ291dEZhaWx1cmU6IChlcnJvcjogQ29tZXRDaGF0LkNvbWV0Q2hhdEV4Y2VwdGlvbikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJMb2dpbkxpc3RlbmVyIDo6IGxvZ291dEZhaWx1cmVcIiwgZXJyb3IpO1xuICAgICAgICB9XG4gICAgfSlcbik7XG4gICAgfVxuICAgIG92ZXJyaWRlIGdldEFsbE1lc3NhZ2VUeXBlcygpOiBzdHJpbmdbXSB7XG4gICAgICAgIGNvbnN0IHR5cGVzID0gc3VwZXIuZ2V0QWxsTWVzc2FnZVR5cGVzKCk7XG4gICAgICAgIGlmICghdHlwZXMuaW5jbHVkZXMoIENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLmNhbGxzLm1lZXRpbmcpKSB7XG4gICAgICAgICAgICB0eXBlcy5wdXNoKCBDb21ldENoYXRVSUtpdENvbnN0YW50cy5jYWxscy5tZWV0aW5nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXR5cGVzLmluY2x1ZGVzKENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VUeXBlcy5hdWRpbykpIHtcbiAgICAgICAgICAgIHR5cGVzLnB1c2goQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuTWVzc2FnZVR5cGVzLmF1ZGlvKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXR5cGVzLmluY2x1ZGVzKENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VUeXBlcy52aWRlbykpIHtcbiAgICAgICAgICAgIHR5cGVzLnB1c2goQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuTWVzc2FnZVR5cGVzLnZpZGVvKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHlwZXM7XG4gICAgfVxuICAgIG92ZXJyaWRlIGdldElkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBcImNhbGxpbmdcIjtcbiAgICAgIH1cbiAgICBvdmVycmlkZSBnZXRBbGxNZXNzYWdlQ2F0ZWdvcmllcygpOiBzdHJpbmdbXSB7XG4gICAgICAgIGNvbnN0IGNhdGVnb3JpZXMgPSBzdXBlci5nZXRBbGxNZXNzYWdlQ2F0ZWdvcmllcygpO1xuICAgICAgICBpZiAoIWNhdGVnb3JpZXMuaW5jbHVkZXMoQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuTWVzc2FnZUNhdGVnb3J5LmNhbGwpKSB7XG4gICAgICAgICAgICBjYXRlZ29yaWVzLnB1c2goQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuTWVzc2FnZUNhdGVnb3J5LmNhbGwpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY2F0ZWdvcmllcy5pbmNsdWRlcyhDb21ldENoYXRVSUtpdENvbnN0YW50cy5NZXNzYWdlQ2F0ZWdvcnkuY3VzdG9tKSkge1xuICAgICAgICAgICAgY2F0ZWdvcmllcy5wdXNoKENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VDYXRlZ29yeS5jdXN0b20pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjYXRlZ29yaWVzO1xuICAgIH1cbiAgICBjaGVja0lmVGVtcGxhdGVUeXBlRXhpc3QodGVtcGxhdGU6Q29tZXRDaGF0TWVzc2FnZVRlbXBsYXRlW10sIHR5cGU6c3RyaW5nKTpib29sZWFue1xuICAgICAgICByZXR1cm4gdGVtcGxhdGUuc29tZShvYmogPT4gb2JqLnR5cGUgPT09IHR5cGUpXG4gICAgICB9XG4gICAgICBjaGVja0lmVGVtcGxhdGVDYXRlZ29yeUV4aXN0KHRlbXBsYXRlOkNvbWV0Q2hhdE1lc3NhZ2VUZW1wbGF0ZVtdLCBjYXRlZ29yeTpzdHJpbmcpOmJvb2xlYW57XG4gICAgICAgIHJldHVybiB0ZW1wbGF0ZS5zb21lKG9iaiA9PiBvYmouY2F0ZWdvcnkgPT09IGNhdGVnb3J5KVxuICAgICAgfVxuICAgIG92ZXJyaWRlIGdldEFsbE1lc3NhZ2VUZW1wbGF0ZXMoKTogQ29tZXRDaGF0TWVzc2FnZVRlbXBsYXRlW10ge1xuICAgICAgICBjb25zdCB0ZW1wbGF0ZXMgPSBzdXBlci5nZXRBbGxNZXNzYWdlVGVtcGxhdGVzKCk7XG4gICAgICAgIGlmKCF0aGlzLmNoZWNrSWZUZW1wbGF0ZVR5cGVFeGlzdCh0ZW1wbGF0ZXMsIENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLmNhbGxzLm1lZXRpbmcpKXtcbiAgICAgICAgICAgICB0ZW1wbGF0ZXMucHVzaCh0aGlzLmdldERpcmVjdENhbGxUZW1wbGF0ZSgpKVxuICAgICAgICAgICB9XG4gICAgICAgICAgIGlmKCF0aGlzLmNoZWNrSWZUZW1wbGF0ZUNhdGVnb3J5RXhpc3QodGVtcGxhdGVzLENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VDYXRlZ29yeS5jYWxsKSl7XG4gICAgICAgICAgICB0ZW1wbGF0ZXMucHVzaCguLi50aGlzLmdldERlZmF1bHRDYWxsVGVtcGxhdGUoKSlcbiAgICAgICAgICB9XG4gICAgICAgICAgICAgcmV0dXJuIHRlbXBsYXRlc1xuXG4gICAgfVxuICAgIGdldERpcmVjdENhbGxUZW1wbGF0ZSgpOkNvbWV0Q2hhdE1lc3NhZ2VUZW1wbGF0ZXtcbiAgICByZXR1cm4gbmV3IENvbWV0Q2hhdE1lc3NhZ2VUZW1wbGF0ZSh7XG4gICAgICB0eXBlOiBDb21ldENoYXRVSUtpdENvbnN0YW50cy5jYWxscy5tZWV0aW5nLFxuICAgICAgY2F0ZWdvcnk6Q29tZXRDaGF0VUlLaXRDb25zdGFudHMuTWVzc2FnZUNhdGVnb3J5LmN1c3RvbSxcbiAgICAgIG9wdGlvbnM6IChsb2dnZWRJblVzZXI6IENvbWV0Q2hhdC5Vc2VyLCBtZXNzYWdlT2JqZWN0OiBDb21ldENoYXQuQmFzZU1lc3NhZ2UsIHRoZW1lOiBDb21ldENoYXRUaGVtZSwgZ3JvdXA/OiBDb21ldENoYXQuR3JvdXApPT57XG4gICAgICAgIHJldHVybiBDaGF0Q29uZmlndXJhdG9yLmdldERhdGFTb3VyY2UoKS5nZXRDb21tb25PcHRpb25zKGxvZ2dlZEluVXNlciwgbWVzc2FnZU9iamVjdCwgdGhlbWUsIGdyb3VwKVxuICAgICAgIH1cbiAgICB9KVxuICAgIH1cbiAgICBnZXREZWZhdWx0Q2FsbFRlbXBsYXRlKCk6Q29tZXRDaGF0TWVzc2FnZVRlbXBsYXRlW117XG4gICAgICBsZXQgdGVtcGxhdGVzOkNvbWV0Q2hhdE1lc3NhZ2VUZW1wbGF0ZVtdID0gW1xuICAgICAgICBuZXcgQ29tZXRDaGF0TWVzc2FnZVRlbXBsYXRlKHtcbiAgICAgICAgICAgIHR5cGU6Q29tZXRDaGF0VUlLaXRDb25zdGFudHMuTWVzc2FnZVR5cGVzLmF1ZGlvICxcbiAgICAgICAgICAgIGNhdGVnb3J5OkNvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VDYXRlZ29yeS5jYWxsLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG5ldyBDb21ldENoYXRNZXNzYWdlVGVtcGxhdGUoe1xuICAgICAgICAgICAgdHlwZTpDb21ldENoYXRVSUtpdENvbnN0YW50cy5NZXNzYWdlVHlwZXMudmlkZW8sXG4gICAgICAgICAgICBjYXRlZ29yeTpDb21ldENoYXRVSUtpdENvbnN0YW50cy5NZXNzYWdlQ2F0ZWdvcnkuY2FsbCxcbiAgICAgICAgICB9KVxuXG4gICAgICBdXG4gICAgICByZXR1cm4gdGVtcGxhdGVzXG4gICAgfVxuICAgcHVibGljIG92ZXJyaWRlIGdldExhc3RDb252ZXJzYXRpb25NZXNzYWdlKGNvbnZlcnNhdGlvbjogQ29tZXRDaGF0LkNvbnZlcnNhdGlvbiwgbG9nZ2VkSW5Vc2VyOiBDb21ldENoYXQuVXNlcik6IHN0cmluZyB7XG4gICAgIGxldCBhY3Rpb25NZXNzYWdlOnN0cmluZyA9IFwiXCI7XG5cbiAgICBpZihjb252ZXJzYXRpb24uZ2V0TGFzdE1lc3NhZ2UoKSAmJiBjb252ZXJzYXRpb24uZ2V0TGFzdE1lc3NhZ2UoKS5jYXRlZ29yeSA9PSBDb21ldENoYXRVSUtpdENvbnN0YW50cy5NZXNzYWdlQ2F0ZWdvcnkuY2FsbCl7XG4gICAgICBsZXQgY2FsbDpDb21ldENoYXQuQ2FsbCA9Y29udmVyc2F0aW9uLmdldExhc3RNZXNzYWdlKCk7XG5cbiAgICAgIGFjdGlvbk1lc3NhZ2UgPSBDYWxsaW5nRGV0YWlsc1V0aWxzLmdldENhbGxTdGF0dXMoY2FsbCxsb2dnZWRJblVzZXIpXG4gICAgfVxuICAgIGVsc2UgaWYgKGNvbnZlcnNhdGlvbi5nZXRMYXN0TWVzc2FnZSgpICYmIGNvbnZlcnNhdGlvbi5nZXRMYXN0TWVzc2FnZSgpLnR5cGUgPT0gIENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLmNhbGxzLm1lZXRpbmcpe1xuICAgICAgbGV0IG1lc3NhZ2U6Q29tZXRDaGF0LkN1c3RvbU1lc3NhZ2UgPSBjb252ZXJzYXRpb24uZ2V0TGFzdE1lc3NhZ2UoKVxuICAgICAgaWYoIW1lc3NhZ2UuZ2V0U2VuZGVyKCkgfHwgbWVzc2FnZS5nZXRTZW5kZXIoKS5nZXRVaWQoKSA9PSBsb2dnZWRJblVzZXIuZ2V0VWlkKCkpe1xuICAgICAgICBhY3Rpb25NZXNzYWdlID0gbG9jYWxpemUoXCJZT1VfSU5JVElBVEVEX0dST1VQX0NBTExcIilcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBhY3Rpb25NZXNzYWdlID0gYCR7bWVzc2FnZS5nZXRTZW5kZXIoKS5nZXROYW1lKCl9ICAke2xvY2FsaXplKFwiSU5JVElBVEVEX0dST1VQX0NBTExcIil9YFxuICAgICAgfVxuXG4gICAgfVxuICAgIGVsc2V7XG4gICAgICBhY3Rpb25NZXNzYWdlID0gc3VwZXIuZ2V0TGFzdENvbnZlcnNhdGlvbk1lc3NhZ2UoY29udmVyc2F0aW9uLGxvZ2dlZEluVXNlcik7XG4gICAgfVxuICAgIHJldHVybiBhY3Rpb25NZXNzYWdlXG5cbiAgIH1cbn0iXX0=
@@ -0,0 +1,358 @@
1
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
+ import { CometChat } from '@cometchat-pro/chat';
3
+ import { localize, CometChatUIKitConstants, fontHelper, CometChatCallEvents, CometChatMessageEvents, MessageStatus, CometChatLocalize } from '@cometchat/uikit-resources';
4
+ import { CallButtonsStyle, CallscreenStyle, CometChatSoundManager, CometChatUIKitUtility } from '@cometchat/uikit-shared';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../../../CometChatTheme.service";
7
+ import * as i2 from "../../CometChatOngoingCall/cometchat-ongoing-call/cometchat-ongoing-call.component";
8
+ import * as i3 from "../../CometChatOutgoingCall/cometchat-outgoing-call/cometchat-outgoing-call.component";
9
+ import * as i4 from "@angular/common";
10
+ /**
11
+ *
12
+ * CometChatCallButtonsComponent is a component which shows buttons for audio and video call for 1v1 and group call.
13
+ *
14
+ * @version 1.0.0
15
+ * @author CometChatTeam
16
+ * @copyright © 2022 CometChat Inc.
17
+ *
18
+ */
19
+ export class CometChatCallButtonsComponent {
20
+ constructor(ref, themeService) {
21
+ this.ref = ref;
22
+ this.themeService = themeService;
23
+ this.voiceCallIconURL = "assets/Audio-Call2x.svg";
24
+ this.voiceCallIconText = localize("VOICE_CALL");
25
+ this.voiceCallIconHoverText = localize("VOICE_CALL");
26
+ this.videoCallIconURL = "assets/Video-call2x.svg";
27
+ this.videoCallIconText = localize("VIDEO_CALL");
28
+ this.videoCallIconHoverText = localize("VIDEO_CALL");
29
+ this.onError = (error) => {
30
+ console.log(error);
31
+ };
32
+ this.callButtonsStyle = {
33
+ width: "100%",
34
+ height: "100%",
35
+ border: "none",
36
+ borderRadius: "0",
37
+ background: "transparent"
38
+ };
39
+ this.disableButtons = false;
40
+ this.showOngoingCall = false;
41
+ this.sessionId = "";
42
+ this.callbuttonsListenerId = "callbuttons_" + new Date().getTime();
43
+ this.loggedInUser = null;
44
+ this.buttonStyle = {
45
+ height: "100%",
46
+ width: "100%",
47
+ display: "flex",
48
+ flexDirection: "column",
49
+ justifyContent: "center",
50
+ alignItems: "center",
51
+ };
52
+ this.voiceCallButtonStyle = {
53
+ buttonIconTint: "RGB(51, 153, 255)",
54
+ buttonTextFont: "400 12px Inter",
55
+ buttonTextColor: "RGB(51, 153, 255)",
56
+ padding: "8px 32px"
57
+ };
58
+ this.videoCallButtonStyle = {
59
+ buttonIconTint: "RGB(51, 153, 255)",
60
+ buttonTextFont: "400 12px Inter",
61
+ buttonTextColor: "RGB(51, 153, 255)",
62
+ padding: "8px 32px"
63
+ };
64
+ this.showOutgoingCallscreen = false;
65
+ this.outgoingCallStyle = {
66
+ width: "360px",
67
+ height: "581px",
68
+ titleTextFont: "700 22px Inter",
69
+ titleTextColor: "RGB(20, 20, 20)",
70
+ subtitleTextFont: "400 15px Inter",
71
+ subtitleTextColor: "RGBA(20, 20, 20, 0.58)",
72
+ borderRadius: "8px"
73
+ };
74
+ this.ongoingCallStyle = {};
75
+ this.activeCall = null;
76
+ this.cancelOutgoingCall = () => {
77
+ CometChatSoundManager.pause();
78
+ CometChat.rejectCall(this.call.getSessionId(), CometChatUIKitConstants.calls.cancelled)
79
+ .then((call) => {
80
+ this.disableButtons = false;
81
+ this.showOutgoingCallscreen = false;
82
+ CometChatCallEvents.ccCallRejected.next(call);
83
+ this.call = null;
84
+ this.ref.detectChanges();
85
+ })
86
+ .catch((error) => {
87
+ if (this.onError) {
88
+ this.onError(error);
89
+ }
90
+ });
91
+ this.showOutgoingCallscreen = false;
92
+ this.ref.detectChanges();
93
+ };
94
+ this.setOngoingCallStyle = () => {
95
+ let defaultStyle = new CallscreenStyle({
96
+ maxHeight: "100%",
97
+ maxWidth: "100%",
98
+ border: "none",
99
+ borderRadius: "0",
100
+ background: "#1c2226",
101
+ minHeight: "400px",
102
+ minWidth: "400px",
103
+ minimizeIconTint: this.themeService.theme.palette.getAccent900(),
104
+ maximizeIconTint: this.themeService.theme.palette.getAccent900(),
105
+ });
106
+ this.ongoingCallStyle = { ...defaultStyle, ...this.ongoingCallStyle };
107
+ };
108
+ this.wrapperStyle = () => {
109
+ return {
110
+ height: this.callButtonsStyle.height,
111
+ width: this.callButtonsStyle.width,
112
+ background: this.callButtonsStyle.background,
113
+ border: this.callButtonsStyle.border,
114
+ borderRadius: this.callButtonsStyle.borderRadius
115
+ };
116
+ };
117
+ }
118
+ ngOnInit() {
119
+ CometChat.getLoggedinUser().then((user) => {
120
+ this.loggedInUser = user;
121
+ }).catch((error) => {
122
+ if (this.onError) {
123
+ this.onError(error);
124
+ }
125
+ });
126
+ this.setThemeStyle();
127
+ this.attachListeners();
128
+ this.subscribeToEvents();
129
+ }
130
+ ngOnDestroy() {
131
+ this.removeListener();
132
+ this.unsubscribeToEvents();
133
+ }
134
+ getCallBuilder() {
135
+ let audioOnlyCall = this.activeCall?.getType() == CometChatUIKitConstants.MessageTypes.audio ? true : false;
136
+ if (this.activeCall?.getType() == CometChatUIKitConstants.calls.meeting) {
137
+ return undefined;
138
+ }
139
+ return new CometChat.CallSettingsBuilder()
140
+ .setSessionID(this.sessionId)
141
+ .enableDefaultLayout(true)
142
+ .setIsAudioOnlyCall(audioOnlyCall)
143
+ .setMode(CometChat.CALL_MODE.DEFAULT)
144
+ .setLocalizedStringObject(CometChatLocalize.getLocale());
145
+ }
146
+ openOngoingCallScreen(call) {
147
+ this.showOutgoingCallscreen = false;
148
+ this.activeCall = call;
149
+ this.sessionId = call.getSessionId();
150
+ this.showOngoingCall = true;
151
+ this.ref.detectChanges();
152
+ }
153
+ initiateCall(type) {
154
+ const receiverType = this.user ? CometChatUIKitConstants.MessageReceiverType.user : CometChatUIKitConstants.MessageReceiverType.group;
155
+ const receiverId = this.user ? this.user.getUid() : this.group.getGuid();
156
+ const call = new CometChat.Call(receiverId, type, receiverType);
157
+ CometChat.initiateCall(call)
158
+ .then((outgoingCall) => {
159
+ //when this component is part of chat widget trigger an event.. (outgoingcall component is used separately in chat widget)
160
+ this.call = outgoingCall;
161
+ this.showOutgoingCallscreen = true;
162
+ this.ref.detectChanges();
163
+ CometChatCallEvents.ccOutgoingCall.next(outgoingCall);
164
+ })
165
+ .catch((error) => {
166
+ if (this.onError) {
167
+ this.onError(error);
168
+ }
169
+ });
170
+ }
171
+ initiateAudioCall() {
172
+ if (this.user) {
173
+ this.initiateCall(CometChatUIKitConstants.MessageTypes.audio);
174
+ }
175
+ }
176
+ initiateVideoCall() {
177
+ if (this.user) {
178
+ this.initiateCall(CometChatUIKitConstants.MessageTypes.video);
179
+ }
180
+ else {
181
+ this.sessionId = this.group.getGuid();
182
+ this.sendCustomMessage();
183
+ this.showOngoingCall = true;
184
+ this.ref.detectChanges();
185
+ }
186
+ }
187
+ sendCustomMessage() {
188
+ const receiverType = this.user ? CometChatUIKitConstants.MessageReceiverType.user : CometChatUIKitConstants.MessageReceiverType.group;
189
+ const receiverId = this.user ? this.user.getUid() : this.group.getGuid();
190
+ const customData = { "sessionID": this.sessionId, "sessionId": this.sessionId, "callType": CometChat.CALL_TYPE.VIDEO };
191
+ const customType = CometChatUIKitConstants.calls.meeting;
192
+ const conversationId = `group_${this.sessionId}`;
193
+ const customMessage = new CometChat.CustomMessage(receiverId, receiverType, customType, customData);
194
+ customMessage.setSender(this.loggedInUser);
195
+ customMessage.setMetadata({ incrementUnreadCount: true });
196
+ customMessage.setReceiver(receiverType);
197
+ customMessage.setConversationId(conversationId);
198
+ customMessage.sentAt = CometChatUIKitUtility.getUnixTimestamp();
199
+ customMessage.muid = CometChatUIKitUtility.ID();
200
+ // custom message
201
+ CometChatMessageEvents.ccMessageSent.next({
202
+ message: customMessage,
203
+ status: MessageStatus.inprogress
204
+ });
205
+ CometChat.sendCustomMessage(customMessage).then((msg) => {
206
+ CometChatMessageEvents.ccMessageSent.next({
207
+ message: msg,
208
+ status: MessageStatus.success
209
+ });
210
+ })
211
+ .catch((error) => {
212
+ if (this.onError) {
213
+ this.onError(error);
214
+ }
215
+ });
216
+ }
217
+ getVoiceCallButtonStyle(disableButtons) {
218
+ const buttonIconTint = disableButtons
219
+ ? this.themeService.theme.palette.getAccent600()
220
+ : this.callButtonsStyle.voiceCallIconTint;
221
+ return {
222
+ ...this.videoCallButtonStyle,
223
+ buttonIconTint,
224
+ };
225
+ }
226
+ getVideoCallButtonStyle(disableButtons) {
227
+ const buttonIconTint = disableButtons
228
+ ? this.themeService.theme.palette.getAccent600()
229
+ : this.callButtonsStyle.videoCallIconTint;
230
+ return {
231
+ ...this.videoCallButtonStyle,
232
+ buttonIconTint,
233
+ };
234
+ }
235
+ attachListeners() {
236
+ CometChat.addCallListener(this.callbuttonsListenerId, new CometChat.CallListener({
237
+ onIncomingCallReceived: (call) => {
238
+ this.disableButtons = true;
239
+ this.ref.detectChanges();
240
+ },
241
+ onIncomingCallCancelled: (call) => {
242
+ this.disableButtons = false;
243
+ this.ref.detectChanges();
244
+ },
245
+ onOutgoingCallRejected: (call) => {
246
+ this.disableButtons = false;
247
+ this.call = null;
248
+ this.showOutgoingCallscreen = false;
249
+ this.ref.detectChanges();
250
+ },
251
+ onOutgoingCallAccepted: (call) => {
252
+ this.openOngoingCallScreen(call);
253
+ },
254
+ }));
255
+ }
256
+ removeListener() {
257
+ CometChat.removeCallListener(this.callbuttonsListenerId);
258
+ }
259
+ subscribeToEvents() {
260
+ this.ccCallRejected = CometChatCallEvents.ccCallRejected.subscribe((call) => {
261
+ this.disableButtons = false;
262
+ this.ref.detectChanges();
263
+ });
264
+ this.ccOutgoingCall = CometChatCallEvents.ccOutgoingCall.subscribe((call) => {
265
+ this.disableButtons = true;
266
+ this.ref.detectChanges();
267
+ });
268
+ this.ccCallEnded = CometChatCallEvents.ccCallEnded.subscribe((call) => {
269
+ this.disableButtons = false;
270
+ this.ref.detectChanges();
271
+ this.activeCall = null;
272
+ this.showOngoingCall = false;
273
+ this.sessionId = "";
274
+ this.showOutgoingCallscreen = false;
275
+ this.ref.detectChanges();
276
+ });
277
+ }
278
+ unsubscribeToEvents() {
279
+ this.ccCallRejected?.unsubscribe();
280
+ this.ccOutgoingCall?.unsubscribe();
281
+ this.ccCallEnded?.unsubscribe();
282
+ }
283
+ setThemeStyle() {
284
+ this.setcallButtonsStyle();
285
+ this.setOngoingCallStyle();
286
+ }
287
+ setcallButtonsStyle() {
288
+ let defaultStyle = new CallButtonsStyle({
289
+ width: "100%",
290
+ height: "100%",
291
+ background: "transparent",
292
+ border: "none",
293
+ borderRadius: "0",
294
+ voiceCallIconTint: this.themeService.theme.palette.getPrimary(),
295
+ videoCallIconTint: this.themeService.theme.palette.getPrimary(),
296
+ voiceCallIconTextFont: fontHelper(this.themeService.theme.typography.caption1),
297
+ videoCallIconTextFont: fontHelper(this.themeService.theme.typography.caption1),
298
+ voiceCallIconTextColor: this.themeService.theme.palette.getPrimary(),
299
+ videoCallIconTextColor: this.themeService.theme.palette.getPrimary(),
300
+ buttonPadding: "8px 32px",
301
+ buttonBackground: this.themeService.theme.palette.getAccent100(),
302
+ buttonBorder: "0",
303
+ buttonBorderRadius: "8px"
304
+ });
305
+ this.callButtonsStyle = { ...defaultStyle, ...this.callButtonsStyle };
306
+ this.voiceCallButtonStyle = {
307
+ buttonIconTint: this.disableButtons ? this.themeService.theme.palette.getAccent600() : this.callButtonsStyle.voiceCallIconTint,
308
+ buttonTextFont: this.callButtonsStyle.voiceCallIconTextFont,
309
+ buttonTextColor: this.callButtonsStyle.voiceCallIconTextColor,
310
+ padding: this.callButtonsStyle.buttonPadding,
311
+ background: this.callButtonsStyle.buttonBackground,
312
+ border: this.callButtonsStyle.border,
313
+ borderRadius: this.callButtonsStyle.buttonBorderRadius,
314
+ ...this.buttonStyle
315
+ };
316
+ this.videoCallButtonStyle = {
317
+ buttonIconTint: this.disableButtons ? this.themeService.theme.palette.getAccent600() : this.callButtonsStyle.videoCallIconTint,
318
+ buttonTextFont: this.callButtonsStyle.videoCallIconTextFont,
319
+ buttonTextColor: this.callButtonsStyle.videoCallIconTextColor,
320
+ padding: this.callButtonsStyle.buttonPadding,
321
+ background: this.callButtonsStyle.buttonBackground,
322
+ border: this.callButtonsStyle.border,
323
+ borderRadius: this.callButtonsStyle.buttonBorderRadius,
324
+ ...this.buttonStyle
325
+ };
326
+ }
327
+ }
328
+ CometChatCallButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatCallButtonsComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.CometChatThemeService }], target: i0.ɵɵFactoryTarget.Component });
329
+ CometChatCallButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: CometChatCallButtonsComponent, selector: "cometchat-call-buttons", inputs: { user: "user", group: "group", voiceCallIconURL: "voiceCallIconURL", voiceCallIconText: "voiceCallIconText", voiceCallIconHoverText: "voiceCallIconHoverText", videoCallIconURL: "videoCallIconURL", videoCallIconText: "videoCallIconText", videoCallIconHoverText: "videoCallIconHoverText", onVoiceCallClick: "onVoiceCallClick", onVideoCallClick: "onVideoCallClick", onError: "onError", callButtonsStyle: "callButtonsStyle" }, ngImport: i0, template: "<div class=\"cc-call-buttons__wrapper\" [ngStyle]=\"wrapperStyle()\">\n<div class=\"cc-call-buttons-buttons\">\n<cometchat-button [disabled]=\"disableButtons ? true : false\" *ngIf=\"user\" (cc-button-clicked)=\"initiateAudioCall()\" [buttonStyle]=\"getVoiceCallButtonStyle(disableButtons)\" [text]=\"voiceCallIconText\" [hoverText]=\"voiceCallIconHoverText\" [iconURL]=\"voiceCallIconURL\"></cometchat-button>\n<cometchat-button [disabled]=\"disableButtons ? true : false\" *ngIf=\"user || group\" (cc-button-clicked)=\"initiateVideoCall()\" [buttonStyle]=\"getVideoCallButtonStyle(disableButtons)\" [text]=\"videoCallIconText\" [hoverText]=\"videoCallIconHoverText\" [iconURL]=\"videoCallIconURL\"></cometchat-button>\n</div>\n</div>\n<cometchat-ongoing-call *ngIf=\"showOngoingCall\" [ongoingCallStyle]=\"ongoingCallStyle\" [sessionID]=\"sessionId\" [callSettingsBuilder]=\"getCallBuilder()!\"></cometchat-ongoing-call>\n<cometchat-backdrop *ngIf=\"showOutgoingCallscreen\">\n<cometchat-outgoing-call [onCloseClicked]=\"cancelOutgoingCall\" [outgoingCallStyle]=\"outgoingCallStyle\" [call]=\"call!\"></cometchat-outgoing-call>\n</cometchat-backdrop>", styles: [".cc-call-buttons__wrapper{height:100%;width:100%}.cc-call-buttons-buttons{display:flex;gap:8px}\n"], components: [{ type: i2.CometChatOngoingCallComponent, selector: "cometchat-ongoing-call", inputs: ["ongoingCallStyle", "resizeIconHoverText", "sessionID", "minimizeIconURL", "maximizeIconURL", "callSettingsBuilder"] }, { type: i3.CometChatOutgoingCallComponent, selector: "cometchat-outgoing-call", inputs: ["call", "declineButtonText", "declineButtonIconURL", "customView", "onError", "disableSoundForCalls", "customSoundForCalls", "avatarStyle", "outgoingCallStyle", "onCloseClicked"] }], directives: [{ type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
330
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatCallButtonsComponent, decorators: [{
331
+ type: Component,
332
+ args: [{ selector: "cometchat-call-buttons", changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"cc-call-buttons__wrapper\" [ngStyle]=\"wrapperStyle()\">\n<div class=\"cc-call-buttons-buttons\">\n<cometchat-button [disabled]=\"disableButtons ? true : false\" *ngIf=\"user\" (cc-button-clicked)=\"initiateAudioCall()\" [buttonStyle]=\"getVoiceCallButtonStyle(disableButtons)\" [text]=\"voiceCallIconText\" [hoverText]=\"voiceCallIconHoverText\" [iconURL]=\"voiceCallIconURL\"></cometchat-button>\n<cometchat-button [disabled]=\"disableButtons ? true : false\" *ngIf=\"user || group\" (cc-button-clicked)=\"initiateVideoCall()\" [buttonStyle]=\"getVideoCallButtonStyle(disableButtons)\" [text]=\"videoCallIconText\" [hoverText]=\"videoCallIconHoverText\" [iconURL]=\"videoCallIconURL\"></cometchat-button>\n</div>\n</div>\n<cometchat-ongoing-call *ngIf=\"showOngoingCall\" [ongoingCallStyle]=\"ongoingCallStyle\" [sessionID]=\"sessionId\" [callSettingsBuilder]=\"getCallBuilder()!\"></cometchat-ongoing-call>\n<cometchat-backdrop *ngIf=\"showOutgoingCallscreen\">\n<cometchat-outgoing-call [onCloseClicked]=\"cancelOutgoingCall\" [outgoingCallStyle]=\"outgoingCallStyle\" [call]=\"call!\"></cometchat-outgoing-call>\n</cometchat-backdrop>", styles: [".cc-call-buttons__wrapper{height:100%;width:100%}.cc-call-buttons-buttons{display:flex;gap:8px}\n"] }]
333
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.CometChatThemeService }]; }, propDecorators: { user: [{
334
+ type: Input
335
+ }], group: [{
336
+ type: Input
337
+ }], voiceCallIconURL: [{
338
+ type: Input
339
+ }], voiceCallIconText: [{
340
+ type: Input
341
+ }], voiceCallIconHoverText: [{
342
+ type: Input
343
+ }], videoCallIconURL: [{
344
+ type: Input
345
+ }], videoCallIconText: [{
346
+ type: Input
347
+ }], videoCallIconHoverText: [{
348
+ type: Input
349
+ }], onVoiceCallClick: [{
350
+ type: Input
351
+ }], onVideoCallClick: [{
352
+ type: Input
353
+ }], onError: [{
354
+ type: Input
355
+ }], callButtonsStyle: [{
356
+ type: Input
357
+ }] } });
358
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tZXRjaGF0LWNhbGwtYnV0dG9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaGF0LXVpa2l0LWFuZ3VsYXIvc3JjL0NhbGxzL0NvbWV0Q2hhdENhbGxCdXR0b25zL2NvbWV0Y2hhdC1jYWxsLWJ1dHRvbnMvY29tZXRjaGF0LWNhbGwtYnV0dG9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaGF0LXVpa2l0LWFuZ3VsYXIvc3JjL0NhbGxzL0NvbWV0Q2hhdENhbGxCdXR0b25zL2NvbWV0Y2hhdC1jYWxsLWJ1dHRvbnMvY29tZXRjaGF0LWNhbGwtYnV0dG9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWhELE9BQU8sRUFBRSxRQUFRLEVBQUUsdUJBQXVCLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLHNCQUFzQixFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTFLLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUscUJBQXFCLEVBQXFCLHFCQUFxQixFQUFDLE1BQU0seUJBQXlCLENBQUM7Ozs7OztBQUM1STs7Ozs7Ozs7RUFRRTtBQU9GLE1BQU0sT0FBTyw2QkFBNkI7SUE4RHhDLFlBQW9CLEdBQXNCLEVBQVUsWUFBbUM7UUFBbkUsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBdUI7UUEzRDlFLHFCQUFnQixHQUFXLHlCQUF5QixDQUFBO1FBQ3BELHNCQUFpQixHQUFXLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUNsRCwyQkFBc0Is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QVksRUFBRSxDQUFDLENBQUMsQ0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCO1lBQ2hJLGNBQWMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCO1lBQzNELGVBQWUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCO1lBQzdELE9BQU8sRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYTtZQUM1QyxVQUFVLEVBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQjtZQUNqRCxNQUFNLEVBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU07WUFDbkMsWUFBWSxFQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0I7WUFDckQsR0FBRyxJQUFJLENBQUMsV0FBVztTQUNwQixDQUFBO0lBQ0gsQ0FBQzs7MkhBblVVLDZCQUE2QjsrR0FBN0IsNkJBQTZCLDhlQ3JCMUMsb29DQVNxQjs0RkRZUiw2QkFBNkI7a0JBTnpDLFNBQVM7K0JBQ0Usd0JBQXdCLG1CQUdqQix1QkFBdUIsQ0FBQyxNQUFNOzRJQUd0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUdHLGdCQUFnQjtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21ldENoYXQgfSBmcm9tICdAY29tZXRjaGF0LXByby9jaGF0JztcbmltcG9ydCB7IENvbWV0Q2hhdFRoZW1lU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL0NvbWV0Q2hhdFRoZW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgbG9jYWxpemUsIENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLCBmb250SGVscGVyLCBDb21ldENoYXRDYWxsRXZlbnRzLCBDb21ldENoYXRNZXNzYWdlRXZlbnRzLCBNZXNzYWdlU3RhdHVzLCBDb21ldENoYXRMb2NhbGl6ZSB9IGZyb20gJ0Bjb21ldGNoYXQvdWlraXQtcmVzb3VyY2VzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2FsbEJ1dHRvbnNTdHlsZSwgQ2FsbHNjcmVlblN0eWxlLCBDb21ldENoYXRTb3VuZE1hbmFnZXIsIE91dGdvaW5nQ2FsbFN0eWxlICxDb21ldENoYXRVSUtpdFV0aWxpdHl9IGZyb20gJ0Bjb21ldGNoYXQvdWlraXQtc2hhcmVkJztcbi8qKlxuKlxuKiBDb21ldENoYXRDYWxsQnV0dG9uc0NvbXBvbmVudCBpcyBhIGNvbXBvbmVudCB3aGljaCBzaG93cyBidXR0b25zIGZvciBhdWRpbyBhbmQgdmlkZW8gY2FsbCBmb3IgMXYxIGFuZCBncm91cCBjYWxsLlxuKlxuKiBAdmVyc2lvbiAxLjAuMFxuKiBAYXV0aG9yIENvbWV0Q2hhdFRlYW1cbiogQGNvcHlyaWdodCDCqSAyMDIyIENvbWV0Q2hhdCBJbmMuXG4qXG4qL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImNvbWV0Y2hhdC1jYWxsLWJ1dHRvbnNcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9jb21ldGNoYXQtY2FsbC1idXR0b25zLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9jb21ldGNoYXQtY2FsbC1idXR0b25zLmNvbXBvbmVudC5zY3NzXCJdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBDb21ldENoYXRDYWxsQnV0dG9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHVzZXIhOiBDb21ldENoYXQuVXNlcjtcbiAgQElucHV0KCkgZ3JvdXAhOiBDb21ldENoYXQuR3JvdXA7XG4gIEBJbnB1dCgpIHZvaWNlQ2FsbEljb25VUkw6IHN0cmluZyA9IFwiYXNzZXRzL0F1ZGlvLUNhbGwyeC5zdmdcIlxuICBASW5wdXQoKSB2b2ljZUNhbGxJY29uVGV4dDogc3RyaW5nID0gbG9jYWxpemUoXCJWT0lDRV9DQUxMXCIpXG4gIEBJbnB1dCgpIHZvaWNlQ2FsbEljb25Ib3ZlclRleHQ6IHN0cmluZyA9IGxvY2FsaXplKFwiVk9JQ0VfQ0FMTFwiKVxuICBASW5wdXQoKSB2aWRlb0NhbGxJY29uVVJMOiBzdHJpbmcgPSBcImFzc2V0cy9WaWRlby1jYWxsMnguc3ZnXCJcbiAgQElucHV0KCkgdmlkZW9DYWxsSWNvblRleHQ6IHN0cmluZyA9IGxvY2FsaXplKFwiVklERU9fQ0FMTFwiKVxuICBASW5wdXQoKSB2aWRlb0NhbGxJY29uSG92ZXJUZXh0OiBzdHJpbmcgPSBsb2NhbGl6ZShcIlZJREVPX0NBTExcIilcbiAgQElucHV0KCkgb25Wb2ljZUNhbGxDbGljayE6ICgodXNlcjogQ29tZXRDaGF0LlVzZXIsIGdyb3VwOiBDb21ldENoYXQuR3JvdXApID0+IHZvaWQpIHwgbnVsbDtcbiAgQElucHV0KCkgb25WaWRlb0NhbGxDbGljayE6ICgodXNlcjogQ29tZXRDaGF0LlVzZXIsIGdyb3VwOiBDb21ldENoYXQuR3JvdXApID0+IHZvaWQpIHwgbnVsbDtcbiAgQElucHV0KCkgb25FcnJvcjogKGVycm9yOiBDb21ldENoYXQuQ29tZXRDaGF0RXhjZXB0aW9uKSA9PiB2b2lkID0gKGVycm9yOiBDb21ldENoYXQuQ29tZXRDaGF0RXhjZXB0aW9uKSA9PiB7XG4gICAgY29uc29sZS5sb2coZXJyb3IpXG4gIH1cbiAgQElucHV0KCkgY2FsbEJ1dHRvbnNTdHlsZTogQ2FsbEJ1dHRvbnNTdHlsZSA9IHtcbiAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgICBib3JkZXI6IFwibm9uZVwiLFxuICAgIGJvcmRlclJhZGl1czogXCIwXCIsXG4gICAgYmFja2dyb3VuZDogXCJ0cmFuc3BhcmVudFwiXG4gIH07XG4gIGNhbGwhOiBDb21ldENoYXQuQ2FsbCB8IG51bGw7XG4gIHB1YmxpYyBjY091dGdvaW5nQ2FsbCE6IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGNjQ2FsbFJlamVjdGVkITogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgY2NDYWxsRW5kZWQhOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBkaXNhYmxlQnV0dG9uczogYm9vbGVhbiA9IGZhbHNlO1xuICBzaG93T25nb2luZ0NhbGw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2Vzc2lvbklkOiBzdHJpbmcgPSBcIlwiO1xuICBwdWJsaWMgY2FsbGJ1dHRvbnNMaXN0ZW5lcklkOiBzdHJpbmcgPSBcImNhbGxidXR0b25zX1wiICsgbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gIHB1YmxpYyBsb2dnZWRJblVzZXI6IENvbWV0Q2hhdC5Vc2VyIHwgbnVsbCA9IG51bGw7XG4gIGJ1dHRvblN0eWxlOiBhbnkgPSB7XG4gICAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgZGlzcGxheTogXCJmbGV4XCIsXG4gICAgZmxleERpcmVjdGlvbjogXCJjb2x1bW5cIixcbiAgICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICB9XG4gIHZvaWNlQ2FsbEJ1dHRvblN0eWxlOiBhbnkgPSB7XG4gICAgYnV0dG9uSWNvblRpbnQ6IFwiUkdCKDUxLCAxNTMsIDI1NSlcIixcbiAgICBidXR0b25UZXh0Rm9udDogXCI0MDAgMTJweCBJbnRlclwiLFxuICAgIGJ1dHRvblRleHRDb2xvcjogXCJSR0IoNTEsIDE1MywgMjU1KVwiLFxuICAgIHBhZGRpbmc6IFwiOHB4IDMycHhcIlxuICB9XG4gIHZpZGVvQ2FsbEJ1dHRvblN0eWxlOiBhbnkgPSB7XG4gICAgYnV0dG9uSWNvblRpbnQ6IFwiUkdCKDUxLCAxNTMsIDI1NSlcIixcbiAgICBidXR0b25UZXh0Rm9udDogXCI0MDAgMTJweCBJbnRlclwiLFxuICAgIGJ1dHRvblRleHRDb2xvcjogXCJSR0IoNTEsIDE1MywgMjU1KVwiLFxuICAgIHBhZGRpbmc6IFwiOHB4IDMycHhcIlxuICB9XG4gIHNob3dPdXRnb2luZ0NhbGxzY3JlZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgb3V0Z29pbmdDYWxsU3R5bGU6IE91dGdvaW5nQ2FsbFN0eWxlID0ge1xuICAgIHdpZHRoOiBcIjM2MHB4XCIsXG4gICAgaGVpZ2h0OiBcIjU4MXB4XCIsXG4gICAgdGl0bGVUZXh0Rm9udDogXCI3MDAgMjJweCBJbnRlclwiLFxuICAgIHRpdGxlVGV4dENvbG9yOiBcIlJHQigyMCwgMjAsIDIwKVwiLFxuICAgIHN1YnRpdGxlVGV4dEZvbnQ6IFwiNDAwIDE1cHggSW50ZXJcIixcbiAgICBzdWJ0aXRsZVRleHRDb2xvcjogXCJSR0JBKDIwLCAyMCwgMjAsIDAuNTgpXCIsXG4gICAgYm9yZGVyUmFkaXVzOiBcIjhweFwiXG4gIH07XG4gIG9uZ29pbmdDYWxsU3R5bGU6IENhbGxzY3JlZW5TdHlsZSA9IHt9XG4gIGFjdGl2ZUNhbGw6IENvbWV0Q2hhdC5DYWxsIHwgbnVsbCA9IG51bGxcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHRoZW1lU2VydmljZTogQ29tZXRDaGF0VGhlbWVTZXJ2aWNlKSB7IH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgQ29tZXRDaGF0LmdldExvZ2dlZGluVXNlcigpLnRoZW4oKHVzZXI6Q29tZXRDaGF0LlVzZXIgfCBudWxsKT0+e1xuICAgICAgdGhpcy5sb2dnZWRJblVzZXIgPSB1c2VyXG4gICAgfSkuY2F0Y2goKGVycm9yOkNvbWV0Q2hhdC5Db21ldENoYXRFeGNlcHRpb24pPT57XG4gICAgICBpZih0aGlzLm9uRXJyb3Ipe1xuICAgICAgICB0aGlzLm9uRXJyb3IoZXJyb3IpXG4gICAgICB9XG4gICAgfSlcbiAgICB0aGlzLnNldFRoZW1lU3R5bGUoKVxuICAgIHRoaXMuYXR0YWNoTGlzdGVuZXJzKClcbiAgICB0aGlzLnN1YnNjcmliZVRvRXZlbnRzKClcbiAgfVxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKCk7XG4gICAgdGhpcy51bnN1YnNjcmliZVRvRXZlbnRzKClcbiAgfVxuICBnZXRDYWxsQnVpbGRlcigpOiBDb21ldENoYXQuQ2FsbFNldHRpbmdzQnVpbGRlciB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IGF1ZGlvT25seUNhbGw6IGJvb2xlYW4gPSB0aGlzLmFjdGl2ZUNhbGw/LmdldFR5cGUoKSA9PSBDb21ldENoYXRVSUtpdENvbnN0YW50cy5NZXNzYWdlVHlwZXMuYXVkaW8gPyB0cnVlIDogZmFsc2VcbiAgICBpZiAodGhpcy5hY3RpdmVDYWxsPy5nZXRUeXBlKCkgPT0gIENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLmNhbGxzLm1lZXRpbmcpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQ29tZXRDaGF0LkNhbGxTZXR0aW5nc0J1aWxkZXIoKVxuICAgICAgLnNldFNlc3Npb25JRCh0aGlzLnNlc3Npb25JZClcbiAgICAgIC5lbmFibGVEZWZhdWx0TGF5b3V0KHRydWUpXG4gICAgICAuc2V0SXNBdWRpb09ubHlDYWxsKGF1ZGlvT25seUNhbGwpXG4gICAgICAuc2V0TW9kZShDb21ldENoYXQuQ0FMTF9NT0RFLkRFRkFVTFQpXG4gICAgICAuc2V0TG9jYWxpemVkU3RyaW5nT2JqZWN0KENvbWV0Q2hhdExvY2FsaXplLmdldExvY2FsZSgpKVxuICB9XG4gIG9wZW5PbmdvaW5nQ2FsbFNjcmVlbihjYWxsOiBDb21ldENoYXQuQ2FsbCkge1xuICAgIHRoaXMuc2hvd091dGdvaW5nQ2FsbHNjcmVlbiA9IGZhbHNlO1xuICAgIHRoaXMuYWN0aXZlQ2FsbCA9IGNhbGxcbiAgICB0aGlzLnNlc3Npb25JZCA9IGNhbGwuZ2V0U2Vzc2lvbklkKClcbiAgICB0aGlzLnNob3dPbmdvaW5nQ2FsbCA9IHRydWVcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgfVxuICBpbml0aWF0ZUNhbGwodHlwZTogc3RyaW5nKSB7XG5cbiAgICBjb25zdCByZWNlaXZlclR5cGU6IHN0cmluZyA9IHRoaXMudXNlciA/IENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VSZWNlaXZlclR5cGUudXNlciA6IENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VSZWNlaXZlclR5cGUuZ3JvdXBcbiAgICBjb25zdCByZWNlaXZlcklkOiBzdHJpbmcgPSB0aGlzLnVzZXIgPyB0aGlzLnVzZXIuZ2V0VWlkKCkgOiB0aGlzLmdyb3VwLmdldEd1aWQoKVxuICAgIGNvbnN0IGNhbGw6IENvbWV0Q2hhdC5DYWxsID0gbmV3IENvbWV0Q2hhdC5DYWxsKFxuICAgICAgcmVjZWl2ZXJJZCxcbiAgICAgIHR5cGUsXG4gICAgICByZWNlaXZlclR5cGVcbiAgICApO1xuICAgIENvbWV0Q2hhdC5pbml0aWF0ZUNhbGwoY2FsbClcbiAgICAgIC50aGVuKChvdXRnb2luZ0NhbGwpID0+IHtcbiAgICAgICAgLy93aGVuIHRoaXMgY29tcG9uZW50IGlzIHBhcnQgb2YgY2hhdCB3aWRnZXQgdHJpZ2dlciBhbiBldmVudC4uIChvdXRnb2luZ2NhbGwgY29tcG9uZW50IGlzIHVzZWQgc2VwYXJhdGVseSBpbiBjaGF0IHdpZGdldClcbiAgICAgICAgdGhpcy5jYWxsID0gb3V0Z29pbmdDYWxsXG4gICAgICAgIHRoaXMuc2hvd091dGdvaW5nQ2FsbHNjcmVlbiA9IHRydWU7XG4gICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKVxuICAgICAgICBDb21ldENoYXRDYWxsRXZlbnRzLmNjT3V0Z29pbmdDYWxsLm5leHQoXG4gICAgICAgICAgb3V0Z29pbmdDYWxsXG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9uRXJyb3IpIHtcbiAgICAgICAgICB0aGlzLm9uRXJyb3IoZXJyb3IpXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgaW5pdGlhdGVBdWRpb0NhbGwoKSB7XG4gICAgaWYgKHRoaXMudXNlcikge1xuICAgICAgdGhpcy5pbml0aWF0ZUNhbGwoQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuTWVzc2FnZVR5cGVzLmF1ZGlvKVxuICAgIH1cbiAgfVxuICBpbml0aWF0ZVZpZGVvQ2FsbCgpIHtcbiAgICBpZiAodGhpcy51c2VyKSB7XG4gICAgICB0aGlzLmluaXRpYXRlQ2FsbChDb21ldENoYXRVSUtpdENvbnN0YW50cy5NZXNzYWdlVHlwZXMudmlkZW8pXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5zZXNzaW9uSWQgPSB0aGlzLmdyb3VwLmdldEd1aWQoKVxuICAgICAgdGhpcy5zZW5kQ3VzdG9tTWVzc2FnZSgpXG4gICAgICB0aGlzLnNob3dPbmdvaW5nQ2FsbCA9IHRydWU7XG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcblxuICAgIH1cbiAgfVxuICBzZW5kQ3VzdG9tTWVzc2FnZSgpIHtcbiAgICBjb25zdCByZWNlaXZlclR5cGU6IHN0cmluZyA9IHRoaXMudXNlciA/IENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VSZWNlaXZlclR5cGUudXNlciA6IENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VSZWNlaXZlclR5cGUuZ3JvdXBcbiAgICBjb25zdCByZWNlaXZlcklkOiBzdHJpbmcgPSB0aGlzLnVzZXIgPyB0aGlzLnVzZXIuZ2V0VWlkKCkgOiB0aGlzLmdyb3VwLmdldEd1aWQoKVxuICAgIGNvbnN0IGN1c3RvbURhdGEgPSB7IFwic2Vzc2lvbklEXCI6IHRoaXMuc2Vzc2lvbklkLCBcInNlc3Npb25JZFwiOiB0aGlzLnNlc3Npb25JZCwgXCJjYWxsVHlwZVwiOiBDb21ldENoYXQuQ0FMTF9UWVBFLlZJREVPIH07XG4gICAgY29uc3QgY3VzdG9tVHlwZSA9ICBDb21ldENoYXRVSUtpdENvbnN0YW50cy5jYWxscy5tZWV0aW5nO1xuICAgIGNvbnN0IGNvbnZlcnNhdGlvbklkID0gYGdyb3VwXyR7dGhpcy5zZXNzaW9uSWR9YDtcblxuICAgIGNvbnN0IGN1c3RvbU1lc3NhZ2U6IGFueSA9IG5ldyBDb21ldENoYXQuQ3VzdG9tTWVzc2FnZShyZWNlaXZlcklkLCByZWNlaXZlclR5cGUsIGN1c3RvbVR5cGUsIGN1c3RvbURhdGEpO1xuICAgIGN1c3RvbU1lc3NhZ2Uuc2V0U2VuZGVyKHRoaXMubG9nZ2VkSW5Vc2VyKTtcbiAgICBjdXN0b21NZXNzYWdlLnNldE1ldGFkYXRhKHsgaW5jcmVtZW50VW5yZWFkQ291bnQ6IHRydWUgfSk7XG4gICAgY3VzdG9tTWVzc2FnZS5zZXRSZWNlaXZlcigocmVjZWl2ZXJUeXBlIGFzIGFueSkpO1xuICAgIGN1c3RvbU1lc3NhZ2Uuc2V0Q29udmVyc2F0aW9uSWQoY29udmVyc2F0aW9uSWQpO1xuICAgIGN1c3RvbU1lc3NhZ2Uuc2VudEF0ID0gQ29tZXRDaGF0VUlLaXRVdGlsaXR5LmdldFVuaXhUaW1lc3RhbXAoKTtcbiAgICBjdXN0b21NZXNzYWdlLm11aWQgPSBDb21ldENoYXRVSUtpdFV0aWxpdHkuSUQoKTtcbiAgICAvLyBjdXN0b20gbWVzc2FnZVxuICAgIENvbWV0Q2hhdE1lc3NhZ2VFdmVudHMuY2NNZXNzYWdlU2VudC5uZXh0KHtcbiAgICAgIG1lc3NhZ2U6Y3VzdG9tTWVzc2FnZSxcbiAgICAgIHN0YXR1czpNZXNzYWdlU3RhdHVzLmlucHJvZ3Jlc3NcbiAgICB9KVxuICAgIENvbWV0Q2hhdC5zZW5kQ3VzdG9tTWVzc2FnZShjdXN0b21NZXNzYWdlKS50aGVuKChtc2cpID0+IHtcbiAgICAgIENvbWV0Q2hhdE1lc3NhZ2VFdmVudHMuY2NNZXNzYWdlU2VudC5uZXh0KHtcbiAgICAgICAgbWVzc2FnZTptc2csXG4gICAgICAgIHN0YXR1czpNZXNzYWdlU3RhdHVzLnN1Y2Nlc3NcbiAgICAgIH0pXG4gICAgfSlcbiAgICAuY2F0Y2goKGVycm9yOkNvbWV0Q2hhdC5Db21ldENoYXRFeGNlcHRpb24pPT57XG4gICAgIGlmKHRoaXMub25FcnJvcil7XG4gICAgICB0aGlzLm9uRXJyb3IoZXJyb3IpXG4gICAgIH1cbiAgICB9KVxuXG4gIH1cbiAgY2FuY2VsT3V0Z29pbmdDYWxsID0gKCkgPT4ge1xuICAgIENvbWV0Q2hhdFNvdW5kTWFuYWdlci5wYXVzZSgpXG4gICAgQ29tZXRDaGF0LnJlamVjdENhbGwoXG4gICAgICB0aGlzLmNhbGwhLmdldFNlc3Npb25JZCgpLFxuICAgICAgQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuY2FsbHMuY2FuY2VsbGVkXG4gICAgKVxuICAgICAgLnRoZW4oKGNhbGwpID0+IHtcbiAgICAgICAgdGhpcy5kaXNhYmxlQnV0dG9ucyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNob3dPdXRnb2luZ0NhbGxzY3JlZW4gPSBmYWxzZVxuICAgICAgICBDb21ldENoYXRDYWxsRXZlbnRzLmNjQ2FsbFJlamVjdGVkLm5leHQoY2FsbClcbiAgICAgICAgdGhpcy5jYWxsID0gbnVsbDtcbiAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICBpZiAodGhpcy5vbkVycm9yKSB7XG4gICAgICAgICAgdGhpcy5vbkVycm9yKGVycm9yKVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB0aGlzLnNob3dPdXRnb2luZ0NhbGxzY3JlZW4gPSBmYWxzZTtcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgfVxuICBnZXRWb2ljZUNhbGxCdXR0b25TdHlsZShkaXNhYmxlQnV0dG9uczpib29sZWFuKXtcbiAgICBjb25zdCBidXR0b25JY29uVGludCA9IGRpc2FibGVCdXR0b25zXG4gICAgPyB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEFjY2VudDYwMCgpXG4gICAgOiB0aGlzLmNhbGxCdXR0b25zU3R5bGUudm9pY2VDYWxsSWNvblRpbnQ7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi50aGlzLnZpZGVvQ2FsbEJ1dHRvblN0eWxlLFxuICAgIGJ1dHRvbkljb25UaW50LFxuICB9O1xuICB9XG4gIGdldFZpZGVvQ2FsbEJ1dHRvblN0eWxlKGRpc2FibGVCdXR0b25zOiBib29sZWFuKSB7XG4gICAgY29uc3QgYnV0dG9uSWNvblRpbnQgPSBkaXNhYmxlQnV0dG9uc1xuICAgICAgPyB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEFjY2VudDYwMCgpXG4gICAgICA6IHRoaXMuY2FsbEJ1dHRvbnNTdHlsZS52aWRlb0NhbGxJY29uVGludDtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi50aGlzLnZpZGVvQ2FsbEJ1dHRvblN0eWxlLFxuICAgICAgYnV0dG9uSWNvblRpbnQsXG4gICAgfTtcbiAgfVxuXG4gIGF0dGFjaExpc3RlbmVycygpIHtcbiAgICBDb21ldENoYXQuYWRkQ2FsbExpc3RlbmVyKFxuICAgICAgdGhpcy5jYWxsYnV0dG9uc0xpc3RlbmVySWQsXG4gICAgICBuZXcgQ29tZXRDaGF0LkNhbGxMaXN0ZW5lcih7XG4gICAgICAgIG9uSW5jb21pbmdDYWxsUmVjZWl2ZWQ6IChjYWxsOiBDb21ldENoYXQuQ2FsbCkgPT4ge1xuICAgICAgICAgIHRoaXMuZGlzYWJsZUJ1dHRvbnMgPSB0cnVlXG4gICAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgICAgIH0sXG4gICAgICAgIG9uSW5jb21pbmdDYWxsQ2FuY2VsbGVkOiAoY2FsbDogQ29tZXRDaGF0LkNhbGwpID0+IHtcbiAgICAgICAgICB0aGlzLmRpc2FibGVCdXR0b25zID0gZmFsc2VcbiAgICAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgICAgIH0sXG4gICAgICAgIG9uT3V0Z29pbmdDYWxsUmVqZWN0ZWQ6IChjYWxsOiBDb21ldENoYXQuQ2FsbCkgPT4ge1xuICAgICAgICAgIHRoaXMuZGlzYWJsZUJ1dHRvbnMgPSBmYWxzZVxuICAgICAgICAgIHRoaXMuY2FsbCA9IG51bGw7XG4gICAgICAgICAgdGhpcy5zaG93T3V0Z29pbmdDYWxsc2NyZWVuID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgICAgIH0sXG4gICAgICAgIG9uT3V0Z29pbmdDYWxsQWNjZXB0ZWQ6IChjYWxsOiBDb21ldENoYXQuQ2FsbCkgPT4ge1xuICAgICAgICAgIHRoaXMub3Blbk9uZ29pbmdDYWxsU2NyZWVuKGNhbGwpO1xuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuICB9XG4gIHJlbW92ZUxpc3RlbmVyKCkge1xuICAgIENvbWV0Q2hhdC5yZW1vdmVDYWxsTGlzdGVuZXIodGhpcy5jYWxsYnV0dG9uc0xpc3RlbmVySWQpO1xuICB9XG4gIHN1YnNjcmliZVRvRXZlbnRzKCkge1xuICAgIHRoaXMuY2NDYWxsUmVqZWN0ZWQgPSBDb21ldENoYXRDYWxsRXZlbnRzLmNjQ2FsbFJlamVjdGVkLnN1YnNjcmliZSgoY2FsbDogQ29tZXRDaGF0LkNhbGwpID0+IHtcbiAgICAgIHRoaXMuZGlzYWJsZUJ1dHRvbnMgPSBmYWxzZVxuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgfSlcbiAgICB0aGlzLmNjT3V0Z29pbmdDYWxsID0gQ29tZXRDaGF0Q2FsbEV2ZW50cy5jY091dGdvaW5nQ2FsbC5zdWJzY3JpYmUoKGNhbGw6IENvbWV0Q2hhdC5DYWxsKSA9PiB7XG4gICAgICB0aGlzLmRpc2FibGVCdXR0b25zID0gdHJ1ZVxuICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKVxuICAgIH0pXG4gICAgdGhpcy5jY0NhbGxFbmRlZCA9IENvbWV0Q2hhdENhbGxFdmVudHMuY2NDYWxsRW5kZWQuc3Vic2NyaWJlKChjYWxsOiBDb21ldENoYXQuQ2FsbCkgPT4ge1xuICAgICAgdGhpcy5kaXNhYmxlQnV0dG9ucyA9IGZhbHNlXG4gICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgICB0aGlzLmFjdGl2ZUNhbGwgPSBudWxsXG4gICAgICB0aGlzLnNob3dPbmdvaW5nQ2FsbCA9IGZhbHNlXG4gICAgICB0aGlzLnNlc3Npb25JZCA9IFwiXCJcbiAgICAgIHRoaXMuc2hvd091dGdvaW5nQ2FsbHNjcmVlbiA9IGZhbHNlO1xuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgfSlcbiAgfVxuICB1bnN1YnNjcmliZVRvRXZlbnRzKCkge1xuICAgIHRoaXMuY2NDYWxsUmVqZWN0ZWQ/LnVuc3Vic2NyaWJlKClcbiAgICB0aGlzLmNjT3V0Z29pbmdDYWxsPy51bnN1YnNjcmliZSgpXG4gICAgdGhpcy5jY0NhbGxFbmRlZD8udW5zdWJzY3JpYmUoKVxuICB9XG4gIHNldFRoZW1lU3R5bGUoKSB7XG4gICAgdGhpcy5zZXRjYWxsQnV0dG9uc1N0eWxlKClcbiAgICB0aGlzLnNldE9uZ29pbmdDYWxsU3R5bGUoKVxuICB9XG4gIHNldE9uZ29pbmdDYWxsU3R5bGUgPSAoKSA9PiB7XG4gICAgbGV0IGRlZmF1bHRTdHlsZSA9IG5ldyBDYWxsc2NyZWVuU3R5bGUoe1xuICAgICAgbWF4SGVpZ2h0OiBcIjEwMCVcIixcbiAgICAgIG1heFdpZHRoOiBcIjEwMCVcIixcbiAgICAgIGJvcmRlcjogXCJub25lXCIsXG4gICAgICBib3JkZXJSYWRpdXM6IFwiMFwiLFxuICAgICAgYmFja2dyb3VuZDogXCIjMWMyMjI2XCIsXG4gICAgICBtaW5IZWlnaHQ6IFwiNDAwcHhcIixcbiAgICAgIG1pbldpZHRoOiBcIjQwMHB4XCIsXG4gICAgICBtaW5pbWl6ZUljb25UaW50OiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEFjY2VudDkwMCgpLFxuICAgICAgbWF4aW1pemVJY29uVGludDogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ5MDAoKSxcbiAgICB9KVxuICAgIHRoaXMub25nb2luZ0NhbGxTdHlsZSA9IHsgLi4uZGVmYXVsdFN0eWxlLCAuLi50aGlzLm9uZ29pbmdDYWxsU3R5bGUgfVxuICB9XG4gIHNldGNhbGxCdXR0b25zU3R5bGUoKSB7XG4gICAgbGV0IGRlZmF1bHRTdHlsZTogQ2FsbEJ1dHRvbnNTdHlsZSA9IG5ldyBDYWxsQnV0dG9uc1N0eWxlKHtcbiAgICAgIHdpZHRoOiBcIjEwMCVcIixcbiAgICAgIGhlaWdodDogXCIxMDAlXCIsXG4gICAgICBiYWNrZ3JvdW5kOiBcInRyYW5zcGFyZW50XCIsXG4gICAgICBib3JkZXI6IFwibm9uZVwiLFxuICAgICAgYm9yZGVyUmFkaXVzOiBcIjBcIixcbiAgICAgIHZvaWNlQ2FsbEljb25UaW50OiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldFByaW1hcnkoKSxcbiAgICAgIHZpZGVvQ2FsbEljb25UaW50OiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldFByaW1hcnkoKSxcbiAgICAgIHZvaWNlQ2FsbEljb25UZXh0Rm9udDogZm9udEhlbHBlcih0aGlzLnRoZW1lU2VydmljZS50aGVtZS50eXBvZ3JhcGh5LmNhcHRpb24xKSxcbiAgICAgIHZpZGVvQ2FsbEljb25UZXh0Rm9udDogZm9udEhlbHBlcih0aGlzLnRoZW1lU2VydmljZS50aGVtZS50eXBvZ3JhcGh5LmNhcHRpb24xKSxcbiAgICAgIHZvaWNlQ2FsbEljb25UZXh0Q29sb3I6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0UHJpbWFyeSgpLFxuICAgICAgdmlkZW9DYWxsSWNvblRleHRDb2xvcjogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRQcmltYXJ5KCksXG4gICAgICBidXR0b25QYWRkaW5nOiBcIjhweCAzMnB4XCIsXG4gICAgICBidXR0b25CYWNrZ3JvdW5kOnRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50MTAwKCksXG4gICAgICBidXR0b25Cb3JkZXI6XCIwXCIsXG4gICAgICBidXR0b25Cb3JkZXJSYWRpdXM6XCI4cHhcIlxuICAgIH0pXG4gICAgdGhpcy5jYWxsQnV0dG9uc1N0eWxlID0geyAuLi5kZWZhdWx0U3R5bGUsIC4uLnRoaXMuY2FsbEJ1dHRvbnNTdHlsZSB9XG4gICAgdGhpcy52b2ljZUNhbGxCdXR0b25TdHlsZSA9IHtcbiAgICAgIGJ1dHRvbkljb25UaW50OiB0aGlzLmRpc2FibGVCdXR0b25zID8gdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ2MDAoKSA6ICB0aGlzLmNhbGxCdXR0b25zU3R5bGUudm9pY2VDYWxsSWNvblRpbnQsXG4gICAgICBidXR0b25UZXh0Rm9udDogdGhpcy5jYWxsQnV0dG9uc1N0eWxlLnZvaWNlQ2FsbEljb25UZXh0Rm9udCxcbiAgICAgIGJ1dHRvblRleHRDb2xvcjogdGhpcy5jYWxsQnV0dG9uc1N0eWxlLnZvaWNlQ2FsbEljb25UZXh0Q29sb3IsXG4gICAgICBwYWRkaW5nOiB0aGlzLmNhbGxCdXR0b25zU3R5bGUuYnV0dG9uUGFkZGluZyxcbiAgICAgIGJhY2tncm91bmQ6dGhpcy5jYWxsQnV0dG9uc1N0eWxlLmJ1dHRvbkJhY2tncm91bmQsXG4gICAgICBib3JkZXI6dGhpcy5jYWxsQnV0dG9uc1N0eWxlLmJvcmRlcixcbiAgICAgIGJvcmRlclJhZGl1czp0aGlzLmNhbGxCdXR0b25zU3R5bGUuYnV0dG9uQm9yZGVyUmFkaXVzLFxuICAgICAgLi4udGhpcy5idXR0b25TdHlsZVxuICAgIH1cbiAgICB0aGlzLnZpZGVvQ2FsbEJ1dHRvblN0eWxlID0ge1xuICAgICAgYnV0dG9uSWNvblRpbnQ6IHRoaXMuZGlzYWJsZUJ1dHRvbnMgPyB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEFjY2VudDYwMCgpIDogICB0aGlzLmNhbGxCdXR0b25zU3R5bGUudmlkZW9DYWxsSWNvblRpbnQsXG4gICAgICBidXR0b25UZXh0Rm9udDogdGhpcy5jYWxsQnV0dG9uc1N0eWxlLnZpZGVvQ2FsbEljb25UZXh0Rm9udCxcbiAgICAgIGJ1dHRvblRleHRDb2xvcjogdGhpcy5jYWxsQnV0dG9uc1N0eWxlLnZpZGVvQ2FsbEljb25UZXh0Q29sb3IsXG4gICAgICBwYWRkaW5nOiB0aGlzLmNhbGxCdXR0b25zU3R5bGUuYnV0dG9uUGFkZGluZyxcbiAgICAgIGJhY2tncm91bmQ6dGhpcy5jYWxsQnV0dG9uc1N0eWxlLmJ1dHRvbkJhY2tncm91bmQsXG4gICAgICBib3JkZXI6dGhpcy5jYWxsQnV0dG9uc1N0eWxlLmJvcmRlcixcbiAgICAgIGJvcmRlclJhZGl1czp0aGlzLmNhbGxCdXR0b25zU3R5bGUuYnV0dG9uQm9yZGVyUmFkaXVzLFxuICAgICAgLi4udGhpcy5idXR0b25TdHlsZVxuICAgIH1cbiAgfVxuICB3cmFwcGVyU3R5bGUgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhlaWdodDogdGhpcy5jYWxsQnV0dG9uc1N0eWxlLmhlaWdodCxcbiAgICAgIHdpZHRoOiB0aGlzLmNhbGxCdXR0b25zU3R5bGUud2lkdGgsXG4gICAgICBiYWNrZ3JvdW5kOiB0aGlzLmNhbGxCdXR0b25zU3R5bGUuYmFja2dyb3VuZCxcbiAgICAgIGJvcmRlcjogdGhpcy5jYWxsQnV0dG9uc1N0eWxlLmJvcmRlcixcbiAgICAgIGJvcmRlclJhZGl1czogdGhpcy5jYWxsQnV0dG9uc1N0eWxlLmJvcmRlclJhZGl1c1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNjLWNhbGwtYnV0dG9uc19fd3JhcHBlclwiIFtuZ1N0eWxlXT1cIndyYXBwZXJTdHlsZSgpXCI+XG48ZGl2IGNsYXNzPVwiY2MtY2FsbC1idXR0b25zLWJ1dHRvbnNcIj5cbjxjb21ldGNoYXQtYnV0dG9uIFtkaXNhYmxlZF09XCJkaXNhYmxlQnV0dG9ucyA/IHRydWUgOiBmYWxzZVwiICpuZ0lmPVwidXNlclwiIChjYy1idXR0b24tY2xpY2tlZCk9XCJpbml0aWF0ZUF1ZGlvQ2FsbCgpXCIgW2J1dHRvblN0eWxlXT1cImdldFZvaWNlQ2FsbEJ1dHRvblN0eWxlKGRpc2FibGVCdXR0b25zKVwiIFt0ZXh0XT1cInZvaWNlQ2FsbEljb25UZXh0XCIgW2hvdmVyVGV4dF09XCJ2b2ljZUNhbGxJY29uSG92ZXJUZXh0XCIgW2ljb25VUkxdPVwidm9pY2VDYWxsSWNvblVSTFwiPjwvY29tZXRjaGF0LWJ1dHRvbj5cbjxjb21ldGNoYXQtYnV0dG9uIFtkaXNhYmxlZF09XCJkaXNhYmxlQnV0dG9ucyAgPyB0cnVlIDogZmFsc2VcIiAqbmdJZj1cInVzZXIgfHwgZ3JvdXBcIiAoY2MtYnV0dG9uLWNsaWNrZWQpPVwiaW5pdGlhdGVWaWRlb0NhbGwoKVwiIFtidXR0b25TdHlsZV09XCJnZXRWaWRlb0NhbGxCdXR0b25TdHlsZShkaXNhYmxlQnV0dG9ucylcIiBbdGV4dF09XCJ2aWRlb0NhbGxJY29uVGV4dFwiIFtob3ZlclRleHRdPVwidmlkZW9DYWxsSWNvbkhvdmVyVGV4dFwiIFtpY29uVVJMXT1cInZpZGVvQ2FsbEljb25VUkxcIj48L2NvbWV0Y2hhdC1idXR0b24+XG48L2Rpdj5cbjwvZGl2PlxuPGNvbWV0Y2hhdC1vbmdvaW5nLWNhbGwgKm5nSWY9XCJzaG93T25nb2luZ0NhbGxcIiBbb25nb2luZ0NhbGxTdHlsZV09XCJvbmdvaW5nQ2FsbFN0eWxlXCIgW3Nlc3Npb25JRF09XCJzZXNzaW9uSWRcIiAgW2NhbGxTZXR0aW5nc0J1aWxkZXJdPVwiZ2V0Q2FsbEJ1aWxkZXIoKSFcIj48L2NvbWV0Y2hhdC1vbmdvaW5nLWNhbGw+XG48Y29tZXRjaGF0LWJhY2tkcm9wICpuZ0lmPVwic2hvd091dGdvaW5nQ2FsbHNjcmVlblwiPlxuPGNvbWV0Y2hhdC1vdXRnb2luZy1jYWxsIFtvbkNsb3NlQ2xpY2tlZF09XCJjYW5jZWxPdXRnb2luZ0NhbGxcIiBbb3V0Z29pbmdDYWxsU3R5bGVdPVwib3V0Z29pbmdDYWxsU3R5bGVcIiBbY2FsbF09XCJjYWxsIVwiPjwvY29tZXRjaGF0LW91dGdvaW5nLWNhbGw+XG48L2NvbWV0Y2hhdC1iYWNrZHJvcD4iXX0=