cnhis-design-vue 3.3.3-release.9 → 3.4.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 (243) hide show
  1. package/es/components/big-table/src/hooks/useBatchEditing.js +25 -24
  2. package/es/components/button-print/index.d.ts +98 -8
  3. package/es/components/button-print/src/ButtonPrint.vue.d.ts +98 -8
  4. package/es/components/button-print/src/ButtonPrint.vue2.js +12 -1
  5. package/es/components/button-print/src/components/IdentityVerification.vue.d.ts +11 -2
  6. package/es/components/button-print/src/components/IdentityVerification.vue2.js +3 -2
  7. package/es/components/button-print/src/components/NewPrintComponent.vue.d.ts +44 -6
  8. package/es/components/button-print/src/components/NewPrintComponent.vue2.js +194 -41
  9. package/es/components/button-print/src/components/OldPrintComponent.vue.d.ts +29 -2
  10. package/es/components/button-print/src/components/OldPrintComponent.vue2.js +34 -5
  11. package/es/components/button-print/src/utils/print.d.ts +7 -5
  12. package/es/components/button-print/src/utils/print.js +183 -7
  13. package/es/components/button-print/style/index.css +1 -1
  14. package/es/components/calendar/src/Calendar.vue2.js +15 -5
  15. package/es/components/callback/src/components/render/popupMaps.d.ts +5 -0
  16. package/es/components/card-render/src/components/index.d.ts +23 -23
  17. package/es/components/classification/index.d.ts +258 -5
  18. package/es/components/classification/src/components/search-filter/index.vue.d.ts +258 -5
  19. package/es/components/classification/src/components/set-classification/index.vue.d.ts +258 -5
  20. package/es/components/classification/src/index.vue.d.ts +258 -5
  21. package/es/components/fabric-chart/src/components/PopupMenu.js +1 -1
  22. package/es/components/fabric-chart/src/hooks/birthProcess/useBirthProcess.js +6 -2
  23. package/es/components/fabric-chart/src/hooks/temperature/useLeft.js +3 -2
  24. package/es/components/fabric-chart/src/hooks/temperature/useOther.d.ts +1 -1
  25. package/es/components/fabric-chart/src/hooks/temperature/useOther.js +58 -15
  26. package/es/components/fabric-chart/src/hooks/temperature/useTemperatureChart.js +4 -3
  27. package/es/components/field-editor/index.d.ts +5 -0
  28. package/es/components/field-editor/src/FieldEditor.vue.d.ts +5 -0
  29. package/es/components/field-set/src/FieldColor.vue.d.ts +4 -1
  30. package/es/components/field-set/src/FieldFilter.vue.d.ts +4 -1
  31. package/es/components/field-set/src/FieldSet.vue.d.ts +4 -1
  32. package/es/components/field-set/src/components/table-row.vue.d.ts +2 -1
  33. package/es/components/field-set/src/components/table-row.vue2.js +21 -6
  34. package/es/components/field-set/src/constants/index.js +4 -4
  35. package/es/components/field-set/src/types/index.d.ts +2 -1
  36. package/es/components/form-config/index.d.ts +63 -0
  37. package/es/components/form-config/src/FormConfig.vue.d.ts +63 -0
  38. package/es/components/form-config/src/components/FormConfigCreator.vue.d.ts +5 -0
  39. package/es/components/form-config/src/components/FormConfigEdit.vue.d.ts +50 -0
  40. package/es/components/form-config/src/components/FormConfigEdit.vue2.js +4 -4
  41. package/es/components/form-config/src/components/FormConfigEventSetting.vue.d.ts +5 -0
  42. package/es/components/form-config/src/constants/index.d.ts +31 -1
  43. package/es/components/form-config/src/constants/index.js +150 -1
  44. package/es/components/form-config/src/hooks/useConfigurationField.d.ts +2 -2
  45. package/es/components/form-config/src/hooks/useConfigurationField.js +53 -6
  46. package/es/components/form-config/src/hooks/useLocale.d.ts +6 -0
  47. package/es/components/form-config/src/hooks/useLocale.js +34 -0
  48. package/es/components/form-config/src/types/index.d.ts +12 -0
  49. package/es/components/form-render/index.d.ts +5 -0
  50. package/es/components/form-render/src/FormRender.vue.d.ts +5 -0
  51. package/es/components/form-render/src/FormRender.vue2.js +1 -0
  52. package/es/components/form-render/src/FormRenderWrapper.vue.d.ts +5 -0
  53. package/es/components/form-render/src/components/renderer/date.d.ts +3 -1
  54. package/es/components/form-render/src/components/renderer/date.js +12 -10
  55. package/es/components/form-render/src/components/renderer/formItem.d.ts +2 -0
  56. package/es/components/form-render/src/components/renderer/formItem.js +10 -3
  57. package/es/components/form-render/src/components/renderer/levelSearchCascader/index.js +4 -2
  58. package/es/components/form-render/src/components/renderer/lineBar/FormCollapse.vue.d.ts +1 -0
  59. package/es/components/form-render/src/components/renderer/lineBar/index.d.ts +1 -0
  60. package/es/components/form-render/src/components/renderer/radio_checkbox.js +9 -3
  61. package/es/components/form-render/src/constants/index.d.ts +1 -1
  62. package/es/components/form-render/src/hooks/useFieldListAdaptor.js +5 -2
  63. package/es/components/form-render/src/hooks/useFieldNormalize.d.ts +2 -0
  64. package/es/components/form-render/src/hooks/useFieldNormalize.js +15 -0
  65. package/es/components/form-render/src/hooks/useNuiThemeOverrides.d.ts +1 -2
  66. package/es/components/form-render/src/types/index.d.ts +1 -0
  67. package/es/components/form-render/style/index.css +1 -1
  68. package/es/components/iho-chat/index.d.ts +897 -97
  69. package/es/components/iho-chat/src/Index.vue.d.ts +897 -97
  70. package/es/components/iho-chat/src/Index.vue2.js +14 -6
  71. package/es/components/iho-chat/src/components/ChatAdd.vue.d.ts +24 -1
  72. package/es/components/iho-chat/src/components/ChatFile.vue.d.ts +179 -6
  73. package/es/components/iho-chat/src/components/ChatFile.vue2.js +48 -28
  74. package/es/components/iho-chat/src/components/ChatFooter.vue.d.ts +61 -5
  75. package/es/components/iho-chat/src/components/ChatFooter.vue2.js +106 -44
  76. package/es/components/iho-chat/src/components/ChatHeader.vue.d.ts +327 -13
  77. package/es/components/iho-chat/src/components/ChatHeader.vue2.js +18 -17
  78. package/es/components/iho-chat/src/components/ChatMain.vue.d.ts +232 -17
  79. package/es/components/iho-chat/src/components/ChatMain.vue2.js +299 -272
  80. package/es/components/iho-chat/src/components/ChatRecord.vue.d.ts +49 -3
  81. package/es/components/iho-chat/src/components/ChatSearch.vue.d.ts +24 -1
  82. package/es/components/iho-chat/src/components/ChatSet.vue.d.ts +48 -2
  83. package/es/components/iho-chat/src/components/ContextMenu.js +33 -18
  84. package/es/components/iho-chat/src/components/ImageLightbox.vue.d.ts +104 -0
  85. package/es/components/iho-chat/src/components/ImageLightbox.vue.js +6 -0
  86. package/es/components/iho-chat/src/components/ImageLightbox.vue2.js +307 -0
  87. package/es/components/iho-chat/src/components/MessageEvent.vue.d.ts +24 -1
  88. package/es/components/iho-chat/src/components/MessageMergeForward.vue.d.ts +51 -4
  89. package/es/components/iho-chat/src/components/MultipleVideo.vue.d.ts +77 -31
  90. package/es/components/iho-chat/src/components/MultipleVideo.vue2.js +223 -98
  91. package/es/components/iho-chat/src/components/PersonProfile.vue.d.ts +24 -1
  92. package/es/components/iho-chat/src/components/SelectLabel.vue.d.ts +1 -1
  93. package/es/components/iho-chat/src/components/SiderList.vue.d.ts +24 -1
  94. package/es/components/iho-chat/src/components/Video.vue.d.ts +44 -26
  95. package/es/components/iho-chat/src/components/Video.vue2.js +56 -49
  96. package/es/components/iho-chat/src/hooks/useData.d.ts +51 -4
  97. package/es/components/iho-chat/src/hooks/useVideo.d.ts +83 -16
  98. package/es/components/iho-chat/src/hooks/useVideo.js +439 -43
  99. package/es/components/iho-chat/src/types/index.d.ts +37 -1
  100. package/es/components/iho-chat/src/utils/emoji.d.ts +1 -1
  101. package/es/components/iho-chat/src/utils/emoji.js +1 -1
  102. package/es/components/iho-chat/src/utils/index.d.ts +2 -0
  103. package/es/components/iho-chat/src/utils/index.js +14 -1
  104. package/es/components/iho-chat/style/index.css +1 -1
  105. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/dateRendererPlugin/index.js +1 -1
  106. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/hooks/useAutoFocus.js +0 -22
  107. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/inputRendererPlugin.js +1 -1
  108. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/levelSearchCascadePlugin/index.js +1 -1
  109. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/numberRendererPlugin.js +1 -1
  110. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/selectRendererPlugin/index.js +1 -1
  111. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/separateRendererPlugin/index.js +1 -1
  112. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/timeRendererPlugin/editTime.vue.d.ts +36 -4
  113. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/timeRendererPlugin/index.js +1 -1
  114. package/es/components/index.css +1 -1
  115. package/es/components/index.d.ts +2 -0
  116. package/es/components/index.js +2 -1
  117. package/es/components/info-header/index.d.ts +24 -17
  118. package/es/components/info-header/src/InfoHeader.vue.d.ts +24 -17
  119. package/es/components/info-header/src/InfoHeader.vue2.js +2 -2
  120. package/es/components/info-header/src/components/infoDescription/DescriptionItem.vue.d.ts +1 -0
  121. package/es/components/info-header/src/components/infoDescription/DescriptionItem.vue2.js +56 -22
  122. package/es/components/info-header/src/components/infoDescription/DescriptionList.vue.d.ts +4 -2
  123. package/es/components/info-header/src/components/infoDescription/DescriptionList.vue2.js +1 -1
  124. package/es/components/info-header/src/components/infoDescription/index.vue.d.ts +15 -17
  125. package/es/components/info-header/src/components/patientInfo/index.vue.d.ts +5 -0
  126. package/es/components/info-header/src/constants/index.d.ts +1 -1
  127. package/es/components/info-header/src/hooks/useThemeOverrides.d.ts +1 -2
  128. package/es/components/keyboard/index.d.ts +9 -0
  129. package/es/components/keyboard/src/Keyboard.vue.d.ts +9 -0
  130. package/es/components/keyboard/src/Keyboard.vue2.js +33 -9
  131. package/es/components/keyboard/src/components/NumberPanel.vue.d.ts +4 -0
  132. package/es/components/keyboard/src/components/NumberPanel.vue2.js +50 -17
  133. package/es/components/keyboard/src/types.d.ts +17 -0
  134. package/es/components/keyboard/src/types.js +1 -0
  135. package/es/components/scale-view/index.d.ts +13 -0
  136. package/es/components/scale-view/src/ScaleView.vue.d.ts +13 -0
  137. package/es/components/scale-view/src/hooks/scaleview-computed.js +2 -1
  138. package/es/components/scale-view/src/hooks/scaleview-props.d.ts +4 -0
  139. package/es/components/scale-view/src/hooks/scaleview-props.js +4 -0
  140. package/es/components/search-cascader/src/utils/index.d.ts +1 -1
  141. package/es/components/select-person/src/SelectPerson.vue2.js +8 -1
  142. package/es/components/shortcut-provider/src/hooks/useShortcuts.js +1 -1
  143. package/es/components/shortcut-provider/src/types/index.d.ts +1 -0
  144. package/es/components/shortcut-provider/src/utils/index.d.ts +1 -1
  145. package/es/components/shortcut-provider/src/utils/index.js +3 -1
  146. package/es/components/shortcut-setter/index.d.ts +5 -0
  147. package/es/components/shortcut-setter/src/ShortcutSetter.vue.d.ts +5 -0
  148. package/es/components/table-filter/index.js +1 -1
  149. package/es/components/table-filter/src/components/classify-filter/ValueCfg.vue.d.ts +246 -1
  150. package/es/components/table-filter/src/components/classify-filter/ValueCfg.vue2.js +8 -2
  151. package/es/components/table-filter/src/components/classify-filter/components/Base/DateOption.vue.d.ts +104 -0
  152. package/es/components/table-filter/src/components/classify-filter/components/Base/DateOption.vue.js +6 -0
  153. package/es/components/table-filter/src/components/classify-filter/components/Base/DateOption.vue2.js +250 -0
  154. package/es/components/table-filter/src/components/classify-filter/components/Date.vue.d.ts +116 -0
  155. package/es/components/table-filter/src/components/classify-filter/components/Date.vue2.js +43 -4
  156. package/es/components/table-filter/src/components/classify-filter/components/DateRange.vue.d.ts +117 -1
  157. package/es/components/table-filter/src/components/classify-filter/components/DateRange.vue2.js +45 -8
  158. package/es/components/table-filter/src/components/classify-filter/components/index.d.ts +233 -1
  159. package/es/components/table-filter/src/components/classify-filter/helpers/options.d.ts +5 -1
  160. package/es/components/table-filter/src/components/classify-filter/helpers/options.js +74 -2
  161. package/es/components/table-filter/src/components/classify-filter/index.vue.d.ts +258 -5
  162. package/es/components/table-filter/src/components/classify-filter/index.vue2.js +15 -6
  163. package/es/components/table-filter/src/components/render-widget/components/DateInner.vue.d.ts +1 -1
  164. package/es/components/table-filter/src/components/render-widget/components/DateOut.vue.d.ts +1 -1
  165. package/es/components/table-filter/src/components/render-widget/components/DateQuickBtn/index.vue2.js +1 -1
  166. package/es/components/table-filter/src/components/render-widget/components/DateRangeInner.vue.d.ts +1 -1
  167. package/es/components/table-filter/src/components/render-widget/components/index.d.ts +3 -3
  168. package/es/components/table-filter/src/components/render-widget/helpers/dateExtraMap.js +32 -4
  169. package/es/components/table-filter/src/components/render-widget/helpers/presetValToTimestamp.d.ts +1 -0
  170. package/es/components/table-filter/src/components/render-widget/helpers/presetValToTimestamp.js +38 -2
  171. package/es/components/table-filter/src/components/render-widget/widgetCfgMaps.d.ts +3 -3
  172. package/es/components/table-filter/src/hooks/useAdvanced.js +5 -4
  173. package/es/components/table-filter/src/tool/baseOptions.js +8 -1
  174. package/es/components/table-filter/src/types/enums.d.ts +5 -0
  175. package/es/components/table-filter/src/types/enums.js +6 -1
  176. package/es/components/time-picker/index.d.ts +36 -4
  177. package/es/components/time-picker/src/TimePicker.vue.d.ts +36 -4
  178. package/es/components/time-picker/src/TimePicker.vue2.js +98 -13
  179. package/es/components/vertify/index.d.ts +1 -0
  180. package/es/components/vertify/index.js +1 -0
  181. package/es/components/vertify/src/components/IdentityVerification.vue.d.ts +89 -0
  182. package/es/components/vertify/src/components/IdentityVerification.vue.js +6 -0
  183. package/es/components/vertify/src/components/IdentityVerification.vue2.js +256 -0
  184. package/es/components/vertify/src/utils/dialog.d.ts +7 -0
  185. package/es/components/vertify/src/utils/dialog.js +73 -0
  186. package/es/components/vertify/src/utils/index.d.ts +11 -0
  187. package/es/components/vertify/src/utils/index.js +24 -0
  188. package/es/components/vod-chunk-upload/index.d.ts +13 -0
  189. package/es/components/vod-chunk-upload/src/chunk-upload-new.vue.d.ts +19 -2
  190. package/es/components/vod-chunk-upload/src/chunk-upload-new.vue2.js +104 -75
  191. package/es/components/vod-chunk-upload/src/hooks/upload-computed.d.ts +1 -0
  192. package/es/components/vod-chunk-upload/src/hooks/upload-computed.js +20 -3
  193. package/es/components/vod-chunk-upload/src/hooks/upload-data.d.ts +4 -0
  194. package/es/components/vod-chunk-upload/src/hooks/upload-data.js +6 -2
  195. package/es/components/vod-chunk-upload/src/vod-chunk-upload/vod-chunk-upload.vue.d.ts +13 -0
  196. package/es/components/vod-chunk-upload/src/vod-chunk-upload/vod-chunk-upload.vue2.js +6 -1
  197. package/es/components/vod-chunk-upload/style/index.css +1 -1
  198. package/es/shared/assets/img/defaultCover/10review_successful.png.js +1 -1
  199. package/es/shared/assets/img/defaultCover/11review_fail.png.js +1 -1
  200. package/es/shared/assets/img/defaultCover/12no_setting.png.js +1 -1
  201. package/es/shared/assets/img/defaultCover/13no_menu_setting.png.js +1 -1
  202. package/es/shared/assets/img/defaultCover/14no_call_setting.png.js +1 -1
  203. package/es/shared/assets/img/defaultCover/15no_use_tag.png.js +1 -1
  204. package/es/shared/assets/img/defaultCover/16no_table_data.png.js +1 -1
  205. package/es/shared/assets/img/defaultCover/1location.png.js +1 -1
  206. package/es/shared/assets/img/defaultCover/2notfound.png.js +1 -1
  207. package/es/shared/assets/img/defaultCover/3loading.png.js +1 -1
  208. package/es/shared/assets/img/defaultCover/4no_permission.png.js +1 -1
  209. package/es/shared/assets/img/defaultCover/5no_data.png.js +1 -1
  210. package/es/shared/assets/img/defaultCover/6no_network.png.js +1 -1
  211. package/es/shared/assets/img/defaultCover/7no_doctor.png.js +1 -1
  212. package/es/shared/assets/img/defaultCover/8system_error.png.js +1 -1
  213. package/es/shared/assets/img/defaultCover/9system_upgrade.png.js +1 -1
  214. package/es/shared/assets/img/failure.png.js +1 -1
  215. package/es/shared/assets/img/no-permission.png.js +1 -1
  216. package/es/shared/assets/img/nodata.png.js +1 -1
  217. package/es/shared/assets/img/notfound.png.js +1 -1
  218. package/es/shared/assets/img/qr.png.js +1 -1
  219. package/es/shared/assets/img/success.png.js +1 -1
  220. package/es/shared/assets/img/table_style_2.png.js +1 -1
  221. package/es/shared/assets/img/video.png.js +1 -1
  222. package/es/shared/assets/img/video_default_cover.png.js +1 -1
  223. package/es/shared/assets/img/xb_big.png.js +1 -1
  224. package/es/shared/assets/img/xb_small.png.js +1 -1
  225. package/es/shared/components/InputNumberSlash/InputNumberSlash.js +1 -1
  226. package/es/shared/hooks/useDateTime.d.ts +1 -1
  227. package/es/shared/hooks/useDateTime.js +1 -1
  228. package/es/shared/hooks/useLevelSearchCascader.js +3 -3
  229. package/es/shared/package.json.js +2 -2
  230. package/es/shared/utils/fabricjs/index.js +1 -1
  231. package/package.json +5 -5
  232. package/es/components/audio-sdk/src/utils/recorder/fft.d.ts +0 -4
  233. package/es/components/audio-sdk/src/utils/recorder/mp3-engine.d.ts +0 -4
  234. package/es/components/audio-sdk/src/utils/recorder/mp3.d.ts +0 -4
  235. package/es/components/audio-sdk/src/utils/recorder/recorder.d.ts +0 -4
  236. package/es/components/audio-sdk/src/utils/recorder/wave.d.ts +0 -4
  237. package/es/components/bpmn-workflow/src/BpmnWorkflow.d.ts +0 -0
  238. package/es/components/bpmn-workflow/types/BpmnViewer.d.ts +0 -1
  239. package/es/components/bpmn-workflow/types/ModelingModule.d.ts +0 -1
  240. package/es/components/bpmn-workflow/types/MoveCanvasModule.d.ts +0 -1
  241. package/es/shared/components/VueDraggable/src/vuedraggable.d.ts +0 -86
  242. package/es/shared/utils/fabricjs/index.d.ts +0 -6823
  243. package/es/shared/utils/tapable/index.d.ts +0 -139
