cnhis-design-vue 3.3.3-beta.7 → 3.3.3-beta.70
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.
- package/README.md +87 -87
- package/es/components/audio-sdk/index.d.ts +18 -16
- package/es/components/audio-sdk/src/Index.vue.d.ts +18 -16
- package/es/components/audio-sdk/src/Index.vue2.js +40 -5
- package/es/components/audio-sdk/src/components/recording-modal.vue.d.ts +6 -6
- package/es/components/audio-sdk/src/components/recording.vue.d.ts +6 -6
- package/es/components/audio-sdk/src/components/recording.vue2.js +17 -3
- package/es/components/base-search/index.d.ts +3 -0
- package/es/components/base-search/src/index.vue.d.ts +3 -0
- package/es/components/big-table/src/components/NoData.vue2.js +8 -1
- package/es/components/big-table/src/hooks/useTableParse.js +8 -1
- package/es/components/button-print/index.d.ts +67 -2
- package/es/components/button-print/src/ButtonPrint.vue.d.ts +67 -2
- package/es/components/button-print/src/ButtonPrint.vue2.js +6 -0
- package/es/components/button-print/src/components/NewPrintComponent.vue.d.ts +28 -3
- package/es/components/button-print/src/components/NewPrintComponent.vue2.js +138 -15
- package/es/components/button-print/src/components/OldPrintComponent.vue.d.ts +18 -0
- package/es/components/button-print/src/components/OldPrintComponent.vue2.js +35 -6
- package/es/components/button-print/src/utils/print.d.ts +7 -5
- package/es/components/button-print/src/utils/print.js +183 -7
- package/es/components/button-print/style/index.css +1 -1
- package/es/components/calendar/src/Calendar.vue2.js +15 -5
- package/es/components/callback/src/components/render/popupMaps.d.ts +18 -0
- package/es/components/card-reader-sdk-cn/src/henan/index.js +8 -1
- package/es/components/classification/index.d.ts +562 -10
- package/es/components/classification/src/components/search-filter/index.vue.d.ts +562 -10
- package/es/components/classification/src/components/set-classification/index.vue.d.ts +562 -10
- package/es/components/classification/src/components/table-modal/index.vue.d.ts +0 -3
- package/es/components/classification/src/index.vue.d.ts +565 -10
- package/es/components/date-picker/src/DatePicker.vue2.js +8 -1
- package/es/components/expand-field/index.d.ts +792 -1
- package/es/components/expand-field/src/components/FormItemPerson.vue.d.ts +792 -1
- package/es/components/expand-field/src/components/PersonModal.vue.d.ts +792 -1
- package/es/components/expand-field/src/components/form.vue.d.ts +792 -1
- package/es/components/expand-field/src/components/form.vue2.js +8 -1
- package/es/components/expand-field/src/index.vue.d.ts +792 -1
- package/es/components/fabric-chart/src/hooks/birthProcess/useBirthProcess.js +3 -1
- package/es/components/fabric-chart/src/hooks/temperature/useLeft.js +3 -2
- package/es/components/fabric-chart/src/hooks/temperature/useOther.d.ts +1 -1
- package/es/components/fabric-chart/src/hooks/temperature/useOther.js +58 -15
- package/es/components/fabric-chart/src/hooks/temperature/useTemperatureChart.js +4 -3
- package/es/components/field-editor/index.d.ts +18 -0
- package/es/components/field-editor/src/FieldEditor.vue.d.ts +18 -0
- package/es/components/field-editor/src/FieldEditor.vue2.js +2 -1
- package/es/components/field-editor/src/fields.d.ts +1 -0
- package/es/components/field-editor/src/fields.js +6 -0
- package/es/components/field-set/src/FieldColor.vue.d.ts +6 -1
- package/es/components/field-set/src/FieldFilter.vue.d.ts +6 -1
- package/es/components/field-set/src/FieldSet.vue.d.ts +38 -1
- package/es/components/field-set/src/FieldSet.vue2.js +118 -69
- package/es/components/field-set/src/Index.vue2.js +8 -3
- package/es/components/field-set/src/TableStyle.vue2.js +2 -2
- package/es/components/field-set/src/components/table-row.vue.d.ts +2 -1
- package/es/components/field-set/src/components/table-row.vue2.js +21 -6
- package/es/components/field-set/src/constants/index.d.ts +1 -1
- package/es/components/field-set/src/types/index.d.ts +3 -1
- package/es/components/field-set/style/index.css +1 -1
- package/es/components/form-config/index.d.ts +114 -12
- package/es/components/form-config/src/FormConfig.vue.d.ts +114 -12
- package/es/components/form-config/src/components/FormConfigCreator.vue.d.ts +18 -0
- package/es/components/form-config/src/components/FormConfigEdit.vue.d.ts +71 -8
- package/es/components/form-config/src/components/FormConfigEdit.vue2.js +4 -4
- package/es/components/form-config/src/components/FormConfigEventSetting.vue.d.ts +20 -2
- package/es/components/form-config/src/components/FormConfigEventSetting.vue2.js +9 -2
- package/es/components/form-config/src/constants/index.d.ts +31 -1
- package/es/components/form-config/src/constants/index.js +150 -1
- package/es/components/form-config/src/hooks/useConfigurationField.d.ts +2 -2
- package/es/components/form-config/src/hooks/useConfigurationField.js +53 -6
- package/es/components/form-config/src/hooks/useLocale.d.ts +6 -0
- package/es/components/form-config/src/hooks/useLocale.js +34 -0
- package/es/components/form-config/src/types/index.d.ts +12 -0
- package/es/components/form-render/index.d.ts +18 -0
- package/es/components/form-render/src/FormRender.vue.d.ts +18 -0
- package/es/components/form-render/src/FormRender.vue2.js +5 -0
- package/es/components/form-render/src/FormRenderWrapper.vue.d.ts +18 -0
- package/es/components/form-render/src/components/renderer/formItem.d.ts +2 -0
- package/es/components/form-render/src/components/renderer/formItem.js +17 -3
- package/es/components/form-render/src/components/renderer/levelSearchCascader/index.js +4 -2
- package/es/components/form-render/src/components/renderer/lineBar/FormCollapse.vue.d.ts +1 -0
- package/es/components/form-render/src/components/renderer/lineBar/index.d.ts +1 -0
- package/es/components/form-render/src/components/renderer/radio_checkbox.js +9 -3
- package/es/components/form-render/src/components/renderer/searchCascade.js +3 -0
- package/es/components/form-render/src/hooks/useBusinessBinding.d.ts +12 -3
- package/es/components/form-render/src/hooks/useBusinessBinding.js +7 -7
- package/es/components/form-render/src/hooks/useFieldListAdaptor.js +5 -2
- package/es/components/form-render/src/hooks/useFieldNormalize.d.ts +2 -0
- package/es/components/form-render/src/hooks/useFieldNormalize.js +15 -0
- package/es/components/form-render/src/hooks/useFormContext.js +1 -1
- package/es/components/form-render/src/hooks/useFormValidator.js +8 -1
- package/es/components/form-render/src/hooks/useLowCodeReactions.js +2 -1
- package/es/components/form-render/src/types/index.d.ts +1 -0
- package/es/components/form-render/src/utils/business.d.ts +3 -1
- package/es/components/form-render/src/utils/business.js +7 -1
- package/es/components/form-render/style/index.css +1 -1
- package/es/components/iho-chat/index.d.ts +902 -99
- package/es/components/iho-chat/src/Index.vue.d.ts +902 -99
- package/es/components/iho-chat/src/components/ChatAdd.vue.d.ts +24 -1
- package/es/components/iho-chat/src/components/ChatFile.vue.d.ts +181 -8
- package/es/components/iho-chat/src/components/ChatFile.vue2.js +51 -41
- package/es/components/iho-chat/src/components/ChatFooter.vue.d.ts +66 -6
- package/es/components/iho-chat/src/components/ChatFooter.vue2.js +158 -57
- package/es/components/iho-chat/src/components/ChatHeader.vue.d.ts +329 -15
- package/es/components/iho-chat/src/components/ChatHeader.vue2.js +21 -19
- package/es/components/iho-chat/src/components/ChatMain.vue.d.ts +235 -20
- package/es/components/iho-chat/src/components/ChatMain.vue2.js +298 -279
- package/es/components/iho-chat/src/components/ChatRecord.vue.d.ts +51 -5
- package/es/components/iho-chat/src/components/ChatRecord.vue2.js +3 -3
- package/es/components/iho-chat/src/components/ChatSearch.vue.d.ts +24 -1
- package/es/components/iho-chat/src/components/ChatSet.vue.d.ts +48 -2
- package/es/components/iho-chat/src/components/ContextMenu.js +34 -27
- package/es/components/iho-chat/src/components/ImageLightbox.vue.d.ts +104 -0
- package/es/components/iho-chat/src/components/ImageLightbox.vue.js +6 -0
- package/es/components/iho-chat/src/components/ImageLightbox.vue2.js +307 -0
- package/es/components/iho-chat/src/components/MessageEvent.vue.d.ts +24 -1
- package/es/components/iho-chat/src/components/MessageMergeForward.vue.d.ts +53 -6
- package/es/components/iho-chat/src/components/MessageMergeForward.vue2.js +3 -3
- package/es/components/iho-chat/src/components/MultipleVideo.vue.d.ts +93 -30
- package/es/components/iho-chat/src/components/MultipleVideo.vue2.js +348 -144
- package/es/components/iho-chat/src/components/PersonProfile.vue.d.ts +24 -1
- package/es/components/iho-chat/src/components/PersonProfile.vue2.js +1 -1
- package/es/components/iho-chat/src/components/SelectLabel.vue.d.ts +1 -1
- package/es/components/iho-chat/src/components/SiderList.vue.d.ts +24 -1
- package/es/components/iho-chat/src/components/Video.vue.d.ts +38 -25
- package/es/components/iho-chat/src/components/Video.vue2.js +35 -40
- package/es/components/iho-chat/src/hooks/index.d.ts +1 -0
- package/es/components/iho-chat/src/hooks/index.js +1 -0
- package/es/components/iho-chat/src/hooks/useData.d.ts +51 -4
- package/es/components/iho-chat/src/hooks/useData.js +2 -7
- package/es/components/iho-chat/src/hooks/useDraggable.d.ts +25 -0
- package/es/components/iho-chat/src/hooks/useDraggable.js +160 -0
- package/es/components/iho-chat/src/hooks/useVideo.d.ts +78 -11
- package/es/components/iho-chat/src/hooks/useVideo.js +420 -44
- package/es/components/iho-chat/src/types/index.d.ts +37 -1
- package/es/components/iho-chat/src/utils/emoji.d.ts +1 -1
- package/es/components/iho-chat/src/utils/emoji.js +1 -1
- package/es/components/iho-chat/src/utils/index.d.ts +4 -3
- package/es/components/iho-chat/src/utils/index.js +33 -39
- package/es/components/iho-chat/style/index.css +1 -1
- package/es/components/iho-table/src/plugins/filterRenderPlugin/filter.vue2.js +8 -1
- package/es/components/iho-table/src/plugins/headerPlugin/index.js +5 -2
- package/es/components/iho-table/src/plugins/highLightSetPlugin.js +2 -1
- package/es/components/index.css +1 -1
- package/es/components/index.d.ts +2 -0
- package/es/components/index.js +1 -0
- package/es/components/info-header/index.d.ts +41 -0
- package/es/components/info-header/src/InfoHeader.vue.d.ts +41 -0
- package/es/components/info-header/src/components/infoDescription/DescriptionItem.vue.d.ts +1 -0
- package/es/components/info-header/src/components/infoDescription/DescriptionItem.vue2.js +56 -22
- package/es/components/info-header/src/components/infoDescription/DescriptionList.vue.d.ts +1 -0
- package/es/components/info-header/src/components/infoDescription/index.vue.d.ts +19 -0
- package/es/components/info-header/src/components/patientInfo/index.vue.d.ts +18 -0
- package/es/components/info-header/src/components/patientInfo/index.vue2.js +16 -2
- package/es/components/keyboard/index.d.ts +9 -0
- package/es/components/keyboard/src/Keyboard.vue.d.ts +9 -0
- package/es/components/keyboard/src/Keyboard.vue2.js +33 -9
- package/es/components/keyboard/src/components/NumberPanel.vue.d.ts +4 -0
- package/es/components/keyboard/src/components/NumberPanel.vue2.js +50 -17
- package/es/components/keyboard/src/types.d.ts +17 -0
- package/es/components/keyboard/src/types.js +1 -0
- package/es/components/quick-search/index.d.ts +2 -0
- package/es/components/quick-search/src/index.vue.d.ts +2 -0
- package/es/components/scale-view/index.d.ts +66 -3
- package/es/components/scale-view/src/ScaleView.vue.d.ts +69 -5
- package/es/components/scale-view/src/ScaleView.vue2.js +79 -4
- package/es/components/scale-view/src/components/AnswerParse.vue.d.ts +5 -0
- package/es/components/scale-view/src/components/AnswerParse.vue2.js +74 -8
- package/es/components/scale-view/src/components/EvaluateCountdown.vue.d.ts +3 -0
- package/es/components/scale-view/src/components/EvaluateCountdown.vue2.js +26 -2
- package/es/components/scale-view/src/components/EvaluatePage.vue.d.ts +3 -0
- package/es/components/scale-view/src/components/EvaluatePage.vue2.js +27 -6
- package/es/components/scale-view/src/components/NoData.vue2.js +9 -3
- package/es/components/scale-view/src/components/ScaleScore.d.ts +1 -1
- package/es/components/scale-view/src/components/ScaleScore.js +45 -3
- package/es/components/scale-view/src/components/formitem/r-checkbox.js +16 -2
- package/es/components/scale-view/src/components/formitem/r-sign.js +32 -4
- package/es/components/scale-view/src/components/formitem/r-upload.js +65 -7
- package/es/components/scale-view/src/components/formitem/sign-com.js +8 -1
- package/es/components/scale-view/src/hooks/scaleview-computed.js +20 -4
- package/es/components/scale-view/src/hooks/scaleview-init.js +24 -3
- package/es/components/scale-view/src/hooks/scaleview-methods.js +40 -5
- package/es/components/scale-view/src/hooks/scaleview-props.d.ts +12 -0
- package/es/components/scale-view/src/hooks/scaleview-props.js +12 -0
- package/es/components/scale-view/src/hooks/scaleview-submit.d.ts +2 -1
- package/es/components/scale-view/src/hooks/scaleview-submit.js +64 -8
- package/es/components/scale-view/src/hooks/scaleview-validate.d.ts +1 -1
- package/es/components/scale-view/src/hooks/scaleview-validate.js +157 -24
- package/es/components/scale-view/src/hooks/use-evaluate.js +16 -2
- package/es/components/scale-view/src/hooks/use-noData.js +33 -5
- package/es/components/scale-view/src/utils/judge-types.d.ts +2 -1
- package/es/components/scale-view/src/utils/judge-types.js +10 -10
- package/es/components/scale-view/src/utils/watch-form-change.d.ts +13 -0
- package/es/components/scale-view/src/utils/watch-form-change.js +71 -0
- package/es/components/select-person/index.d.ts +792 -1
- package/es/components/select-person/src/SelectPerson.vue.d.ts +433 -273
- package/es/components/select-person/src/SelectPerson.vue.js +6 -0
- package/es/components/select-person/src/SelectPerson.vue2.js +795 -0
- package/es/components/select-person/src/SelectPersonRole.vue.js +2 -2
- package/es/components/select-person/src/components/GroupItem.vue.d.ts +19 -0
- package/es/components/select-person/src/components/GroupItem.vue.js +6 -0
- package/es/components/select-person/src/components/GroupItem.vue2.js +37 -0
- package/es/components/select-person/src/components/SearchGroupList.vue.d.ts +214 -0
- package/es/components/select-person/src/components/SearchGroupList.vue.js +6 -0
- package/es/components/select-person/src/components/SearchGroupList.vue2.js +145 -0
- package/es/components/select-person/src/components/SearchMultiple.vue2.js +1 -1
- package/es/components/select-person/src/components/SearchOrgAndStaff.vue2.js +21 -12
- package/es/components/select-person/src/components/TagItem.vue.d.ts +43 -0
- package/es/components/select-person/src/components/TagItem.vue.js +6 -0
- package/es/components/select-person/src/components/TagItem.vue2.js +40 -0
- package/es/components/select-person/src/index.vue.d.ts +793 -1
- package/es/components/select-person/src/index.vue2.js +21 -4
- package/es/components/select-person/src/types/index.d.ts +35 -0
- package/es/components/select-person/src/types/index.js +1 -0
- package/es/components/select-person/src/utils/index.d.ts +3 -0
- package/es/components/select-person/src/utils/index.js +25 -2
- package/es/components/select-person/style/index.css +1 -1
- package/es/components/shortcut-setter/index.d.ts +20 -2
- package/es/components/shortcut-setter/src/ShortcutSetter.vue.d.ts +20 -2
- package/es/components/table-filter/src/components/bi-filter/ValueCfg.vue.d.ts +1 -0
- package/es/components/table-filter/src/components/bi-filter/components/SelectFilter.vue.d.ts +1 -0
- package/es/components/table-filter/src/components/bi-filter/components/index.d.ts +1 -0
- package/es/components/table-filter/src/components/bi-filter/index.vue.d.ts +1 -0
- package/es/components/table-filter/src/components/classify-filter/ValueCfg.vue.d.ts +543 -6
- package/es/components/table-filter/src/components/classify-filter/ValueCfg.vue2.js +32 -10
- package/es/components/table-filter/src/components/classify-filter/components/Base/DateOption.vue.d.ts +226 -0
- package/es/components/table-filter/src/components/classify-filter/components/Base/DateOption.vue.js +6 -0
- package/es/components/table-filter/src/components/classify-filter/components/Base/DateOption.vue2.js +156 -0
- package/es/components/table-filter/src/components/classify-filter/components/Date.vue.d.ts +255 -2
- package/es/components/table-filter/src/components/classify-filter/components/Date.vue2.js +79 -5
- package/es/components/table-filter/src/components/classify-filter/components/DateRange.vue.d.ts +256 -2
- package/es/components/table-filter/src/components/classify-filter/components/DateRange.vue2.js +92 -6
- package/es/components/table-filter/src/components/classify-filter/components/SelectFilter.vue.d.ts +1 -0
- package/es/components/table-filter/src/components/classify-filter/components/index.d.ts +512 -4
- package/es/components/table-filter/src/components/classify-filter/helpers/options.d.ts +5 -1
- package/es/components/table-filter/src/components/classify-filter/helpers/options.js +123 -2
- package/es/components/table-filter/src/components/classify-filter/hooks/useFilterConditions.js +2 -1
- package/es/components/table-filter/src/components/classify-filter/index.vue.d.ts +561 -10
- package/es/components/table-filter/src/components/classify-filter/index.vue2.js +16 -7
- package/es/components/table-filter/src/components/render-widget/components/DateInner.vue.d.ts +2 -2
- package/es/components/table-filter/src/components/render-widget/components/DateOut.vue.d.ts +1 -1
- package/es/components/table-filter/src/components/render-widget/components/DateOut.vue2.js +12 -1
- package/es/components/table-filter/src/components/render-widget/components/DateQuickBtn/index.vue.d.ts +1 -1
- package/es/components/table-filter/src/components/render-widget/components/DateQuickBtn/index.vue2.js +25 -6
- package/es/components/table-filter/src/components/render-widget/components/DateRangeInner.vue.d.ts +2 -2
- package/es/components/table-filter/src/components/render-widget/components/DateRangeOut.vue2.js +12 -1
- package/es/components/table-filter/src/components/render-widget/components/index.d.ts +5 -5
- package/es/components/table-filter/src/components/render-widget/helpers/dateExtraMap.js +32 -4
- package/es/components/table-filter/src/components/render-widget/widgetCfgMaps.d.ts +5 -5
- package/es/components/table-filter/src/hooks/useAdvanced.d.ts +2 -0
- package/es/components/table-filter/src/hooks/useAdvanced.js +20 -3
- package/es/components/table-filter/src/hooks/useRenderWidget.js +4 -0
- package/es/components/table-filter/src/tool/baseOptions.js +8 -1
- package/es/components/table-filter/src/tool/date.d.ts +3 -0
- package/es/components/table-filter/src/tool/date.js +139 -0
- package/es/components/table-filter/src/tool/transformData.d.ts +1 -0
- package/es/components/table-filter/src/tool/transformData.js +11 -8
- package/es/components/table-filter/src/types/enums.d.ts +13 -0
- package/es/components/table-filter/src/types/enums.js +15 -2
- package/es/components/table-filter/src/types/index.d.ts +12 -0
- package/es/components/vertify/index.d.ts +1 -0
- package/es/components/vertify/index.js +1 -0
- package/es/components/vertify/src/components/IdentityVerification.vue.d.ts +89 -0
- package/es/components/vertify/src/components/IdentityVerification.vue.js +6 -0
- package/es/components/vertify/src/components/IdentityVerification.vue2.js +256 -0
- package/es/components/vertify/src/utils/dialog.d.ts +7 -0
- package/es/components/vertify/src/utils/dialog.js +73 -0
- package/es/components/vertify/src/utils/index.d.ts +11 -0
- package/es/components/vertify/src/utils/index.js +24 -0
- package/es/components/vod-chunk-upload/index.d.ts +16 -0
- package/es/components/vod-chunk-upload/src/chunk-upload-new.vue.d.ts +20 -31
- package/es/components/vod-chunk-upload/src/chunk-upload-new.vue2.js +205 -78
- package/es/components/vod-chunk-upload/src/hooks/upload-computed.d.ts +1 -0
- package/es/components/vod-chunk-upload/src/hooks/upload-computed.js +35 -4
- package/es/components/vod-chunk-upload/src/hooks/upload-data.d.ts +4 -0
- package/es/components/vod-chunk-upload/src/hooks/upload-data.js +78 -11
- package/es/components/vod-chunk-upload/src/vod-chunk-upload/vod-chunk-upload.vue.d.ts +16 -0
- package/es/components/vod-chunk-upload/src/vod-chunk-upload/vod-chunk-upload.vue2.js +81 -10
- package/es/components/vod-chunk-upload/style/index.css +1 -1
- package/es/env.d.ts +25 -25
- package/es/shared/assets/img/defaultCover/10review_successful.png.js +1 -1
- package/es/shared/assets/img/defaultCover/11review_fail.png.js +1 -1
- package/es/shared/assets/img/defaultCover/12no_setting.png.js +1 -1
- package/es/shared/assets/img/defaultCover/13no_menu_setting.png.js +1 -1
- package/es/shared/assets/img/defaultCover/14no_call_setting.png.js +1 -1
- package/es/shared/assets/img/defaultCover/15no_use_tag.png.js +1 -1
- package/es/shared/assets/img/defaultCover/16no_table_data.png.js +1 -1
- package/es/shared/assets/img/defaultCover/1location.png.js +1 -1
- package/es/shared/assets/img/defaultCover/2notfound.png.js +1 -1
- package/es/shared/assets/img/defaultCover/3loading.png.js +1 -1
- package/es/shared/assets/img/defaultCover/4no_permission.png.js +1 -1
- package/es/shared/assets/img/defaultCover/5no_data.png.js +1 -1
- package/es/shared/assets/img/defaultCover/6no_network.png.js +1 -1
- package/es/shared/assets/img/defaultCover/7no_doctor.png.js +1 -1
- package/es/shared/assets/img/defaultCover/8system_error.png.js +1 -1
- package/es/shared/assets/img/defaultCover/9system_upgrade.png.js +1 -1
- package/es/shared/components/InputNumberSlash/InputNumberSlash.js +1 -1
- package/es/shared/hooks/selectHooks/useSearchContent.js +1 -1
- package/es/shared/hooks/useLevelSearchCascader.js +3 -3
- package/es/shared/package.json.js +1 -1
- package/es/shared/utils/fabricjs/index.js +1 -1
- package/package.json +5 -4
@@ -7,7 +7,30 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
7
7
|
currentSessionItem: AnyObject;
|
8
8
|
id: string;
|
9
9
|
userInfo: AnyObject;
|
10
|
-
msgList:
|
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[];
|
@@ -225,7 +225,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
225
225
|
round: "",
|
226
226
|
size: 100,
|
227
227
|
onClickCapture: _cache[0] || (_cache[0] = ($event) => showLargeAvatar.value = true)
|
228
|
-
}, null, 8, ["src"]), createCommentVNode(' <n-upload abstract accept="image/*" @change="onChange">\
|
228
|
+
}, null, 8, ["src"]), createCommentVNode(' <n-upload abstract accept="image/*" @change="onChange">\n <n-upload-trigger #="{ handleClick }" abstract>\n <n-button\n circle\n secondary\n class="edit-avatar"\n v-show="userDetail.id === state.userInfo.id"\n @click="handleClick"\n >\n <template #icon>\n <n-icon size="16" color="#666666" :component="Camera" />\n </template>\n </n-button>\n </n-upload-trigger>\n </n-upload> '), createElementVNode("div", _hoisted_4, [createElementVNode("h4", null, [createElementVNode("label", _hoisted_5, toDisplayString(userDetail.name), 1), withDirectives(createElementVNode("label", {
|
229
229
|
class: normalizeClass(["iho-chatRole", unref(isDoctorRole)(userDetail.roleInfo) ? "isDoctor" : ""])
|
230
230
|
}, toDisplayString(unref(getRoleName)(userDetail.roleInfo)), 3), [[vShow, unref(getRoleName)(userDetail.roleInfo)]])]), createElementVNode("p", null, toDisplayString(userDetail.orgName), 1)]), createVNode(unref(NButton), {
|
231
231
|
strong: "",
|
@@ -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):
|
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:
|
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
|
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:
|
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
|
-
|
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: (
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
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,10 +92,10 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
79
92
|
handleEnter: () => Promise<void>;
|
80
93
|
handleFinish: () => void;
|
81
94
|
handleExit: () => Promise<void>;
|
82
|
-
handleRemoteVideoAvailable: (event:
|
83
|
-
handleRemoteAudioAvailable: (event:
|
84
|
-
handleRemoteUserEnter: () => void;
|
85
|
-
handleRemoteUserExit: (event:
|
95
|
+
handleRemoteVideoAvailable: (event: TRTCEvent) => Promise<void>;
|
96
|
+
handleRemoteAudioAvailable: (event: TRTCEvent) => void;
|
97
|
+
handleRemoteUserEnter: (event: TRTCEvent) => void;
|
98
|
+
handleRemoteUserExit: (event: TRTCEvent) => void;
|
86
99
|
handleError: (error: any) => void;
|
87
100
|
NButton: any;
|
88
101
|
NAvatar: any;
|
@@ -15,7 +15,6 @@ import '../../../../shared/hooks/useScrollLoading.js';
|
|
15
15
|
import 'stompjs';
|
16
16
|
import 'sockjs-client/dist/sockjs.min.js';
|
17
17
|
import { useVideo } from '../hooks/useVideo.js';
|
18
|
-
import TRTC from 'trtc-sdk-v5';
|
19
18
|
|
20
19
|
const _hoisted_1 = {
|
21
20
|
class: "video-wrapper"
|
@@ -76,20 +75,25 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
76
75
|
const {
|
77
76
|
sendMessage,
|
78
77
|
state,
|
79
|
-
trtcProxy,
|
80
78
|
trtc,
|
81
79
|
timing,
|
82
80
|
voiceClose,
|
83
81
|
isAudio,
|
84
82
|
isCall,
|
85
83
|
startTimer,
|
86
|
-
resetTimer,
|
87
84
|
toggleAudio,
|
88
85
|
messageTypeText,
|
89
86
|
time,
|
90
87
|
installEventHandlers,
|
91
|
-
uninstallEventHandlers
|
92
|
-
|
88
|
+
uninstallEventHandlers,
|
89
|
+
enterRoom,
|
90
|
+
exitRoom,
|
91
|
+
startLocalMedia,
|
92
|
+
MAIN_STREAM_TYPE
|
93
|
+
} = useVideo({
|
94
|
+
isMultiple: false,
|
95
|
+
enableRetry: false
|
96
|
+
});
|
93
97
|
const videoRef = ref();
|
94
98
|
const selfVideoRef = ref();
|
95
99
|
const isConnect = ref(false);
|
@@ -150,20 +154,12 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
150
154
|
}
|
151
155
|
}
|
152
156
|
async function handleEnter() {
|
153
|
-
const
|
154
|
-
if (!
|
155
|
-
console.log("checkResult :>> ", checkResult);
|
157
|
+
const success = await enterRoom();
|
158
|
+
if (!success) {
|
156
159
|
state.showVideo = false;
|
157
160
|
return;
|
158
161
|
}
|
159
162
|
try {
|
160
|
-
await trtc.enterRoom({
|
161
|
-
strRoomId: state.currentAVMsg.strRoomId,
|
162
|
-
sdkAppId: parseInt(state.userInfo.sdkAppID),
|
163
|
-
userId: state.userInfo.id,
|
164
|
-
userSig: state.userInfo.userSig,
|
165
|
-
proxy: trtcProxy.value
|
166
|
-
});
|
167
163
|
if (!isCall.value) {
|
168
164
|
isConnect.value = true;
|
169
165
|
startTimer();
|
@@ -175,15 +171,10 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
175
171
|
handleRemoteUserExit,
|
176
172
|
handleRemoteVideoAvailable
|
177
173
|
});
|
178
|
-
await
|
179
|
-
if (isAudio.value)
|
180
|
-
return;
|
181
|
-
await trtc.startLocalVideo({
|
182
|
-
view: selfVideoRef.value
|
183
|
-
});
|
174
|
+
await startLocalMedia(selfVideoRef.value);
|
184
175
|
} catch (error) {
|
185
|
-
console.
|
186
|
-
$message.error(
|
176
|
+
console.error("Error setting up single video call:", error);
|
177
|
+
$message.error("\u8BBE\u7F6E\u89C6\u9891\u901A\u8BDD\u5931\u8D25");
|
187
178
|
state.showVideo = false;
|
188
179
|
}
|
189
180
|
}
|
@@ -204,13 +195,9 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
204
195
|
handleRemoteUserExit,
|
205
196
|
handleRemoteVideoAvailable
|
206
197
|
});
|
207
|
-
await
|
208
|
-
await trtc.stopLocalAudio();
|
209
|
-
if (isAudio.value)
|
210
|
-
return;
|
211
|
-
await trtc.stopLocalVideo();
|
198
|
+
await exitRoom();
|
212
199
|
} catch (error) {
|
213
|
-
console.
|
200
|
+
console.error("Error during video exit:", error);
|
214
201
|
}
|
215
202
|
}
|
216
203
|
async function handleRemoteVideoAvailable(event) {
|
@@ -219,27 +206,35 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
219
206
|
streamType
|
220
207
|
} = event;
|
221
208
|
try {
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
209
|
+
if (streamType === MAIN_STREAM_TYPE && videoRef.value) {
|
210
|
+
await trtc.startRemoteVideo({
|
211
|
+
userId,
|
212
|
+
streamType,
|
213
|
+
view: videoRef.value
|
214
|
+
});
|
215
|
+
console.log("Remote video rendered for user:", userId);
|
216
|
+
}
|
227
217
|
} catch (error) {
|
228
|
-
console.
|
218
|
+
console.error("Error rendering remote video:", error);
|
229
219
|
}
|
230
220
|
}
|
231
221
|
function handleRemoteAudioAvailable(event) {
|
222
|
+
console.log("Remote audio available:", event.userId);
|
232
223
|
}
|
233
|
-
function handleRemoteUserEnter() {
|
234
|
-
|
235
|
-
|
224
|
+
function handleRemoteUserEnter(event) {
|
225
|
+
console.log("Remote user entered:", event.userId);
|
226
|
+
if (isCall.value) {
|
227
|
+
isConnect.value = true;
|
228
|
+
startTimer();
|
229
|
+
}
|
236
230
|
}
|
237
231
|
function handleRemoteUserExit(event) {
|
238
|
-
console.log("
|
232
|
+
console.log("Remote user exited:", event.userId);
|
239
233
|
handleExit();
|
240
234
|
}
|
241
235
|
function handleError(error) {
|
242
|
-
console.
|
236
|
+
console.error("TRTC error in single video:", error);
|
237
|
+
$message.error("\u89C6\u9891\u901A\u8BDD\u51FA\u73B0\u9519\u8BEF");
|
243
238
|
state.showVideo = false;
|
244
239
|
}
|
245
240
|
watch(() => status.value, (value) => {
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import { InjectionKey } from 'vue';
|
2
|
+
import { MsgListItem } from '../types';
|
2
3
|
import { ChatSock } from '../utils/chatSock';
|
3
4
|
import { AnyObject } from '../../../../shared/types';
|
4
5
|
export declare const InjectionIChatData: InjectionKey<ReturnType<typeof initData>>;
|
@@ -12,7 +13,30 @@ export declare function initData(props: AnyObject, emit: (event: 'template-click
|
|
12
13
|
currentSessionItem: AnyObject;
|
13
14
|
id: string;
|
14
15
|
userInfo: AnyObject;
|
15
|
-
msgList:
|
16
|
+
msgList: {
|
17
|
+
[x: string]: any;
|
18
|
+
id: string;
|
19
|
+
sessionKey: string;
|
20
|
+
content: {
|
21
|
+
[x: string]: any;
|
22
|
+
chatMessageType: string;
|
23
|
+
msg: string;
|
24
|
+
referenceContent?: any;
|
25
|
+
forwardMessageList?: AnyObject[] | undefined;
|
26
|
+
messageTemplate?: any;
|
27
|
+
messageTemplateData?: any;
|
28
|
+
fileUrl?: string | undefined;
|
29
|
+
avStatus?: string | undefined;
|
30
|
+
};
|
31
|
+
senderName: string;
|
32
|
+
sendTime: string;
|
33
|
+
sender: string;
|
34
|
+
status: string;
|
35
|
+
senderAvatar: string;
|
36
|
+
__content: string;
|
37
|
+
__time?: string | undefined;
|
38
|
+
__sendTime?: string | undefined;
|
39
|
+
}[];
|
16
40
|
currentMsg: AnyObject;
|
17
41
|
isAppendMsg: boolean;
|
18
42
|
sessionList: AnyObject[];
|
@@ -40,7 +64,7 @@ export declare function initData(props: AnyObject, emit: (event: 'template-click
|
|
40
64
|
isGroupChat: import("vue").ComputedRef<boolean>;
|
41
65
|
isGroupLeader: import("vue").ComputedRef<boolean>;
|
42
66
|
isEnded: import("vue").ComputedRef<boolean>;
|
43
|
-
setMsgList: (list?: AnyObject[]) => void;
|
67
|
+
setMsgList: (list?: AnyObject[] | MsgListItem) => void;
|
44
68
|
sendMessage: (message: {
|
45
69
|
chatType?: string;
|
46
70
|
content: AnyObject;
|
@@ -75,7 +99,30 @@ export declare const useData: () => {
|
|
75
99
|
currentSessionItem: AnyObject;
|
76
100
|
id: string;
|
77
101
|
userInfo: AnyObject;
|
78
|
-
msgList:
|
102
|
+
msgList: {
|
103
|
+
[x: string]: any;
|
104
|
+
id: string;
|
105
|
+
sessionKey: string;
|
106
|
+
content: {
|
107
|
+
[x: string]: any;
|
108
|
+
chatMessageType: string;
|
109
|
+
msg: string;
|
110
|
+
referenceContent?: any;
|
111
|
+
forwardMessageList?: AnyObject[] | undefined;
|
112
|
+
messageTemplate?: any;
|
113
|
+
messageTemplateData?: any;
|
114
|
+
fileUrl?: string | undefined;
|
115
|
+
avStatus?: string | undefined;
|
116
|
+
};
|
117
|
+
senderName: string;
|
118
|
+
sendTime: string;
|
119
|
+
sender: string;
|
120
|
+
status: string;
|
121
|
+
senderAvatar: string;
|
122
|
+
__content: string;
|
123
|
+
__time?: string | undefined;
|
124
|
+
__sendTime?: string | undefined;
|
125
|
+
}[];
|
79
126
|
currentMsg: AnyObject;
|
80
127
|
isAppendMsg: boolean;
|
81
128
|
sessionList: AnyObject[];
|
@@ -103,7 +150,7 @@ export declare const useData: () => {
|
|
103
150
|
isGroupChat: import("vue").ComputedRef<boolean>;
|
104
151
|
isGroupLeader: import("vue").ComputedRef<boolean>;
|
105
152
|
isEnded: import("vue").ComputedRef<boolean>;
|
106
|
-
setMsgList: (list?: AnyObject[]) => void;
|
153
|
+
setMsgList: (list?: AnyObject[] | MsgListItem) => void;
|
107
154
|
sendMessage: (message: {
|
108
155
|
chatType?: string;
|
109
156
|
content: AnyObject;
|
@@ -1,9 +1,9 @@
|
|
1
1
|
import { ref, reactive, computed, watch, toRef, inject, toRaw } from 'vue';
|
2
2
|
import { openSessionApi, updateStatusApi, groupUserApi } from '../api/index.js';
|
3
3
|
import { promiseTimeout, useIntervalFn } from '@vueuse/core';
|
4
|
-
import { isGroup, listSort, formatTime, transformMessage,
|
4
|
+
import { isGroup, listSort, formatTime, transformMessage, $message, simplifyMessage } from '../utils/index.js';
|
5
5
|
import { cloneDeep, remove, isArray, uniqBy } from 'lodash-es';
|
6
|
-
import { STATUS,
|
6
|
+
import { STATUS, CHAT_TYPE, MESSAGE_TYPE } from '../constants/index.js';
|
7
7
|
import { useTheme } from '../../../../shared/hooks/useTheme.js';
|
8
8
|
import 'date-fns';
|
9
9
|
import '@vue/shared';
|
@@ -139,11 +139,6 @@ function initData(props, emit) {
|
|
139
139
|
__content: transformMessage(item.content),
|
140
140
|
__sendTime: formatTime(item.sendTime).recordTime
|
141
141
|
});
|
142
|
-
if (item.content.chatMessageType === MESSAGE_TYPE.FILE && !item.__size) {
|
143
|
-
getFileSize(item.content.fileUrl).then((size) => {
|
144
|
-
item.__size = size;
|
145
|
-
});
|
146
|
-
}
|
147
142
|
});
|
148
143
|
if (needUpdateTime()) {
|
149
144
|
resume();
|
@@ -0,0 +1,25 @@
|
|
1
|
+
import { type Ref } from 'vue';
|
2
|
+
interface Position {
|
3
|
+
x: number;
|
4
|
+
y: number;
|
5
|
+
}
|
6
|
+
type PositionStr = 'center' | 'top-right';
|
7
|
+
interface UseDraggableOptions {
|
8
|
+
handle?: Ref<HTMLElement | null>;
|
9
|
+
initialPosition?: PositionStr;
|
10
|
+
onDragStart?: (position: Position) => void;
|
11
|
+
onDrag?: (position: Position) => void;
|
12
|
+
onDragEnd?: (position: Position) => void;
|
13
|
+
}
|
14
|
+
export declare function useDraggable(target: Ref<HTMLElement | null>, options?: UseDraggableOptions): {
|
15
|
+
style: Ref<{
|
16
|
+
left: string;
|
17
|
+
top: string;
|
18
|
+
}>;
|
19
|
+
position: {
|
20
|
+
x: Ref<number>;
|
21
|
+
y: Ref<number>;
|
22
|
+
};
|
23
|
+
changePosition: (position?: PositionStr) => void;
|
24
|
+
};
|
25
|
+
export {};
|
@@ -0,0 +1,160 @@
|
|
1
|
+
import { ref, onMounted, onBeforeUnmount } from 'vue';
|
2
|
+
|
3
|
+
function useDraggable(target, options = {}) {
|
4
|
+
const x = ref(0);
|
5
|
+
const y = ref(0);
|
6
|
+
const isDragging = ref(false);
|
7
|
+
const startPos = ref({
|
8
|
+
x: 0,
|
9
|
+
y: 0
|
10
|
+
});
|
11
|
+
const startMousePos = ref({
|
12
|
+
x: 0,
|
13
|
+
y: 0
|
14
|
+
});
|
15
|
+
const style = ref({
|
16
|
+
left: `${x.value}px`,
|
17
|
+
top: `${y.value}px`
|
18
|
+
});
|
19
|
+
const updatePosition = () => {
|
20
|
+
style.value = {
|
21
|
+
left: `${x.value}px`,
|
22
|
+
top: `${y.value}px`
|
23
|
+
};
|
24
|
+
};
|
25
|
+
const centerElement = () => {
|
26
|
+
if (!target.value)
|
27
|
+
return;
|
28
|
+
const {
|
29
|
+
width: width1,
|
30
|
+
height: height1
|
31
|
+
} = target.value.getBoundingClientRect();
|
32
|
+
const {
|
33
|
+
width: width2,
|
34
|
+
height: height2
|
35
|
+
} = getHiddenElementRect(target.value);
|
36
|
+
const width = width1 || width2 || 0;
|
37
|
+
const height = height1 || height2 || 0;
|
38
|
+
x.value = window.innerWidth / 2 - width / 2;
|
39
|
+
y.value = window.innerHeight / 2 - height / 2;
|
40
|
+
updatePosition();
|
41
|
+
};
|
42
|
+
const topRightElement = () => {
|
43
|
+
if (!target.value)
|
44
|
+
return;
|
45
|
+
const {
|
46
|
+
width: width1
|
47
|
+
} = target.value.getBoundingClientRect();
|
48
|
+
const {
|
49
|
+
width: width2
|
50
|
+
} = getHiddenElementRect(target.value);
|
51
|
+
const width = width1 || width2 || 0;
|
52
|
+
x.value = window.innerWidth - width - 20;
|
53
|
+
y.value = 20;
|
54
|
+
updatePosition();
|
55
|
+
};
|
56
|
+
const handlePosition = () => {
|
57
|
+
changePosition(options.initialPosition);
|
58
|
+
};
|
59
|
+
const changePosition = (position) => {
|
60
|
+
if (!position)
|
61
|
+
return;
|
62
|
+
if (position === "center") {
|
63
|
+
centerElement();
|
64
|
+
} else if (position === "top-right") {
|
65
|
+
topRightElement();
|
66
|
+
}
|
67
|
+
};
|
68
|
+
const clamp = (val, min, max) => Math.max(min, Math.min(val, max));
|
69
|
+
const onMouseDown = (e) => {
|
70
|
+
var _a;
|
71
|
+
if (!target.value)
|
72
|
+
return;
|
73
|
+
isDragging.value = true;
|
74
|
+
startMousePos.value = {
|
75
|
+
x: e.clientX,
|
76
|
+
y: e.clientY
|
77
|
+
};
|
78
|
+
startPos.value = {
|
79
|
+
x: x.value,
|
80
|
+
y: y.value
|
81
|
+
};
|
82
|
+
(_a = options.onDragStart) == null ? void 0 : _a.call(options, {
|
83
|
+
x: x.value,
|
84
|
+
y: y.value
|
85
|
+
});
|
86
|
+
e.preventDefault();
|
87
|
+
document.body.style.userSelect = "none";
|
88
|
+
};
|
89
|
+
const onMouseMove = (e) => {
|
90
|
+
var _a;
|
91
|
+
if (!isDragging.value || !target.value)
|
92
|
+
return;
|
93
|
+
const dx = e.clientX - startMousePos.value.x;
|
94
|
+
const dy = e.clientY - startMousePos.value.y;
|
95
|
+
const {
|
96
|
+
width,
|
97
|
+
height
|
98
|
+
} = target.value.getBoundingClientRect();
|
99
|
+
const minX = 0;
|
100
|
+
const minY = 0;
|
101
|
+
const maxX = window.innerWidth - width;
|
102
|
+
const maxY = window.innerHeight - height;
|
103
|
+
x.value = clamp(startPos.value.x + dx, minX, maxX);
|
104
|
+
y.value = clamp(startPos.value.y + dy, minY, maxY);
|
105
|
+
updatePosition();
|
106
|
+
(_a = options.onDrag) == null ? void 0 : _a.call(options, {
|
107
|
+
x: x.value,
|
108
|
+
y: y.value
|
109
|
+
});
|
110
|
+
};
|
111
|
+
const onMouseUp = () => {
|
112
|
+
var _a;
|
113
|
+
if (!isDragging.value)
|
114
|
+
return;
|
115
|
+
isDragging.value = false;
|
116
|
+
document.body.style.userSelect = "";
|
117
|
+
(_a = options.onDragEnd) == null ? void 0 : _a.call(options, {
|
118
|
+
x: x.value,
|
119
|
+
y: y.value
|
120
|
+
});
|
121
|
+
};
|
122
|
+
onMounted(() => {
|
123
|
+
var _a, _b;
|
124
|
+
const handle = (_b = (_a = options.handle) == null ? void 0 : _a.value) != null ? _b : target.value;
|
125
|
+
if (!handle)
|
126
|
+
return;
|
127
|
+
handlePosition();
|
128
|
+
handle.addEventListener("mousedown", onMouseDown);
|
129
|
+
document.addEventListener("mousemove", onMouseMove);
|
130
|
+
document.addEventListener("mouseup", onMouseUp);
|
131
|
+
window.addEventListener("resize", handlePosition);
|
132
|
+
});
|
133
|
+
onBeforeUnmount(() => {
|
134
|
+
var _a, _b;
|
135
|
+
const handle = (_b = (_a = options.handle) == null ? void 0 : _a.value) != null ? _b : target.value;
|
136
|
+
if (!handle)
|
137
|
+
return;
|
138
|
+
handle.removeEventListener("mousedown", onMouseDown);
|
139
|
+
document.removeEventListener("mousemove", onMouseMove);
|
140
|
+
document.removeEventListener("mouseup", onMouseUp);
|
141
|
+
window.removeEventListener("resize", handlePosition);
|
142
|
+
});
|
143
|
+
return {
|
144
|
+
style,
|
145
|
+
position: {
|
146
|
+
x,
|
147
|
+
y
|
148
|
+
},
|
149
|
+
changePosition
|
150
|
+
};
|
151
|
+
}
|
152
|
+
function getHiddenElementRect(element) {
|
153
|
+
const styles = window.getComputedStyle(element);
|
154
|
+
return {
|
155
|
+
width: parseFloat(styles.width),
|
156
|
+
height: parseFloat(styles.height)
|
157
|
+
};
|
158
|
+
}
|
159
|
+
|
160
|
+
export { useDraggable };
|