hy-dispatch-ui-v3 0.2.67 → 0.2.68

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 (280) hide show
  1. package/dist/tailwind.css +232 -20
  2. package/es/api/device.mjs +2 -3
  3. package/es/api/exportExcel.mjs +57 -0
  4. package/es/api/index.mjs +27 -16
  5. package/es/api/mapRail.mjs +31 -0
  6. package/es/api/organization.mjs +17 -9
  7. package/es/api/rule.mjs +30 -0
  8. package/es/api/sypct.mjs +2 -3
  9. package/es/api/task.mjs +2 -3
  10. package/es/bussiness/hyAddDepartmentType/addDepartmentType.vue.mjs +18 -19
  11. package/es/bussiness/hyAddDepartmentType/style/addDepartmentType.scss +28 -28
  12. package/es/bussiness/hyElectronicFence/cpns/addElectronicFenceDialog/addElectronicFenceDialog.vue.mjs +511 -0
  13. package/es/bussiness/hyElectronicFence/cpns/batchSetElectronicFenceUserDialog/batchSetElectronicFenceUserDialog.vue.mjs +169 -0
  14. package/es/bussiness/hyElectronicFence/cpns/electronicFenceAssociatedUsersDialog/electronicFenceAssociatedUsersDialog.vue.mjs +318 -0
  15. package/es/bussiness/hyElectronicFence/cpns/electronicFenceAssociatedUsersDialog/electronicFenceAssociatedUsersItem.vue.mjs +123 -0
  16. package/es/bussiness/hyElectronicFence/electronicFence.vue.mjs +358 -0
  17. package/es/bussiness/hyElectronicFence/index.mjs +13 -0
  18. package/es/bussiness/hyElectronicFence/style/electronicFence.scss +0 -0
  19. package/es/bussiness/hyMapAearchPlace/js/index.mjs +1 -1
  20. package/es/bussiness/hyMapAearchPlace/mapAearchPlace.vue.mjs +4 -6
  21. package/es/bussiness/hyMapAearchPlace/style/mapAearchPlace.scss +4 -3
  22. package/es/bussiness/hyRuleSetting/cpns/gatheringPeople/gatheringPeople.vue.mjs +270 -0
  23. package/es/bussiness/hyRuleSetting/cpns/missionInRule/missionInRule.vue.mjs +251 -0
  24. package/es/bussiness/hyRuleSetting/cpns/missionOutRule/missionOutRule.vue.mjs +251 -0
  25. package/es/bussiness/hyRuleSetting/cpns/ruleAssignDialog/ruleAssignDialog.vue.mjs +395 -0
  26. package/es/bussiness/hyRuleSetting/cpns/ruleFenceDialog/ruleFenceDialog.vue.mjs +651 -0
  27. package/es/bussiness/hyRuleSetting/cpns/ruleSettingDialog/ruleSettingDialog.vue.mjs +357 -0
  28. package/es/bussiness/hyRuleSetting/cpns/sedentary/sedentary.vue.mjs +261 -0
  29. package/es/bussiness/hyRuleSetting/cpns/setRuleAggregationAlarmDialog/setRuleAggregationAlarmDialog.vue.mjs +360 -0
  30. package/es/bussiness/hyRuleSetting/cpns/timedVideo/timedVideo.vue.mjs +240 -0
  31. package/es/bussiness/hyRuleSetting/cpns/timerCamera/timerCamera.vue.mjs +258 -0
  32. package/es/bussiness/hyRuleSetting/cpns/timingReturn/timingReturn.vue.mjs +240 -0
  33. package/es/bussiness/hyRuleSetting/index.mjs +15 -0
  34. package/es/bussiness/hyRuleSetting/js/ruleSetting.mjs +65 -0
  35. package/es/bussiness/hyRuleSetting/ruleSetting.vue.mjs +129 -0
  36. package/es/bussiness/hyRuleSetting/style/ruleSetting.scss +0 -0
  37. package/es/bussiness/index.mjs +2 -0
  38. package/es/components/hyAudioPlayer/audioPlayer.vue.mjs +5 -13
  39. package/es/components/hyAudioPlayer/js/index.mjs +9 -14
  40. package/es/components/hyAudioPlayer/style/audioPlayer.scss +7 -2
  41. package/es/components/hyButton/button.vue.mjs +2 -2
  42. package/es/components/hyButton/style/button.scss +48 -74
  43. package/es/components/hyCheckboxGroup/checkboxGroup.vue.mjs +119 -0
  44. package/es/components/hyCheckboxGroup/index.mjs +7 -0
  45. package/es/components/hyCheckboxGroup/style/checkboxGroup.scss +58 -0
  46. package/es/components/hyConfigProvider/configProvider.vue.mjs +51 -38
  47. package/es/components/hyConfirmDialog/confirmDialog.vue.mjs +57 -62
  48. package/es/components/hyConfirmDialog/confirmMethod.mjs +24 -22
  49. package/es/components/hyCutter/cutter.vue.mjs +9 -23
  50. package/es/components/hyDatePicker/datePicker.vue.mjs +12 -17
  51. package/es/components/hyDialog/dialog.vue.mjs +5 -9
  52. package/es/components/hyDialog/style/dialog.scss +12 -13
  53. package/es/components/hyDrawer/drawer.vue.mjs +100 -0
  54. package/es/components/hyDrawer/index.mjs +7 -0
  55. package/es/components/hyDrawer/style/drawer.scss +0 -0
  56. package/es/components/hyForm/cpns/arrayItem.vue.mjs +10 -28
  57. package/es/components/hyForm/cpns/arrayItem2.vue.mjs +198 -0
  58. package/es/components/hyForm/cpns/extraItem.vue.mjs +2 -3
  59. package/es/components/hyForm/cpns/formItem.vue.mjs +65 -35
  60. package/es/components/hyForm/cpns/locationSelect.vue.mjs +26 -26
  61. package/es/components/hyForm/form.vue.mjs +56 -24
  62. package/es/components/hyForm/js/index.mjs +4 -8
  63. package/es/components/hyForm/js/useAppForm.mjs +4 -9
  64. package/es/components/hyForm/style/form.scss +4 -13
  65. package/es/components/hyIcon/icon.vue.mjs +3 -3
  66. package/es/components/hyIconBox/style/iconBox.scss +2 -6
  67. package/es/components/hyInput/inputSearch.vue.mjs +8 -11
  68. package/es/components/hyInput/style/inputSearch.scss +3 -0
  69. package/es/components/hyLoading/index.mjs +3 -5
  70. package/es/components/hyMap/js/index.mjs +29 -4
  71. package/es/components/hyMap/map.vue.mjs +17 -3
  72. package/es/components/hyMenu/style/menu.scss +5 -15
  73. package/es/components/hyNoPermissions/noPermissions.vue.mjs +3 -4
  74. package/es/components/hyNoPermissionsMap/noPermissionsMap.vue.mjs +3 -6
  75. package/es/components/hyOrgCascader/js/index.mjs +1 -5
  76. package/es/components/hyOrgCascader/orgCascader.vue.mjs +25 -11
  77. package/es/components/hyOrgCascader/style/orgCascader.scss +7 -0
  78. package/es/components/hyRadioGroup/radioGroup.vue.mjs +48 -41
  79. package/es/components/hyRadioGroup/style/radioGroup.scss +9 -0
  80. package/es/components/hySearch/cpns/searchItem.vue.mjs +33 -20
  81. package/es/components/hySearch/js/index.mjs +1 -4
  82. package/es/components/hySearch/js/useAppSearch.mjs +5 -10
  83. package/es/components/hySearch/search.vue.mjs +9 -16
  84. package/es/components/hySearch/style/search.scss +2 -0
  85. package/es/components/hyStatus/index.mjs +7 -0
  86. package/es/components/hyStatus/status.vue.mjs +110 -0
  87. package/es/components/hyStatus/style/status.scss +0 -0
  88. package/es/components/hyTable/cpns/columnSelect.vue.mjs +24 -28
  89. package/es/components/hyTable/cpns/columnSelectItem.vue.mjs +8 -9
  90. package/es/components/hyTable/cpns/headerItem.vue.mjs +2 -2
  91. package/es/components/hyTable/cpns/virtualTable.vue.mjs +18 -28
  92. package/es/components/hyTable/js/index.mjs +56 -59
  93. package/es/components/hyTable/js/useAppTable.mjs +3 -4
  94. package/es/components/hyTable/style/table.scss +8 -0
  95. package/es/components/hyTable/table.vue.mjs +35 -41
  96. package/es/components/hyTableActionButton/tableActionButton.vue.mjs +4 -4
  97. package/es/components/hyTableForm/batchTableForm.vue.mjs +3 -7
  98. package/es/components/hyTableForm/js/index.mjs +2 -8
  99. package/es/components/hyTableForm/js/useAppTableForm.mjs +2 -7
  100. package/es/components/hyTableForm/style/batchTableForm.scss +26 -54
  101. package/es/components/hyTableForm/style/tableForm.scss +3 -2
  102. package/es/components/hyTableForm/tableForm.vue.mjs +90 -46
  103. package/es/components/hyTimePicker/timePicker.vue.mjs +4 -5
  104. package/es/components/hyTree/js/index.mjs +13 -40
  105. package/es/components/hyTree/style/index.css +1 -1
  106. package/es/components/hyTree/tree.vue.mjs +17 -16
  107. package/es/components/hyUserAvatar/userAvatar.vue.mjs +3 -6
  108. package/es/components/hyVideoPlayer/js/index.mjs +14 -23
  109. package/es/components/hyVideoPlayer/style/videoPlayer.scss +5 -7
  110. package/es/components/hyVideoPlayer/videoPlayer.vue.mjs +16 -26
  111. package/es/components/index.mjs +3 -0
  112. package/es/hooks/index.mjs +6 -2
  113. package/es/hooks/useAudioPlayerConfig.mjs +1 -3
  114. package/es/hooks/useBaseMainStore.mjs +29 -0
  115. package/es/hooks/useCurrentBus.mjs +20 -0
  116. package/es/hooks/useDialog.mjs +327 -0
  117. package/es/hooks/useExportFile.mjs +133 -0
  118. package/es/hooks/useGlobalConfig.mjs +10 -6
  119. package/es/hooks/useLocale.mjs +22 -12
  120. package/es/hooks/usePermissionMap.mjs +1 -3
  121. package/es/hooks/useResizeHandler.mjs +1 -4
  122. package/es/hooks/useResizeObserver.mjs +3 -1
  123. package/es/hooks/useSubscribe.mjs +2 -2
  124. package/es/hooks/useUserAvatarMap.mjs +1 -3
  125. package/es/hooks/useVideoPlayerConfig.mjs +1 -3
  126. package/es/index.mjs +11 -2
  127. package/es/locale/{en.mjs → en_US.mjs} +79 -4
  128. package/es/locale/index.mjs +2 -2
  129. package/es/locale/zh_CN.mjs +79 -2
  130. package/es/style/tailwind.scss +7 -3
  131. package/es/utils/adaptive.mjs +1 -3
  132. package/es/utils/form.mjs +7 -10
  133. package/es/utils/handler.mjs +4 -8
  134. package/es/utils/input.mjs +8 -9
  135. package/es/utils/map/hook/bigMap.mjs +14 -53
  136. package/es/utils/map/hook/gaode.mjs +5 -20
  137. package/es/utils/map/hook/leafletjs.mjs +23 -79
  138. package/es/utils/map/index.mjs +2 -8
  139. package/es/utils/map/js/webgis.mjs +12 -12
  140. package/es/version.mjs +1 -1
  141. package/lib/api/device.js +2 -3
  142. package/lib/api/exportExcel.js +62 -0
  143. package/lib/api/index.js +27 -16
  144. package/lib/api/mapRail.js +34 -0
  145. package/lib/api/organization.js +17 -8
  146. package/lib/api/rule.js +33 -0
  147. package/lib/api/sypct.js +2 -3
  148. package/lib/api/task.js +2 -3
  149. package/lib/bussiness/hyAddDepartmentType/addDepartmentType.vue.js +17 -18
  150. package/lib/bussiness/hyAddDepartmentType/style/addDepartmentType.scss +28 -28
  151. package/lib/bussiness/hyElectronicFence/cpns/addElectronicFenceDialog/addElectronicFenceDialog.vue.js +515 -0
  152. package/lib/bussiness/hyElectronicFence/cpns/batchSetElectronicFenceUserDialog/batchSetElectronicFenceUserDialog.vue.js +173 -0
  153. package/lib/bussiness/hyElectronicFence/cpns/electronicFenceAssociatedUsersDialog/electronicFenceAssociatedUsersDialog.vue.js +322 -0
  154. package/lib/bussiness/hyElectronicFence/cpns/electronicFenceAssociatedUsersDialog/electronicFenceAssociatedUsersItem.vue.js +127 -0
  155. package/lib/bussiness/hyElectronicFence/electronicFence.vue.js +362 -0
  156. package/lib/bussiness/hyElectronicFence/index.js +21 -0
  157. package/lib/bussiness/hyElectronicFence/style/electronicFence.scss +0 -0
  158. package/lib/bussiness/hyMapAearchPlace/js/index.js +1 -1
  159. package/lib/bussiness/hyMapAearchPlace/mapAearchPlace.vue.js +4 -6
  160. package/lib/bussiness/hyMapAearchPlace/style/mapAearchPlace.scss +4 -3
  161. package/lib/bussiness/hyRuleSetting/cpns/gatheringPeople/gatheringPeople.vue.js +274 -0
  162. package/lib/bussiness/hyRuleSetting/cpns/missionInRule/missionInRule.vue.js +255 -0
  163. package/lib/bussiness/hyRuleSetting/cpns/missionOutRule/missionOutRule.vue.js +255 -0
  164. package/lib/bussiness/hyRuleSetting/cpns/ruleAssignDialog/ruleAssignDialog.vue.js +399 -0
  165. package/lib/bussiness/hyRuleSetting/cpns/ruleFenceDialog/ruleFenceDialog.vue.js +655 -0
  166. package/lib/bussiness/hyRuleSetting/cpns/ruleSettingDialog/ruleSettingDialog.vue.js +361 -0
  167. package/lib/bussiness/hyRuleSetting/cpns/sedentary/sedentary.vue.js +265 -0
  168. package/lib/bussiness/hyRuleSetting/cpns/setRuleAggregationAlarmDialog/setRuleAggregationAlarmDialog.vue.js +364 -0
  169. package/lib/bussiness/hyRuleSetting/cpns/timedVideo/timedVideo.vue.js +244 -0
  170. package/lib/bussiness/hyRuleSetting/cpns/timerCamera/timerCamera.vue.js +262 -0
  171. package/lib/bussiness/hyRuleSetting/cpns/timingReturn/timingReturn.vue.js +244 -0
  172. package/lib/bussiness/hyRuleSetting/index.js +24 -0
  173. package/lib/bussiness/hyRuleSetting/js/ruleSetting.js +68 -0
  174. package/lib/bussiness/hyRuleSetting/ruleSetting.vue.js +133 -0
  175. package/lib/bussiness/hyRuleSetting/style/ruleSetting.scss +0 -0
  176. package/lib/bussiness/index.js +21 -10
  177. package/lib/components/hyAudioPlayer/audioPlayer.vue.js +5 -13
  178. package/lib/components/hyAudioPlayer/js/index.js +9 -14
  179. package/lib/components/hyAudioPlayer/style/audioPlayer.scss +7 -2
  180. package/lib/components/hyButton/button.vue.js +2 -2
  181. package/lib/components/hyButton/style/button.scss +48 -74
  182. package/lib/components/hyCheckboxGroup/checkboxGroup.vue.js +123 -0
  183. package/lib/components/hyCheckboxGroup/index.js +12 -0
  184. package/lib/components/hyCheckboxGroup/style/checkboxGroup.scss +58 -0
  185. package/lib/components/hyConfigProvider/configProvider.vue.js +50 -56
  186. package/lib/components/hyConfirmDialog/confirmDialog.vue.js +56 -61
  187. package/lib/components/hyConfirmDialog/confirmMethod.js +23 -21
  188. package/lib/components/hyCutter/cutter.vue.js +8 -22
  189. package/lib/components/hyDatePicker/datePicker.vue.js +11 -16
  190. package/lib/components/hyDialog/dialog.vue.js +5 -9
  191. package/lib/components/hyDialog/style/dialog.scss +12 -13
  192. package/lib/components/hyDrawer/drawer.vue.js +104 -0
  193. package/lib/components/hyDrawer/index.js +12 -0
  194. package/lib/components/hyDrawer/style/drawer.scss +0 -0
  195. package/lib/components/hyForm/cpns/arrayItem.vue.js +9 -27
  196. package/lib/components/hyForm/cpns/arrayItem2.vue.js +202 -0
  197. package/lib/components/hyForm/cpns/extraItem.vue.js +2 -3
  198. package/lib/components/hyForm/cpns/formItem.vue.js +66 -36
  199. package/lib/components/hyForm/cpns/locationSelect.vue.js +26 -26
  200. package/lib/components/hyForm/form.vue.js +51 -19
  201. package/lib/components/hyForm/js/index.js +3 -7
  202. package/lib/components/hyForm/js/useAppForm.js +4 -9
  203. package/lib/components/hyForm/style/form.scss +4 -13
  204. package/lib/components/hyIcon/icon.vue.js +3 -3
  205. package/lib/components/hyIconBox/style/iconBox.scss +2 -6
  206. package/lib/components/hyInput/inputSearch.vue.js +7 -10
  207. package/lib/components/hyInput/style/inputSearch.scss +3 -0
  208. package/lib/components/hyLoading/index.js +2 -4
  209. package/lib/components/hyMap/js/index.js +29 -4
  210. package/lib/components/hyMap/map.vue.js +17 -3
  211. package/lib/components/hyMenu/style/menu.scss +5 -15
  212. package/lib/components/hyNoPermissions/noPermissions.vue.js +3 -4
  213. package/lib/components/hyNoPermissionsMap/noPermissionsMap.vue.js +3 -6
  214. package/lib/components/hyOrgCascader/js/index.js +1 -5
  215. package/lib/components/hyOrgCascader/orgCascader.vue.js +23 -9
  216. package/lib/components/hyOrgCascader/style/orgCascader.scss +7 -0
  217. package/lib/components/hyRadioGroup/radioGroup.vue.js +47 -40
  218. package/lib/components/hyRadioGroup/style/radioGroup.scss +9 -0
  219. package/lib/components/hySearch/cpns/searchItem.vue.js +33 -20
  220. package/lib/components/hySearch/js/index.js +1 -4
  221. package/lib/components/hySearch/js/useAppSearch.js +5 -10
  222. package/lib/components/hySearch/search.vue.js +9 -16
  223. package/lib/components/hySearch/style/search.scss +2 -0
  224. package/lib/components/hyStatus/index.js +12 -0
  225. package/lib/components/hyStatus/status.vue.js +114 -0
  226. package/lib/components/hyStatus/style/status.scss +0 -0
  227. package/lib/components/hyTable/cpns/columnSelect.vue.js +22 -26
  228. package/lib/components/hyTable/cpns/columnSelectItem.vue.js +7 -8
  229. package/lib/components/hyTable/cpns/headerItem.vue.js +2 -2
  230. package/lib/components/hyTable/cpns/virtualTable.vue.js +17 -27
  231. package/lib/components/hyTable/js/index.js +54 -57
  232. package/lib/components/hyTable/js/useAppTable.js +2 -3
  233. package/lib/components/hyTable/style/table.scss +8 -0
  234. package/lib/components/hyTable/table.vue.js +35 -41
  235. package/lib/components/hyTableActionButton/tableActionButton.vue.js +4 -4
  236. package/lib/components/hyTableForm/batchTableForm.vue.js +3 -7
  237. package/lib/components/hyTableForm/js/index.js +2 -8
  238. package/lib/components/hyTableForm/js/useAppTableForm.js +2 -7
  239. package/lib/components/hyTableForm/style/batchTableForm.scss +26 -54
  240. package/lib/components/hyTableForm/style/tableForm.scss +3 -2
  241. package/lib/components/hyTableForm/tableForm.vue.js +89 -45
  242. package/lib/components/hyTimePicker/timePicker.vue.js +3 -4
  243. package/lib/components/hyTree/js/index.js +13 -40
  244. package/lib/components/hyTree/style/index.css +1 -1
  245. package/lib/components/hyTree/tree.vue.js +17 -16
  246. package/lib/components/hyUserAvatar/userAvatar.vue.js +3 -6
  247. package/lib/components/hyVideoPlayer/js/index.js +14 -23
  248. package/lib/components/hyVideoPlayer/style/videoPlayer.scss +5 -7
  249. package/lib/components/hyVideoPlayer/videoPlayer.vue.js +16 -26
  250. package/lib/components/index.js +46 -40
  251. package/lib/hooks/index.js +17 -0
  252. package/lib/hooks/useAudioPlayerConfig.js +1 -3
  253. package/lib/hooks/useBaseMainStore.js +32 -0
  254. package/lib/hooks/useCurrentBus.js +23 -0
  255. package/lib/hooks/useDialog.js +331 -0
  256. package/lib/hooks/useExportFile.js +135 -0
  257. package/lib/hooks/useGlobalConfig.js +10 -6
  258. package/lib/hooks/useLocale.js +25 -11
  259. package/lib/hooks/usePermissionMap.js +1 -3
  260. package/lib/hooks/useResizeHandler.js +1 -4
  261. package/lib/hooks/useResizeObserver.js +3 -1
  262. package/lib/hooks/useSubscribe.js +2 -1
  263. package/lib/hooks/useUserAvatarMap.js +1 -3
  264. package/lib/hooks/useVideoPlayerConfig.js +1 -3
  265. package/lib/index.js +107 -73
  266. package/lib/locale/{en.js → en_US.js} +79 -4
  267. package/lib/locale/index.js +3 -3
  268. package/lib/locale/zh_CN.js +79 -2
  269. package/lib/style/tailwind.scss +7 -3
  270. package/lib/utils/adaptive.js +1 -3
  271. package/lib/utils/form.js +6 -9
  272. package/lib/utils/handler.js +3 -7
  273. package/lib/utils/input.js +7 -8
  274. package/lib/utils/map/hook/bigMap.js +14 -53
  275. package/lib/utils/map/hook/gaode.js +5 -20
  276. package/lib/utils/map/hook/leafletjs.js +23 -79
  277. package/lib/utils/map/index.js +2 -8
  278. package/lib/utils/map/js/webgis.js +12 -12
  279. package/lib/version.js +1 -1
  280. package/package.json +3 -2