@@ -5,7 +5,7 @@ import { Close, Mic, MicOff, Videocam, VideocamOff, Call, PersonAdd, ResizeOutli
5
5
  import { getUserDetailApi } from '../api/index.js';
6
6
  import '@vueuse/core';
7
7
  import { $message } from '../utils/index.js';
8
- import { xorBy } from 'lodash-es';
8
+ import 'lodash-es';
9
9
  import { CHAT_TYPE, SUBSCRIBE_MESSAGE_TYPE } from '../constants/index.js';
10
10
  import '../../../../shared/utils/index.js';
11
11
  import 'date-fns';
@@ -17,7 +17,6 @@ import 'stompjs';
17
17
  import 'sockjs-client/dist/sockjs.min.js';
18
18
  import { useVideo } from '../hooks/useVideo.js';
19
19
  import { useDraggable } from '../hooks/useDraggable.js';
20
- import TRTC from 'trtc-sdk-v5';
21
20
 
22
21
  const _hoisted_1 = {
23
22
  class: "top-right-btns"
@@ -142,26 +141,37 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
142
141
  __name: "MultipleVideo",
143
142
  setup(__props) {
144
143
  const selfVideoRef = ref();
145
- const remoteUsers = ref([]);
146
144
  const {
147
145
  state,
148
146
  sendMessage,
149
- trtc,
150
- trtcProxy,
151
147
  voiceClose,
152
148
  isAudio,
153
149
  isCall,
154
150
  startTimer,
155
- resetTimer,
156
151
  toggleAudio,
157
152
  messageTypeText,
158
153
  timing,
159
154
  toggleVideo,
160
155
  videocamClose,
161
156
  installEventHandlers,
162
- uninstallEventHandlers
163
- } = useVideo();
164
- const isConnect = ref(false);
157
+ uninstallEventHandlers,
158
+ isConnect,
159
+ remoteUsers,
160
+ enterRoom,
161
+ exitRoom,
162
+ startLocalMedia,
163
+ findUser,
164
+ addOrUpdateUser,
165
+ removeUser,
166
+ tryRenderRemoteVideo,
167
+ stopRemoteVideo,
168
+ setVideoRef,
169
+ checkAndRenderAllVideos,
170
+ MAIN_STREAM_TYPE
171
+ } = useVideo({
172
+ isMultiple: true,
173
+ enableRetry: true
174
+ });
165
175
  const wrapperRef = ref(null);
166
176
  const handleRef = ref(null);
167
177
  const isMaxSize = ref(true);
@@ -191,18 +201,40 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
191
201
  changeMiniPosition("top-right");
192
202
  }
193
203
  });