@@ -116,7 +116,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
116
116
  // 是否高亮选中节点
117
117
  highlight: {
118
118
  type: Boolean,
119
- default: false
119
+ default: true
120
120
  },
121
121
  // 是否严格的遵循父子不互相关联
122
122
  checkStrictly: {
@@ -234,7 +234,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
234
234
  return openBlock(), createElementBlock(
235
235
  "div",
236
236
  {
237
- class: "w-full flex flex-col",
237
+ class: "w-full flex flex-col box-border",
238
238
  style: normalizeStyle({ height: `${__props.treeHeight}px` })
239
239
  },
240
240
  [
@@ -247,7 +247,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
247
247
  "show-after": 500
248
248
  }, {
249
249
  default: withCtx(() => [
250
- createElementVNode("div", { class: "search_lightColor flex min-w-full z-[3]" }, [
250
+ createElementVNode("div", { class: "search_lightColor flex min-w-full z-[3] box-border" }, [
251
251
  createVNode(unref(ElInput), {
252
252
  size: "small",
253
253
  clearable: "",
@@ -284,7 +284,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
284
284
  placement: "bottom-start"
285
285
  }, {
286
286
  default: withCtx(() => [
287
- createElementVNode("div", { class: "flex search_lightColor w-full" }, [
287
+ createElementVNode("div", { class: "flex search_lightColor w-full box-border" }, [
288
288
  createElementVNode("div", { class: "flex flex-grow w-0" }, [
289
289
  createVNode(unref(ElSelect), {
290
290
  class: "!w-[37%] box-border rounded-[6px] flex-shrink-0",
@@ -337,18 +337,19 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
337
337
  }, 8, ["content"])
338
338
  ])) : createCommentVNode("v-if", true),
339
339
  renderSlot(_ctx.$slots, "input-bottom"),
340
- withDirectives(createElementVNode(
341
- "div",
342
- {
343
- ref_key: "treeRef",
344
- ref: treeRef,
345
- style: { "width": "100%" },
346
- class: "flex-grow h-0 w-full"
347
- },
348
- null,
349
- 512
350
- /* NEED_PATCH */
351
- ), [
340
+ withDirectives((openBlock(), createElementBlock("div", { class: "flex-grow h-0 w-full px-[10px] box-border" }, [
341
+ createElementVNode(
342
+ "div",
343
+ {
344
+ ref_key: "treeRef",
345
+ ref: treeRef,
346
+ class: "w-full h-full"
347
+ },
348
+ null,
349
+ 512
350
+ /* NEED_PATCH */
351
+ )
352
+ ])), [
352
353
  [_directive_loading, unref(loading)]
353
354
  ])
354
355
  ],
@@ -2,9 +2,9 @@ import { defineComponent, computed, unref, openBlock, createElementBlock, normal
2
2
  import '../../utils/index.mjs';
3
3
  import '../../hooks/index.mjs';
4
4
  import '../index.mjs';
5
- import { useLocale } from '../../hooks/useLocale.mjs';
6
5
  import { useUserAvatarMap } from '../../hooks/useUserAvatarMap.mjs';
7
6
  import { pxTorem } from '../../utils/adaptive.mjs';
7
+ import { $t } from '../../hooks/useLocale.mjs';
8
8
  import { HyIcon } from '../hyIcon/index.mjs';
9
9
 
10
10
  import "./style/userAvatar.scss";
@@ -57,7 +57,6 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
57
57
  setup(__props, { emit: __emit }) {
58
58
  const props = __props;
59
59
  const emits = __emit;
60
- const { t } = useLocale();
61
60
  const { userAvatarMap } = useUserAvatarMap();
62
61
  const isGbDevice = computed(
63
62
  () => props.device?.gbDevice === 1 && (props.device?.deviceType || props.device?.type) !== 13
@@ -107,7 +106,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
107
106
  headImg.value ? (openBlock(), createElementBlock("img", {
108
107
  key: 0,
109
108
  src: headImg.value,
110
- alt: unref(t)("userAvatar.userAvatar")
109
+ alt: unref($t)("userAvatar.userAvatar")
111
110
  }, null, 8, ["src", "alt"])) : __props.device?.onlineState === 1 ? (openBlock(), createBlock(unref(HyIcon), {
112
111
  key: 1,
113
112
  "svg-name": __props.initSelectSvgName,
@@ -122,9 +121,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
122
121
  "span",
123
122
  {
124
123
  key: 2,
125
- class: normalizeClass(
126
- __props.device?.onlineState === 1 ? "bg-success shadow-[0_0_4px_0] shadow-success" : "bg-info"
127
- )
124
+ class: normalizeClass(__props.device?.onlineState === 1 ? "bg-success shadow-[0_0_4px_0] shadow-success" : "bg-info")
128
125
  },
129
126
  null,
130
127
  2
@@ -4,8 +4,8 @@ import 'dayjs';
4
4
  import '../../../hooks/index.mjs';
5
5
  import '../../../utils/index.mjs';
6
6
  import '../../index.mjs';
7
- import { useLocale } from '../../../hooks/useLocale.mjs';
8
7
  import { useVideoPlayerConfig } from '../../../hooks/useVideoPlayerConfig.mjs';
8
+ import { $t } from '../../../hooks/useLocale.mjs';
9
9
  import { formatDuration } from '../../../utils/date.mjs';
10
10
  import { isSupportH265 } from '../../../utils/is.mjs';
11
11
  import { HyConfirmDialog } from '../../hyConfirmDialog/index.mjs';
@@ -13,7 +13,6 @@ import { copyText } from '../../../utils/handler.mjs';
13
13
 
14
14
  const useVideoPlayer = (hy) => {
15
15
  const { props, emits, videoRef, videoWrapperRef } = hy;
16
- const { t } = useLocale();
17
16
  const { videoPlayerConfig } = useVideoPlayerConfig();
18
17
  const speed = ref(1);
19
18
  const playRules = ref(1);
@@ -39,17 +38,17 @@ const useVideoPlayer = (hy) => {
39
38
  const playRulesList = [
40
39
  {
41
40
  value: 1,
42
- label: t("videoPlayer.stopAfterPlayback"),
41
+ label: $t("videoPlayer.stopAfterPlayback"),
43
42
  svgName: "ops-audio-media-center-stop-playing"
44
43
  },
45
44
  {
46
45
  value: 2,
47
- label: t("videoPlayer.continuousPlayback"),
46
+ label: $t("videoPlayer.continuousPlayback"),
48
47
  svgName: "ops-audio-media-center-autoplay"
49
48
  },
50
49
  {
51
50
  value: 3,
52
- label: t("videoPlayer.loopPlayback"),
51
+ label: $t("videoPlayer.loopPlayback"),
53
52
  svgName: "ops-audio-media-center-loop-playback"
54
53
  }
55
54
  ];
@@ -58,7 +57,7 @@ const useVideoPlayer = (hy) => {
58
57
  });
59
58
  const speedLabel = computed(() => {
60
59
  if (speed.value === 1) {
61
- return t("videoPlayer.multiples");
60
+ return $t("videoPlayer.multiples");
62
61
  } else {
63
62
  return speedList.find((item) => item.value === speed.value).label;
64
63
  }
@@ -188,15 +187,13 @@ const useVideoPlayer = (hy) => {
188
187
  }
189
188
  function playPrevious() {
190
189
  if (props.type === "default") {
191
- const index = props.playList.findIndex(
192
- (item) => item.id === videoItem.value.id
193
- );
190
+ const index = props.playList.findIndex((item) => item.id === videoItem.value.id);
194
191
  if (index > 0 && index !== props.playList.length) {
195
192
  const item = props.playList[index - 1];
196
193
  playVideo(item.filePath, item);
197
194
  emits("play-previous");
198
195
  } else {
199
- ElMessage.warning(t("videoPlayer.currentIsTheFirstItem"));
196
+ ElMessage.warning($t("videoPlayer.currentIsTheFirstItem"));
200
197
  }
201
198
  } else if (isAnalyseType.value) {
202
199
  if (!isCanPlay.value) return;
@@ -205,15 +202,13 @@ const useVideoPlayer = (hy) => {
205
202
  }
206
203
  function playNext() {
207
204
  if (props.type === "default") {
208
- const index = props.playList.findIndex(
209
- (item) => item.id === videoItem.value.id
210
- );
205
+ const index = props.playList.findIndex((item) => item.id === videoItem.value.id);
211
206
  if (index !== props.playList.length - 1) {
212
207
  const item = props.playList[index + 1];
213
208
  playVideo(item.filePath, item);
214
209
  emits("play-next");
215
210
  } else {
216
- ElMessage.warning(t("videoPlayer.currentIsTheLastItem"));
211
+ ElMessage.warning($t("videoPlayer.currentIsTheLastItem"));
217
212
  }
218
213
  } else if (isAnalyseType.value) {
219
214
  if (!isCanPlay.value) return;
@@ -318,14 +313,12 @@ const useVideoPlayer = (hy) => {
318
313
  const url = `${props.vlcProtocol}:${videoUrl.value}`;
319
314
  window.protocolCheck(url, () => {
320
315
  hasVLC.value = false;
321
- ElMessage.error(t("videoPlayer.notInstallVlcTips"));
316
+ ElMessage.error($t("videoPlayer.notInstallVlcTips"));
322
317
  });
323
318
  }
324
319
  function downloadVLC() {
325
320
  if (!props.vlcAddress) {
326
- ElMessage.warning(
327
- t("videoPlayer.pleaseConfigureTheAddressForDownloadingVLC")
328
- );
321
+ ElMessage.warning($t("videoPlayer.pleaseConfigureTheAddressForDownloadingVLC"));
329
322
  return;
330
323
  }
331
324
  const newOpenWindow = window.open("about:blank");
@@ -333,16 +326,14 @@ const useVideoPlayer = (hy) => {
333
326
  newOpenWindow.location = props.vlcAddress;
334
327
  }
335
328
  if (newOpenWindow) {
336
- ElMessage.success(t("videoPlayer.operationSuccessful"));
329
+ ElMessage.success($t("videoPlayer.operationSuccessful"));
337
330
  } else {
338
331
  HyConfirmDialog.confirm({
339
332
  title: "\u8DF3\u8F6C\u63D0\u793A",
340
- content: `<div><p>${t(
341
- "videoPlayer.theCurrentBrowserBlocksTheOpeningOfNewWindows"
342
- )}</p><p>${t(
333
+ content: `<div><p>${t("videoPlayer.theCurrentBrowserBlocksTheOpeningOfNewWindows")}</p><p>${t(
343
334
  "videoPlayer.pleaseGoToTheBrowserSettingsAndClickOnTheDownloadOrCopyLinkToOpenInTheBrowser"
344
335
  )}</p></div>`,
345
- submitText: t("videoPlayer.copyLink"),
336
+ submitText: $t("videoPlayer.copyLink"),
346
337
  onSubmit: async () => {
347
338
  await copyText(props.vlcAddress);
348
339
  }
@@ -91,6 +91,7 @@
91
91
  color: rgba(var(--hy-main));
92
92
  padding: 0 10px;
93
93
  margin-top: 16px;
94
+ box-sizing: border-box;
94
95
 
95
96
  .progress-box {
96
97
  width: 100%;
@@ -187,6 +188,7 @@
187
188
  border: 1px solid rgba(var(--hy-border));
188
189
  border-radius: 4px;
189
190
  background-color: rgba(var(--hy-background-2));
191
+ box-sizing: border-box;
190
192
  }
191
193
 
192
194
  .hy-icon {
@@ -231,26 +233,22 @@
231
233
  position: absolute;
232
234
  top: 0;
233
235
  bottom: 0;
234
- background: linear-gradient(
235
- to bottom,
236
- rgba(28, 51, 74, 0) 0%,
237
- #1c334ac4 50%,
238
- rgba(28, 51, 74, 0) 100%
239
- );
236
+ background: linear-gradient(to bottom, rgba(28, 51, 74, 0) 0%, #1c334ac4 50%, rgba(28, 51, 74, 0) 100%);
240
237
  }
241
-
242
238
  }
243
239
 
244
240
  .hy-video-player-popover-volume-slider {
245
241
  min-width: auto !important;
246
242
  width: 40px !important;
247
243
  padding: 16px 0;
244
+ box-sizing: border-box;
248
245
  }
249
246
 
250
247
  .hy-video-player-popover-speed {
251
248
  min-width: auto !important;
252
249
  width: 62px !important;
253
250
  padding: 0px !important;
251
+ box-sizing: border-box;
254
252
  .speed-list {
255
253
  width: 100%;
256
254
  color: rgba(var(--hy-auxiliary));
@@ -5,8 +5,8 @@ import '../../utils/index.mjs';
5
5
  import '../index.mjs';
6
6
  import _sfc_main$1 from './cpns/mediaLoading.vue.mjs';
7
7
  import { useVideoPlayer, useVideoResize } from './js/index.mjs';
8
- import { useLocale } from '../../hooks/useLocale.mjs';
9
8
  import { useMixins } from '../../hooks/useMixins.mjs';
9
+ import { $t } from '../../hooks/useLocale.mjs';
10
10
  import { HyIcon } from '../hyIcon/index.mjs';
11
11
  import { HyButton } from '../hyButton/index.mjs';
12
12
  import { HyTooltip } from '../hyTooltip/index.mjs';
@@ -113,18 +113,10 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
113
113
  type: Function
114
114
  }
115
115
  },
116
- emits: [
117
- "canplay",
118
- "timeupdate",
119
- "play-start",
120
- "play-ended",
121
- "play-previous",
122
- "play-next"
123
- ],
116
+ emits: ["canplay", "timeupdate", "play-start", "play-ended", "play-previous", "play-next"],
124
117
  setup(__props, { expose: __expose, emit: __emit }) {
125
118
  const props = __props;
126
119
  const emits = __emit;
127
- const { t } = useLocale();
128
120
  const videoWrapperRef = useTemplateRef("videoWrapperRef");
129
121
  const videoRef = useTemplateRef("videoRef");
130
122
  const {
@@ -218,7 +210,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
218
210
  createElementVNode(
219
211
  "span",
220
212
  { class: "text-xs text-theme mt-4" },
221
- "..." + toDisplayString(unref(t)("videoPlayer.videoResourcesAreLoading")) + "...",
213
+ "..." + toDisplayString(unref($t)("videoPlayer.videoResourcesAreLoading")) + "...",
222
214
  1
223
215
  /* TEXT */
224
216
  )
@@ -226,7 +218,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
226
218
  createCommentVNode(" \u65E0\u6CD5\u64AD\u653E "),
227
219
  unref(videoState) === "CAN_NOT_PLAY" ? (openBlock(), createElementBlock("div", {
228
220
  key: 1,
229
- class: "w-full h-full flex flex-col justify-center items-center px-[34px]"
221
+ class: "w-full h-full flex flex-col justify-center items-center px-[34px] box-border"
230
222
  }, [
231
223
  createCommentVNode(" \u91C7\u96C6\u7AD9\u6587\u4EF6 "),
232
224
  unref(videoItem) && unref(videoItem).csFile === 1 && unref(videoItem).onlineState !== 1 ? (openBlock(), createElementBlock(
@@ -244,16 +236,14 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
244
236
  createElementVNode(
245
237
  "span",
246
238
  { class: "text-xs text-auxiliary mt-4" },
247
- toDisplayString(unref(t)("videoPlayer.fileLoadingFailed")),
239
+ toDisplayString(unref($t)("videoPlayer.fileLoadingFailed")),
248
240
  1
249
241
  /* TEXT */
250
242
  ),
251
243
  createElementVNode(
252
244
  "span",
253
245
  { class: "text-xs text-auxiliary" },
254
- toDisplayString(_ctx.$t(
255
- "pleaseCheckWhetherTheCollectionStationIsOnlineAndWhetherTheFileExists"
256
- )),
246
+ toDisplayString(unref($t)("pleaseCheckWhetherTheCollectionStationIsOnlineAndWhetherTheFileExists")),
257
247
  1
258
248
  /* TEXT */
259
249
  )
@@ -282,7 +272,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
282
272
  createElementVNode(
283
273
  "div",
284
274
  { class: "text-theme text-center mt-3 mb-[14px]" },
285
- toDisplayString(unref(isCanNotPlayType) ? unref(t)("videoPlayer.vlcPlayerTip") : unref(t)("videoPlayer.theVideoCannotBePlayed")),
275
+ toDisplayString(unref(isCanNotPlayType) ? unref($t)("videoPlayer.vlcPlayerTip") : unref($t)("videoPlayer.theVideoCannotBePlayed")),
286
276
  1
287
277
  /* TEXT */
288
278
  ),
@@ -296,7 +286,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
296
286
  }, {
297
287
  default: withCtx(() => [
298
288
  createTextVNode(
299
- toDisplayString(unref(t)("videoPlayer.clickPlay")),
289
+ toDisplayString(unref($t)("videoPlayer.clickPlay")),
300
290
  1
301
291
  /* TEXT */
302
292
  )
@@ -309,7 +299,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
309
299
  }, {
310
300
  default: withCtx(() => [
311
301
  createTextVNode(
312
- toDisplayString(unref(t)("videoPlayer.toDownloadVlc")),
302
+ toDisplayString(unref($t)("videoPlayer.toDownloadVlc")),
313
303
  1
314
304
  /* TEXT */
315
305
  )
@@ -331,7 +321,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
331
321
  createVNode(unref(HyTooltip), {
332
322
  isAlways: "",
333
323
  overLine: 1,
334
- content: unref(t)("videoPlayer.viewThePreviousVideo")
324
+ content: unref($t)("videoPlayer.viewThePreviousVideo")
335
325
  }, {
336
326
  default: withCtx(() => [
337
327
  createElementVNode("div", {
@@ -352,7 +342,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
352
342
  createVNode(unref(HyTooltip), {
353
343
  isAlways: "",
354
344
  overLine: 1,
355
- content: unref(t)("videoPlayer.viewTheNextVideo")
345
+ content: unref($t)("videoPlayer.viewTheNextVideo")
356
346
  }, {
357
347
  default: withCtx(() => [
358
348
  createElementVNode("div", {
@@ -390,7 +380,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
390
380
  createElementVNode("source", { type: "video/webm" }),
391
381
  createElementVNode("source", { type: "video/ogg" }),
392
382
  createTextVNode(
393
- " " + toDisplayString(unref(t)("videoPlayer.yourBrowserDoesNotSupportHTMLVideoPlayback")),
383
+ " " + toDisplayString(unref($t)("videoPlayer.yourBrowserDoesNotSupportHTMLVideoPlayback")),
394
384
  1
395
385
  /* TEXT */
396
386
  )
@@ -519,7 +509,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
519
509
  createVNode(unref(HyTooltip), {
520
510
  isAlways: "",
521
511
  overLine: 1,
522
- content: unref(t)("videoPlayer.adjustPlaybackVolume")
512
+ content: unref($t)("videoPlayer.adjustPlaybackVolume")
523
513
  }, {
524
514
  default: withCtx(() => [
525
515
  createVNode(unref(HyIcon), {
@@ -551,7 +541,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
551
541
  key: 0,
552
542
  isAlways: "",
553
543
  overLine: 1,
554
- content: unref(t)("videoPlayer.fullScreenSwitch")
544
+ content: unref($t)("videoPlayer.fullScreenSwitch")
555
545
  }, {
556
546
  default: withCtx(() => [
557
547
  createVNode(unref(HyIcon), {
@@ -567,7 +557,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
567
557
  key: 1,
568
558
  isAlways: "",
569
559
  overLine: 1,
570
- content: unref(isExpand) ? unref(t)("videoPlayer.packUp") : unref(t)("videoPlayer.expand")
560
+ content: unref(isExpand) ? unref($t)("videoPlayer.packUp") : unref($t)("videoPlayer.expand")
571
561
  }, {
572
562
  default: withCtx(() => [
573
563
  createVNode(unref(HyIcon), {
@@ -599,7 +589,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
599
589
  key: 0,
600
590
  isAlways: "",
601
591
  overLine: 1,
602
- content: unref(t)("videoPlayer.downloadFile")
592
+ content: unref($t)("videoPlayer.downloadFile")
603
593
  }, {
604
594
  default: withCtx(() => [
605
595
  createVNode(unref(HyIcon), {
@@ -27,6 +27,9 @@ export { HyMap } from './hyMap/index.mjs';
27
27
  export { HyRadioGroup } from './hyRadioGroup/index.mjs';
28
28
  export { ElLoading, ElLoading as HyLoading } from './hyLoading/index.mjs';
29
29
  export { HyTour } from './hyTour/index.mjs';
30
+ export { HyDrawer } from './hyDrawer/index.mjs';
31
+ export { HyStatus } from './hyStatus/index.mjs';
32
+ export { HyCheckboxGroup } from './hyCheckboxGroup/index.mjs';
30
33
  export { resetAppFormValue, useAppForm } from './hyForm/js/useAppForm.mjs';
31
34
  export { resetAppSearchValue, useAppSearch } from './hySearch/js/useAppSearch.mjs';
32
35
  export { useAppTable } from './hyTable/js/useAppTable.mjs';
@@ -1,5 +1,5 @@
1
1
  export { defaultAxios, localApiKey, useApi } from './useApi.mjs';
2
- export { buildLocaleContext, buildTranslator, getLanguage, localeContextKey, translate, useLocale } from './useLocale.mjs';
2
+ export { $t, buildLocaleContext, buildTranslator, getLang, getLanguage, lang, localeContextKey, setLang, translate, useLocale } from './useLocale.mjs';
3
3
  export { configProviderContextKey, provideGlobalConfig, useGlobalConfig } from './useGlobalConfig.mjs';
4
4
  export { useMixins } from './useMixins.mjs';
5
5
  export { localPermissionMapKey, usePermissionMap } from './usePermissionMap.mjs';
@@ -10,5 +10,9 @@ export { localAudioPlayerConfigKey, useAudioPlayerConfig } from './useAudioPlaye
10
10
  export { localVideoPlayerConfigKey, useVideoPlayerConfig } from './useVideoPlayerConfig.mjs';
11
11
  export { localEnsureHyIconMapKey, useEnsureHyIcon } from './useEnsureHyIcon.mjs';
12
12
  export { localTooltipConfigKey, useTooltipConfig } from './useTooltipConfig.mjs';
13
- export { usePublish, useSubscribe } from './useSubscribe.mjs';
13
+ export { bus, usePublish, useSubscribe } from './useSubscribe.mjs';
14
14
  export { localMapConfigKey, useMapConfig } from './useMapConfig.mjs';
15
+ export { useBatchDialog, useDialog, useDialogIsEdit } from './useDialog.mjs';
16
+ export { useExportFile } from './useExportFile.mjs';
17
+ export { localBaseMainStoreKey, useBaseMainStore } from './useBaseMainStore.mjs';
18
+ export { localCurrentBusKey, useCurrentBus } from './useCurrentBus.mjs';
@@ -10,9 +10,7 @@ const useAudioPlayerConfig = () => {
10
10
  };
11
11
  } else {
12
12
  return {
13
- audioPlayerConfig: computed(
14
- () => unref(useGlobalConfig()).audioPlayer || {}
15
- )
13
+ audioPlayerConfig: computed(() => unref(useGlobalConfig()).audioPlayer || {})
16
14
  };
17
15
  }
18
16
  };
@@ -0,0 +1,29 @@
1
+ import { getCurrentInstance, inject, ref, unref } from 'vue';
2
+ import { useGlobalConfig } from './useGlobalConfig.mjs';
3
+
4
+ const localBaseMainStoreKey = /* @__PURE__ */ Symbol("baseMainStore");
5
+ const defaultBaseMainStore = () => ({
6
+ getters: {
7
+ dragLevel: 1e3
8
+ },
9
+ commit(key) {
10
+ this[key]();
11
+ },
12
+ setDragLevel() {
13
+ this.getters.dragLevel++;
14
+ }
15
+ });
16
+ const useBaseMainStore = () => {
17
+ if (getCurrentInstance()) {
18
+ const baseMainStore = inject(localBaseMainStoreKey, ref());
19
+ return {
20
+ baseMainStore: unref(baseMainStore) ? unref(baseMainStore) : (unref(useGlobalConfig()).baseMainStore || defaultBaseMainStore)()
21
+ };
22
+ } else {
23
+ return {
24
+ baseMainStore: (unref(useGlobalConfig()).baseMainStore || defaultBaseMainStore)()
25
+ };
26
+ }
27
+ };
28
+
29
+ export { localBaseMainStoreKey, useBaseMainStore };
@@ -0,0 +1,20 @@
1
+ import { getCurrentInstance, inject, ref, unref, computed } from 'vue';
2
+ import { useGlobalConfig } from './useGlobalConfig.mjs';
3
+ import { bus } from './useSubscribe.mjs';
4
+
5
+ const localCurrentBusKey = /* @__PURE__ */ Symbol("currentBus");
6
+ const defaultCurrentBus = bus;
7
+ const useCurrentBus = () => {
8
+ if (getCurrentInstance()) {
9
+ const currentBus = inject(localCurrentBusKey, ref());
10
+ return {
11
+ currentBus: unref(currentBus) ? currentBus : computed(() => unref(useGlobalConfig()).currentBus || defaultCurrentBus)
12
+ };
13
+ } else {
14
+ return {
15
+ currentBus: computed(() => unref(useGlobalConfig()).currentBus || defaultCurrentBus)
16
+ };
17
+ }
18
+ };
19
+
20
+ export { localCurrentBusKey, useCurrentBus };