204
+ watch(() => remoteUsers.value.length, (newLength, oldLength) => {
205
+ console.log(`Remote users count changed: ${oldLength} -> ${newLength}`);
206
+ if (newLength > 0 && isConnect.value) {
207
+ setTimeout(() => {
208
+ checkAndRenderAllVideos();
209
+ }, 500);
210
+ }
211
+ });
194
212
  function handleAddPerson({
195
213
  checkedIds,
196
214
  checkedOptions
197
215
  }) {
198
- console.log("checkedIds :>> ", checkedIds, checkedOptions);
199
- state.currentAVMsg.checkedIds.push(...checkedIds);
200
- handleCall();
216
+ if (!(checkedIds == null ? void 0 : checkedIds.length)) {
217
+ console.warn("No users selected to add");
218
+ return;
219
+ }
220
+ console.log("Adding persons to call:", checkedIds, checkedOptions);
221
+ try {
222
+ state.currentAVMsg.checkedIds.push(...checkedIds);
223
+ if (isConnect.value) {
224
+ sendInvitations(checkedIds);
225
+ } else {
226
+ handleCall();
227
+ }
228
+ } catch (error) {
229
+ console.error("Error adding persons to call:", error);
230
+ $message.error("\u6DFB\u52A0\u53C2\u4F1A\u4EBA\u5931\u8D25");
231
+ }
201
232
  }
202
- function handleCall() {
203
- var _a;
204
- if ((_a = state.currentAVMsg.checkedIds) == null ? void 0 : _a.length) {
205
- state.currentAVMsg.checkedIds.forEach((id) => {
233
+ function sendInvitations(userIds) {
234
+ if (!(userIds == null ? void 0 : userIds.length))
235
+ return;
236
+ userIds.forEach((id) => {
237
+ try {
206
238
  sendMessage({
207
239
  chatType: CHAT_TYPE.SINGLE,
208
240
  content: {
@@ -211,134 +243,225 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
211
243
  },
212
244
  receiver: id
213
245
  });
214
- });
215
- }
216
- if (isConnect.value)
246
+ } catch (error) {
247
+ console.error("Failed to send invitation to user:", id, error);
248
+ }
249
+ });
250
+ }
251
+ function handleCall() {
252
+ var _a;
253
+ if (isConnect.value) {
254
+ console.log("Already connected to call");
217
255
  return;
218
- handleEnter();
256
+ }
257
+ try {
258
+ if ((_a = state.currentAVMsg.checkedIds) == null ? void 0 : _a.length) {
259
+ sendInvitations(state.currentAVMsg.checkedIds);
260
+ }
261
+ handleEnter();
262
+ } catch (error) {
263
+ console.error("Error starting call:", error);
264
+ $message.error("\u5F00\u59CB\u901A\u8BDD\u5931\u8D25");
265
+ }
219
266
  }
220
267
  async function handleEnter() {
221
- const checkResult = await TRTC.isSupported();
222
- if (!checkResult.result || !checkResult.detail.isH264EncodeSupported || !checkResult.detail.isH264DecodeSupported) {
223
- console.log("checkResult :>> ", checkResult);
268
+ const success = await enterRoom();
269
+ if (!success) {
224
270
  state.showMultipleVideo = false;
225
271
  return;
226
272
  }
227
273
  try {
228
- await trtc.enterRoom({
229
- strRoomId: state.currentAVMsg.strRoomId,
230
- sdkAppId: parseInt(state.userInfo.sdkAppID),
231
- userId: state.userInfo.id,
232
- userSig: state.userInfo.userSig,
233
- proxy: trtcProxy.value
234
- });
235
- isConnect.value = true;
236
274
  startTimer();
237
275
  installEventHandlers({
238
- handleError,
239
276
  handleRemoteUserEnter,
240
277
  handleRemoteAudioAvailable,
241
278
  handleRemoteUserExit,
242
- handleRemoteVideoAvailable
243
- });
244
- await trtc.startLocalAudio({
245
- mute: voiceClose.value
246
- });
247
- if (isAudio.value)
248
- return;
249
- await trtc.startLocalVideo({
250
- view: selfVideoRef.value,
251
- mute: videocamClose.value
279
+ handleRemoteVideoAvailable,
280
+ handleRemoteVideoUnavailable
252
281
  });
282
+ await startLocalMedia(selfVideoRef.value);
283
+ console.log("Successfully set up multiple video call");
284
+ setTimeout(() => {
285
+ checkAndRenderAllVideos();
286
+ }, 1e3);
287
+ periodicCheckInterval = setInterval(() => {
288
+ if (isConnect.value && remoteUsers.value.length > 0) {
289
+ console.log("Periodic video check, current users:", remoteUsers.value.map((u) => `${u.id}(video:${u.hasVideo})`));
290
+ checkAndRenderAllVideos();
291
+ } else if (!isConnect.value) {
292
+ console.log("Not connected, clearing check interval");
293
+ if (periodicCheckInterval) {
294
+ clearInterval(periodicCheckInterval);
295
+ periodicCheckInterval = null;
296
+ }
297
+ }
298
+ }, 5e3);
253
299
  } catch (error) {
254
- console.log("error :>> ", error);
255
- $message.error(error);
256
- state.showMultipleVideo = false;
300
+ console.error("Error setting up multiple video call:", error);
257
301
  }
258
302
  }
259
303
  async function handleExit() {
260
304
  try {
261
305
  state.showMultipleVideo = false;
262
- uninstallEventHandlers({
263
- handleError,
264
- handleRemoteUserEnter,
265
- handleRemoteAudioAvailable,
266
- handleRemoteUserExit,
267
- handleRemoteVideoAvailable
268
- });
269
- await trtc.exitRoom();
270
- await trtc.stopLocalAudio();
271
- if (isAudio.value)
272
- return;
273
- await trtc.stopLocalVideo();
306
+ if (isConnect.value) {
307
+ uninstallEventHandlers({
308
+ handleRemoteUserEnter,
309
+ handleRemoteAudioAvailable,
310
+ handleRemoteUserExit,
311
+ handleRemoteVideoAvailable,
312
+ handleRemoteVideoUnavailable
313
+ });
314
+ }
315
+ await exitRoom();
274
316
  } catch (error) {
275
- console.log("error :>> ", error);
317
+ console.error("Error during exit:", error);
276
318
  }
277
319
  }
278
320
  async function handleRemoteVideoAvailable(event) {
279
321
  const {
280
322
  userId,
281
- streamType
323
+ streamType,
324
+ available
282
325
  } = event;
326
+ if (!userId) {
327
+ return;
328
+ }
329
+ const isMainStream = !streamType || streamType === MAIN_STREAM_TYPE;
330
+ if (!isMainStream) {
331
+ return;
332
+ }
283
333
  try {
284
- if (streamType === TRTC.TYPE.STREAM_TYPE_MAIN) {
334
+ console.log(`Remote video ${available ? "available" : "unavailable"} for user:`, userId);
335
+ let user = findUser(userId);
336
+ if (!user) {
337
+ const name = await getUserName(userId);
338
+ addOrUpdateUser(userId, {
339
+ name,
340
+ hasVideo: true
341
+ });
342
+ console.log("Added user from video available event:", userId, name);
285
343
  await nextTick();
286
- await trtc.startRemoteVideo({
287
- userId,
288
- streamType,
289
- view: userId
344
+ setTimeout(() => {
345
+ tryRenderRemoteVideo(userId);
346
+ }, 100);
347
+ } else {
348
+ addOrUpdateUser(userId, {
349
+ hasVideo: true
290
350
  });
351
+ await nextTick();
352
+ await tryRenderRemoteVideo(userId);
291
353
  }
292
354
  } catch (error) {
293
- console.log("error :>> ", error);
355
+ console.error("Error handling remote video available:", error);
294
356
  }
295
357
  }
358
+ async function handleRemoteVideoUnavailable(event) {
359
+ const {
360
+ userId,
361
+ streamType,
362
+ available
363
+ } = event;
364
+ addOrUpdateUser(userId, {
365
+ hasVideo: false
366
+ });
367
+ await stopRemoteVideo(userId);
368
+ }
296
369
  async function handleRemoteAudioAvailable(event) {
297
- var _a;
298
370
  const {
299
- userId
371
+ userId,
372
+ available
300
373
  } = event;
301
- if (userId && !((_a = remoteUsers.value.map((user) => user.id)) == null ? void 0 : _a.includes(userId))) {
302
- const name = await getUserName(userId);
303
- remoteUsers.value.push({
304
- id: userId,
305
- name
306
- });
374
+ if (!userId)
375
+ return;
376
+ try {
377
+ console.log(`Remote audio ${available ? "available" : "unavailable"} for user:`, userId);
378
+ let user = findUser(userId);
379
+ if (!user && available) {
380
+ const name = await getUserName(userId);
381
+ addOrUpdateUser(userId, {
382
+ name,
383
+ hasAudio: true
384
+ });
385
+ console.log("Added user from audio available event:", userId, name);
386
+ } else {
387
+ addOrUpdateUser(userId, {
388
+ hasAudio: available
389
+ });
390
+ }
391
+ } catch (error) {
392
+ console.error("Error handling remote audio available:", error);
307
393
  }
308
394
  }
309
395
  async function handleRemoteUserEnter(event) {
310
396
  const {
311
397
  userId
312
398
  } = event;
313
- const name = await getUserName(userId);
314
- remoteUsers.value.push({
315
- id: userId,
316
- name
317
- });
318
- startTimer();
399
+ if (!userId)
400
+ return;
401
+ try {
402
+ console.log("\u76D1\u542C\u5230\u8FDC\u7A0B\u7528\u6237\u8FDB\u623F\u95F4\u4E86\u300B\u300B\u300B\u300B\u300B", userId);
403
+ if (!findUser(userId)) {
404
+ const name = await getUserName(userId);
405
+ addOrUpdateUser(userId, {
406
+ name
407
+ });
408
+ console.log("Remote user entered:", userId, name);
409
+ await nextTick();
410
+ setTimeout(() => {
411
+ const user = findUser(userId);
412
+ if (user == null ? void 0 : user.hasVideo) {
413
+ console.log("User already has video stream, attempting to render");
414
+ tryRenderRemoteVideo(userId);
415
+ }
416
+ }, 100);
417
+ }
418
+ } catch (error) {
419
+ console.error("Error handling remote user enter:", error);
420
+ }
319
421
  }
320
422
  async function getUserName(userId) {
321
- const data = await getUserDetailApi({
322
- userId
323
- });
324
- return (data == null ? void 0 : data.name) || "";
423
+ try {
424
+ const data = await getUserDetailApi({
425
+ userId
426
+ });
427
+ return (data == null ? void 0 : data.name) || userId;
428
+ } catch (error) {
429
+ console.warn("Failed to get user name for:", userId, error);
430
+ return userId;
431
+ }
325
432
  }
326
433
  function handleRemoteUserExit(event) {
327
- console.log("event :>> \u9000\u623F", event);
328
434
  const {
329
435
  userId
330
436
  } = event;
331
- remoteUsers.value = xorBy(remoteUsers.value, [{
332
- id: userId,
333
- name: ""
334
- }], "id");
335
- }
336
- function handleError(error) {
337
- console.log("error :>> ", error);
338
- state.showMultipleVideo = false;
437
+ if (!userId)
438
+ return;
439
+ console.log("Remote user exited:", userId);
440
+ try {
441
+ removeUser(userId);
442
+ console.log("Cleaned up resources for user:", userId);
443
+ setTimeout(() => {
444
+ const user = findUser(userId);
445
+ if (user) {
446
+ console.warn("User still exists after removal, force removing:", userId);
447
+ const userIndex = remoteUsers.value.findIndex((u) => u.id === userId);
448
+ if (userIndex !== -1) {
449
+ remoteUsers.value.splice(userIndex, 1);
450
+ }
451
+ }
452
+ }, 100);
453
+ } catch (error) {
454
+ console.error("Error handling remote user exit:", error);
455
+ }
339
456
  }
340
- onBeforeUnmount(() => {
341
- handleExit();
457
+ let periodicCheckInterval = null;
458
+ onBeforeUnmount(async () => {
459
+ console.log("Component unmounting, cleaning up...");
460
+ if (periodicCheckInterval) {
461
+ clearInterval(periodicCheckInterval);
462
+ periodicCheckInterval = null;
463
+ }
464
+ await handleExit();
342
465
  });
343
466
  return (_ctx, _cache) => {
344
467
  return openBlock(), createElementBlock(Fragment, null, [withDirectives(createElementVNode("div", {
@@ -352,7 +475,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
352
475
  ref: handleRef
353
476
  }, [withDirectives(createElementVNode("span", {
354
477
  class: "title"
355
- }, toDisplayString(unref(title)), 513), [[vShow, isConnect.value]]), createElementVNode("div", _hoisted_1, [createVNode(unref(NButton), {
478
+ }, toDisplayString(unref(title)), 513), [[vShow, unref(isConnect)]]), createElementVNode("div", _hoisted_1, [createVNode(unref(NButton), {
356
479
  quaternary: "",
357
480
  size: "tiny",
358
481
  class: "custom-btn",
@@ -367,7 +490,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
367
490
  component: unref(Close)
368
491
  }, null, 8, ["component"])]),
369
492
  _: 1
370
- })])], 512), isConnect.value ? (openBlock(), createElementBlock("div", _hoisted_2, [createElementVNode("div", _hoisted_3, [createElementVNode("div", {
493
+ })])], 512), unref(isConnect) ? (openBlock(), createElementBlock("div", _hoisted_2, [createElementVNode("div", _hoisted_3, [createElementVNode("div", {
371
494
  ref_key: "selfVideoRef",
372
495
  ref: selfVideoRef,
373
496
  class: "video-view",
@@ -417,12 +540,14 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
417
540
  _: 1
418
541
  }), _hoisted_13])]),
419
542
  _: 1
420
- }, 8, ["disabledIds"])])])]), createElementVNode("div", _hoisted_14, [(openBlock(true), createElementBlock(Fragment, null, renderList(remoteUsers.value, (user) => {
543
+ }, 8, ["disabledIds"])])])]), createElementVNode("div", _hoisted_14, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(remoteUsers), (user) => {
421
544
  return openBlock(), createElementBlock("div", {
422
545
  key: user.id,
423
546
  id: user.id,
424
547
  class: "video-view",
425
- "data-name": user.name
548
+ "data-name": user.name,
549
+ ref_for: true,
550
+ ref: (el) => unref(setVideoRef)(user.id, el)
426
551
  }, null, 8, _hoisted_15);
427
552
  }), 128))])])) : (openBlock(), createElementBlock(Fragment, {
428
553
  key: 1
@@ -7,7 +7,30 @@ declare const _default: import("vue").DefineComponent<{}, {
7
7
  currentSessionItem: AnyObject;
8
8
  id: string;
9
9
  userInfo: AnyObject;
10
- msgList: AnyObject[];
10
+ msgList: {
11
+ [x: string]: any;
12
+ id: string;
13
+ sessionKey: string;
14
+ content: {
15
+ [x: string]: any;
16
+ chatMessageType: string;
17
+ msg: string;
18
+ referenceContent?: any;
19
+ forwardMessageList?: AnyObject[] | undefined;
20
+ messageTemplate?: any;
21
+ messageTemplateData?: any;
22
+ fileUrl?: string | undefined;
23
+ avStatus?: string | undefined;
24
+ };
25
+ senderName: string;
26
+ sendTime: string;
27
+ sender: string;
28
+ status: string;
29
+ senderAvatar: string;
30
+ __content: string;
31
+ __time?: string | undefined;
32
+ __sendTime?: string | undefined;
33
+ }[];
11
34
  currentMsg: AnyObject;
12
35
  isAppendMsg: boolean;
13
36
  sessionList: AnyObject[];
@@ -36,7 +36,7 @@ declare const _default: import("vue").DefineComponent<{
36
36
  NTooltip: any;
37
37
  emojis: {
38
38
  default: string[][];
39
- findEmoji(name: string): any;
39
+ findEmoji(name: string): string | undefined;
40
40
  };
41
41
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "update:show"[], "update:show", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
42
42
  id: {
@@ -32,7 +32,30 @@ declare const _default: import("vue").DefineComponent<{}, {
32
32
  currentSessionItem: AnyObject;
33
33
  id: string;
34
34
  userInfo: AnyObject;
35
- msgList: AnyObject[];
35
+ msgList: {
36
+ [x: string]: any;
37
+ id: string;
38
+ sessionKey: string;
39
+ content: {
40
+ [x: string]: any;
41
+ chatMessageType: string;
42
+ msg: string;
43
+ referenceContent?: any;
44
+ forwardMessageList?: AnyObject[] | undefined;
45
+ messageTemplate?: any;
46
+ messageTemplateData?: any;
47
+ fileUrl?: string | undefined;
48
+ avStatus?: string | undefined;
49
+ };
50
+ senderName: string;
51
+ sendTime: string;
52
+ sender: string;
53
+ status: string;
54
+ senderAvatar: string;
55
+ __content: string;
56
+ __time?: string | undefined;
57
+ __sendTime?: string | undefined;
58
+ }[];
36
59
  currentMsg: AnyObject;
37
60
  isAppendMsg: boolean;
38
61
  sessionList: AnyObject[];
@@ -1,4 +1,4 @@
1
- import TRTC from 'trtc-sdk-v5';
1
+ import { type TRTCEvent } from '../hooks';
2
2
  import { AV_STATUS } from '../constants';
3
3
  declare const _default: import("vue").DefineComponent<{}, {
4
4
  sendMessage: (message: {
@@ -11,7 +11,30 @@ declare const _default: import("vue").DefineComponent<{}, {
11
11
  currentSessionItem: import("../../../../shared/types").AnyObject;
12
12
  id: string;
13
13
  userInfo: import("../../../../shared/types").AnyObject;
14
- msgList: import("../../../../shared/types").AnyObject[];
14
+ msgList: {
15
+ [x: string]: any;
16
+ id: string;
17
+ sessionKey: string;
18
+ content: {
19
+ [x: string]: any;
20
+ chatMessageType: string;
21
+ msg: string;
22
+ referenceContent?: any;
23
+ forwardMessageList?: import("../../../../shared/types").AnyObject[] | undefined;
24
+ messageTemplate?: any;
25
+ messageTemplateData?: any;
26
+ fileUrl?: string | undefined;
27
+ avStatus?: string | undefined;
28
+ };
29
+ senderName: string;
30
+ sendTime: string;
31
+ sender: string;
32
+ status: string;
33
+ senderAvatar: string;
34
+ __content: string;
35
+ __time?: string | undefined;
36
+ __sendTime?: string | undefined;
37
+ }[];
15
38
  currentMsg: import("../../../../shared/types").AnyObject;
16
39
  isAppendMsg: boolean;
17
40
  sessionList: import("../../../../shared/types").AnyObject[];
@@ -35,36 +58,26 @@ declare const _default: import("vue").DefineComponent<{}, {
35
58
  };
36
59
  isForward: boolean;
37
60
  };
38
- trtcProxy: import("vue").Ref<any>;
39
- trtc: TRTC;
61
+ trtc: import("trtc-sdk-v5").TRTC;
40
62
  timing: import("vue").Ref<string>;
41
63
  voiceClose: import("vue").Ref<boolean>;
42
64
  isAudio: import("vue").ComputedRef<boolean>;
43
65
  isCall: import("vue").ComputedRef<boolean>;
44
66
  startTimer: () => void;
45
- resetTimer: () => void;
46
67
  toggleAudio: () => Promise<void>;
47
68
  messageTypeText: import("vue").ComputedRef<"语音" | "视频">;
48
69
  time: {
49
70
  timer: any;
50
71
  seconds: number;
51
72
  };
52
- installEventHandlers: ({ handleError, handleRemoteUserEnter, handleRemoteAudioAvailable, handleRemoteUserExit, handleRemoteVideoAvailable }: {
53
- handleError: import("../../../../shared/types").AnyFn;
54
- handleRemoteUserEnter: import("../../../../shared/types").AnyFn;
55
- handleRemoteAudioAvailable: import("../../../../shared/types").AnyFn;
56
- handleRemoteUserExit: import("../../../../shared/types").AnyFn;
57
- handleRemoteVideoAvailable: import("../../../../shared/types").AnyFn;
58
- }) => void;
59
- uninstallEventHandlers: ({ handleError, handleRemoteUserEnter, handleRemoteAudioAvailable, handleRemoteUserExit, handleRemoteVideoAvailable }: {
60
- handleError: import("../../../../shared/types").AnyFn;
61
- handleRemoteUserEnter: import("../../../../shared/types").AnyFn;
62
- handleRemoteAudioAvailable: import("../../../../shared/types").AnyFn;
63
- handleRemoteUserExit: import("../../../../shared/types").AnyFn;
64
- handleRemoteVideoAvailable: import("../../../../shared/types").AnyFn;
65
- }) => void;
66
- videoRef: import("vue").Ref<any>;
67
- selfVideoRef: import("vue").Ref<any>;
73
+ installEventHandlers: (handlers: import("../hooks").VideoEventHandlers) => void;
74
+ uninstallEventHandlers: (handlers: import("../hooks").VideoEventHandlers) => void;
75
+ enterRoom: () => Promise<boolean>;
76
+ exitRoom: () => Promise<void>;
77
+ startLocalMedia: (selfVideoRef?: HTMLElement | undefined) => Promise<void>;
78
+ MAIN_STREAM_TYPE: any;
79
+ videoRef: import("vue").Ref<HTMLElement | undefined>;
80
+ selfVideoRef: import("vue").Ref<HTMLElement | undefined>;
68
81
  isConnect: import("vue").Ref<boolean>;
69
82
  timeout: any;
70
83
  info: import("vue").ComputedRef<{
@@ -79,11 +92,16 @@ declare const _default: import("vue").DefineComponent<{}, {
79
92
  handleEnter: () => Promise<void>;
80
93
  handleFinish: () => void;
81
94
  handleExit: () => Promise<void>;
82
- handleRemoteVideoAvailable: (event: any) => Promise<void>;
83
- handleRemoteAudioAvailable: (event: any) => void;
84
- handleRemoteUserEnter: () => void;
85
- handleRemoteUserExit: (event: any) => void;
86
- handleError: (error: any) => void;
95
+ handleRemoteVideoAvailable: (event: TRTCEvent) => Promise<void>;
96
+ handleRemoteAudioAvailable: (event: TRTCEvent) => void;
97
+ handleRemoteUserEnter: (event: TRTCEvent) => void;
98
+ handleRemoteUserExit: (event: TRTCEvent) => void;
99
+ statusHandlers: {
100
+ readonly IN_CALL: () => Promise<void>;
101
+ readonly CALL_BUSY: () => void;
102
+ readonly NO_RESPONSE: () => void;
103
+ readonly REJECTED: () => void;
104
+ };
87
105
  NButton: any;
88
106
  NAvatar: any;
89
107
  NIcon: any;