├── .github
├── README.md
└── README_ZH.md
├── Vue2
├── Demo
│ ├── .gitignore
│ ├── README.md
│ ├── README_ZH.md
│ ├── babel.config.js
│ ├── package.json
│ ├── public
│ │ ├── favicon.png
│ │ └── index.html
│ ├── src
│ │ ├── App.vue
│ │ ├── TUIKit
│ │ │ ├── .npmignore
│ │ │ ├── .npmrc
│ │ │ ├── CHANGELOG.md
│ │ │ ├── README.md
│ │ │ ├── adapter-vue.ts
│ │ │ ├── assets
│ │ │ │ ├── icon
│ │ │ │ │ ├── add-circle.svg
│ │ │ │ │ ├── add.svg
│ │ │ │ │ ├── at.svg
│ │ │ │ │ ├── audio.svg
│ │ │ │ │ ├── back.svg
│ │ │ │ │ ├── call-video.svg
│ │ │ │ │ ├── call-voice.svg
│ │ │ │ │ ├── call.png
│ │ │ │ │ ├── camera-uni.png
│ │ │ │ │ ├── cancel.svg
│ │ │ │ │ ├── check-sm.svg
│ │ │ │ │ ├── close-dark.svg
│ │ │ │ │ ├── close-image.png
│ │ │ │ │ ├── convertText_en.svg
│ │ │ │ │ ├── convertText_zh.svg
│ │ │ │ │ ├── d-left-arrow.svg
│ │ │ │ │ ├── d-right-arrow.svg
│ │ │ │ │ ├── del-icon.svg
│ │ │ │ │ ├── double-arrow.svg
│ │ │ │ │ ├── down-icon.svg
│ │ │ │ │ ├── downaload-image.png
│ │ │ │ │ ├── download.svg
│ │ │ │ │ ├── edit.svg
│ │ │ │ │ ├── evalute-dark.svg
│ │ │ │ │ ├── evalute-light.svg
│ │ │ │ │ ├── face-dark.svg
│ │ │ │ │ ├── face-light.svg
│ │ │ │ │ ├── face-uni.png
│ │ │ │ │ ├── file-dark.svg
│ │ │ │ │ ├── file-light.svg
│ │ │ │ │ ├── forward-each.svg
│ │ │ │ │ ├── forward-merge.svg
│ │ │ │ │ ├── icon-arrow-left.svg
│ │ │ │ │ ├── icon-c2c.svg
│ │ │ │ │ ├── icon-close.svg
│ │ │ │ │ ├── image-dark.svg
│ │ │ │ │ ├── image-light.svg
│ │ │ │ │ ├── image-uni.png
│ │ │ │ │ ├── input-close.svg
│ │ │ │ │ ├── left-arrow.svg
│ │ │ │ │ ├── loading.gif
│ │ │ │ │ ├── loading.png
│ │ │ │ │ ├── minus.svg
│ │ │ │ │ ├── more-uni.png
│ │ │ │ │ ├── more.png
│ │ │ │ │ ├── msg-audio.svg
│ │ │ │ │ ├── msg-copy.svg
│ │ │ │ │ ├── msg-del.svg
│ │ │ │ │ ├── msg-forward.svg
│ │ │ │ │ ├── msg-quote.svg
│ │ │ │ │ ├── msg-revoke.svg
│ │ │ │ │ ├── multiple-select.svg
│ │ │ │ │ ├── mute.svg
│ │ │ │ │ ├── plus.svg
│ │ │ │ │ ├── radio.svg
│ │ │ │ │ ├── right-arrow.svg
│ │ │ │ │ ├── right-icon.svg
│ │ │ │ │ ├── rotate-left.svg
│ │ │ │ │ ├── rotate-right.svg
│ │ │ │ │ ├── search-default.svg
│ │ │ │ │ ├── search-more.svg
│ │ │ │ │ ├── search.svg
│ │ │ │ │ ├── selected.svg
│ │ │ │ │ ├── setting.svg
│ │ │ │ │ ├── star-light.png
│ │ │ │ │ ├── star.png
│ │ │ │ │ ├── start-group.svg
│ │ │ │ │ ├── translate.svg
│ │ │ │ │ ├── video-dark.svg
│ │ │ │ │ ├── video-light.svg
│ │ │ │ │ ├── video-play.png
│ │ │ │ │ ├── video-uni.png
│ │ │ │ │ ├── words-dark.svg
│ │ │ │ │ ├── words-light.svg
│ │ │ │ │ ├── zoom-in.svg
│ │ │ │ │ └── zoom-out.svg
│ │ │ │ └── styles
│ │ │ │ │ ├── common.scss
│ │ │ │ │ └── sample.scss
│ │ │ ├── components
│ │ │ │ ├── TUIChat
│ │ │ │ │ ├── chat-header
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config.ts
│ │ │ │ │ ├── emoji-config
│ │ │ │ │ │ ├── custom-emoji.ts
│ │ │ │ │ │ ├── default-emoji.ts
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── locales
│ │ │ │ │ │ │ ├── en.ts
│ │ │ │ │ │ │ ├── zh_cn.ts
│ │ │ │ │ │ │ └── zh_tw.ts
│ │ │ │ │ ├── forward
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── index.vue
│ │ │ │ │ ├── message-input-toolbar
│ │ │ │ │ │ ├── emoji-picker
│ │ │ │ │ │ │ ├── emoji-picker-dialog.vue
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ │ └── style
│ │ │ │ │ │ │ │ ├── h5.scss
│ │ │ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ │ │ └── web.scss
│ │ │ │ │ │ ├── evaluate
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ │ └── style
│ │ │ │ │ │ │ │ ├── color.scss
│ │ │ │ │ │ │ │ ├── h5.scss
│ │ │ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ │ │ └── web.scss
│ │ │ │ │ │ ├── file-upload
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ └── index.vue
│ │ │ │ │ │ ├── image-upload
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ └── index.vue
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ ├── style
│ │ │ │ │ │ │ └── uni.scss
│ │ │ │ │ │ ├── toolbar-item-container
│ │ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ │ └── style
│ │ │ │ │ │ │ │ ├── color.scss
│ │ │ │ │ │ │ │ ├── h5.scss
│ │ │ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ │ │ ├── uni.scss
│ │ │ │ │ │ │ │ └── web.scss
│ │ │ │ │ │ ├── user-selector
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ └── index.vue
│ │ │ │ │ │ ├── video-upload
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ └── index.vue
│ │ │ │ │ │ └── words
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ │ └── style
│ │ │ │ │ │ │ ├── color.scss
│ │ │ │ │ │ │ ├── h5.scss
│ │ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ │ └── web.scss
│ │ │ │ │ ├── message-input
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ ├── message-input-at
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ └── index.vue
│ │ │ │ │ │ ├── message-input-button.vue
│ │ │ │ │ │ ├── message-input-editor.vue
│ │ │ │ │ │ ├── message-input-file.ts
│ │ │ │ │ │ └── message-input-quote
│ │ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── message-list
│ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ ├── link
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── message-elements
│ │ │ │ │ │ │ ├── message-audio.vue
│ │ │ │ │ │ │ ├── message-bubble.vue
│ │ │ │ │ │ │ ├── message-convert
│ │ │ │ │ │ │ │ ├── convert-content.vue
│ │ │ │ │ │ │ │ └── index.vue
│ │ │ │ │ │ │ ├── message-custom.vue
│ │ │ │ │ │ │ ├── message-face.vue
│ │ │ │ │ │ │ ├── message-file.vue
│ │ │ │ │ │ │ ├── message-image.vue
│ │ │ │ │ │ │ ├── message-location.vue
│ │ │ │ │ │ │ ├── message-quote
│ │ │ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ │ │ └── interface.ts
│ │ │ │ │ │ │ ├── message-record
│ │ │ │ │ │ │ │ └── index.vue
│ │ │ │ │ │ │ ├── message-stream-markdown
│ │ │ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ │ │ ├── marked.ts
│ │ │ │ │ │ │ │ ├── operation
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ │ │ │ └── type.ts
│ │ │ │ │ │ │ │ └── type-writer.ts
│ │ │ │ │ │ │ ├── message-text.vue
│ │ │ │ │ │ │ ├── message-timestamp.vue
│ │ │ │ │ │ │ ├── message-tip.vue
│ │ │ │ │ │ │ ├── message-translate
│ │ │ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ │ │ └── translation-content.vue
│ │ │ │ │ │ │ ├── message-video.vue
│ │ │ │ │ │ │ ├── read-status
│ │ │ │ │ │ │ │ └── index.vue
│ │ │ │ │ │ │ └── simple-message-list
│ │ │ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ │ │ └── message-container.vue
│ │ │ │ │ │ ├── message-group-application
│ │ │ │ │ │ │ └── index.vue
│ │ │ │ │ │ ├── message-tool
│ │ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ │ └── message-revoked.vue
│ │ │ │ │ │ ├── read-receipt-panel
│ │ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ │ └── interface.ts
│ │ │ │ │ │ ├── scroll-button
│ │ │ │ │ │ │ └── index.vue
│ │ │ │ │ │ └── style
│ │ │ │ │ │ │ ├── color.scss
│ │ │ │ │ │ │ ├── h5.scss
│ │ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ │ └── web.scss
│ │ │ │ │ ├── mulitple-select-panel
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── offlinePushInfoManager
│ │ │ │ │ │ ├── const.ts
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── info.ts
│ │ │ │ │ │ ├── interface.ts
│ │ │ │ │ │ └── offlinePushInfoManager.ts
│ │ │ │ │ ├── server.ts
│ │ │ │ │ ├── style
│ │ │ │ │ │ ├── h5.scss
│ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ ├── uni.scss
│ │ │ │ │ │ ├── web.scss
│ │ │ │ │ │ └── wx.scss
│ │ │ │ │ └── utils
│ │ │ │ │ │ ├── chatStorage.ts
│ │ │ │ │ │ ├── conversationDraft.ts
│ │ │ │ │ │ ├── convertVoiceToText.ts
│ │ │ │ │ │ ├── copy.ts
│ │ │ │ │ │ ├── sendMessage.ts
│ │ │ │ │ │ ├── translation.ts
│ │ │ │ │ │ ├── utils.ts
│ │ │ │ │ │ └── wordsList.ts
│ │ │ │ ├── TUIContact
│ │ │ │ │ ├── contact-info
│ │ │ │ │ │ ├── contact-info-config.ts
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ └── style
│ │ │ │ │ │ │ ├── h5.scss
│ │ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ │ └── web.scss
│ │ │ │ │ ├── contact-list
│ │ │ │ │ │ ├── contact-list-item
│ │ │ │ │ │ │ └── index.vue
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ └── style
│ │ │ │ │ │ │ ├── h5.scss
│ │ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ │ └── web.scss
│ │ │ │ │ ├── contact-search
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── index.vue
│ │ │ │ │ ├── select-friend
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── server.ts
│ │ │ │ │ └── utils
│ │ │ │ │ │ └── index.ts
│ │ │ │ ├── TUIConversation
│ │ │ │ │ ├── actions-menu
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── conversation-header
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ └── server.ts
│ │ │ │ │ ├── conversation-list
│ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ └── style
│ │ │ │ │ │ │ ├── color.scss
│ │ │ │ │ │ │ ├── h5.scss
│ │ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ │ └── web.scss
│ │ │ │ │ ├── conversation-network
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── index.vue
│ │ │ │ │ ├── server.ts
│ │ │ │ │ └── style
│ │ │ │ │ │ ├── color.scss
│ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ └── web.scss
│ │ │ │ ├── TUIGroup
│ │ │ │ │ ├── create-group
│ │ │ │ │ │ ├── group-introduction
│ │ │ │ │ │ │ ├── config.ts
│ │ │ │ │ │ │ └── index.vue
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ └── style
│ │ │ │ │ │ │ ├── color.scss
│ │ │ │ │ │ │ ├── h5.scss
│ │ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ │ └── web.scss
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── index.vue
│ │ │ │ │ ├── manage-group
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ ├── manage-admin.vue
│ │ │ │ │ │ ├── manage-member.vue
│ │ │ │ │ │ ├── manage-name.vue
│ │ │ │ │ │ ├── manage-notification.vue
│ │ │ │ │ │ ├── manage-profile.vue
│ │ │ │ │ │ └── style
│ │ │ │ │ │ │ ├── color.scss
│ │ │ │ │ │ │ ├── h5.scss
│ │ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ │ └── web.scss
│ │ │ │ │ ├── select-member
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ └── server.ts
│ │ │ │ ├── TUINotification
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── interface.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── TUISearch
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── index.vue
│ │ │ │ │ ├── search-container
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ └── style
│ │ │ │ │ │ │ ├── h5.scss
│ │ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ │ └── web.scss
│ │ │ │ │ ├── search-input
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── search-more
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── search-result
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ ├── search-result-default
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ └── index.vue
│ │ │ │ │ │ ├── search-result-item
│ │ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ │ ├── message-abstract
│ │ │ │ │ │ │ │ ├── message-abstract-custom.vue
│ │ │ │ │ │ │ │ ├── message-abstract-file.vue
│ │ │ │ │ │ │ │ ├── message-abstract-image.vue
│ │ │ │ │ │ │ │ ├── message-abstract-text.vue
│ │ │ │ │ │ │ │ └── message-abstract-video.vue
│ │ │ │ │ │ │ └── style
│ │ │ │ │ │ │ │ ├── h5.scss
│ │ │ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ │ │ └── web.scss
│ │ │ │ │ │ ├── search-result-loading
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ └── index.vue
│ │ │ │ │ │ └── style
│ │ │ │ │ │ │ ├── h5.scss
│ │ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ │ └── web.scss
│ │ │ │ │ ├── search-time-list.ts
│ │ │ │ │ ├── search-type-list.ts
│ │ │ │ │ ├── server.ts
│ │ │ │ │ ├── style
│ │ │ │ │ │ ├── h5.scss
│ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ └── web.scss
│ │ │ │ │ ├── type.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── common
│ │ │ │ │ ├── Avatar
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── BottomPopup
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ └── style
│ │ │ │ │ │ │ ├── h5.scss
│ │ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ │ └── modal.scss
│ │ │ │ │ ├── DatePicker
│ │ │ │ │ │ ├── date-picker-panel.vue
│ │ │ │ │ │ ├── date-picker.ts
│ │ │ │ │ │ ├── date-table.vue
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── Dialog
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ └── style
│ │ │ │ │ │ │ ├── color.scss
│ │ │ │ │ │ │ ├── dialog.scss
│ │ │ │ │ │ │ ├── h5.scss
│ │ │ │ │ │ │ └── web.scss
│ │ │ │ │ ├── Drag
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── Drawer
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── FetchMore
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── Icon.vue
│ │ │ │ │ ├── ImagePreviewer
│ │ │ │ │ │ ├── image-item.vue
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── Loading
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── MaskLayer
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── Overlay
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── Popconfirm
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── ProgressMessage
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── RadioSelect
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── SelectUser
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── Slider
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── SwitchBar
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── Toast
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ └── type.ts
│ │ │ │ │ └── Transfer
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ └── style
│ │ │ │ │ │ ├── color.scss
│ │ │ │ │ │ ├── h5.scss
│ │ │ │ │ │ ├── transfer.scss
│ │ │ │ │ │ └── web.scss
│ │ │ │ └── index.ts
│ │ │ ├── constant.ts
│ │ │ ├── debug
│ │ │ │ ├── GenerateTestUserSig.js
│ │ │ │ ├── index.d.ts
│ │ │ │ ├── index.js
│ │ │ │ └── lib-generate-test-usersig-es.min.js
│ │ │ ├── index.ts
│ │ │ ├── index.vue
│ │ │ ├── interface.ts
│ │ │ ├── locales
│ │ │ │ ├── en
│ │ │ │ │ ├── TUIChat.ts
│ │ │ │ │ ├── TUIContact.ts
│ │ │ │ │ ├── TUIConversation.ts
│ │ │ │ │ ├── TUIGroup.ts
│ │ │ │ │ ├── TUISearch.ts
│ │ │ │ │ ├── component.ts
│ │ │ │ │ ├── emoji.ts
│ │ │ │ │ ├── evaluate.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── message.ts
│ │ │ │ │ ├── time.ts
│ │ │ │ │ └── words.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── zh_cn
│ │ │ │ │ ├── TUIChat.ts
│ │ │ │ │ ├── TUIContact.ts
│ │ │ │ │ ├── TUIConversation.ts
│ │ │ │ │ ├── TUIGroup.ts
│ │ │ │ │ ├── TUISearch.ts
│ │ │ │ │ ├── component.ts
│ │ │ │ │ ├── emoji.ts
│ │ │ │ │ ├── evaluate.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── message.ts
│ │ │ │ │ ├── time.ts
│ │ │ │ │ ├── translate.ts
│ │ │ │ │ └── words.ts
│ │ │ │ └── zh_tw
│ │ │ │ │ ├── TUIChat.ts
│ │ │ │ │ ├── TUIContact.ts
│ │ │ │ │ ├── TUIConversation.ts
│ │ │ │ │ ├── TUIGroup.ts
│ │ │ │ │ ├── TUISearch.ts
│ │ │ │ │ ├── component.ts
│ │ │ │ │ ├── emoji.ts
│ │ │ │ │ ├── evaluate.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── message.ts
│ │ │ │ │ ├── time.ts
│ │ │ │ │ ├── translate.ts
│ │ │ │ │ └── words.ts
│ │ │ ├── plugins
│ │ │ │ ├── extension-server
│ │ │ │ │ └── callkit.ts
│ │ │ │ └── plugin-components
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── message-call
│ │ │ │ │ ├── message-call-c2c.vue
│ │ │ │ │ └── message-call-group.vue
│ │ │ │ │ ├── message-customer
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── message-customer-service.vue
│ │ │ │ │ ├── message-plugin-layout.vue
│ │ │ │ │ ├── message-plugin.vue
│ │ │ │ │ └── message-room
│ │ │ │ │ ├── message-room-default.vue
│ │ │ │ │ └── message-room.vue
│ │ │ ├── server.ts
│ │ │ ├── shims-vue.d.ts
│ │ │ └── utils
│ │ │ │ ├── documentLink.ts
│ │ │ │ ├── enableSampleTaskStatus.ts
│ │ │ │ ├── env.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── lodash.ts
│ │ │ │ ├── riseInput.ts
│ │ │ │ └── type-check.ts
│ │ ├── api
│ │ │ └── index.ts
│ │ ├── assets
│ │ │ ├── icon
│ │ │ │ ├── adv-arrow.svg
│ │ │ │ ├── arrow-down-line.png
│ │ │ │ ├── arrow-down.png
│ │ │ │ ├── calendar.svg
│ │ │ │ ├── global.png
│ │ │ │ ├── menu.png
│ │ │ │ ├── message-real.svg
│ │ │ │ ├── message-selected.svg
│ │ │ │ ├── message.svg
│ │ │ │ ├── profile-selected.svg
│ │ │ │ ├── profile.svg
│ │ │ │ ├── relation-real.svg
│ │ │ │ ├── relation-selected.svg
│ │ │ │ ├── relation.svg
│ │ │ │ └── setting.png
│ │ │ └── image
│ │ │ │ ├── adv-background.svg
│ │ │ │ ├── adv-bg.svg
│ │ │ │ ├── create-group.png
│ │ │ │ ├── h5
│ │ │ │ ├── adv-im.svg
│ │ │ │ ├── adv-more.svg
│ │ │ │ └── login-bg.png
│ │ │ │ ├── login-background.png
│ │ │ │ ├── logo.svg
│ │ │ │ ├── txc-logo.svg
│ │ │ │ └── warn.svg
│ │ ├── components
│ │ │ ├── About.vue
│ │ │ ├── AdvList.vue
│ │ │ ├── AdvListItem.vue
│ │ │ ├── ChatDefaultContent.vue
│ │ │ ├── EditProfile.vue
│ │ │ ├── EditProfilePopup.vue
│ │ │ ├── Header.vue
│ │ │ ├── Menu.vue
│ │ │ └── NavBar.vue
│ │ ├── locales
│ │ │ ├── en
│ │ │ │ ├── home.json
│ │ │ │ ├── index.ts
│ │ │ │ ├── login.json
│ │ │ │ └── profile.json
│ │ │ ├── index.ts
│ │ │ ├── zh_cn
│ │ │ │ ├── home.json
│ │ │ │ ├── index.ts
│ │ │ │ ├── login.json
│ │ │ │ └── profile.json
│ │ │ └── zh_tw
│ │ │ │ ├── home.json
│ │ │ │ ├── index.ts
│ │ │ │ ├── login.json
│ │ │ │ └── profile.json
│ │ ├── main.ts
│ │ ├── router
│ │ │ └── index.ts
│ │ ├── shims-tsx.d.ts
│ │ ├── shims-vue.d.ts
│ │ ├── store
│ │ │ └── index.ts
│ │ ├── styles
│ │ │ ├── common.scss
│ │ │ ├── h5
│ │ │ │ ├── home.scss
│ │ │ │ ├── login.scss
│ │ │ │ └── profile.scss
│ │ │ ├── home.scss
│ │ │ ├── login.scss
│ │ │ ├── profile.scss
│ │ │ └── web
│ │ │ │ ├── home.scss
│ │ │ │ ├── login.scss
│ │ │ │ └── profile.scss
│ │ ├── utils
│ │ │ └── link.ts
│ │ └── views
│ │ │ ├── Home.vue
│ │ │ ├── Login.vue
│ │ │ └── Profile.vue
│ ├── tsconfig.json
│ └── vue.config.js
└── TUIKit
│ ├── .eslintignore
│ ├── .eslintrc.js
│ ├── .npmignore
│ ├── .npmrc
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── adapter-vue.ts
│ ├── assets
│ ├── icon
│ │ ├── add-circle.svg
│ │ ├── add.svg
│ │ ├── at.svg
│ │ ├── audio.svg
│ │ ├── back.svg
│ │ ├── call-video.svg
│ │ ├── call-voice.svg
│ │ ├── call.png
│ │ ├── camera-uni.png
│ │ ├── cancel.svg
│ │ ├── check-sm.svg
│ │ ├── close-dark.svg
│ │ ├── close-image.png
│ │ ├── convertText_en.svg
│ │ ├── convertText_zh.svg
│ │ ├── d-left-arrow.svg
│ │ ├── d-right-arrow.svg
│ │ ├── del-icon.svg
│ │ ├── double-arrow.svg
│ │ ├── down-icon.svg
│ │ ├── downaload-image.png
│ │ ├── download.svg
│ │ ├── edit.svg
│ │ ├── evalute-dark.svg
│ │ ├── evalute-light.svg
│ │ ├── face-dark.svg
│ │ ├── face-light.svg
│ │ ├── face-uni.png
│ │ ├── file-dark.svg
│ │ ├── file-light.svg
│ │ ├── forward-each.svg
│ │ ├── forward-merge.svg
│ │ ├── icon-arrow-left.svg
│ │ ├── icon-c2c.svg
│ │ ├── icon-close.svg
│ │ ├── image-dark.svg
│ │ ├── image-light.svg
│ │ ├── image-uni.png
│ │ ├── input-close.svg
│ │ ├── left-arrow.svg
│ │ ├── loading.gif
│ │ ├── loading.png
│ │ ├── minus.svg
│ │ ├── more-uni.png
│ │ ├── more.png
│ │ ├── msg-audio.svg
│ │ ├── msg-copy.svg
│ │ ├── msg-del.svg
│ │ ├── msg-forward.svg
│ │ ├── msg-quote.svg
│ │ ├── msg-revoke.svg
│ │ ├── multiple-select.svg
│ │ ├── mute.svg
│ │ ├── plus.svg
│ │ ├── radio.svg
│ │ ├── right-arrow.svg
│ │ ├── right-icon.svg
│ │ ├── rotate-left.svg
│ │ ├── rotate-right.svg
│ │ ├── search-default.svg
│ │ ├── search-more.svg
│ │ ├── search.svg
│ │ ├── selected.svg
│ │ ├── setting.svg
│ │ ├── star-light.png
│ │ ├── star.png
│ │ ├── start-group.svg
│ │ ├── translate.svg
│ │ ├── video-dark.svg
│ │ ├── video-light.svg
│ │ ├── video-play.png
│ │ ├── video-uni.png
│ │ ├── words-dark.svg
│ │ ├── words-light.svg
│ │ ├── zoom-in.svg
│ │ └── zoom-out.svg
│ └── styles
│ │ ├── common.scss
│ │ └── sample.scss
│ ├── components
│ ├── TUIChat
│ │ ├── chat-header
│ │ │ └── index.vue
│ │ ├── config.ts
│ │ ├── emoji-config
│ │ │ ├── custom-emoji.ts
│ │ │ ├── default-emoji.ts
│ │ │ ├── index.ts
│ │ │ └── locales
│ │ │ │ ├── en.ts
│ │ │ │ ├── zh_cn.ts
│ │ │ │ └── zh_tw.ts
│ │ ├── forward
│ │ │ └── index.vue
│ │ ├── index.ts
│ │ ├── index.vue
│ │ ├── message-input-toolbar
│ │ │ ├── emoji-picker
│ │ │ │ ├── emoji-picker-dialog.vue
│ │ │ │ ├── index.ts
│ │ │ │ ├── index.vue
│ │ │ │ └── style
│ │ │ │ │ ├── h5.scss
│ │ │ │ │ ├── index.scss
│ │ │ │ │ └── web.scss
│ │ │ ├── evaluate
│ │ │ │ ├── index.ts
│ │ │ │ ├── index.vue
│ │ │ │ └── style
│ │ │ │ │ ├── color.scss
│ │ │ │ │ ├── h5.scss
│ │ │ │ │ ├── index.scss
│ │ │ │ │ └── web.scss
│ │ │ ├── file-upload
│ │ │ │ ├── index.ts
│ │ │ │ └── index.vue
│ │ │ ├── image-upload
│ │ │ │ ├── index.ts
│ │ │ │ └── index.vue
│ │ │ ├── index.ts
│ │ │ ├── index.vue
│ │ │ ├── style
│ │ │ │ └── uni.scss
│ │ │ ├── toolbar-item-container
│ │ │ │ ├── index.vue
│ │ │ │ └── style
│ │ │ │ │ ├── color.scss
│ │ │ │ │ ├── h5.scss
│ │ │ │ │ ├── index.scss
│ │ │ │ │ ├── uni.scss
│ │ │ │ │ └── web.scss
│ │ │ ├── user-selector
│ │ │ │ ├── index.ts
│ │ │ │ └── index.vue
│ │ │ ├── video-upload
│ │ │ │ ├── index.ts
│ │ │ │ └── index.vue
│ │ │ └── words
│ │ │ │ ├── index.ts
│ │ │ │ ├── index.vue
│ │ │ │ └── style
│ │ │ │ ├── color.scss
│ │ │ │ ├── h5.scss
│ │ │ │ ├── index.scss
│ │ │ │ └── web.scss
│ │ ├── message-input
│ │ │ ├── index.ts
│ │ │ ├── index.vue
│ │ │ ├── message-input-at
│ │ │ │ ├── index.ts
│ │ │ │ └── index.vue
│ │ │ ├── message-input-button.vue
│ │ │ ├── message-input-editor.vue
│ │ │ ├── message-input-file.ts
│ │ │ └── message-input-quote
│ │ │ │ └── index.vue
│ │ ├── message-list
│ │ │ ├── index.vue
│ │ │ ├── link
│ │ │ │ └── index.ts
│ │ │ ├── message-elements
│ │ │ │ ├── message-audio.vue
│ │ │ │ ├── message-bubble.vue
│ │ │ │ ├── message-convert
│ │ │ │ │ ├── convert-content.vue
│ │ │ │ │ └── index.vue
│ │ │ │ ├── message-custom.vue
│ │ │ │ ├── message-face.vue
│ │ │ │ ├── message-file.vue
│ │ │ │ ├── message-image.vue
│ │ │ │ ├── message-location.vue
│ │ │ │ ├── message-quote
│ │ │ │ │ ├── index.vue
│ │ │ │ │ └── interface.ts
│ │ │ │ ├── message-record
│ │ │ │ │ └── index.vue
│ │ │ │ ├── message-stream-markdown
│ │ │ │ │ ├── index.scss
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── index.vue
│ │ │ │ │ ├── marked.ts
│ │ │ │ │ ├── operation
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ └── type.ts
│ │ │ │ │ └── type-writer.ts
│ │ │ │ ├── message-text.vue
│ │ │ │ ├── message-timestamp.vue
│ │ │ │ ├── message-tip.vue
│ │ │ │ ├── message-translate
│ │ │ │ │ ├── index.vue
│ │ │ │ │ └── translation-content.vue
│ │ │ │ ├── message-video.vue
│ │ │ │ ├── read-status
│ │ │ │ │ └── index.vue
│ │ │ │ └── simple-message-list
│ │ │ │ │ ├── index.vue
│ │ │ │ │ └── message-container.vue
│ │ │ ├── message-group-application
│ │ │ │ └── index.vue
│ │ │ ├── message-tool
│ │ │ │ ├── index.vue
│ │ │ │ └── message-revoked.vue
│ │ │ ├── read-receipt-panel
│ │ │ │ ├── index.vue
│ │ │ │ └── interface.ts
│ │ │ ├── scroll-button
│ │ │ │ └── index.vue
│ │ │ └── style
│ │ │ │ ├── color.scss
│ │ │ │ ├── h5.scss
│ │ │ │ ├── index.scss
│ │ │ │ └── web.scss
│ │ ├── mulitple-select-panel
│ │ │ └── index.vue
│ │ ├── offlinePushInfoManager
│ │ │ ├── const.ts
│ │ │ ├── index.ts
│ │ │ ├── info.ts
│ │ │ ├── interface.ts
│ │ │ └── offlinePushInfoManager.ts
│ │ ├── server.ts
│ │ ├── style
│ │ │ ├── h5.scss
│ │ │ ├── index.scss
│ │ │ ├── uni.scss
│ │ │ ├── web.scss
│ │ │ └── wx.scss
│ │ └── utils
│ │ │ ├── chatStorage.ts
│ │ │ ├── conversationDraft.ts
│ │ │ ├── convertVoiceToText.ts
│ │ │ ├── copy.ts
│ │ │ ├── sendMessage.ts
│ │ │ ├── translation.ts
│ │ │ ├── utils.ts
│ │ │ └── wordsList.ts
│ ├── TUIContact
│ │ ├── contact-info
│ │ │ ├── contact-info-config.ts
│ │ │ ├── index.ts
│ │ │ ├── index.vue
│ │ │ └── style
│ │ │ │ ├── h5.scss
│ │ │ │ ├── index.scss
│ │ │ │ └── web.scss
│ │ ├── contact-list
│ │ │ ├── contact-list-item
│ │ │ │ └── index.vue
│ │ │ ├── index.ts
│ │ │ ├── index.vue
│ │ │ └── style
│ │ │ │ ├── h5.scss
│ │ │ │ ├── index.scss
│ │ │ │ └── web.scss
│ │ ├── contact-search
│ │ │ ├── index.ts
│ │ │ └── index.vue
│ │ ├── index.ts
│ │ ├── index.vue
│ │ ├── select-friend
│ │ │ ├── index.ts
│ │ │ └── index.vue
│ │ ├── server.ts
│ │ └── utils
│ │ │ └── index.ts
│ ├── TUIConversation
│ │ ├── actions-menu
│ │ │ └── index.vue
│ │ ├── conversation-header
│ │ │ ├── index.ts
│ │ │ ├── index.vue
│ │ │ └── server.ts
│ │ ├── conversation-list
│ │ │ ├── index.vue
│ │ │ └── style
│ │ │ │ ├── color.scss
│ │ │ │ ├── h5.scss
│ │ │ │ ├── index.scss
│ │ │ │ └── web.scss
│ │ ├── conversation-network
│ │ │ ├── index.ts
│ │ │ └── index.vue
│ │ ├── index.ts
│ │ ├── index.vue
│ │ ├── server.ts
│ │ └── style
│ │ │ ├── color.scss
│ │ │ ├── index.scss
│ │ │ └── web.scss
│ ├── TUIGroup
│ │ ├── create-group
│ │ │ ├── group-introduction
│ │ │ │ ├── config.ts
│ │ │ │ └── index.vue
│ │ │ ├── index.ts
│ │ │ ├── index.vue
│ │ │ └── style
│ │ │ │ ├── color.scss
│ │ │ │ ├── h5.scss
│ │ │ │ ├── index.scss
│ │ │ │ └── web.scss
│ │ ├── index.ts
│ │ ├── index.vue
│ │ ├── manage-group
│ │ │ ├── index.ts
│ │ │ ├── index.vue
│ │ │ ├── manage-admin.vue
│ │ │ ├── manage-member.vue
│ │ │ ├── manage-name.vue
│ │ │ ├── manage-notification.vue
│ │ │ ├── manage-profile.vue
│ │ │ └── style
│ │ │ │ ├── color.scss
│ │ │ │ ├── h5.scss
│ │ │ │ ├── index.scss
│ │ │ │ └── web.scss
│ │ ├── select-member
│ │ │ ├── index.ts
│ │ │ └── index.vue
│ │ └── server.ts
│ ├── TUINotification
│ │ ├── index.ts
│ │ ├── interface.ts
│ │ └── utils.ts
│ ├── TUISearch
│ │ ├── index.ts
│ │ ├── index.vue
│ │ ├── search-container
│ │ │ ├── index.ts
│ │ │ ├── index.vue
│ │ │ └── style
│ │ │ │ ├── h5.scss
│ │ │ │ ├── index.scss
│ │ │ │ └── web.scss
│ │ ├── search-input
│ │ │ ├── index.ts
│ │ │ └── index.vue
│ │ ├── search-more
│ │ │ ├── index.ts
│ │ │ └── index.vue
│ │ ├── search-result
│ │ │ ├── index.ts
│ │ │ ├── index.vue
│ │ │ ├── search-result-default
│ │ │ │ ├── index.ts
│ │ │ │ └── index.vue
│ │ │ ├── search-result-item
│ │ │ │ ├── index.vue
│ │ │ │ ├── message-abstract
│ │ │ │ │ ├── message-abstract-custom.vue
│ │ │ │ │ ├── message-abstract-file.vue
│ │ │ │ │ ├── message-abstract-image.vue
│ │ │ │ │ ├── message-abstract-text.vue
│ │ │ │ │ └── message-abstract-video.vue
│ │ │ │ └── style
│ │ │ │ │ ├── h5.scss
│ │ │ │ │ ├── index.scss
│ │ │ │ │ └── web.scss
│ │ │ ├── search-result-loading
│ │ │ │ ├── index.ts
│ │ │ │ └── index.vue
│ │ │ └── style
│ │ │ │ ├── h5.scss
│ │ │ │ ├── index.scss
│ │ │ │ └── web.scss
│ │ ├── search-time-list.ts
│ │ ├── search-type-list.ts
│ │ ├── server.ts
│ │ ├── style
│ │ │ ├── h5.scss
│ │ │ ├── index.scss
│ │ │ └── web.scss
│ │ ├── type.ts
│ │ └── utils.ts
│ ├── common
│ │ ├── Avatar
│ │ │ └── index.vue
│ │ ├── BottomPopup
│ │ │ ├── index.ts
│ │ │ ├── index.vue
│ │ │ └── style
│ │ │ │ ├── h5.scss
│ │ │ │ ├── index.scss
│ │ │ │ └── modal.scss
│ │ ├── DatePicker
│ │ │ ├── date-picker-panel.vue
│ │ │ ├── date-picker.ts
│ │ │ ├── date-table.vue
│ │ │ ├── index.ts
│ │ │ └── index.vue
│ │ ├── Dialog
│ │ │ ├── index.ts
│ │ │ ├── index.vue
│ │ │ └── style
│ │ │ │ ├── color.scss
│ │ │ │ ├── dialog.scss
│ │ │ │ ├── h5.scss
│ │ │ │ └── web.scss
│ │ ├── Drag
│ │ │ ├── index.ts
│ │ │ └── index.vue
│ │ ├── Drawer
│ │ │ └── index.vue
│ │ ├── FetchMore
│ │ │ └── index.vue
│ │ ├── Icon.vue
│ │ ├── ImagePreviewer
│ │ │ ├── image-item.vue
│ │ │ ├── index.ts
│ │ │ └── index.vue
│ │ ├── Loading
│ │ │ ├── index.ts
│ │ │ └── index.vue
│ │ ├── MaskLayer
│ │ │ └── index.vue
│ │ ├── Overlay
│ │ │ └── index.vue
│ │ ├── Popconfirm
│ │ │ └── index.vue
│ │ ├── ProgressMessage
│ │ │ └── index.vue
│ │ ├── RadioSelect
│ │ │ └── index.vue
│ │ ├── SelectUser
│ │ │ ├── index.ts
│ │ │ └── index.vue
│ │ ├── Slider
│ │ │ └── index.vue
│ │ ├── SwitchBar
│ │ │ ├── index.ts
│ │ │ └── index.vue
│ │ ├── Toast
│ │ │ ├── index.ts
│ │ │ ├── index.vue
│ │ │ └── type.ts
│ │ └── Transfer
│ │ │ ├── index.ts
│ │ │ ├── index.vue
│ │ │ └── style
│ │ │ ├── color.scss
│ │ │ ├── h5.scss
│ │ │ ├── transfer.scss
│ │ │ └── web.scss
│ └── index.ts
│ ├── constant.ts
│ ├── debug
│ ├── GenerateTestUserSig.js
│ ├── index.d.ts
│ ├── index.js
│ └── lib-generate-test-usersig-es.min.js
│ ├── excluded-list.txt
│ ├── index.ts
│ ├── index.vue
│ ├── interface.ts
│ ├── locales
│ ├── en
│ │ ├── TUIChat.ts
│ │ ├── TUIContact.ts
│ │ ├── TUIConversation.ts
│ │ ├── TUIGroup.ts
│ │ ├── TUISearch.ts
│ │ ├── component.ts
│ │ ├── emoji.ts
│ │ ├── evaluate.ts
│ │ ├── index.ts
│ │ ├── message.ts
│ │ ├── time.ts
│ │ └── words.ts
│ ├── index.ts
│ ├── zh_cn
│ │ ├── TUIChat.ts
│ │ ├── TUIContact.ts
│ │ ├── TUIConversation.ts
│ │ ├── TUIGroup.ts
│ │ ├── TUISearch.ts
│ │ ├── component.ts
│ │ ├── emoji.ts
│ │ ├── evaluate.ts
│ │ ├── index.ts
│ │ ├── message.ts
│ │ ├── time.ts
│ │ ├── translate.ts
│ │ └── words.ts
│ └── zh_tw
│ │ ├── TUIChat.ts
│ │ ├── TUIContact.ts
│ │ ├── TUIConversation.ts
│ │ ├── TUIGroup.ts
│ │ ├── TUISearch.ts
│ │ ├── component.ts
│ │ ├── emoji.ts
│ │ ├── evaluate.ts
│ │ ├── index.ts
│ │ ├── message.ts
│ │ ├── time.ts
│ │ ├── translate.ts
│ │ └── words.ts
│ ├── package.json
│ ├── plugins
│ ├── extension-server
│ │ └── callkit.ts
│ └── plugin-components
│ │ ├── index.ts
│ │ ├── message-call
│ │ ├── message-call-c2c.vue
│ │ └── message-call-group.vue
│ │ ├── message-customer
│ │ ├── index.ts
│ │ └── message-customer-service.vue
│ │ ├── message-plugin-layout.vue
│ │ ├── message-plugin.vue
│ │ └── message-room
│ │ ├── message-room-default.vue
│ │ └── message-room.vue
│ ├── server.ts
│ ├── shims-vue.d.ts
│ └── utils
│ ├── documentLink.ts
│ ├── enableSampleTaskStatus.ts
│ ├── env.ts
│ ├── index.ts
│ ├── lodash.ts
│ ├── riseInput.ts
│ └── type-check.ts
└── Vue3
├── Demo
├── .eslintignore
├── .gitignore
├── README.md
├── README_ZH.md
├── auto-imports.d.ts
├── components.d.ts
├── env.d.ts
├── index.html
├── package.json
├── public
│ └── favicon.png
├── src
│ ├── App.vue
│ ├── TUIKit
│ │ ├── .npmignore
│ │ ├── .npmrc
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── adapter-vue.ts
│ │ ├── assets
│ │ │ ├── icon
│ │ │ │ ├── add-circle.svg
│ │ │ │ ├── add.svg
│ │ │ │ ├── at.svg
│ │ │ │ ├── audio.svg
│ │ │ │ ├── back.svg
│ │ │ │ ├── call-video.svg
│ │ │ │ ├── call-voice.svg
│ │ │ │ ├── call.png
│ │ │ │ ├── camera-uni.png
│ │ │ │ ├── cancel.svg
│ │ │ │ ├── check-sm.svg
│ │ │ │ ├── close-dark.svg
│ │ │ │ ├── close-image.png
│ │ │ │ ├── convertText_en.svg
│ │ │ │ ├── convertText_zh.svg
│ │ │ │ ├── d-left-arrow.svg
│ │ │ │ ├── d-right-arrow.svg
│ │ │ │ ├── del-icon.svg
│ │ │ │ ├── double-arrow.svg
│ │ │ │ ├── down-icon.svg
│ │ │ │ ├── downaload-image.png
│ │ │ │ ├── download.svg
│ │ │ │ ├── edit.svg
│ │ │ │ ├── evalute-dark.svg
│ │ │ │ ├── evalute-light.svg
│ │ │ │ ├── face-dark.svg
│ │ │ │ ├── face-light.svg
│ │ │ │ ├── face-uni.png
│ │ │ │ ├── file-dark.svg
│ │ │ │ ├── file-light.svg
│ │ │ │ ├── forward-each.svg
│ │ │ │ ├── forward-merge.svg
│ │ │ │ ├── icon-arrow-left.svg
│ │ │ │ ├── icon-c2c.svg
│ │ │ │ ├── icon-close.svg
│ │ │ │ ├── image-dark.svg
│ │ │ │ ├── image-light.svg
│ │ │ │ ├── image-uni.png
│ │ │ │ ├── input-close.svg
│ │ │ │ ├── left-arrow.svg
│ │ │ │ ├── loading.gif
│ │ │ │ ├── loading.png
│ │ │ │ ├── minus.svg
│ │ │ │ ├── more-uni.png
│ │ │ │ ├── more.png
│ │ │ │ ├── msg-audio.svg
│ │ │ │ ├── msg-copy.svg
│ │ │ │ ├── msg-del.svg
│ │ │ │ ├── msg-forward.svg
│ │ │ │ ├── msg-quote.svg
│ │ │ │ ├── msg-revoke.svg
│ │ │ │ ├── multiple-select.svg
│ │ │ │ ├── mute.svg
│ │ │ │ ├── plus.svg
│ │ │ │ ├── radio.svg
│ │ │ │ ├── right-arrow.svg
│ │ │ │ ├── right-icon.svg
│ │ │ │ ├── rotate-left.svg
│ │ │ │ ├── rotate-right.svg
│ │ │ │ ├── search-default.svg
│ │ │ │ ├── search-more.svg
│ │ │ │ ├── search.svg
│ │ │ │ ├── selected.svg
│ │ │ │ ├── setting.svg
│ │ │ │ ├── star-light.png
│ │ │ │ ├── star.png
│ │ │ │ ├── start-group.svg
│ │ │ │ ├── translate.svg
│ │ │ │ ├── video-dark.svg
│ │ │ │ ├── video-light.svg
│ │ │ │ ├── video-play.png
│ │ │ │ ├── video-uni.png
│ │ │ │ ├── words-dark.svg
│ │ │ │ ├── words-light.svg
│ │ │ │ ├── zoom-in.svg
│ │ │ │ └── zoom-out.svg
│ │ │ └── styles
│ │ │ │ ├── common.scss
│ │ │ │ └── sample.scss
│ │ ├── components
│ │ │ ├── TUIChat
│ │ │ │ ├── chat-header
│ │ │ │ │ └── index.vue
│ │ │ │ ├── config.ts
│ │ │ │ ├── emoji-config
│ │ │ │ │ ├── custom-emoji.ts
│ │ │ │ │ ├── default-emoji.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── locales
│ │ │ │ │ │ ├── en.ts
│ │ │ │ │ │ ├── zh_cn.ts
│ │ │ │ │ │ └── zh_tw.ts
│ │ │ │ ├── forward
│ │ │ │ │ └── index.vue
│ │ │ │ ├── index.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── message-input-toolbar
│ │ │ │ │ ├── emoji-picker
│ │ │ │ │ │ ├── emoji-picker-dialog.vue
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ └── style
│ │ │ │ │ │ │ ├── h5.scss
│ │ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ │ └── web.scss
│ │ │ │ │ ├── evaluate
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ └── style
│ │ │ │ │ │ │ ├── color.scss
│ │ │ │ │ │ │ ├── h5.scss
│ │ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ │ └── web.scss
│ │ │ │ │ ├── file-upload
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── image-upload
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── index.vue
│ │ │ │ │ ├── style
│ │ │ │ │ │ └── uni.scss
│ │ │ │ │ ├── toolbar-item-container
│ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ └── style
│ │ │ │ │ │ │ ├── color.scss
│ │ │ │ │ │ │ ├── h5.scss
│ │ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ │ ├── uni.scss
│ │ │ │ │ │ │ └── web.scss
│ │ │ │ │ ├── user-selector
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── video-upload
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ └── words
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ └── style
│ │ │ │ │ │ ├── color.scss
│ │ │ │ │ │ ├── h5.scss
│ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ └── web.scss
│ │ │ │ ├── message-input
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── index.vue
│ │ │ │ │ ├── message-input-at
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── message-input-button.vue
│ │ │ │ │ ├── message-input-editor.vue
│ │ │ │ │ ├── message-input-file.ts
│ │ │ │ │ └── message-input-quote
│ │ │ │ │ │ └── index.vue
│ │ │ │ ├── message-list
│ │ │ │ │ ├── index.vue
│ │ │ │ │ ├── link
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── message-elements
│ │ │ │ │ │ ├── message-audio.vue
│ │ │ │ │ │ ├── message-bubble.vue
│ │ │ │ │ │ ├── message-convert
│ │ │ │ │ │ │ ├── convert-content.vue
│ │ │ │ │ │ │ └── index.vue
│ │ │ │ │ │ ├── message-custom.vue
│ │ │ │ │ │ ├── message-face.vue
│ │ │ │ │ │ ├── message-file.vue
│ │ │ │ │ │ ├── message-image.vue
│ │ │ │ │ │ ├── message-location.vue
│ │ │ │ │ │ ├── message-quote
│ │ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ │ └── interface.ts
│ │ │ │ │ │ ├── message-record
│ │ │ │ │ │ │ └── index.vue
│ │ │ │ │ │ ├── message-stream-markdown
│ │ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ │ ├── marked.ts
│ │ │ │ │ │ │ ├── operation
│ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ │ │ └── type.ts
│ │ │ │ │ │ │ └── type-writer.ts
│ │ │ │ │ │ ├── message-text.vue
│ │ │ │ │ │ ├── message-timestamp.vue
│ │ │ │ │ │ ├── message-tip.vue
│ │ │ │ │ │ ├── message-translate
│ │ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ │ └── translation-content.vue
│ │ │ │ │ │ ├── message-video.vue
│ │ │ │ │ │ ├── read-status
│ │ │ │ │ │ │ └── index.vue
│ │ │ │ │ │ └── simple-message-list
│ │ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ │ └── message-container.vue
│ │ │ │ │ ├── message-group-application
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── message-tool
│ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ └── message-revoked.vue
│ │ │ │ │ ├── read-receipt-panel
│ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ └── interface.ts
│ │ │ │ │ ├── scroll-button
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ └── style
│ │ │ │ │ │ ├── color.scss
│ │ │ │ │ │ ├── h5.scss
│ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ └── web.scss
│ │ │ │ ├── mulitple-select-panel
│ │ │ │ │ └── index.vue
│ │ │ │ ├── offlinePushInfoManager
│ │ │ │ │ ├── const.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── info.ts
│ │ │ │ │ ├── interface.ts
│ │ │ │ │ └── offlinePushInfoManager.ts
│ │ │ │ ├── server.ts
│ │ │ │ ├── style
│ │ │ │ │ ├── h5.scss
│ │ │ │ │ ├── index.scss
│ │ │ │ │ ├── uni.scss
│ │ │ │ │ ├── web.scss
│ │ │ │ │ └── wx.scss
│ │ │ │ └── utils
│ │ │ │ │ ├── chatStorage.ts
│ │ │ │ │ ├── conversationDraft.ts
│ │ │ │ │ ├── convertVoiceToText.ts
│ │ │ │ │ ├── copy.ts
│ │ │ │ │ ├── sendMessage.ts
│ │ │ │ │ ├── translation.ts
│ │ │ │ │ ├── utils.ts
│ │ │ │ │ └── wordsList.ts
│ │ │ ├── TUIContact
│ │ │ │ ├── contact-info
│ │ │ │ │ ├── contact-info-config.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── index.vue
│ │ │ │ │ └── style
│ │ │ │ │ │ ├── h5.scss
│ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ └── web.scss
│ │ │ │ ├── contact-list
│ │ │ │ │ ├── contact-list-item
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── index.vue
│ │ │ │ │ └── style
│ │ │ │ │ │ ├── h5.scss
│ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ └── web.scss
│ │ │ │ ├── contact-search
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── index.vue
│ │ │ │ ├── index.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── select-friend
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── index.vue
│ │ │ │ ├── server.ts
│ │ │ │ └── utils
│ │ │ │ │ └── index.ts
│ │ │ ├── TUIConversation
│ │ │ │ ├── actions-menu
│ │ │ │ │ └── index.vue
│ │ │ │ ├── conversation-header
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── index.vue
│ │ │ │ │ └── server.ts
│ │ │ │ ├── conversation-list
│ │ │ │ │ ├── index.vue
│ │ │ │ │ └── style
│ │ │ │ │ │ ├── color.scss
│ │ │ │ │ │ ├── h5.scss
│ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ └── web.scss
│ │ │ │ ├── conversation-network
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── index.vue
│ │ │ │ ├── index.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── server.ts
│ │ │ │ └── style
│ │ │ │ │ ├── color.scss
│ │ │ │ │ ├── index.scss
│ │ │ │ │ └── web.scss
│ │ │ ├── TUIGroup
│ │ │ │ ├── create-group
│ │ │ │ │ ├── group-introduction
│ │ │ │ │ │ ├── config.ts
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── index.vue
│ │ │ │ │ └── style
│ │ │ │ │ │ ├── color.scss
│ │ │ │ │ │ ├── h5.scss
│ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ └── web.scss
│ │ │ │ ├── index.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── manage-group
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── index.vue
│ │ │ │ │ ├── manage-admin.vue
│ │ │ │ │ ├── manage-member.vue
│ │ │ │ │ ├── manage-name.vue
│ │ │ │ │ ├── manage-notification.vue
│ │ │ │ │ ├── manage-profile.vue
│ │ │ │ │ └── style
│ │ │ │ │ │ ├── color.scss
│ │ │ │ │ │ ├── h5.scss
│ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ └── web.scss
│ │ │ │ ├── select-member
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── index.vue
│ │ │ │ └── server.ts
│ │ │ ├── TUINotification
│ │ │ │ ├── index.ts
│ │ │ │ ├── interface.ts
│ │ │ │ └── utils.ts
│ │ │ ├── TUISearch
│ │ │ │ ├── index.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── search-container
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── index.vue
│ │ │ │ │ └── style
│ │ │ │ │ │ ├── h5.scss
│ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ └── web.scss
│ │ │ │ ├── search-input
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── index.vue
│ │ │ │ ├── search-more
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── index.vue
│ │ │ │ ├── search-result
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── index.vue
│ │ │ │ │ ├── search-result-default
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── search-result-item
│ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ ├── message-abstract
│ │ │ │ │ │ │ ├── message-abstract-custom.vue
│ │ │ │ │ │ │ ├── message-abstract-file.vue
│ │ │ │ │ │ │ ├── message-abstract-image.vue
│ │ │ │ │ │ │ ├── message-abstract-text.vue
│ │ │ │ │ │ │ └── message-abstract-video.vue
│ │ │ │ │ │ └── style
│ │ │ │ │ │ │ ├── h5.scss
│ │ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ │ └── web.scss
│ │ │ │ │ ├── search-result-loading
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ └── style
│ │ │ │ │ │ ├── h5.scss
│ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ └── web.scss
│ │ │ │ ├── search-time-list.ts
│ │ │ │ ├── search-type-list.ts
│ │ │ │ ├── server.ts
│ │ │ │ ├── style
│ │ │ │ │ ├── h5.scss
│ │ │ │ │ ├── index.scss
│ │ │ │ │ └── web.scss
│ │ │ │ ├── type.ts
│ │ │ │ └── utils.ts
│ │ │ ├── common
│ │ │ │ ├── Avatar
│ │ │ │ │ └── index.vue
│ │ │ │ ├── BottomPopup
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── index.vue
│ │ │ │ │ └── style
│ │ │ │ │ │ ├── h5.scss
│ │ │ │ │ │ ├── index.scss
│ │ │ │ │ │ └── modal.scss
│ │ │ │ ├── DatePicker
│ │ │ │ │ ├── date-picker-panel.vue
│ │ │ │ │ ├── date-picker.ts
│ │ │ │ │ ├── date-table.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── index.vue
│ │ │ │ ├── Dialog
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── index.vue
│ │ │ │ │ └── style
│ │ │ │ │ │ ├── color.scss
│ │ │ │ │ │ ├── dialog.scss
│ │ │ │ │ │ ├── h5.scss
│ │ │ │ │ │ └── web.scss
│ │ │ │ ├── Drag
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── index.vue
│ │ │ │ ├── Drawer
│ │ │ │ │ └── index.vue
│ │ │ │ ├── FetchMore
│ │ │ │ │ └── index.vue
│ │ │ │ ├── Icon.vue
│ │ │ │ ├── ImagePreviewer
│ │ │ │ │ ├── image-item.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── index.vue
│ │ │ │ ├── Loading
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── index.vue
│ │ │ │ ├── MaskLayer
│ │ │ │ │ └── index.vue
│ │ │ │ ├── Overlay
│ │ │ │ │ └── index.vue
│ │ │ │ ├── Popconfirm
│ │ │ │ │ └── index.vue
│ │ │ │ ├── ProgressMessage
│ │ │ │ │ └── index.vue
│ │ │ │ ├── RadioSelect
│ │ │ │ │ └── index.vue
│ │ │ │ ├── SelectUser
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── index.vue
│ │ │ │ ├── Slider
│ │ │ │ │ └── index.vue
│ │ │ │ ├── SwitchBar
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── index.vue
│ │ │ │ ├── Toast
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── index.vue
│ │ │ │ │ └── type.ts
│ │ │ │ └── Transfer
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── index.vue
│ │ │ │ │ └── style
│ │ │ │ │ ├── color.scss
│ │ │ │ │ ├── h5.scss
│ │ │ │ │ ├── transfer.scss
│ │ │ │ │ └── web.scss
│ │ │ └── index.ts
│ │ ├── constant.ts
│ │ ├── debug
│ │ │ ├── GenerateTestUserSig.js
│ │ │ ├── index.d.ts
│ │ │ ├── index.js
│ │ │ └── lib-generate-test-usersig-es.min.js
│ │ ├── index.ts
│ │ ├── index.vue
│ │ ├── interface.ts
│ │ ├── locales
│ │ │ ├── en
│ │ │ │ ├── TUIChat.ts
│ │ │ │ ├── TUIContact.ts
│ │ │ │ ├── TUIConversation.ts
│ │ │ │ ├── TUIGroup.ts
│ │ │ │ ├── TUISearch.ts
│ │ │ │ ├── component.ts
│ │ │ │ ├── emoji.ts
│ │ │ │ ├── evaluate.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── message.ts
│ │ │ │ ├── time.ts
│ │ │ │ └── words.ts
│ │ │ ├── index.ts
│ │ │ ├── zh_cn
│ │ │ │ ├── TUIChat.ts
│ │ │ │ ├── TUIContact.ts
│ │ │ │ ├── TUIConversation.ts
│ │ │ │ ├── TUIGroup.ts
│ │ │ │ ├── TUISearch.ts
│ │ │ │ ├── component.ts
│ │ │ │ ├── emoji.ts
│ │ │ │ ├── evaluate.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── message.ts
│ │ │ │ ├── time.ts
│ │ │ │ ├── translate.ts
│ │ │ │ └── words.ts
│ │ │ └── zh_tw
│ │ │ │ ├── TUIChat.ts
│ │ │ │ ├── TUIContact.ts
│ │ │ │ ├── TUIConversation.ts
│ │ │ │ ├── TUIGroup.ts
│ │ │ │ ├── TUISearch.ts
│ │ │ │ ├── component.ts
│ │ │ │ ├── emoji.ts
│ │ │ │ ├── evaluate.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── message.ts
│ │ │ │ ├── time.ts
│ │ │ │ ├── translate.ts
│ │ │ │ └── words.ts
│ │ ├── plugins
│ │ │ ├── extension-server
│ │ │ │ └── callkit.ts
│ │ │ └── plugin-components
│ │ │ │ ├── index.ts
│ │ │ │ ├── message-call
│ │ │ │ ├── message-call-c2c.vue
│ │ │ │ └── message-call-group.vue
│ │ │ │ ├── message-customer
│ │ │ │ ├── index.ts
│ │ │ │ └── message-customer-service.vue
│ │ │ │ ├── message-plugin-layout.vue
│ │ │ │ ├── message-plugin.vue
│ │ │ │ └── message-room
│ │ │ │ ├── message-room-default.vue
│ │ │ │ └── message-room.vue
│ │ ├── server.ts
│ │ ├── shims-vue.d.ts
│ │ └── utils
│ │ │ ├── documentLink.ts
│ │ │ ├── enableSampleTaskStatus.ts
│ │ │ ├── env.ts
│ │ │ ├── index.ts
│ │ │ ├── lodash.ts
│ │ │ ├── riseInput.ts
│ │ │ └── type-check.ts
│ ├── api
│ │ └── index.ts
│ ├── assets
│ │ ├── icon
│ │ │ ├── adv-arrow.svg
│ │ │ ├── arrow-down-line.png
│ │ │ ├── arrow-down.png
│ │ │ ├── calendar.svg
│ │ │ ├── global.png
│ │ │ ├── menu.png
│ │ │ ├── message-real.svg
│ │ │ ├── message-selected.svg
│ │ │ ├── message.svg
│ │ │ ├── profile-selected.svg
│ │ │ ├── profile.svg
│ │ │ ├── relation-real.svg
│ │ │ ├── relation-selected.svg
│ │ │ ├── relation.svg
│ │ │ └── setting.png
│ │ └── image
│ │ │ ├── adv-background.svg
│ │ │ ├── adv-bg.svg
│ │ │ ├── create-group.png
│ │ │ ├── h5
│ │ │ ├── adv-im.svg
│ │ │ ├── adv-more.svg
│ │ │ └── login-bg.png
│ │ │ ├── login-background.png
│ │ │ ├── logo.svg
│ │ │ ├── txc-logo.svg
│ │ │ └── warn.svg
│ ├── components
│ │ ├── About.vue
│ │ ├── AdvList.vue
│ │ ├── AdvListItem.vue
│ │ ├── ChatDefaultContent.vue
│ │ ├── EditProfile.vue
│ │ ├── EditProfilePopup.vue
│ │ ├── Header.vue
│ │ ├── Menu.vue
│ │ └── NavBar.vue
│ ├── locales
│ │ ├── en
│ │ │ ├── home.json
│ │ │ ├── index.ts
│ │ │ ├── login.json
│ │ │ └── profile.json
│ │ ├── index.ts
│ │ ├── zh_cn
│ │ │ ├── home.json
│ │ │ ├── index.ts
│ │ │ ├── login.json
│ │ │ └── profile.json
│ │ └── zh_tw
│ │ │ ├── home.json
│ │ │ ├── index.ts
│ │ │ ├── login.json
│ │ │ └── profile.json
│ ├── main.ts
│ ├── router
│ │ └── index.ts
│ ├── shims-vue.d.ts
│ ├── styles
│ │ ├── common.scss
│ │ ├── h5
│ │ │ ├── home.scss
│ │ │ ├── login.scss
│ │ │ └── profile.scss
│ │ ├── home.scss
│ │ ├── login.scss
│ │ ├── profile.scss
│ │ └── web
│ │ │ ├── home.scss
│ │ │ ├── login.scss
│ │ │ └── profile.scss
│ ├── utils
│ │ └── link.ts
│ └── views
│ │ ├── Home.vue
│ │ ├── Login.vue
│ │ └── Profile.vue
├── tsconfig.json
├── tsconfig.node.json
└── vite.config.ts
└── TUIKit
├── .eslintignore
├── .eslintrc.js
├── .github
└── README.md
├── .gitignore
├── .npmignore
├── CHANGELOG.md
├── README.md
├── adapter-vue.ts
├── assets
├── icon
│ ├── add-circle.svg
│ ├── add.svg
│ ├── at.svg
│ ├── audio.svg
│ ├── back.svg
│ ├── call-video.svg
│ ├── call-voice.svg
│ ├── call.png
│ ├── camera-uni.png
│ ├── cancel.svg
│ ├── check-sm.svg
│ ├── close-dark.svg
│ ├── close-image.png
│ ├── convertText_en.svg
│ ├── convertText_zh.svg
│ ├── d-left-arrow.svg
│ ├── d-right-arrow.svg
│ ├── del-icon.svg
│ ├── double-arrow.svg
│ ├── down-icon.svg
│ ├── downaload-image.png
│ ├── download.svg
│ ├── edit.svg
│ ├── evalute-dark.svg
│ ├── evalute-light.svg
│ ├── face-dark.svg
│ ├── face-light.svg
│ ├── face-uni.png
│ ├── file-dark.svg
│ ├── file-light.svg
│ ├── forward-each.svg
│ ├── forward-merge.svg
│ ├── icon-arrow-left.svg
│ ├── icon-c2c.svg
│ ├── icon-close.svg
│ ├── image-dark.svg
│ ├── image-light.svg
│ ├── image-uni.png
│ ├── input-close.svg
│ ├── left-arrow.svg
│ ├── loading.gif
│ ├── loading.png
│ ├── minus.svg
│ ├── more-uni.png
│ ├── more.png
│ ├── msg-audio.svg
│ ├── msg-copy.svg
│ ├── msg-del.svg
│ ├── msg-forward.svg
│ ├── msg-quote.svg
│ ├── msg-revoke.svg
│ ├── multiple-select.svg
│ ├── mute.svg
│ ├── plus.svg
│ ├── radio.svg
│ ├── right-arrow.svg
│ ├── right-icon.svg
│ ├── rotate-left.svg
│ ├── rotate-right.svg
│ ├── search-default.svg
│ ├── search-more.svg
│ ├── search.svg
│ ├── selected.svg
│ ├── setting.svg
│ ├── star-light.png
│ ├── star.png
│ ├── start-group.svg
│ ├── translate.svg
│ ├── video-dark.svg
│ ├── video-light.svg
│ ├── video-play.png
│ ├── video-uni.png
│ ├── words-dark.svg
│ ├── words-light.svg
│ ├── zoom-in.svg
│ └── zoom-out.svg
└── styles
│ ├── common.scss
│ └── sample.scss
├── components
├── TUIChat
│ ├── chat-header
│ │ └── index.vue
│ ├── config.ts
│ ├── emoji-config
│ │ ├── custom-emoji.ts
│ │ ├── default-emoji.ts
│ │ ├── index.ts
│ │ └── locales
│ │ │ ├── en.ts
│ │ │ ├── zh_cn.ts
│ │ │ └── zh_tw.ts
│ ├── forward
│ │ └── index.vue
│ ├── index.ts
│ ├── index.vue
│ ├── message-input-toolbar
│ │ ├── emoji-picker
│ │ │ ├── emoji-picker-dialog.vue
│ │ │ ├── index.ts
│ │ │ ├── index.vue
│ │ │ └── style
│ │ │ │ ├── h5.scss
│ │ │ │ ├── index.scss
│ │ │ │ └── web.scss
│ │ ├── evaluate
│ │ │ ├── index.ts
│ │ │ ├── index.vue
│ │ │ └── style
│ │ │ │ ├── color.scss
│ │ │ │ ├── h5.scss
│ │ │ │ ├── index.scss
│ │ │ │ └── web.scss
│ │ ├── file-upload
│ │ │ ├── index.ts
│ │ │ └── index.vue
│ │ ├── image-upload
│ │ │ ├── index.ts
│ │ │ └── index.vue
│ │ ├── index.ts
│ │ ├── index.vue
│ │ ├── style
│ │ │ └── uni.scss
│ │ ├── toolbar-item-container
│ │ │ ├── index.vue
│ │ │ └── style
│ │ │ │ ├── color.scss
│ │ │ │ ├── h5.scss
│ │ │ │ ├── index.scss
│ │ │ │ ├── uni.scss
│ │ │ │ └── web.scss
│ │ ├── user-selector
│ │ │ ├── index.ts
│ │ │ └── index.vue
│ │ ├── video-upload
│ │ │ ├── index.ts
│ │ │ └── index.vue
│ │ └── words
│ │ │ ├── index.ts
│ │ │ ├── index.vue
│ │ │ └── style
│ │ │ ├── color.scss
│ │ │ ├── h5.scss
│ │ │ ├── index.scss
│ │ │ └── web.scss
│ ├── message-input
│ │ ├── index.ts
│ │ ├── index.vue
│ │ ├── message-input-at
│ │ │ ├── index.ts
│ │ │ └── index.vue
│ │ ├── message-input-button.vue
│ │ ├── message-input-editor.vue
│ │ ├── message-input-file.ts
│ │ └── message-input-quote
│ │ │ └── index.vue
│ ├── message-list
│ │ ├── index.vue
│ │ ├── link
│ │ │ └── index.ts
│ │ ├── message-elements
│ │ │ ├── message-audio.vue
│ │ │ ├── message-bubble.vue
│ │ │ ├── message-convert
│ │ │ │ ├── convert-content.vue
│ │ │ │ └── index.vue
│ │ │ ├── message-custom.vue
│ │ │ ├── message-face.vue
│ │ │ ├── message-file.vue
│ │ │ ├── message-image.vue
│ │ │ ├── message-location.vue
│ │ │ ├── message-quote
│ │ │ │ ├── index.vue
│ │ │ │ └── interface.ts
│ │ │ ├── message-record
│ │ │ │ └── index.vue
│ │ │ ├── message-stream-markdown
│ │ │ │ ├── index.scss
│ │ │ │ ├── index.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── marked.ts
│ │ │ │ ├── operation
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── index.vue
│ │ │ │ │ └── type.ts
│ │ │ │ └── type-writer.ts
│ │ │ ├── message-text.vue
│ │ │ ├── message-timestamp.vue
│ │ │ ├── message-tip.vue
│ │ │ ├── message-translate
│ │ │ │ ├── index.vue
│ │ │ │ └── translation-content.vue
│ │ │ ├── message-video.vue
│ │ │ ├── read-status
│ │ │ │ └── index.vue
│ │ │ └── simple-message-list
│ │ │ │ ├── index.vue
│ │ │ │ └── message-container.vue
│ │ ├── message-group-application
│ │ │ └── index.vue
│ │ ├── message-tool
│ │ │ ├── index.vue
│ │ │ └── message-revoked.vue
│ │ ├── read-receipt-panel
│ │ │ ├── index.vue
│ │ │ └── interface.ts
│ │ ├── scroll-button
│ │ │ └── index.vue
│ │ └── style
│ │ │ ├── color.scss
│ │ │ ├── h5.scss
│ │ │ ├── index.scss
│ │ │ └── web.scss
│ ├── mulitple-select-panel
│ │ └── index.vue
│ ├── offlinePushInfoManager
│ │ ├── const.ts
│ │ ├── index.ts
│ │ ├── info.ts
│ │ ├── interface.ts
│ │ └── offlinePushInfoManager.ts
│ ├── server.ts
│ ├── style
│ │ ├── h5.scss
│ │ ├── index.scss
│ │ ├── uni.scss
│ │ ├── web.scss
│ │ └── wx.scss
│ └── utils
│ │ ├── chatStorage.ts
│ │ ├── conversationDraft.ts
│ │ ├── convertVoiceToText.ts
│ │ ├── copy.ts
│ │ ├── sendMessage.ts
│ │ ├── translation.ts
│ │ ├── utils.ts
│ │ └── wordsList.ts
├── TUIContact
│ ├── contact-info
│ │ ├── contact-info-config.ts
│ │ ├── index.ts
│ │ ├── index.vue
│ │ └── style
│ │ │ ├── h5.scss
│ │ │ ├── index.scss
│ │ │ └── web.scss
│ ├── contact-list
│ │ ├── contact-list-item
│ │ │ └── index.vue
│ │ ├── index.ts
│ │ ├── index.vue
│ │ └── style
│ │ │ ├── h5.scss
│ │ │ ├── index.scss
│ │ │ └── web.scss
│ ├── contact-search
│ │ ├── index.ts
│ │ └── index.vue
│ ├── index.ts
│ ├── index.vue
│ ├── select-friend
│ │ ├── index.ts
│ │ └── index.vue
│ ├── server.ts
│ └── utils
│ │ └── index.ts
├── TUIConversation
│ ├── actions-menu
│ │ └── index.vue
│ ├── conversation-header
│ │ ├── index.ts
│ │ ├── index.vue
│ │ └── server.ts
│ ├── conversation-list
│ │ ├── index.vue
│ │ └── style
│ │ │ ├── color.scss
│ │ │ ├── h5.scss
│ │ │ ├── index.scss
│ │ │ └── web.scss
│ ├── conversation-network
│ │ ├── index.ts
│ │ └── index.vue
│ ├── index.ts
│ ├── index.vue
│ ├── server.ts
│ └── style
│ │ ├── color.scss
│ │ ├── index.scss
│ │ └── web.scss
├── TUIGroup
│ ├── create-group
│ │ ├── group-introduction
│ │ │ ├── config.ts
│ │ │ └── index.vue
│ │ ├── index.ts
│ │ ├── index.vue
│ │ └── style
│ │ │ ├── color.scss
│ │ │ ├── h5.scss
│ │ │ ├── index.scss
│ │ │ └── web.scss
│ ├── index.ts
│ ├── index.vue
│ ├── manage-group
│ │ ├── index.ts
│ │ ├── index.vue
│ │ ├── manage-admin.vue
│ │ ├── manage-member.vue
│ │ ├── manage-name.vue
│ │ ├── manage-notification.vue
│ │ ├── manage-profile.vue
│ │ └── style
│ │ │ ├── color.scss
│ │ │ ├── h5.scss
│ │ │ ├── index.scss
│ │ │ └── web.scss
│ ├── select-member
│ │ ├── index.ts
│ │ └── index.vue
│ └── server.ts
├── TUINotification
│ ├── index.ts
│ ├── interface.ts
│ └── utils.ts
├── TUISearch
│ ├── index.ts
│ ├── index.vue
│ ├── search-container
│ │ ├── index.ts
│ │ ├── index.vue
│ │ └── style
│ │ │ ├── h5.scss
│ │ │ ├── index.scss
│ │ │ └── web.scss
│ ├── search-input
│ │ ├── index.ts
│ │ └── index.vue
│ ├── search-more
│ │ ├── index.ts
│ │ └── index.vue
│ ├── search-result
│ │ ├── index.ts
│ │ ├── index.vue
│ │ ├── search-result-default
│ │ │ ├── index.ts
│ │ │ └── index.vue
│ │ ├── search-result-item
│ │ │ ├── index.vue
│ │ │ ├── message-abstract
│ │ │ │ ├── message-abstract-custom.vue
│ │ │ │ ├── message-abstract-file.vue
│ │ │ │ ├── message-abstract-image.vue
│ │ │ │ ├── message-abstract-text.vue
│ │ │ │ └── message-abstract-video.vue
│ │ │ └── style
│ │ │ │ ├── h5.scss
│ │ │ │ ├── index.scss
│ │ │ │ └── web.scss
│ │ ├── search-result-loading
│ │ │ ├── index.ts
│ │ │ └── index.vue
│ │ └── style
│ │ │ ├── h5.scss
│ │ │ ├── index.scss
│ │ │ └── web.scss
│ ├── search-time-list.ts
│ ├── search-type-list.ts
│ ├── server.ts
│ ├── style
│ │ ├── h5.scss
│ │ ├── index.scss
│ │ └── web.scss
│ ├── type.ts
│ └── utils.ts
├── common
│ ├── Avatar
│ │ └── index.vue
│ ├── BottomPopup
│ │ ├── index.ts
│ │ ├── index.vue
│ │ └── style
│ │ │ ├── h5.scss
│ │ │ ├── index.scss
│ │ │ └── modal.scss
│ ├── DatePicker
│ │ ├── date-picker-panel.vue
│ │ ├── date-picker.ts
│ │ ├── date-table.vue
│ │ ├── index.ts
│ │ └── index.vue
│ ├── Dialog
│ │ ├── index.ts
│ │ ├── index.vue
│ │ └── style
│ │ │ ├── color.scss
│ │ │ ├── dialog.scss
│ │ │ ├── h5.scss
│ │ │ └── web.scss
│ ├── Drag
│ │ ├── index.ts
│ │ └── index.vue
│ ├── Drawer
│ │ └── index.vue
│ ├── FetchMore
│ │ └── index.vue
│ ├── Icon.vue
│ ├── ImagePreviewer
│ │ ├── image-item.vue
│ │ ├── index.ts
│ │ └── index.vue
│ ├── Loading
│ │ ├── index.ts
│ │ └── index.vue
│ ├── MaskLayer
│ │ └── index.vue
│ ├── Overlay
│ │ └── index.vue
│ ├── Popconfirm
│ │ └── index.vue
│ ├── ProgressMessage
│ │ └── index.vue
│ ├── RadioSelect
│ │ └── index.vue
│ ├── SelectUser
│ │ ├── index.ts
│ │ └── index.vue
│ ├── Slider
│ │ └── index.vue
│ ├── SwitchBar
│ │ ├── index.ts
│ │ └── index.vue
│ ├── Toast
│ │ ├── index.ts
│ │ ├── index.vue
│ │ └── type.ts
│ └── Transfer
│ │ ├── index.ts
│ │ ├── index.vue
│ │ └── style
│ │ ├── color.scss
│ │ ├── h5.scss
│ │ ├── transfer.scss
│ │ └── web.scss
└── index.ts
├── constant.ts
├── debug
├── GenerateTestUserSig.js
├── index.d.ts
├── index.js
└── lib-generate-test-usersig-es.min.js
├── excluded-list.txt
├── index.ts
├── index.vue
├── interface.ts
├── locales
├── en
│ ├── TUIChat.ts
│ ├── TUIContact.ts
│ ├── TUIConversation.ts
│ ├── TUIGroup.ts
│ ├── TUISearch.ts
│ ├── component.ts
│ ├── emoji.ts
│ ├── evaluate.ts
│ ├── index.ts
│ ├── message.ts
│ ├── time.ts
│ └── words.ts
├── index.ts
├── zh_cn
│ ├── TUIChat.ts
│ ├── TUIContact.ts
│ ├── TUIConversation.ts
│ ├── TUIGroup.ts
│ ├── TUISearch.ts
│ ├── component.ts
│ ├── emoji.ts
│ ├── evaluate.ts
│ ├── index.ts
│ ├── message.ts
│ ├── time.ts
│ ├── translate.ts
│ └── words.ts
└── zh_tw
│ ├── TUIChat.ts
│ ├── TUIContact.ts
│ ├── TUIConversation.ts
│ ├── TUIGroup.ts
│ ├── TUISearch.ts
│ ├── component.ts
│ ├── emoji.ts
│ ├── evaluate.ts
│ ├── index.ts
│ ├── message.ts
│ ├── time.ts
│ ├── translate.ts
│ └── words.ts
├── package.json
├── plugins
├── extension-server
│ └── callkit.ts
└── plugin-components
│ ├── index.ts
│ ├── message-call
│ ├── message-call-c2c.vue
│ └── message-call-group.vue
│ ├── message-customer
│ ├── index.ts
│ └── message-customer-service.vue
│ ├── message-plugin-layout.vue
│ ├── message-plugin.vue
│ └── message-room
│ ├── message-room-default.vue
│ └── message-room.vue
├── server.ts
├── shims-vue.d.ts
└── utils
├── documentLink.ts
├── enableSampleTaskStatus.ts
├── env.ts
├── index.ts
├── lodash.ts
├── riseInput.ts
└── type-check.ts
/Vue2/Demo/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | /dist
4 |
5 |
6 | # local env files
7 | .env.local
8 | .env.*.local
9 |
10 | # Log files
11 | npm-debug.log*
12 | yarn-debug.log*
13 | yarn-error.log*
14 | pnpm-debug.log*
15 |
16 | # Editor directories and files
17 | .idea
18 | .vscode
19 | *.suo
20 | *.ntvs*
21 | *.njsproj
22 | *.sln
23 | *.sw?
24 |
--------------------------------------------------------------------------------
/Vue2/Demo/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [
3 | '@vue/cli-plugin-babel/preset'
4 | ],
5 | "plugins": [
6 | [
7 | "component",
8 | {
9 | "libraryName": "element-ui",
10 | "styleLibraryName": "theme-chalk"
11 | }
12 | ]
13 | ]
14 | }
15 |
16 |
--------------------------------------------------------------------------------
/Vue2/Demo/public/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/Demo/public/favicon.png
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/.npmignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | package-lock.json
3 | pnpm-lock.yaml
4 | dist
5 | **/dist/
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/.npmrc:
--------------------------------------------------------------------------------
1 | auto-install-peers=true
2 | strict-peer-dependencies=false
3 | # shamefully-hoist=true
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/assets/icon/call.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/Demo/src/TUIKit/assets/icon/call.png
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/assets/icon/camera-uni.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/Demo/src/TUIKit/assets/icon/camera-uni.png
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/assets/icon/close-image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/Demo/src/TUIKit/assets/icon/close-image.png
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/assets/icon/convertText_en.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/assets/icon/d-right-arrow.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/assets/icon/down-icon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/assets/icon/downaload-image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/Demo/src/TUIKit/assets/icon/downaload-image.png
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/assets/icon/face-uni.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/Demo/src/TUIKit/assets/icon/face-uni.png
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/assets/icon/image-uni.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/Demo/src/TUIKit/assets/icon/image-uni.png
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/assets/icon/input-close.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/assets/icon/left-arrow.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/assets/icon/loading.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/Demo/src/TUIKit/assets/icon/loading.gif
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/assets/icon/loading.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/Demo/src/TUIKit/assets/icon/loading.png
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/assets/icon/minus.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/assets/icon/more-uni.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/Demo/src/TUIKit/assets/icon/more-uni.png
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/assets/icon/more.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/Demo/src/TUIKit/assets/icon/more.png
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/assets/icon/plus.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/assets/icon/right-icon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/assets/icon/star-light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/Demo/src/TUIKit/assets/icon/star-light.png
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/assets/icon/star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/Demo/src/TUIKit/assets/icon/star.png
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/assets/icon/video-play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/Demo/src/TUIKit/assets/icon/video-play.png
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/assets/icon/video-uni.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/Demo/src/TUIKit/assets/icon/video-uni.png
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIChat/emoji-config/custom-emoji.ts:
--------------------------------------------------------------------------------
1 | import { IEmojiGroupList } from '../../../interface';
2 |
3 | /**
4 | * Custom big emoji
5 | */
6 | export const CUSTOM_BIG_EMOJI_URL: string = '';
7 |
8 | export const CUSTOM_BIG_EMOJI_GROUP_LIST: IEmojiGroupList = [];
9 |
10 | /**
11 | * Custom basic emoji
12 | */
13 | export const CUSTOM_BASIC_EMOJI_URL: string = '';
14 |
15 | export const CUSTOM_BASIC_EMOJI_URL_MAPPING: Record = {};
16 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIChat/index.ts:
--------------------------------------------------------------------------------
1 | import TUIChat from './index.vue';
2 | import Server from './server';
3 |
4 | new Server();
5 |
6 | export default TUIChat;
7 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIChat/message-input-toolbar/emoji-picker/index.ts:
--------------------------------------------------------------------------------
1 | import EmojiPicker from './index.vue';
2 | export default EmojiPicker;
3 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIChat/message-input-toolbar/emoji-picker/style/h5.scss:
--------------------------------------------------------------------------------
1 | .emoji-picker-h5 {
2 | width: 100%;
3 |
4 | &-list {
5 | justify-content: space-between;
6 | }
7 |
8 | &-list::after {
9 | content: "";
10 | display: block;
11 | flex: 1 1 auto;
12 | }
13 |
14 | .send-btn {
15 | width: 50px;
16 | height: 30px;
17 | background-color: #55C06A;
18 | position: absolute;
19 | right: 10px;
20 | font-size: 16px;
21 | color: #fff;
22 | text-align: center;
23 | line-height: 30px;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIChat/message-input-toolbar/emoji-picker/style/index.scss:
--------------------------------------------------------------------------------
1 | @import "../../../../../assets/styles/common";
2 | @import "./web";
3 | @import "./h5";
4 |
5 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIChat/message-input-toolbar/evaluate/index.ts:
--------------------------------------------------------------------------------
1 | import Evaluate from './index.vue';
2 | export default Evaluate;
3 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIChat/message-input-toolbar/evaluate/style/index.scss:
--------------------------------------------------------------------------------
1 | @import "./color";
2 | @import "./web";
3 | @import "./h5";
4 | @import "../../../../../assets/styles/common";
5 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIChat/message-input-toolbar/file-upload/index.ts:
--------------------------------------------------------------------------------
1 | import ImageUpload from './index.vue';
2 | export default ImageUpload;
3 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIChat/message-input-toolbar/image-upload/index.ts:
--------------------------------------------------------------------------------
1 | import ImageUpload from './index.vue';
2 | export default ImageUpload;
3 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIChat/message-input-toolbar/index.ts:
--------------------------------------------------------------------------------
1 | import MessageInputToolbar from './index.vue';
2 | export default MessageInputToolbar;
3 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIChat/message-input-toolbar/toolbar-item-container/style/color.scss:
--------------------------------------------------------------------------------
1 | .toolbar-item-container {
2 | &-dialog {
3 | background: #fff;
4 | box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIChat/message-input-toolbar/toolbar-item-container/style/h5.scss:
--------------------------------------------------------------------------------
1 | .toolbar-item-container-h5 {
2 | &-dialog {
3 | position: static !important;
4 | width: 100%;
5 | box-shadow: none;
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIChat/message-input-toolbar/toolbar-item-container/style/index.scss:
--------------------------------------------------------------------------------
1 | @import "../../../../../assets/styles/common";
2 | @import "./color";
3 | @import "./web";
4 | @import "./h5";
5 | @import "./uni";
6 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIChat/message-input-toolbar/user-selector/index.ts:
--------------------------------------------------------------------------------
1 | import UserSelector from './index.vue';
2 | export default UserSelector;
3 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIChat/message-input-toolbar/video-upload/index.ts:
--------------------------------------------------------------------------------
1 | import ImageUpload from './index.vue';
2 | export default ImageUpload;
3 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIChat/message-input-toolbar/words/index.ts:
--------------------------------------------------------------------------------
1 | import Words from "./index.vue";
2 | export default Words;
3 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIChat/message-input-toolbar/words/style/color.scss:
--------------------------------------------------------------------------------
1 | .words {
2 | background-color: #ffffff;
3 | &-header {
4 | &-close {
5 | color: #3370ff;
6 | }
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIChat/message-input-toolbar/words/style/index.scss:
--------------------------------------------------------------------------------
1 | @import url("../../../../../assets/styles/common.scss");
2 | @import "./color.scss";
3 | @import "./web.scss";
4 | @import "./h5.scss";
5 |
6 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIChat/message-input/index.ts:
--------------------------------------------------------------------------------
1 | import MessageInput from './index.vue';
2 | export default MessageInput;
3 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIChat/message-list/message-elements/message-stream-markdown/index.ts:
--------------------------------------------------------------------------------
1 | import { IMessageModel } from '@tencentcloud/chat-uikit-engine';
2 |
3 | export function isBotMessage(message: IMessageModel): boolean {
4 | if (!message || !message.ID || !message.from) {
5 | return false;
6 | }
7 |
8 | if (message.from.startsWith('@RBT#') && !message.to.startsWith('@RBT#')) {
9 | return true;
10 | }
11 |
12 | return false;
13 | }
14 |
15 | export * from './index.vue';
16 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIChat/message-list/message-elements/message-stream-markdown/operation/index.ts:
--------------------------------------------------------------------------------
1 | export * from './index.vue';
2 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIChat/message-list/message-elements/message-stream-markdown/operation/type.ts:
--------------------------------------------------------------------------------
1 | /** type & interface */
2 | export enum IOperationType {
3 | Copy = 'copy',
4 | // Retry is not supported now
5 | // Retry = 'retry',
6 | }
7 | export interface IOperation {
8 | key: IOperationType;
9 | name: string;
10 | icon: string;
11 | isDisabled: boolean;
12 | onClick: (e: Event, key: IOperationType) => void;
13 | }
14 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIChat/message-list/style/color.scss:
--------------------------------------------------------------------------------
1 | .tui-chat {
2 | .tui-message-list {
3 | .message-more {
4 | color: #999;
5 | cursor: pointer;
6 | }
7 | }
8 |
9 | .image-dialog {
10 | background: rgba(0, 0, 0, 0.6);
11 |
12 | header {
13 | background: rgba(0,0,0,0.49);
14 | }
15 | }
16 | }
17 |
18 | .tui-chat-h5 {
19 | .tui-chat-header {
20 | background: #FFF;
21 | }
22 |
23 | .tui-chat-footer {
24 | background: #FFF;
25 |
26 | .input {
27 | input {
28 | background: #F4F5F9;
29 | }
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIChat/message-list/style/h5.scss:
--------------------------------------------------------------------------------
1 | .tui-chat-h5 {
2 | flex: 1;
3 | position: static;
4 |
5 | .tui-chat-main {
6 | .tui-message-list {
7 | height: 100%;
8 | }
9 |
10 | .message-more {
11 | color: #999;
12 | cursor: pointer;
13 | font-size: 14px;
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIChat/message-list/style/index.scss:
--------------------------------------------------------------------------------
1 | @import "../../../../assets/styles/common";
2 | @import "./color";
3 | @import "./web";
4 | @import "./h5";
5 |
6 | :not(not) {
7 | display: flex;
8 | flex-direction: column;
9 | box-sizing: border-box;
10 | min-width: 0;
11 | }
12 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIChat/offlinePushInfoManager/index.ts:
--------------------------------------------------------------------------------
1 | import OfflinePushInfoManager from './offlinePushInfoManager';
2 |
3 | export * from './const';
4 | export * from './interface';
5 |
6 | export default OfflinePushInfoManager.getInstance();
7 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIChat/offlinePushInfoManager/info.ts:
--------------------------------------------------------------------------------
1 | import { IChatOfflinePushInfo, ICallOfflinePushInfo } from './interface';
2 |
3 | export const chatOfflinePushInfo: IChatOfflinePushInfo = {
4 | androidInfo: {},
5 | apnsInfo: {},
6 | };
7 |
8 | export const callOfflinePushInfo: ICallOfflinePushInfo = {};
9 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIChat/style/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../../assets/styles/common';
2 | @import './web';
3 | @import './h5';
4 | @import './uni';
5 | @import './wx';
6 |
7 | :not(not) {
8 | display: flex;
9 | flex-direction: column;
10 | box-sizing: border-box;
11 | min-width: 0;
12 | }
13 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIChat/style/uni.scss:
--------------------------------------------------------------------------------
1 | .tui-chat-uni {
2 | &-message-input {
3 | max-height: 370px;
4 | padding: 10px;
5 | }
6 |
7 | &-message-input-toolbar {
8 | z-index: 100;
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIChat/style/wx.scss:
--------------------------------------------------------------------------------
1 | .tui-chat-wx {
2 | &-message-input {
3 | padding: 0;
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIChat/utils/wordsList.ts:
--------------------------------------------------------------------------------
1 | export const wordsList = [
2 | {
3 | value: '在吗?在吗?在吗?重要的话说三遍。',
4 | },
5 | {
6 | value: '好久没聊天了,快来和我说说话~',
7 | },
8 | {
9 | value: '好的,就这么说定了。',
10 | },
11 | {
12 | value: '感恩的心,感谢有你。',
13 | },
14 | {
15 | value: '糟糕!是心动的感觉!',
16 | },
17 | {
18 | value: '心疼地抱抱自己,我太难了!',
19 | },
20 | {
21 | value: '没关系,别在意,事情过去就过去了。',
22 | },
23 | {
24 | value: '早上好,今天也是让人期待的一天呢!',
25 | },
26 | {
27 | value: '熬夜有什么用,又没人陪你聊天,早点休息吧。',
28 | },
29 | ];
30 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIContact/contact-info/index.ts:
--------------------------------------------------------------------------------
1 | import ContactInfo from './index.vue';
2 |
3 | export default ContactInfo;
4 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIContact/contact-info/style/index.scss:
--------------------------------------------------------------------------------
1 | @import "./web";
2 | @import "./h5";
3 | @import "../../../../assets/styles/common";
4 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIContact/contact-list/index.ts:
--------------------------------------------------------------------------------
1 | import ContactList from './index.vue';
2 |
3 | export default ContactList;
4 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIContact/contact-list/style/h5.scss:
--------------------------------------------------------------------------------
1 | .tui-contact-list-h5 {
2 | .tui-contact-list-item {
3 | .tui-contact-list-item-header {
4 | cursor: none;
5 | }
6 |
7 | .tui-contact-list-item-header:active,
8 | .tui-contact-list-item-main-item:active {
9 | background-color: #eef0f3;
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIContact/contact-list/style/index.scss:
--------------------------------------------------------------------------------
1 | @import './web';
2 | @import './h5';
3 | @import '../../../../assets/styles/common';
4 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIContact/contact-search/index.ts:
--------------------------------------------------------------------------------
1 | import ContactHeader from './index.vue';
2 | export default ContactHeader;
3 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIContact/index.ts:
--------------------------------------------------------------------------------
1 | import TUIContact from './index.vue';
2 | import Server from './server';
3 | Server.getInstance();
4 |
5 | export default TUIContact;
6 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIContact/select-friend/index.ts:
--------------------------------------------------------------------------------
1 | import SelectFriend from './index.vue';
2 |
3 | export default SelectFriend;
4 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIConversation/conversation-header/index.ts:
--------------------------------------------------------------------------------
1 | import ConversationHeader from './index.vue';
2 |
3 | export default ConversationHeader;
4 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIConversation/conversation-list/style/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../../../assets/styles/common';
2 | @import './color';
3 | @import './web';
4 | @import './h5';
5 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIConversation/conversation-network/index.ts:
--------------------------------------------------------------------------------
1 | import ConversationNetwork from './index.vue';
2 |
3 | export default ConversationNetwork;
4 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIConversation/index.ts:
--------------------------------------------------------------------------------
1 | import TUIConversation from "./index.vue";
2 | import TUIConversationServer from "./server";
3 | new TUIConversationServer();
4 |
5 | export default TUIConversation;
6 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIConversation/style/color.scss:
--------------------------------------------------------------------------------
1 | .tui-conversation {
2 | background: #fff;
3 | }
4 |
5 | .network {
6 | &-content {
7 | font-family: PingFangSC-Regular;
8 | font-weight: 400;
9 | color: #e54545;
10 | letter-spacing: 0;
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIConversation/style/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../../assets/styles/common';
2 | @import './web';
3 | @import './color';
4 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIGroup/create-group/index.ts:
--------------------------------------------------------------------------------
1 | import CreateGroup from './index.vue';
2 |
3 | export default CreateGroup;
4 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIGroup/create-group/style/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../../../assets/styles/common';
2 | @import './color';
3 | @import './web';
4 | @import './h5';
5 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIGroup/index.ts:
--------------------------------------------------------------------------------
1 | import TUIGroup from './index.vue';
2 | import Server from './server';
3 |
4 | Server.getInstance();
5 |
6 | export default TUIGroup;
7 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIGroup/manage-group/index.ts:
--------------------------------------------------------------------------------
1 | import ManageGroup from './index.vue';
2 |
3 | export default ManageGroup;
4 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIGroup/manage-group/style/h5.scss:
--------------------------------------------------------------------------------
1 | .deleted-dialog {
2 | padding: 20%;
3 | }
4 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUIGroup/select-member/index.ts:
--------------------------------------------------------------------------------
1 | import SelectMember from './index.vue';
2 |
3 | export default SelectMember;
4 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUINotification/interface.ts:
--------------------------------------------------------------------------------
1 | export interface ITUINotification {
2 | showPreviews: boolean;
3 | allowNotifications: boolean;
4 | notificationTitle: string;
5 | notificationIcon: string;
6 | }
7 |
8 | export interface INotificationConstructorParams {
9 | showPreviews?: boolean;
10 | allowNotifications?: boolean;
11 | notificationTitle?: string;
12 | notificationIcon?: string;
13 | }
14 |
15 | export type NotificationType = 'chat' | 'call';
16 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUISearch/index.ts:
--------------------------------------------------------------------------------
1 | import TUISearch from './index.vue';
2 | import Server from './server';
3 | new Server();
4 |
5 | export default TUISearch;
6 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUISearch/search-container/index.ts:
--------------------------------------------------------------------------------
1 | import SearchContainer from './index.vue';
2 | export default SearchContainer;
3 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUISearch/search-container/style/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../../../assets/styles/common';
2 | @import './web';
3 | @import './h5';
4 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUISearch/search-input/index.ts:
--------------------------------------------------------------------------------
1 | import SearchInput from './index.vue';
2 | export default SearchInput;
3 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUISearch/search-more/index.ts:
--------------------------------------------------------------------------------
1 | import SearchMore from './index.vue';
2 |
3 | export default SearchMore;
4 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUISearch/search-result/index.ts:
--------------------------------------------------------------------------------
1 | import SearchResult from './index.vue';
2 | export default SearchResult;
3 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUISearch/search-result/search-result-default/index.ts:
--------------------------------------------------------------------------------
1 | import SearchResultDefault from './index.vue';
2 | export default SearchResultDefault;
3 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUISearch/search-result/search-result-item/style/h5.scss:
--------------------------------------------------------------------------------
1 | .search-result-list-item-h5 {
2 | padding: 10px 0;
3 | border-radius: 0;
4 |
5 | .bubble {
6 | .bubble-left {
7 | .bubble-left-avatar {
8 | width: 48px;
9 | height: 48px;
10 | }
11 |
12 | .bubble-main {
13 | .bubble-main-name {
14 | color: #333;
15 | font-family: "PingFang SC", sans-serif;
16 | font-size: 14px;
17 | font-weight: 400;
18 | letter-spacing: 0;
19 | text-align: left;
20 | }
21 | }
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUISearch/search-result/search-result-item/style/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../../../../assets/styles/common';
2 | @import './web';
3 | @import './h5';
4 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUISearch/search-result/search-result-loading/index.ts:
--------------------------------------------------------------------------------
1 | import SearchResultLoading from './index.vue';
2 | export default SearchResultLoading;
3 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUISearch/search-result/style/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../../../assets/styles/common';
2 | @import './web';
3 | @import './h5';
4 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUISearch/style/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../../assets/styles/common';
2 | @import './web';
3 | @import './h5';
4 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/TUISearch/style/web.scss:
--------------------------------------------------------------------------------
1 | .tui-search {
2 | &-main-global {
3 | width: 100%;
4 | height: fit-content;
5 | }
6 |
7 | &-main-conversation {
8 | width: 100%;
9 | height: 100%;
10 | background: #fff;
11 | box-shadow: 0 1px 10px 0 rgba(2,16,43,0.15);
12 | }
13 |
14 | .tui-search-global {
15 | &-header {
16 | display: flex;
17 | flex-direction: row;
18 | justify-content: center;
19 | align-items: center;
20 | }
21 | }
22 |
23 | .tui-search-conversation {
24 | width: 100%;
25 | height: 100%;
26 | overflow: hidden;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/common/BottomPopup/index.ts:
--------------------------------------------------------------------------------
1 | import BottomPopup from './index.vue';
2 |
3 | export default BottomPopup;
4 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/common/BottomPopup/style/index.scss:
--------------------------------------------------------------------------------
1 | @import "../../../../assets/styles/common";
2 | @import "./h5";
3 | @import "./modal";
4 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/common/BottomPopup/style/modal.scss:
--------------------------------------------------------------------------------
1 | .bottom-popup-modal {
2 | background: rgba(0, 0, 0, 0.5);
3 | }
4 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/common/DatePicker/date-picker.ts:
--------------------------------------------------------------------------------
1 | import { Dayjs } from 'dayjs';
2 |
3 | export type DateCellType =
4 | | 'normal'
5 | | 'today'
6 | | 'week'
7 | | 'next-month'
8 | | 'prev-month';
9 | export interface DateCell {
10 | text?: number;
11 | disabled?: boolean;
12 | isSelected?: boolean;
13 | isSelectedStart?: boolean;
14 | isSelectedEnd?: boolean;
15 | isInRange?: boolean;
16 | isCurrent?: boolean;
17 | date: typeof Dayjs;
18 | type?: DateCellType;
19 | }
20 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/common/DatePicker/index.ts:
--------------------------------------------------------------------------------
1 | import DatePicker from './index.vue';
2 | export default DatePicker;
3 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/common/Dialog/index.ts:
--------------------------------------------------------------------------------
1 | import Dialog from './index.vue';
2 |
3 | export default Dialog;
4 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/common/Dialog/style/dialog.scss:
--------------------------------------------------------------------------------
1 | @import '../../../../assets/styles/common';
2 | @import "./color";
3 | @import "./web";
4 | @import "./h5";
5 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/common/Drag/index.ts:
--------------------------------------------------------------------------------
1 | import Drag from './index.vue';
2 | export default Drag;
3 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/common/ImagePreviewer/index.ts:
--------------------------------------------------------------------------------
1 | import ImagePreviewer from './index.vue';
2 |
3 | export default ImagePreviewer;
4 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/common/Loading/index.ts:
--------------------------------------------------------------------------------
1 | import Loading from './index.vue';
2 | export default Loading;
3 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/common/SelectUser/index.ts:
--------------------------------------------------------------------------------
1 | import SelectUser from './index.vue';
2 |
3 | export default SelectUser;
4 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/common/SwitchBar/index.ts:
--------------------------------------------------------------------------------
1 | import SwitchBar from './index.vue';
2 | export default SwitchBar;
3 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/common/Toast/type.ts:
--------------------------------------------------------------------------------
1 | const TOAST_TYPE = {
2 | SUCCESS: 'success',
3 | WARNING: 'warning',
4 | ERROR: 'error',
5 | NORMAL: 'normal',
6 | };
7 |
8 | export default TOAST_TYPE;
9 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/common/Transfer/index.ts:
--------------------------------------------------------------------------------
1 | import Transfer from './index.vue';
2 | export default Transfer;
3 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/common/Transfer/style/transfer.scss:
--------------------------------------------------------------------------------
1 | @import '../../../../assets/styles/common';
2 | @import "./color";
3 | @import "./web";
4 | @import "./h5";
5 |
6 | .icon-unselected {
7 | width: 18px;
8 | height: 18px;
9 | background: #FFF;
10 | border: 1px solid #DDD;
11 | border-radius: 11px;
12 | box-sizing: border-box;
13 | }
14 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/components/index.ts:
--------------------------------------------------------------------------------
1 | import TUIChat from "./TUIChat";
2 | import TUIConversation from "./TUIConversation";
3 | import TUISearch from "./TUISearch";
4 | import TUIContact from "./TUIContact";
5 | import TUIGroup from "./TUIGroup";
6 |
7 | const TUIComponents = {
8 | TUIChat,
9 | TUIConversation,
10 | TUIContact,
11 | TUISearch,
12 | TUIGroup
13 | };
14 |
15 | export default TUIComponents;
16 |
17 | export {
18 | TUIChat,
19 | TUIConversation,
20 | TUIContact,
21 | TUISearch,
22 | TUIGroup,
23 | };
24 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/debug/index.d.ts:
--------------------------------------------------------------------------------
1 | export function genTestUserSig({ SDKAppID: number, secretKey: string, userID: string }): any;
2 | export const EXPIRETIME: number;
3 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/debug/index.js:
--------------------------------------------------------------------------------
1 | export * from "./GenerateTestUserSig";
2 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/index.ts:
--------------------------------------------------------------------------------
1 | import { genTestUserSig } from './debug';
2 | import Server from './server';
3 | import TUIComponents, {
4 | TUIChat,
5 | TUIConversation,
6 | TUIContact,
7 | TUISearch,
8 | TUIGroup,
9 | } from './components';
10 | import TUIKit from './index.vue';
11 | import { hideTUIChatFeatures } from './components/TUIChat/config';
12 |
13 | const TUIChatKit = new Server();
14 | TUIChatKit.init();
15 |
16 | export {
17 | TUIKit,
18 | TUIChatKit,
19 | TUIComponents,
20 | TUIChat,
21 | TUIConversation,
22 | TUIContact,
23 | TUISearch,
24 | TUIGroup,
25 | hideTUIChatFeatures,
26 | genTestUserSig,
27 | };
28 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/locales/en/component.ts:
--------------------------------------------------------------------------------
1 | const component = {
2 | "取消": "Cancel",
3 | "完成": "Done",
4 | "已选中": "Selected",
5 | "人": "",
6 | "保存": "Save",
7 | "请输入userID": "Enter a userID",
8 | "请输入groupID": "Enter a groupID",
9 | "确定": "submit",
10 | "全选": "All",
11 | "已在群聊中": "exists",
12 | "查看更多": "More",
13 | "图片 url 不存在": "Image url does not exist",
14 | "已取消": "Cancelled",
15 | "获取权限失败": "Failed to obtain permission",
16 | "已保存至相册": "Saved to album",
17 | "图片下载失败": "Image download failed",
18 | "暂不支持下载此类型图片": "Downloading this type of pictures is not supported yet",
19 | }
20 |
21 | export default component;
22 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/locales/en/emoji.ts:
--------------------------------------------------------------------------------
1 | import { default as Emoji } from '../../components/TUIChat/emoji-config/locales/en';
2 | export default Emoji;
3 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/locales/en/evaluate.ts:
--------------------------------------------------------------------------------
1 | const Evaluate = {
2 | "请对本次服务进行评价": "Please rate this service",
3 | "提交评价": "Feedback",
4 | "服务评价工具": "Service rate tool",
5 | "使用": "Build with",
6 | "自定义消息": "Custom message",
7 | "搭建": "",
8 | "星": "Star"
9 | }
10 |
11 | export default Evaluate;
12 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/locales/index.ts:
--------------------------------------------------------------------------------
1 |
2 | import en from './en';
3 | import zh_cn from './zh_cn';
4 | import zh_tw from './zh_tw';
5 |
6 | export interface ILanguageResources {
7 | [key: string]: string | ILanguageResources;
8 | }
9 |
10 | const messages: Record = {
11 | ...en,
12 | ...zh_cn,
13 | ...zh_tw,
14 | };
15 |
16 | export default messages;
17 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/locales/zh_cn/TUIConversation.ts:
--------------------------------------------------------------------------------
1 | const TUIConversation = {
2 | "发起会话": "发起会话",
3 | "发起单聊": "发起单聊",
4 | "发起群聊": "发起群聊",
5 | "请输入userID": "请输入userID",
6 | "删除会话": "删除会话",
7 | "删除后,将清空该聊天的消息记录": "删除后,将清空该聊天的消息记录",
8 | "删除后,将清空该群聊的消息记录": "删除后,将清空该群聊的消息记录",
9 | "置顶会话": "置顶会话",
10 | "取消置顶": "取消置顶",
11 | "消息免打扰": "消息免打扰",
12 | "取消免打扰": "取消免打扰",
13 | "系统通知": "系统通知",
14 | "有人@我": "有人@我",
15 | "@所有人": "@所有人",
16 | "条": "条",
17 | "我": "我",
18 | "网络异常,请您检查网络设置": "网络异常,请您检查网络设置",
19 | "您已被群管理员移出群聊": "您已被群管理员移出群聊",
20 | "该群聊已被解散": "该群聊已被解散",
21 | "您已退出该群聊": "您已退出该群聊",
22 | }
23 |
24 | export default TUIConversation;
25 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/locales/zh_cn/component.ts:
--------------------------------------------------------------------------------
1 | const components = {
2 | "取消": "取消",
3 | "完成": "完成",
4 | "已选中": "已选中",
5 | "人": "人",
6 | "保存": "保存",
7 | "请输入userID": "请输入userID",
8 | "请输入groupID": "请输入groupID",
9 | "确定": "确定",
10 | "全选": "全选",
11 | "已在群聊中": "已在群聊中",
12 | "查看更多": "查看更多",
13 | "图片 url 不存在": "图片 url 不存在",
14 | "已取消": "已取消",
15 | "获取权限失败": "获取权限失败",
16 | "已保存至相册": "已保存至相册",
17 | "图片下载失败": "图片下载失败",
18 | "暂不支持下载此类型图片": "暂不支持下载此类型图片",
19 | }
20 |
21 | export default components;
22 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/locales/zh_cn/emoji.ts:
--------------------------------------------------------------------------------
1 | import { default as Emoji } from '../../components/TUIChat/emoji-config/locales/zh_cn';
2 | export default Emoji;
3 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/locales/zh_cn/evaluate.ts:
--------------------------------------------------------------------------------
1 | const Evaluate = {
2 | "请对本次服务进行评价": "请对本次服务进行评价",
3 | "提交评价": "提交评价",
4 | "服务评价工具": "服务评价工具",
5 | "使用": "使用",
6 | "自定义消息": "自定义消息",
7 | "搭建": "搭建",
8 | "星": "星"
9 | }
10 |
11 | export default Evaluate;
12 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/locales/zh_cn/words.ts:
--------------------------------------------------------------------------------
1 | const Words = {
2 | "常用语-快捷回复工具": "常用语-快捷回复工具",
3 | "在吗?在吗?在吗?重要的话说三遍。": "在吗?在吗?在吗?重要的话说三遍。",
4 | "好久没聊天了,快来和我说说话~": "好久没聊天了,快来和我说说话~",
5 | "好的,就这么说定了。": "好的,就这么说定了。",
6 | "感恩的心,感谢有你。": "感恩的心,感谢有你。",
7 | "糟糕!是心动的感觉!": "糟糕!是心动的感觉!",
8 | "心疼地抱抱自己,我太难了!": "心疼地抱抱自己,我太难了!",
9 | "没关系,别在意,事情过去就过去了。": "没关系,别在意,事情过去就过去了。",
10 | "早上好,今天也是让人期待的一天呢!": "早上好,今天也是让人期待的一天呢!",
11 | "熬夜有什么用,又没人陪你聊天,早点休息吧。": "熬夜有什么用,又没人陪你聊天,早点休息吧。"
12 | }
13 |
14 | export default Words;
15 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/locales/zh_tw/TUIConversation.ts:
--------------------------------------------------------------------------------
1 | const TUIConversation = {
2 | "发起会话": "發起會話",
3 | "发起单聊": "發起單聊",
4 | "发起群聊": "發起群聊",
5 | "请输入userID": "請輸入userID",
6 | "删除会话": "刪除會話",
7 | "删除后,将清空该聊天的消息记录": "刪除後,將清空該聊天的消息記錄",
8 | "删除后,将清空该群聊的消息记录": "刪除後,將清空該群聊的消息記錄",
9 | "置顶会话": "置頂會話",
10 | "取消置顶": "取消置頂",
11 | "消息免打扰": "消息免打擾",
12 | "取消免打扰": "取消免打擾",
13 | "系统通知": "系統通知",
14 | "有人@我": "有人@我",
15 | "@所有人": "@所有人",
16 | "条": "條",
17 | "我": "我",
18 | "网络异常,请您检查网络设置": "網絡異常,請您檢查網絡設置",
19 | "您已被群管理员移出群聊": "您已被群管理員移出群聊",
20 | "该群聊已被解散": "該群聊已被解散",
21 | "您已退出该群聊": "您已退出該群聊",
22 | }
23 |
24 | export default TUIConversation;
25 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/locales/zh_tw/component.ts:
--------------------------------------------------------------------------------
1 | const components = {
2 | "取消": "取消",
3 | "完成": "完成",
4 | "已选中": "已選中",
5 | "人": "人",
6 | "保存": "保存",
7 | "请输入userID": "請輸入userID",
8 | "请输入groupID": "請輸入groupID",
9 | "确定": "確定",
10 | "全选": "全選",
11 | "已在群聊中": "已在群聊中",
12 | "查看更多": "查看更多",
13 | "图片 url 不存在": "圖片 url 不存在",
14 | "已取消": "已取消",
15 | "获取权限失败": "獲取權限失敗",
16 | "已保存至相册": "已保存至相冊",
17 | "图片下载失败": "圖片下載失敗",
18 | "暂不支持下载此类型图片": "暫不支持下載此類型圖片",
19 | };
20 |
21 | export default components;
22 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/locales/zh_tw/emoji.ts:
--------------------------------------------------------------------------------
1 | import { default as Emoji } from '../../components/TUIChat/emoji-config/locales/zh_tw';
2 | export default Emoji;
3 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/locales/zh_tw/evaluate.ts:
--------------------------------------------------------------------------------
1 | const Evaluate = {
2 | "请对本次服务进行评价": "請對本次服務進行評價",
3 | "提交评价": "提交評價",
4 | "服务评价工具": "服務評價工具",
5 | "使用": "使用",
6 | "自定义消息": "自定義消息",
7 | "搭建": "搭建",
8 | "星": "星"
9 | }
10 |
11 | export default Evaluate;
12 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/locales/zh_tw/words.ts:
--------------------------------------------------------------------------------
1 | const Words = {
2 | "常用语-快捷回复工具": "常用語-快捷回覆工具",
3 | "在吗?在吗?在吗?重要的话说三遍。": "在嗎?在嗎?在嗎?重要的話說三遍。",
4 | "好久没聊天了,快来和我说说话~": "好久沒聊天了,快來和我說說話~",
5 | "好的,就这么说定了。": "好的,就這麼說定了。",
6 | "感恩的心,感谢有你。": "感恩的心,感謝有你。",
7 | "糟糕!是心动的感觉!": "糟糕!是心動的感覺!",
8 | "心疼地抱抱自己,我太难了!": "心疼地抱抱自己,我太難了!",
9 | "没关系,别在意,事情过去就过去了。": "沒關係,別在意,事情過去就過去了。",
10 | "早上好,今天也是让人期待的一天呢!": "早上好,今天也是讓人期待的一天呢!",
11 | "熬夜有什么用,又没人陪你聊天,早点休息吧。": "熬夜有什麼用,又沒人陪你聊天,早點休息吧。"
12 | }
13 |
14 | export default Words;
15 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/plugins/extension-server/callkit.ts:
--------------------------------------------------------------------------------
1 | export default class CallkitPluginServer {}
2 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/plugins/plugin-components/message-customer/index.ts:
--------------------------------------------------------------------------------
1 | import {
2 | isCustomerServicePluginMessage,
3 | isMessageInvisible as isCustomServiceMessageInvisible,
4 | } from '@tencentcloud/tui-customer-service-plugin';
5 | export { isCustomerServicePluginMessage, isCustomServiceMessageInvisible };
6 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/plugins/plugin-components/message-customer/message-customer-service.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
14 |
17 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/utils/enableSampleTaskStatus.ts:
--------------------------------------------------------------------------------
1 | import { TUIStore, StoreName } from "@tencentcloud/chat-uikit-engine";
2 | export function enableSampleTaskStatus(taskKey: string) {
3 | const tasks = TUIStore.getData(StoreName.APP, "tasks");
4 | if (taskKey in tasks && !tasks[taskKey]) {
5 | tasks[taskKey] = true;
6 | TUIStore.update(StoreName.APP, "tasks", tasks);
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/utils/env.ts:
--------------------------------------------------------------------------------
1 | import { getPlatform } from '@tencentcloud/universal-api';
2 |
3 | declare const uni: any;
4 |
5 | export const isPC = getPlatform() === 'pc';
6 |
7 | export const isH5 = getPlatform() === 'h5';
8 |
9 | export const isWeChat = getPlatform() === 'wechat';
10 |
11 | export const isApp = getPlatform() === 'app';
12 |
13 | export const isUniFrameWork = typeof uni !== 'undefined';
14 |
15 | // H5, mini programs, and apps are all considered mobile.
16 | // If you need to unify the mobile UI style, you can directly use isMobile to control
17 | export const isMobile = isH5 || isWeChat || isApp;
18 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/TUIKit/utils/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./type-check";
2 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/assets/icon/arrow-down-line.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/Demo/src/assets/icon/arrow-down-line.png
--------------------------------------------------------------------------------
/Vue2/Demo/src/assets/icon/arrow-down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/Demo/src/assets/icon/arrow-down.png
--------------------------------------------------------------------------------
/Vue2/Demo/src/assets/icon/calendar.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/assets/icon/global.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/Demo/src/assets/icon/global.png
--------------------------------------------------------------------------------
/Vue2/Demo/src/assets/icon/menu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/Demo/src/assets/icon/menu.png
--------------------------------------------------------------------------------
/Vue2/Demo/src/assets/icon/setting.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/Demo/src/assets/icon/setting.png
--------------------------------------------------------------------------------
/Vue2/Demo/src/assets/image/create-group.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/Demo/src/assets/image/create-group.png
--------------------------------------------------------------------------------
/Vue2/Demo/src/assets/image/h5/login-bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/Demo/src/assets/image/h5/login-bg.png
--------------------------------------------------------------------------------
/Vue2/Demo/src/assets/image/login-background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/Demo/src/assets/image/login-background.png
--------------------------------------------------------------------------------
/Vue2/Demo/src/locales/en/index.ts:
--------------------------------------------------------------------------------
1 | import Login from './login.json'
2 | import Home from './home.json'
3 | import Profile from './profile.json'
4 |
5 | const messages = {
6 | en: {
7 | 当前语言: 'English',
8 | 即时通信: 'Chat',
9 | 即时通信IM: 'Chat',
10 | 社交娱乐: 'Entertaining & Socializing',
11 | 腾讯云: 'Tencent Cloud',
12 | 使用指引: 'User Guide',
13 | Login,
14 | Home,
15 | Profile
16 | }
17 | }
18 |
19 | export default messages
20 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/locales/zh_cn/index.ts:
--------------------------------------------------------------------------------
1 | import Login from './login.json';
2 | import Home from './home.json';
3 | import Profile from './profile.json';
4 |
5 | const messages = {
6 | zh_cn: {
7 | 当前语言: '简体中文',
8 | 即时通信: '即时通信',
9 | 即时通信IM: '即时通信IM',
10 | 社交娱乐: '社交娱乐',
11 | 腾讯云: '腾讯云',
12 | 使用指引: '使用指引',
13 | Login,
14 | Home,
15 | Profile
16 | },
17 | };
18 |
19 | export default messages;
20 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/locales/zh_tw/index.ts:
--------------------------------------------------------------------------------
1 | import Login from './login.json';
2 | import Home from './home.json';
3 | import Profile from './profile.json';
4 |
5 | const messages = {
6 | zh_tw: {
7 | 当前语言: '繁體中文',
8 | 即时通信: '即時通信',
9 | 即时通信IM: '即時通信IM',
10 | 社交娱乐: '社交娛樂',
11 | 腾讯云: '騰訊雲',
12 | 使用指引: '使用指引',
13 | Login,
14 | Home,
15 | Profile,
16 | },
17 | };
18 |
19 | export default messages;
20 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/shims-tsx.d.ts:
--------------------------------------------------------------------------------
1 | import Vue, { VNode } from 'vue'
2 |
3 | declare global {
4 | namespace JSX {
5 | interface Element extends VNode {}
6 | interface ElementClass extends Vue {}
7 | interface IntrinsicElements {
8 | [elem: string]: any
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/shims-vue.d.ts:
--------------------------------------------------------------------------------
1 | declare module '*.vue' {
2 | import Vue from 'vue'
3 | export default Vue
4 | }
5 |
6 | declare module '*.svg' {
7 | const content: any;
8 | export default content;
9 | }
--------------------------------------------------------------------------------
/Vue2/Demo/src/store/index.ts:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Vuex from 'vuex'
3 |
4 | Vue.use(Vuex)
5 |
6 | export default new Vuex.Store({
7 | state: {
8 | },
9 | getters: {
10 | },
11 | mutations: {
12 | },
13 | actions: {
14 | },
15 | modules: {
16 | }
17 | })
18 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/styles/home.scss:
--------------------------------------------------------------------------------
1 | @import './web/home.scss';
2 | @import './h5/home.scss';
3 | @import "./common.scss";
4 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/styles/login.scss:
--------------------------------------------------------------------------------
1 | @import "./web/login.scss";
2 | @import "./h5/login.scss";
3 | @import "./common.scss";
4 |
--------------------------------------------------------------------------------
/Vue2/Demo/src/styles/profile.scss:
--------------------------------------------------------------------------------
1 | @import "./web/profile.scss";
2 | @import "./h5/profile.scss";
3 | @import "./common.scss";
--------------------------------------------------------------------------------
/Vue2/Demo/vue.config.js:
--------------------------------------------------------------------------------
1 | const { defineConfig } = require("@vue/cli-service");
2 | module.exports = defineConfig({
3 | lintOnSave: false,
4 | publicPath: "./",
5 | chainWebpack: (config) => {
6 | config.plugin("html").tap((args) => {
7 | args[0].title = "腾讯云即时通信 Web-IM";
8 | return args;
9 | });
10 | },
11 | transpileDependencies: true,
12 | devServer: {
13 | client: {
14 | overlay: false,
15 | },
16 | },
17 | });
18 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/.eslintignore:
--------------------------------------------------------------------------------
1 | *
2 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/.npmignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | package-lock.json
3 | pnpm-lock.yaml
4 | dist
5 | **/dist/
--------------------------------------------------------------------------------
/Vue2/TUIKit/.npmrc:
--------------------------------------------------------------------------------
1 | auto-install-peers=true
2 | strict-peer-dependencies=false
3 | # shamefully-hoist=true
--------------------------------------------------------------------------------
/Vue2/TUIKit/assets/icon/call.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/TUIKit/assets/icon/call.png
--------------------------------------------------------------------------------
/Vue2/TUIKit/assets/icon/camera-uni.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/TUIKit/assets/icon/camera-uni.png
--------------------------------------------------------------------------------
/Vue2/TUIKit/assets/icon/close-image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/TUIKit/assets/icon/close-image.png
--------------------------------------------------------------------------------
/Vue2/TUIKit/assets/icon/convertText_en.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/assets/icon/d-right-arrow.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/assets/icon/down-icon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/assets/icon/downaload-image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/TUIKit/assets/icon/downaload-image.png
--------------------------------------------------------------------------------
/Vue2/TUIKit/assets/icon/face-dark.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/assets/icon/face-uni.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/TUIKit/assets/icon/face-uni.png
--------------------------------------------------------------------------------
/Vue2/TUIKit/assets/icon/image-uni.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/TUIKit/assets/icon/image-uni.png
--------------------------------------------------------------------------------
/Vue2/TUIKit/assets/icon/input-close.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/assets/icon/left-arrow.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/assets/icon/loading.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/TUIKit/assets/icon/loading.gif
--------------------------------------------------------------------------------
/Vue2/TUIKit/assets/icon/loading.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/TUIKit/assets/icon/loading.png
--------------------------------------------------------------------------------
/Vue2/TUIKit/assets/icon/minus.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/assets/icon/more-uni.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/TUIKit/assets/icon/more-uni.png
--------------------------------------------------------------------------------
/Vue2/TUIKit/assets/icon/more.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/TUIKit/assets/icon/more.png
--------------------------------------------------------------------------------
/Vue2/TUIKit/assets/icon/plus.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/assets/icon/right-icon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/assets/icon/star-light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/TUIKit/assets/icon/star-light.png
--------------------------------------------------------------------------------
/Vue2/TUIKit/assets/icon/star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/TUIKit/assets/icon/star.png
--------------------------------------------------------------------------------
/Vue2/TUIKit/assets/icon/video-dark.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/assets/icon/video-play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/TUIKit/assets/icon/video-play.png
--------------------------------------------------------------------------------
/Vue2/TUIKit/assets/icon/video-uni.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue2/TUIKit/assets/icon/video-uni.png
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIChat/emoji-config/custom-emoji.ts:
--------------------------------------------------------------------------------
1 | import { IEmojiGroupList } from '../../../interface';
2 |
3 | /**
4 | * Custom big emoji
5 | */
6 | export const CUSTOM_BIG_EMOJI_URL: string = '';
7 |
8 | export const CUSTOM_BIG_EMOJI_GROUP_LIST: IEmojiGroupList = [];
9 |
10 | /**
11 | * Custom basic emoji
12 | */
13 | export const CUSTOM_BASIC_EMOJI_URL: string = '';
14 |
15 | export const CUSTOM_BASIC_EMOJI_URL_MAPPING: Record = {};
16 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIChat/index.ts:
--------------------------------------------------------------------------------
1 | import TUIChat from './index.vue';
2 | import Server from './server';
3 |
4 | new Server();
5 |
6 | export default TUIChat;
7 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIChat/message-input-toolbar/emoji-picker/index.ts:
--------------------------------------------------------------------------------
1 | import EmojiPicker from './index.vue';
2 | export default EmojiPicker;
3 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIChat/message-input-toolbar/emoji-picker/style/h5.scss:
--------------------------------------------------------------------------------
1 | .emoji-picker-h5 {
2 | width: 100%;
3 |
4 | &-list {
5 | justify-content: space-between;
6 | }
7 |
8 | &-list::after {
9 | content: "";
10 | display: block;
11 | flex: 1 1 auto;
12 | }
13 |
14 | .send-btn {
15 | width: 50px;
16 | height: 30px;
17 | background-color: #55C06A;
18 | position: absolute;
19 | right: 10px;
20 | font-size: 16px;
21 | color: #fff;
22 | text-align: center;
23 | line-height: 30px;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIChat/message-input-toolbar/emoji-picker/style/index.scss:
--------------------------------------------------------------------------------
1 | @import "../../../../../assets/styles/common";
2 | @import "./web";
3 | @import "./h5";
4 |
5 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIChat/message-input-toolbar/evaluate/index.ts:
--------------------------------------------------------------------------------
1 | import Evaluate from './index.vue';
2 | export default Evaluate;
3 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIChat/message-input-toolbar/evaluate/style/index.scss:
--------------------------------------------------------------------------------
1 | @import "./color";
2 | @import "./web";
3 | @import "./h5";
4 | @import "../../../../../assets/styles/common";
5 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIChat/message-input-toolbar/file-upload/index.ts:
--------------------------------------------------------------------------------
1 | import ImageUpload from './index.vue';
2 | export default ImageUpload;
3 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIChat/message-input-toolbar/image-upload/index.ts:
--------------------------------------------------------------------------------
1 | import ImageUpload from './index.vue';
2 | export default ImageUpload;
3 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIChat/message-input-toolbar/index.ts:
--------------------------------------------------------------------------------
1 | import MessageInputToolbar from './index.vue';
2 | export default MessageInputToolbar;
3 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIChat/message-input-toolbar/toolbar-item-container/style/color.scss:
--------------------------------------------------------------------------------
1 | .toolbar-item-container {
2 | &-dialog {
3 | background: #fff;
4 | box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIChat/message-input-toolbar/toolbar-item-container/style/h5.scss:
--------------------------------------------------------------------------------
1 | .toolbar-item-container-h5 {
2 | &-dialog {
3 | position: static !important;
4 | width: 100%;
5 | box-shadow: none;
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIChat/message-input-toolbar/toolbar-item-container/style/index.scss:
--------------------------------------------------------------------------------
1 | @import "../../../../../assets/styles/common";
2 | @import "./color";
3 | @import "./web";
4 | @import "./h5";
5 | @import "./uni";
6 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIChat/message-input-toolbar/user-selector/index.ts:
--------------------------------------------------------------------------------
1 | import UserSelector from './index.vue';
2 | export default UserSelector;
3 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIChat/message-input-toolbar/video-upload/index.ts:
--------------------------------------------------------------------------------
1 | import ImageUpload from './index.vue';
2 | export default ImageUpload;
3 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIChat/message-input-toolbar/words/index.ts:
--------------------------------------------------------------------------------
1 | import Words from "./index.vue";
2 | export default Words;
3 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIChat/message-input-toolbar/words/style/color.scss:
--------------------------------------------------------------------------------
1 | .words {
2 | background-color: #ffffff;
3 | &-header {
4 | &-close {
5 | color: #3370ff;
6 | }
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIChat/message-input-toolbar/words/style/index.scss:
--------------------------------------------------------------------------------
1 | @import url("../../../../../assets/styles/common.scss");
2 | @import "./color.scss";
3 | @import "./web.scss";
4 | @import "./h5.scss";
5 |
6 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIChat/message-input/index.ts:
--------------------------------------------------------------------------------
1 | import MessageInput from './index.vue';
2 | export default MessageInput;
3 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIChat/message-list/message-elements/message-stream-markdown/index.ts:
--------------------------------------------------------------------------------
1 | import { IMessageModel } from '@tencentcloud/chat-uikit-engine';
2 |
3 | export function isBotMessage(message: IMessageModel): boolean {
4 | if (!message || !message.ID || !message.from) {
5 | return false;
6 | }
7 |
8 | if (message.from.startsWith('@RBT#') && !message.to.startsWith('@RBT#')) {
9 | return true;
10 | }
11 |
12 | return false;
13 | }
14 |
15 | export * from './index.vue';
16 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIChat/message-list/message-elements/message-stream-markdown/operation/index.ts:
--------------------------------------------------------------------------------
1 | export * from './index.vue';
2 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIChat/message-list/message-elements/message-stream-markdown/operation/type.ts:
--------------------------------------------------------------------------------
1 | /** type & interface */
2 | export enum IOperationType {
3 | Copy = 'copy',
4 | // Retry is not supported now
5 | // Retry = 'retry',
6 | }
7 | export interface IOperation {
8 | key: IOperationType;
9 | name: string;
10 | icon: string;
11 | isDisabled: boolean;
12 | onClick: (e: Event, key: IOperationType) => void;
13 | }
14 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIChat/message-list/style/color.scss:
--------------------------------------------------------------------------------
1 | .tui-chat {
2 | .tui-message-list {
3 | .message-more {
4 | color: #999;
5 | cursor: pointer;
6 | }
7 | }
8 |
9 | .image-dialog {
10 | background: rgba(0, 0, 0, 0.6);
11 |
12 | header {
13 | background: rgba(0,0,0,0.49);
14 | }
15 | }
16 | }
17 |
18 | .tui-chat-h5 {
19 | .tui-chat-header {
20 | background: #FFF;
21 | }
22 |
23 | .tui-chat-footer {
24 | background: #FFF;
25 |
26 | .input {
27 | input {
28 | background: #F4F5F9;
29 | }
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIChat/message-list/style/h5.scss:
--------------------------------------------------------------------------------
1 | .tui-chat-h5 {
2 | flex: 1;
3 | position: static;
4 |
5 | .tui-chat-main {
6 | .tui-message-list {
7 | height: 100%;
8 | }
9 |
10 | .message-more {
11 | color: #999;
12 | cursor: pointer;
13 | font-size: 14px;
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIChat/message-list/style/index.scss:
--------------------------------------------------------------------------------
1 | @import "../../../../assets/styles/common";
2 | @import "./color";
3 | @import "./web";
4 | @import "./h5";
5 |
6 | :not(not) {
7 | display: flex;
8 | flex-direction: column;
9 | box-sizing: border-box;
10 | min-width: 0;
11 | }
12 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIChat/offlinePushInfoManager/index.ts:
--------------------------------------------------------------------------------
1 | import OfflinePushInfoManager from './offlinePushInfoManager';
2 |
3 | export * from './const';
4 | export * from './interface';
5 |
6 | export default OfflinePushInfoManager.getInstance();
7 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIChat/offlinePushInfoManager/info.ts:
--------------------------------------------------------------------------------
1 | import { IChatOfflinePushInfo, ICallOfflinePushInfo } from './interface';
2 |
3 | export const chatOfflinePushInfo: IChatOfflinePushInfo = {
4 | androidInfo: {},
5 | apnsInfo: {},
6 | };
7 |
8 | export const callOfflinePushInfo: ICallOfflinePushInfo = {};
9 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIChat/style/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../../assets/styles/common';
2 | @import './web';
3 | @import './h5';
4 | @import './uni';
5 | @import './wx';
6 |
7 | :not(not) {
8 | display: flex;
9 | flex-direction: column;
10 | box-sizing: border-box;
11 | min-width: 0;
12 | }
13 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIChat/style/uni.scss:
--------------------------------------------------------------------------------
1 | .tui-chat-uni {
2 | &-message-input {
3 | max-height: 370px;
4 | padding: 10px;
5 | }
6 |
7 | &-message-input-toolbar {
8 | z-index: 100;
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIChat/style/wx.scss:
--------------------------------------------------------------------------------
1 | .tui-chat-wx {
2 | &-message-input {
3 | padding: 0;
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIChat/utils/wordsList.ts:
--------------------------------------------------------------------------------
1 | export const wordsList = [
2 | {
3 | value: '在吗?在吗?在吗?重要的话说三遍。',
4 | },
5 | {
6 | value: '好久没聊天了,快来和我说说话~',
7 | },
8 | {
9 | value: '好的,就这么说定了。',
10 | },
11 | {
12 | value: '感恩的心,感谢有你。',
13 | },
14 | {
15 | value: '糟糕!是心动的感觉!',
16 | },
17 | {
18 | value: '心疼地抱抱自己,我太难了!',
19 | },
20 | {
21 | value: '没关系,别在意,事情过去就过去了。',
22 | },
23 | {
24 | value: '早上好,今天也是让人期待的一天呢!',
25 | },
26 | {
27 | value: '熬夜有什么用,又没人陪你聊天,早点休息吧。',
28 | },
29 | ];
30 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIContact/contact-info/index.ts:
--------------------------------------------------------------------------------
1 | import ContactInfo from './index.vue';
2 |
3 | export default ContactInfo;
4 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIContact/contact-info/style/index.scss:
--------------------------------------------------------------------------------
1 | @import "./web";
2 | @import "./h5";
3 | @import "../../../../assets/styles/common";
4 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIContact/contact-list/index.ts:
--------------------------------------------------------------------------------
1 | import ContactList from './index.vue';
2 |
3 | export default ContactList;
4 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIContact/contact-list/style/h5.scss:
--------------------------------------------------------------------------------
1 | .tui-contact-list-h5 {
2 | .tui-contact-list-item {
3 | .tui-contact-list-item-header {
4 | cursor: none;
5 | }
6 |
7 | .tui-contact-list-item-header:active,
8 | .tui-contact-list-item-main-item:active {
9 | background-color: #eef0f3;
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIContact/contact-list/style/index.scss:
--------------------------------------------------------------------------------
1 | @import './web';
2 | @import './h5';
3 | @import '../../../../assets/styles/common';
4 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIContact/contact-search/index.ts:
--------------------------------------------------------------------------------
1 | import ContactHeader from './index.vue';
2 | export default ContactHeader;
3 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIContact/index.ts:
--------------------------------------------------------------------------------
1 | import TUIContact from './index.vue';
2 | import Server from './server';
3 | Server.getInstance();
4 |
5 | export default TUIContact;
6 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIContact/select-friend/index.ts:
--------------------------------------------------------------------------------
1 | import SelectFriend from './index.vue';
2 |
3 | export default SelectFriend;
4 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIConversation/conversation-header/index.ts:
--------------------------------------------------------------------------------
1 | import ConversationHeader from './index.vue';
2 |
3 | export default ConversationHeader;
4 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIConversation/conversation-list/style/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../../../assets/styles/common';
2 | @import './color';
3 | @import './web';
4 | @import './h5';
5 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIConversation/conversation-network/index.ts:
--------------------------------------------------------------------------------
1 | import ConversationNetwork from './index.vue';
2 |
3 | export default ConversationNetwork;
4 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIConversation/index.ts:
--------------------------------------------------------------------------------
1 | import TUIConversation from "./index.vue";
2 | import TUIConversationServer from "./server";
3 | new TUIConversationServer();
4 |
5 | export default TUIConversation;
6 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIConversation/style/color.scss:
--------------------------------------------------------------------------------
1 | .tui-conversation {
2 | background: #fff;
3 | }
4 |
5 | .network {
6 | &-content {
7 | font-family: PingFangSC-Regular;
8 | font-weight: 400;
9 | color: #e54545;
10 | letter-spacing: 0;
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIConversation/style/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../../assets/styles/common';
2 | @import './web';
3 | @import './color';
4 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIGroup/create-group/index.ts:
--------------------------------------------------------------------------------
1 | import CreateGroup from './index.vue';
2 |
3 | export default CreateGroup;
4 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIGroup/create-group/style/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../../../assets/styles/common';
2 | @import './color';
3 | @import './web';
4 | @import './h5';
5 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIGroup/index.ts:
--------------------------------------------------------------------------------
1 | import TUIGroup from './index.vue';
2 | import Server from './server';
3 |
4 | Server.getInstance();
5 |
6 | export default TUIGroup;
7 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIGroup/manage-group/index.ts:
--------------------------------------------------------------------------------
1 | import ManageGroup from './index.vue';
2 |
3 | export default ManageGroup;
4 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIGroup/manage-group/style/h5.scss:
--------------------------------------------------------------------------------
1 | .deleted-dialog {
2 | padding: 20%;
3 | }
4 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUIGroup/select-member/index.ts:
--------------------------------------------------------------------------------
1 | import SelectMember from './index.vue';
2 |
3 | export default SelectMember;
4 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUINotification/interface.ts:
--------------------------------------------------------------------------------
1 | export interface ITUINotification {
2 | showPreviews: boolean;
3 | allowNotifications: boolean;
4 | notificationTitle: string;
5 | notificationIcon: string;
6 | }
7 |
8 | export interface INotificationConstructorParams {
9 | showPreviews?: boolean;
10 | allowNotifications?: boolean;
11 | notificationTitle?: string;
12 | notificationIcon?: string;
13 | }
14 |
15 | export type NotificationType = 'chat' | 'call';
16 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUISearch/index.ts:
--------------------------------------------------------------------------------
1 | import TUISearch from './index.vue';
2 | import Server from './server';
3 | new Server();
4 |
5 | export default TUISearch;
6 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUISearch/search-container/index.ts:
--------------------------------------------------------------------------------
1 | import SearchContainer from './index.vue';
2 | export default SearchContainer;
3 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUISearch/search-container/style/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../../../assets/styles/common';
2 | @import './web';
3 | @import './h5';
4 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUISearch/search-input/index.ts:
--------------------------------------------------------------------------------
1 | import SearchInput from './index.vue';
2 | export default SearchInput;
3 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUISearch/search-more/index.ts:
--------------------------------------------------------------------------------
1 | import SearchMore from './index.vue';
2 |
3 | export default SearchMore;
4 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUISearch/search-result/index.ts:
--------------------------------------------------------------------------------
1 | import SearchResult from './index.vue';
2 | export default SearchResult;
3 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUISearch/search-result/search-result-default/index.ts:
--------------------------------------------------------------------------------
1 | import SearchResultDefault from './index.vue';
2 | export default SearchResultDefault;
3 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUISearch/search-result/search-result-item/style/h5.scss:
--------------------------------------------------------------------------------
1 | .search-result-list-item-h5 {
2 | padding: 10px 0;
3 | border-radius: 0;
4 |
5 | .bubble {
6 | .bubble-left {
7 | .bubble-left-avatar {
8 | width: 48px;
9 | height: 48px;
10 | }
11 |
12 | .bubble-main {
13 | .bubble-main-name {
14 | color: #333;
15 | font-family: "PingFang SC", sans-serif;
16 | font-size: 14px;
17 | font-weight: 400;
18 | letter-spacing: 0;
19 | text-align: left;
20 | }
21 | }
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUISearch/search-result/search-result-item/style/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../../../../assets/styles/common';
2 | @import './web';
3 | @import './h5';
4 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUISearch/search-result/search-result-loading/index.ts:
--------------------------------------------------------------------------------
1 | import SearchResultLoading from './index.vue';
2 | export default SearchResultLoading;
3 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUISearch/search-result/style/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../../../assets/styles/common';
2 | @import './web';
3 | @import './h5';
4 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUISearch/style/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../../assets/styles/common';
2 | @import './web';
3 | @import './h5';
4 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/TUISearch/style/web.scss:
--------------------------------------------------------------------------------
1 | .tui-search {
2 | &-main-global {
3 | width: 100%;
4 | height: fit-content;
5 | }
6 |
7 | &-main-conversation {
8 | width: 100%;
9 | height: 100%;
10 | background: #fff;
11 | box-shadow: 0 1px 10px 0 rgba(2,16,43,0.15);
12 | }
13 |
14 | .tui-search-global {
15 | &-header {
16 | display: flex;
17 | flex-direction: row;
18 | justify-content: center;
19 | align-items: center;
20 | }
21 | }
22 |
23 | .tui-search-conversation {
24 | width: 100%;
25 | height: 100%;
26 | overflow: hidden;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/common/BottomPopup/index.ts:
--------------------------------------------------------------------------------
1 | import BottomPopup from './index.vue';
2 |
3 | export default BottomPopup;
4 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/common/BottomPopup/style/index.scss:
--------------------------------------------------------------------------------
1 | @import "../../../../assets/styles/common";
2 | @import "./h5";
3 | @import "./modal";
4 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/common/BottomPopup/style/modal.scss:
--------------------------------------------------------------------------------
1 | .bottom-popup-modal {
2 | background: rgba(0, 0, 0, 0.5);
3 | }
4 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/common/DatePicker/date-picker.ts:
--------------------------------------------------------------------------------
1 | import { Dayjs } from 'dayjs';
2 |
3 | export type DateCellType =
4 | | 'normal'
5 | | 'today'
6 | | 'week'
7 | | 'next-month'
8 | | 'prev-month';
9 | export interface DateCell {
10 | text?: number;
11 | disabled?: boolean;
12 | isSelected?: boolean;
13 | isSelectedStart?: boolean;
14 | isSelectedEnd?: boolean;
15 | isInRange?: boolean;
16 | isCurrent?: boolean;
17 | date: typeof Dayjs;
18 | type?: DateCellType;
19 | }
20 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/common/DatePicker/index.ts:
--------------------------------------------------------------------------------
1 | import DatePicker from './index.vue';
2 | export default DatePicker;
3 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/common/Dialog/index.ts:
--------------------------------------------------------------------------------
1 | import Dialog from './index.vue';
2 |
3 | export default Dialog;
4 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/common/Dialog/style/dialog.scss:
--------------------------------------------------------------------------------
1 | @import '../../../../assets/styles/common';
2 | @import "./color";
3 | @import "./web";
4 | @import "./h5";
5 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/common/Drag/index.ts:
--------------------------------------------------------------------------------
1 | import Drag from './index.vue';
2 | export default Drag;
3 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/common/ImagePreviewer/index.ts:
--------------------------------------------------------------------------------
1 | import ImagePreviewer from './index.vue';
2 |
3 | export default ImagePreviewer;
4 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/common/Loading/index.ts:
--------------------------------------------------------------------------------
1 | import Loading from './index.vue';
2 | export default Loading;
3 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/common/SelectUser/index.ts:
--------------------------------------------------------------------------------
1 | import SelectUser from './index.vue';
2 |
3 | export default SelectUser;
4 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/common/SwitchBar/index.ts:
--------------------------------------------------------------------------------
1 | import SwitchBar from './index.vue';
2 | export default SwitchBar;
3 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/common/Toast/type.ts:
--------------------------------------------------------------------------------
1 | const TOAST_TYPE = {
2 | SUCCESS: 'success',
3 | WARNING: 'warning',
4 | ERROR: 'error',
5 | NORMAL: 'normal',
6 | };
7 |
8 | export default TOAST_TYPE;
9 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/common/Transfer/index.ts:
--------------------------------------------------------------------------------
1 | import Transfer from './index.vue';
2 | export default Transfer;
3 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/common/Transfer/style/transfer.scss:
--------------------------------------------------------------------------------
1 | @import '../../../../assets/styles/common';
2 | @import "./color";
3 | @import "./web";
4 | @import "./h5";
5 |
6 | .icon-unselected {
7 | width: 18px;
8 | height: 18px;
9 | background: #FFF;
10 | border: 1px solid #DDD;
11 | border-radius: 11px;
12 | box-sizing: border-box;
13 | }
14 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/components/index.ts:
--------------------------------------------------------------------------------
1 | import TUIChat from "./TUIChat";
2 | import TUIConversation from "./TUIConversation";
3 | import TUISearch from "./TUISearch";
4 | import TUIContact from "./TUIContact";
5 | import TUIGroup from "./TUIGroup";
6 |
7 | const TUIComponents = {
8 | TUIChat,
9 | TUIConversation,
10 | TUIContact,
11 | TUISearch,
12 | TUIGroup
13 | };
14 |
15 | export default TUIComponents;
16 |
17 | export {
18 | TUIChat,
19 | TUIConversation,
20 | TUIContact,
21 | TUISearch,
22 | TUIGroup,
23 | };
24 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/debug/index.d.ts:
--------------------------------------------------------------------------------
1 | export function genTestUserSig({ SDKAppID: number, secretKey: string, userID: string }): any;
2 | export const EXPIRETIME: number;
3 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/debug/index.js:
--------------------------------------------------------------------------------
1 | export * from "./GenerateTestUserSig";
2 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/index.ts:
--------------------------------------------------------------------------------
1 | import { genTestUserSig } from './debug';
2 | import Server from './server';
3 | import TUIComponents, {
4 | TUIChat,
5 | TUIConversation,
6 | TUIContact,
7 | TUISearch,
8 | TUIGroup,
9 | } from './components';
10 | import TUIKit from './index.vue';
11 | import { hideTUIChatFeatures } from './components/TUIChat/config';
12 |
13 | const TUIChatKit = new Server();
14 | TUIChatKit.init();
15 |
16 | export {
17 | TUIKit,
18 | TUIChatKit,
19 | TUIComponents,
20 | TUIChat,
21 | TUIConversation,
22 | TUIContact,
23 | TUISearch,
24 | TUIGroup,
25 | hideTUIChatFeatures,
26 | genTestUserSig,
27 | };
28 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/locales/en/component.ts:
--------------------------------------------------------------------------------
1 | const component = {
2 | "取消": "Cancel",
3 | "完成": "Done",
4 | "已选中": "Selected",
5 | "人": "",
6 | "保存": "Save",
7 | "请输入userID": "Enter a userID",
8 | "请输入groupID": "Enter a groupID",
9 | "确定": "submit",
10 | "全选": "All",
11 | "已在群聊中": "exists",
12 | "查看更多": "More",
13 | "图片 url 不存在": "Image url does not exist",
14 | "已取消": "Cancelled",
15 | "获取权限失败": "Failed to obtain permission",
16 | "已保存至相册": "Saved to album",
17 | "图片下载失败": "Image download failed",
18 | "暂不支持下载此类型图片": "Downloading this type of pictures is not supported yet",
19 | }
20 |
21 | export default component;
22 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/locales/en/emoji.ts:
--------------------------------------------------------------------------------
1 | import { default as Emoji } from '../../components/TUIChat/emoji-config/locales/en';
2 | export default Emoji;
3 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/locales/en/evaluate.ts:
--------------------------------------------------------------------------------
1 | const Evaluate = {
2 | "请对本次服务进行评价": "Please rate this service",
3 | "提交评价": "Feedback",
4 | "服务评价工具": "Service rate tool",
5 | "使用": "Build with",
6 | "自定义消息": "Custom message",
7 | "搭建": "",
8 | "星": "Star"
9 | }
10 |
11 | export default Evaluate;
12 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/locales/index.ts:
--------------------------------------------------------------------------------
1 |
2 | import en from './en';
3 | import zh_cn from './zh_cn';
4 | import zh_tw from './zh_tw';
5 |
6 | export interface ILanguageResources {
7 | [key: string]: string | ILanguageResources;
8 | }
9 |
10 | const messages: Record = {
11 | ...en,
12 | ...zh_cn,
13 | ...zh_tw,
14 | };
15 |
16 | export default messages;
17 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/locales/zh_cn/TUIConversation.ts:
--------------------------------------------------------------------------------
1 | const TUIConversation = {
2 | "发起会话": "发起会话",
3 | "发起单聊": "发起单聊",
4 | "发起群聊": "发起群聊",
5 | "请输入userID": "请输入userID",
6 | "删除会话": "删除会话",
7 | "删除后,将清空该聊天的消息记录": "删除后,将清空该聊天的消息记录",
8 | "删除后,将清空该群聊的消息记录": "删除后,将清空该群聊的消息记录",
9 | "置顶会话": "置顶会话",
10 | "取消置顶": "取消置顶",
11 | "消息免打扰": "消息免打扰",
12 | "取消免打扰": "取消免打扰",
13 | "系统通知": "系统通知",
14 | "有人@我": "有人@我",
15 | "@所有人": "@所有人",
16 | "条": "条",
17 | "我": "我",
18 | "网络异常,请您检查网络设置": "网络异常,请您检查网络设置",
19 | "您已被群管理员移出群聊": "您已被群管理员移出群聊",
20 | "该群聊已被解散": "该群聊已被解散",
21 | "您已退出该群聊": "您已退出该群聊",
22 | }
23 |
24 | export default TUIConversation;
25 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/locales/zh_cn/component.ts:
--------------------------------------------------------------------------------
1 | const components = {
2 | "取消": "取消",
3 | "完成": "完成",
4 | "已选中": "已选中",
5 | "人": "人",
6 | "保存": "保存",
7 | "请输入userID": "请输入userID",
8 | "请输入groupID": "请输入groupID",
9 | "确定": "确定",
10 | "全选": "全选",
11 | "已在群聊中": "已在群聊中",
12 | "查看更多": "查看更多",
13 | "图片 url 不存在": "图片 url 不存在",
14 | "已取消": "已取消",
15 | "获取权限失败": "获取权限失败",
16 | "已保存至相册": "已保存至相册",
17 | "图片下载失败": "图片下载失败",
18 | "暂不支持下载此类型图片": "暂不支持下载此类型图片",
19 | }
20 |
21 | export default components;
22 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/locales/zh_cn/emoji.ts:
--------------------------------------------------------------------------------
1 | import { default as Emoji } from '../../components/TUIChat/emoji-config/locales/zh_cn';
2 | export default Emoji;
3 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/locales/zh_cn/evaluate.ts:
--------------------------------------------------------------------------------
1 | const Evaluate = {
2 | "请对本次服务进行评价": "请对本次服务进行评价",
3 | "提交评价": "提交评价",
4 | "服务评价工具": "服务评价工具",
5 | "使用": "使用",
6 | "自定义消息": "自定义消息",
7 | "搭建": "搭建",
8 | "星": "星"
9 | }
10 |
11 | export default Evaluate;
12 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/locales/zh_cn/words.ts:
--------------------------------------------------------------------------------
1 | const Words = {
2 | "常用语-快捷回复工具": "常用语-快捷回复工具",
3 | "在吗?在吗?在吗?重要的话说三遍。": "在吗?在吗?在吗?重要的话说三遍。",
4 | "好久没聊天了,快来和我说说话~": "好久没聊天了,快来和我说说话~",
5 | "好的,就这么说定了。": "好的,就这么说定了。",
6 | "感恩的心,感谢有你。": "感恩的心,感谢有你。",
7 | "糟糕!是心动的感觉!": "糟糕!是心动的感觉!",
8 | "心疼地抱抱自己,我太难了!": "心疼地抱抱自己,我太难了!",
9 | "没关系,别在意,事情过去就过去了。": "没关系,别在意,事情过去就过去了。",
10 | "早上好,今天也是让人期待的一天呢!": "早上好,今天也是让人期待的一天呢!",
11 | "熬夜有什么用,又没人陪你聊天,早点休息吧。": "熬夜有什么用,又没人陪你聊天,早点休息吧。"
12 | }
13 |
14 | export default Words;
15 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/locales/zh_tw/TUIConversation.ts:
--------------------------------------------------------------------------------
1 | const TUIConversation = {
2 | "发起会话": "發起會話",
3 | "发起单聊": "發起單聊",
4 | "发起群聊": "發起群聊",
5 | "请输入userID": "請輸入userID",
6 | "删除会话": "刪除會話",
7 | "删除后,将清空该聊天的消息记录": "刪除後,將清空該聊天的消息記錄",
8 | "删除后,将清空该群聊的消息记录": "刪除後,將清空該群聊的消息記錄",
9 | "置顶会话": "置頂會話",
10 | "取消置顶": "取消置頂",
11 | "消息免打扰": "消息免打擾",
12 | "取消免打扰": "取消免打擾",
13 | "系统通知": "系統通知",
14 | "有人@我": "有人@我",
15 | "@所有人": "@所有人",
16 | "条": "條",
17 | "我": "我",
18 | "网络异常,请您检查网络设置": "網絡異常,請您檢查網絡設置",
19 | "您已被群管理员移出群聊": "您已被群管理員移出群聊",
20 | "该群聊已被解散": "該群聊已被解散",
21 | "您已退出该群聊": "您已退出該群聊",
22 | }
23 |
24 | export default TUIConversation;
25 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/locales/zh_tw/component.ts:
--------------------------------------------------------------------------------
1 | const components = {
2 | "取消": "取消",
3 | "完成": "完成",
4 | "已选中": "已選中",
5 | "人": "人",
6 | "保存": "保存",
7 | "请输入userID": "請輸入userID",
8 | "请输入groupID": "請輸入groupID",
9 | "确定": "確定",
10 | "全选": "全選",
11 | "已在群聊中": "已在群聊中",
12 | "查看更多": "查看更多",
13 | "图片 url 不存在": "圖片 url 不存在",
14 | "已取消": "已取消",
15 | "获取权限失败": "獲取權限失敗",
16 | "已保存至相册": "已保存至相冊",
17 | "图片下载失败": "圖片下載失敗",
18 | "暂不支持下载此类型图片": "暫不支持下載此類型圖片",
19 | };
20 |
21 | export default components;
22 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/locales/zh_tw/emoji.ts:
--------------------------------------------------------------------------------
1 | import { default as Emoji } from '../../components/TUIChat/emoji-config/locales/zh_tw';
2 | export default Emoji;
3 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/locales/zh_tw/evaluate.ts:
--------------------------------------------------------------------------------
1 | const Evaluate = {
2 | "请对本次服务进行评价": "請對本次服務進行評價",
3 | "提交评价": "提交評價",
4 | "服务评价工具": "服務評價工具",
5 | "使用": "使用",
6 | "自定义消息": "自定義消息",
7 | "搭建": "搭建",
8 | "星": "星"
9 | }
10 |
11 | export default Evaluate;
12 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/locales/zh_tw/words.ts:
--------------------------------------------------------------------------------
1 | const Words = {
2 | "常用语-快捷回复工具": "常用語-快捷回覆工具",
3 | "在吗?在吗?在吗?重要的话说三遍。": "在嗎?在嗎?在嗎?重要的話說三遍。",
4 | "好久没聊天了,快来和我说说话~": "好久沒聊天了,快來和我說說話~",
5 | "好的,就这么说定了。": "好的,就這麼說定了。",
6 | "感恩的心,感谢有你。": "感恩的心,感謝有你。",
7 | "糟糕!是心动的感觉!": "糟糕!是心動的感覺!",
8 | "心疼地抱抱自己,我太难了!": "心疼地抱抱自己,我太難了!",
9 | "没关系,别在意,事情过去就过去了。": "沒關係,別在意,事情過去就過去了。",
10 | "早上好,今天也是让人期待的一天呢!": "早上好,今天也是讓人期待的一天呢!",
11 | "熬夜有什么用,又没人陪你聊天,早点休息吧。": "熬夜有什麼用,又沒人陪你聊天,早點休息吧。"
12 | }
13 |
14 | export default Words;
15 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/plugins/extension-server/callkit.ts:
--------------------------------------------------------------------------------
1 | export default class CallkitPluginServer {}
2 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/plugins/plugin-components/message-customer/index.ts:
--------------------------------------------------------------------------------
1 | import {
2 | isCustomerServicePluginMessage,
3 | isMessageInvisible as isCustomServiceMessageInvisible,
4 | } from '@tencentcloud/tui-customer-service-plugin';
5 | export { isCustomerServicePluginMessage, isCustomServiceMessageInvisible };
6 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/plugins/plugin-components/message-customer/message-customer-service.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
14 |
17 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/utils/enableSampleTaskStatus.ts:
--------------------------------------------------------------------------------
1 | import { TUIStore, StoreName } from "@tencentcloud/chat-uikit-engine";
2 | export function enableSampleTaskStatus(taskKey: string) {
3 | const tasks = TUIStore.getData(StoreName.APP, "tasks");
4 | if (taskKey in tasks && !tasks[taskKey]) {
5 | tasks[taskKey] = true;
6 | TUIStore.update(StoreName.APP, "tasks", tasks);
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/utils/env.ts:
--------------------------------------------------------------------------------
1 | import { getPlatform } from '@tencentcloud/universal-api';
2 |
3 | declare const uni: any;
4 |
5 | export const isPC = getPlatform() === 'pc';
6 |
7 | export const isH5 = getPlatform() === 'h5';
8 |
9 | export const isWeChat = getPlatform() === 'wechat';
10 |
11 | export const isApp = getPlatform() === 'app';
12 |
13 | export const isUniFrameWork = typeof uni !== 'undefined';
14 |
15 | // H5, mini programs, and apps are all considered mobile.
16 | // If you need to unify the mobile UI style, you can directly use isMobile to control
17 | export const isMobile = isH5 || isWeChat || isApp;
18 |
--------------------------------------------------------------------------------
/Vue2/TUIKit/utils/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./type-check";
2 |
--------------------------------------------------------------------------------
/Vue3/Demo/.eslintignore:
--------------------------------------------------------------------------------
1 | src/TUIKit/TUIPlugin/TUICallKit/*
2 |
--------------------------------------------------------------------------------
/Vue3/Demo/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | package-lock.json
3 | pnpm-lock.yaml
4 |
5 | lerna-debug.log
6 | pnpm-debug.log
7 | npm-debug.log*
8 | yarn-debug.log*
9 | yarn-error.log*
10 |
11 | .DS_Store
12 | .idea
13 | .vscode
14 |
15 | dist
16 |
17 | # production
18 | esm
19 | lib
20 | .docz
21 | .pnp
22 | .pnp.js
23 |
24 | .prettierrc.json
25 |
--------------------------------------------------------------------------------
/Vue3/Demo/auto-imports.d.ts:
--------------------------------------------------------------------------------
1 | /* eslint-disable */
2 | /* prettier-ignore */
3 | // @ts-nocheck
4 | // noinspection JSUnusedGlobalSymbols
5 | // Generated by unplugin-auto-import
6 | export {}
7 | declare global {
8 |
9 | }
10 |
--------------------------------------------------------------------------------
/Vue3/Demo/env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | declare module 'qs'
3 |
--------------------------------------------------------------------------------
/Vue3/Demo/public/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/Demo/public/favicon.png
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/.npmignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | package-lock.json
3 | pnpm-lock.yaml
4 | dist
5 | **/dist/
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/.npmrc:
--------------------------------------------------------------------------------
1 | auto-install-peers=true
2 | strict-peer-dependencies=false
3 | # shamefully-hoist=true
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/assets/icon/call.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/Demo/src/TUIKit/assets/icon/call.png
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/assets/icon/camera-uni.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/Demo/src/TUIKit/assets/icon/camera-uni.png
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/assets/icon/close-image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/Demo/src/TUIKit/assets/icon/close-image.png
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/assets/icon/convertText_en.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/assets/icon/d-right-arrow.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/assets/icon/down-icon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/assets/icon/downaload-image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/Demo/src/TUIKit/assets/icon/downaload-image.png
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/assets/icon/face-uni.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/Demo/src/TUIKit/assets/icon/face-uni.png
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/assets/icon/image-uni.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/Demo/src/TUIKit/assets/icon/image-uni.png
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/assets/icon/input-close.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/assets/icon/left-arrow.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/assets/icon/loading.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/Demo/src/TUIKit/assets/icon/loading.gif
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/assets/icon/loading.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/Demo/src/TUIKit/assets/icon/loading.png
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/assets/icon/minus.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/assets/icon/more-uni.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/Demo/src/TUIKit/assets/icon/more-uni.png
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/assets/icon/more.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/Demo/src/TUIKit/assets/icon/more.png
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/assets/icon/plus.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/assets/icon/right-icon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/assets/icon/star-light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/Demo/src/TUIKit/assets/icon/star-light.png
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/assets/icon/star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/Demo/src/TUIKit/assets/icon/star.png
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/assets/icon/video-play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/Demo/src/TUIKit/assets/icon/video-play.png
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/assets/icon/video-uni.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/Demo/src/TUIKit/assets/icon/video-uni.png
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIChat/emoji-config/custom-emoji.ts:
--------------------------------------------------------------------------------
1 | import { IEmojiGroupList } from '../../../interface';
2 |
3 | /**
4 | * Custom big emoji
5 | */
6 | export const CUSTOM_BIG_EMOJI_URL: string = '';
7 |
8 | export const CUSTOM_BIG_EMOJI_GROUP_LIST: IEmojiGroupList = [];
9 |
10 | /**
11 | * Custom basic emoji
12 | */
13 | export const CUSTOM_BASIC_EMOJI_URL: string = '';
14 |
15 | export const CUSTOM_BASIC_EMOJI_URL_MAPPING: Record = {};
16 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIChat/index.ts:
--------------------------------------------------------------------------------
1 | import TUIChat from './index.vue';
2 | import Server from './server';
3 |
4 | new Server();
5 |
6 | export default TUIChat;
7 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIChat/message-input-toolbar/emoji-picker/index.ts:
--------------------------------------------------------------------------------
1 | import EmojiPicker from './index.vue';
2 | export default EmojiPicker;
3 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIChat/message-input-toolbar/emoji-picker/style/h5.scss:
--------------------------------------------------------------------------------
1 | .emoji-picker-h5 {
2 | width: 100%;
3 |
4 | &-list {
5 | justify-content: space-between;
6 | }
7 |
8 | &-list::after {
9 | content: "";
10 | display: block;
11 | flex: 1 1 auto;
12 | }
13 |
14 | .send-btn {
15 | width: 50px;
16 | height: 30px;
17 | background-color: #55C06A;
18 | position: absolute;
19 | right: 10px;
20 | font-size: 16px;
21 | color: #fff;
22 | text-align: center;
23 | line-height: 30px;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIChat/message-input-toolbar/emoji-picker/style/index.scss:
--------------------------------------------------------------------------------
1 | @import "../../../../../assets/styles/common";
2 | @import "./web";
3 | @import "./h5";
4 |
5 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIChat/message-input-toolbar/evaluate/index.ts:
--------------------------------------------------------------------------------
1 | import Evaluate from './index.vue';
2 | export default Evaluate;
3 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIChat/message-input-toolbar/evaluate/style/index.scss:
--------------------------------------------------------------------------------
1 | @import "./color";
2 | @import "./web";
3 | @import "./h5";
4 | @import "../../../../../assets/styles/common";
5 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIChat/message-input-toolbar/file-upload/index.ts:
--------------------------------------------------------------------------------
1 | import ImageUpload from './index.vue';
2 | export default ImageUpload;
3 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIChat/message-input-toolbar/image-upload/index.ts:
--------------------------------------------------------------------------------
1 | import ImageUpload from './index.vue';
2 | export default ImageUpload;
3 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIChat/message-input-toolbar/index.ts:
--------------------------------------------------------------------------------
1 | import MessageInputToolbar from './index.vue';
2 | export default MessageInputToolbar;
3 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIChat/message-input-toolbar/toolbar-item-container/style/color.scss:
--------------------------------------------------------------------------------
1 | .toolbar-item-container {
2 | &-dialog {
3 | background: #fff;
4 | box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIChat/message-input-toolbar/toolbar-item-container/style/h5.scss:
--------------------------------------------------------------------------------
1 | .toolbar-item-container-h5 {
2 | &-dialog {
3 | position: static !important;
4 | width: 100%;
5 | box-shadow: none;
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIChat/message-input-toolbar/toolbar-item-container/style/index.scss:
--------------------------------------------------------------------------------
1 | @import "../../../../../assets/styles/common";
2 | @import "./color";
3 | @import "./web";
4 | @import "./h5";
5 | @import "./uni";
6 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIChat/message-input-toolbar/user-selector/index.ts:
--------------------------------------------------------------------------------
1 | import UserSelector from './index.vue';
2 | export default UserSelector;
3 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIChat/message-input-toolbar/video-upload/index.ts:
--------------------------------------------------------------------------------
1 | import ImageUpload from './index.vue';
2 | export default ImageUpload;
3 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIChat/message-input-toolbar/words/index.ts:
--------------------------------------------------------------------------------
1 | import Words from "./index.vue";
2 | export default Words;
3 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIChat/message-input-toolbar/words/style/color.scss:
--------------------------------------------------------------------------------
1 | .words {
2 | background-color: #ffffff;
3 | &-header {
4 | &-close {
5 | color: #3370ff;
6 | }
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIChat/message-input-toolbar/words/style/index.scss:
--------------------------------------------------------------------------------
1 | @import url("../../../../../assets/styles/common.scss");
2 | @import "./color.scss";
3 | @import "./web.scss";
4 | @import "./h5.scss";
5 |
6 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIChat/message-input/index.ts:
--------------------------------------------------------------------------------
1 | import MessageInput from './index.vue';
2 | export default MessageInput;
3 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIChat/message-list/message-elements/message-stream-markdown/index.ts:
--------------------------------------------------------------------------------
1 | import { IMessageModel } from '@tencentcloud/chat-uikit-engine';
2 |
3 | export function isBotMessage(message: IMessageModel): boolean {
4 | if (!message || !message.ID || !message.from) {
5 | return false;
6 | }
7 |
8 | if (message.from.startsWith('@RBT#') && !message.to.startsWith('@RBT#')) {
9 | return true;
10 | }
11 |
12 | return false;
13 | }
14 |
15 | export * from './index.vue';
16 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIChat/message-list/message-elements/message-stream-markdown/operation/index.ts:
--------------------------------------------------------------------------------
1 | export * from './index.vue';
2 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIChat/message-list/message-elements/message-stream-markdown/operation/type.ts:
--------------------------------------------------------------------------------
1 | /** type & interface */
2 | export enum IOperationType {
3 | Copy = 'copy',
4 | // Retry is not supported now
5 | // Retry = 'retry',
6 | }
7 | export interface IOperation {
8 | key: IOperationType;
9 | name: string;
10 | icon: string;
11 | isDisabled: boolean;
12 | onClick: (e: Event, key: IOperationType) => void;
13 | }
14 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIChat/message-list/style/color.scss:
--------------------------------------------------------------------------------
1 | .tui-chat {
2 | .tui-message-list {
3 | .message-more {
4 | color: #999;
5 | cursor: pointer;
6 | }
7 | }
8 |
9 | .image-dialog {
10 | background: rgba(0, 0, 0, 0.6);
11 |
12 | header {
13 | background: rgba(0,0,0,0.49);
14 | }
15 | }
16 | }
17 |
18 | .tui-chat-h5 {
19 | .tui-chat-header {
20 | background: #FFF;
21 | }
22 |
23 | .tui-chat-footer {
24 | background: #FFF;
25 |
26 | .input {
27 | input {
28 | background: #F4F5F9;
29 | }
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIChat/message-list/style/h5.scss:
--------------------------------------------------------------------------------
1 | .tui-chat-h5 {
2 | flex: 1;
3 | position: static;
4 |
5 | .tui-chat-main {
6 | .tui-message-list {
7 | height: 100%;
8 | }
9 |
10 | .message-more {
11 | color: #999;
12 | cursor: pointer;
13 | font-size: 14px;
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIChat/message-list/style/index.scss:
--------------------------------------------------------------------------------
1 | @import "../../../../assets/styles/common";
2 | @import "./color";
3 | @import "./web";
4 | @import "./h5";
5 |
6 | :not(not) {
7 | display: flex;
8 | flex-direction: column;
9 | box-sizing: border-box;
10 | min-width: 0;
11 | }
12 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIChat/offlinePushInfoManager/index.ts:
--------------------------------------------------------------------------------
1 | import OfflinePushInfoManager from './offlinePushInfoManager';
2 |
3 | export * from './const';
4 | export * from './interface';
5 |
6 | export default OfflinePushInfoManager.getInstance();
7 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIChat/offlinePushInfoManager/info.ts:
--------------------------------------------------------------------------------
1 | import { IChatOfflinePushInfo, ICallOfflinePushInfo } from './interface';
2 |
3 | export const chatOfflinePushInfo: IChatOfflinePushInfo = {
4 | androidInfo: {},
5 | apnsInfo: {},
6 | };
7 |
8 | export const callOfflinePushInfo: ICallOfflinePushInfo = {};
9 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIChat/style/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../../assets/styles/common';
2 | @import './web';
3 | @import './h5';
4 | @import './uni';
5 | @import './wx';
6 |
7 | :not(not) {
8 | display: flex;
9 | flex-direction: column;
10 | box-sizing: border-box;
11 | min-width: 0;
12 | }
13 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIChat/style/uni.scss:
--------------------------------------------------------------------------------
1 | .tui-chat-uni {
2 | &-message-input {
3 | max-height: 370px;
4 | padding: 10px;
5 | }
6 |
7 | &-message-input-toolbar {
8 | z-index: 100;
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIChat/style/wx.scss:
--------------------------------------------------------------------------------
1 | .tui-chat-wx {
2 | &-message-input {
3 | padding: 0;
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIChat/utils/wordsList.ts:
--------------------------------------------------------------------------------
1 | export const wordsList = [
2 | {
3 | value: '在吗?在吗?在吗?重要的话说三遍。',
4 | },
5 | {
6 | value: '好久没聊天了,快来和我说说话~',
7 | },
8 | {
9 | value: '好的,就这么说定了。',
10 | },
11 | {
12 | value: '感恩的心,感谢有你。',
13 | },
14 | {
15 | value: '糟糕!是心动的感觉!',
16 | },
17 | {
18 | value: '心疼地抱抱自己,我太难了!',
19 | },
20 | {
21 | value: '没关系,别在意,事情过去就过去了。',
22 | },
23 | {
24 | value: '早上好,今天也是让人期待的一天呢!',
25 | },
26 | {
27 | value: '熬夜有什么用,又没人陪你聊天,早点休息吧。',
28 | },
29 | ];
30 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIContact/contact-info/index.ts:
--------------------------------------------------------------------------------
1 | import ContactInfo from './index.vue';
2 |
3 | export default ContactInfo;
4 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIContact/contact-info/style/index.scss:
--------------------------------------------------------------------------------
1 | @import "./web";
2 | @import "./h5";
3 | @import "../../../../assets/styles/common";
4 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIContact/contact-list/index.ts:
--------------------------------------------------------------------------------
1 | import ContactList from './index.vue';
2 |
3 | export default ContactList;
4 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIContact/contact-list/style/h5.scss:
--------------------------------------------------------------------------------
1 | .tui-contact-list-h5 {
2 | .tui-contact-list-item {
3 | .tui-contact-list-item-header {
4 | cursor: none;
5 | }
6 |
7 | .tui-contact-list-item-header:active,
8 | .tui-contact-list-item-main-item:active {
9 | background-color: #eef0f3;
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIContact/contact-list/style/index.scss:
--------------------------------------------------------------------------------
1 | @import './web';
2 | @import './h5';
3 | @import '../../../../assets/styles/common';
4 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIContact/contact-search/index.ts:
--------------------------------------------------------------------------------
1 | import ContactHeader from './index.vue';
2 | export default ContactHeader;
3 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIContact/index.ts:
--------------------------------------------------------------------------------
1 | import TUIContact from './index.vue';
2 | import Server from './server';
3 | Server.getInstance();
4 |
5 | export default TUIContact;
6 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIContact/select-friend/index.ts:
--------------------------------------------------------------------------------
1 | import SelectFriend from './index.vue';
2 |
3 | export default SelectFriend;
4 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIConversation/conversation-header/index.ts:
--------------------------------------------------------------------------------
1 | import ConversationHeader from './index.vue';
2 |
3 | export default ConversationHeader;
4 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIConversation/conversation-list/style/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../../../assets/styles/common';
2 | @import './color';
3 | @import './web';
4 | @import './h5';
5 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIConversation/conversation-network/index.ts:
--------------------------------------------------------------------------------
1 | import ConversationNetwork from './index.vue';
2 |
3 | export default ConversationNetwork;
4 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIConversation/index.ts:
--------------------------------------------------------------------------------
1 | import TUIConversation from "./index.vue";
2 | import TUIConversationServer from "./server";
3 | new TUIConversationServer();
4 |
5 | export default TUIConversation;
6 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIConversation/style/color.scss:
--------------------------------------------------------------------------------
1 | .tui-conversation {
2 | background: #fff;
3 | }
4 |
5 | .network {
6 | &-content {
7 | font-family: PingFangSC-Regular;
8 | font-weight: 400;
9 | color: #e54545;
10 | letter-spacing: 0;
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIConversation/style/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../../assets/styles/common';
2 | @import './web';
3 | @import './color';
4 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIGroup/create-group/index.ts:
--------------------------------------------------------------------------------
1 | import CreateGroup from './index.vue';
2 |
3 | export default CreateGroup;
4 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIGroup/create-group/style/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../../../assets/styles/common';
2 | @import './color';
3 | @import './web';
4 | @import './h5';
5 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIGroup/index.ts:
--------------------------------------------------------------------------------
1 | import TUIGroup from './index.vue';
2 | import Server from './server';
3 |
4 | Server.getInstance();
5 |
6 | export default TUIGroup;
7 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIGroup/manage-group/index.ts:
--------------------------------------------------------------------------------
1 | import ManageGroup from './index.vue';
2 |
3 | export default ManageGroup;
4 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIGroup/manage-group/style/h5.scss:
--------------------------------------------------------------------------------
1 | .deleted-dialog {
2 | padding: 20%;
3 | }
4 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUIGroup/select-member/index.ts:
--------------------------------------------------------------------------------
1 | import SelectMember from './index.vue';
2 |
3 | export default SelectMember;
4 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUINotification/interface.ts:
--------------------------------------------------------------------------------
1 | export interface ITUINotification {
2 | showPreviews: boolean;
3 | allowNotifications: boolean;
4 | notificationTitle: string;
5 | notificationIcon: string;
6 | }
7 |
8 | export interface INotificationConstructorParams {
9 | showPreviews?: boolean;
10 | allowNotifications?: boolean;
11 | notificationTitle?: string;
12 | notificationIcon?: string;
13 | }
14 |
15 | export type NotificationType = 'chat' | 'call';
16 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUISearch/index.ts:
--------------------------------------------------------------------------------
1 | import TUISearch from './index.vue';
2 | import Server from './server';
3 | new Server();
4 |
5 | export default TUISearch;
6 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUISearch/search-container/index.ts:
--------------------------------------------------------------------------------
1 | import SearchContainer from './index.vue';
2 | export default SearchContainer;
3 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUISearch/search-container/style/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../../../assets/styles/common';
2 | @import './web';
3 | @import './h5';
4 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUISearch/search-input/index.ts:
--------------------------------------------------------------------------------
1 | import SearchInput from './index.vue';
2 | export default SearchInput;
3 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUISearch/search-more/index.ts:
--------------------------------------------------------------------------------
1 | import SearchMore from './index.vue';
2 |
3 | export default SearchMore;
4 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUISearch/search-result/index.ts:
--------------------------------------------------------------------------------
1 | import SearchResult from './index.vue';
2 | export default SearchResult;
3 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUISearch/search-result/search-result-default/index.ts:
--------------------------------------------------------------------------------
1 | import SearchResultDefault from './index.vue';
2 | export default SearchResultDefault;
3 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUISearch/search-result/search-result-item/style/h5.scss:
--------------------------------------------------------------------------------
1 | .search-result-list-item-h5 {
2 | padding: 10px 0;
3 | border-radius: 0;
4 |
5 | .bubble {
6 | .bubble-left {
7 | .bubble-left-avatar {
8 | width: 48px;
9 | height: 48px;
10 | }
11 |
12 | .bubble-main {
13 | .bubble-main-name {
14 | color: #333;
15 | font-family: "PingFang SC", sans-serif;
16 | font-size: 14px;
17 | font-weight: 400;
18 | letter-spacing: 0;
19 | text-align: left;
20 | }
21 | }
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUISearch/search-result/search-result-item/style/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../../../../assets/styles/common';
2 | @import './web';
3 | @import './h5';
4 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUISearch/search-result/search-result-loading/index.ts:
--------------------------------------------------------------------------------
1 | import SearchResultLoading from './index.vue';
2 | export default SearchResultLoading;
3 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUISearch/search-result/style/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../../../assets/styles/common';
2 | @import './web';
3 | @import './h5';
4 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUISearch/style/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../../assets/styles/common';
2 | @import './web';
3 | @import './h5';
4 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/TUISearch/style/web.scss:
--------------------------------------------------------------------------------
1 | .tui-search {
2 | &-main-global {
3 | width: 100%;
4 | height: fit-content;
5 | }
6 |
7 | &-main-conversation {
8 | width: 100%;
9 | height: 100%;
10 | background: #fff;
11 | box-shadow: 0 1px 10px 0 rgba(2,16,43,0.15);
12 | }
13 |
14 | .tui-search-global {
15 | &-header {
16 | display: flex;
17 | flex-direction: row;
18 | justify-content: center;
19 | align-items: center;
20 | }
21 | }
22 |
23 | .tui-search-conversation {
24 | width: 100%;
25 | height: 100%;
26 | overflow: hidden;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/common/BottomPopup/index.ts:
--------------------------------------------------------------------------------
1 | import BottomPopup from './index.vue';
2 |
3 | export default BottomPopup;
4 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/common/BottomPopup/style/index.scss:
--------------------------------------------------------------------------------
1 | @import "../../../../assets/styles/common";
2 | @import "./h5";
3 | @import "./modal";
4 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/common/BottomPopup/style/modal.scss:
--------------------------------------------------------------------------------
1 | .bottom-popup-modal {
2 | background: rgba(0, 0, 0, 0.5);
3 | }
4 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/common/DatePicker/date-picker.ts:
--------------------------------------------------------------------------------
1 | import { Dayjs } from 'dayjs';
2 |
3 | export type DateCellType =
4 | | 'normal'
5 | | 'today'
6 | | 'week'
7 | | 'next-month'
8 | | 'prev-month';
9 | export interface DateCell {
10 | text?: number;
11 | disabled?: boolean;
12 | isSelected?: boolean;
13 | isSelectedStart?: boolean;
14 | isSelectedEnd?: boolean;
15 | isInRange?: boolean;
16 | isCurrent?: boolean;
17 | date: typeof Dayjs;
18 | type?: DateCellType;
19 | }
20 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/common/DatePicker/index.ts:
--------------------------------------------------------------------------------
1 | import DatePicker from './index.vue';
2 | export default DatePicker;
3 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/common/Dialog/index.ts:
--------------------------------------------------------------------------------
1 | import Dialog from './index.vue';
2 |
3 | export default Dialog;
4 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/common/Dialog/style/dialog.scss:
--------------------------------------------------------------------------------
1 | @import '../../../../assets/styles/common';
2 | @import "./color";
3 | @import "./web";
4 | @import "./h5";
5 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/common/Drag/index.ts:
--------------------------------------------------------------------------------
1 | import Drag from './index.vue';
2 | export default Drag;
3 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/common/ImagePreviewer/index.ts:
--------------------------------------------------------------------------------
1 | import ImagePreviewer from './index.vue';
2 |
3 | export default ImagePreviewer;
4 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/common/Loading/index.ts:
--------------------------------------------------------------------------------
1 | import Loading from './index.vue';
2 | export default Loading;
3 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/common/SelectUser/index.ts:
--------------------------------------------------------------------------------
1 | import SelectUser from './index.vue';
2 |
3 | export default SelectUser;
4 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/common/SwitchBar/index.ts:
--------------------------------------------------------------------------------
1 | import SwitchBar from './index.vue';
2 | export default SwitchBar;
3 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/common/Toast/type.ts:
--------------------------------------------------------------------------------
1 | const TOAST_TYPE = {
2 | SUCCESS: 'success',
3 | WARNING: 'warning',
4 | ERROR: 'error',
5 | NORMAL: 'normal',
6 | };
7 |
8 | export default TOAST_TYPE;
9 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/common/Transfer/index.ts:
--------------------------------------------------------------------------------
1 | import Transfer from './index.vue';
2 | export default Transfer;
3 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/common/Transfer/style/transfer.scss:
--------------------------------------------------------------------------------
1 | @import '../../../../assets/styles/common';
2 | @import "./color";
3 | @import "./web";
4 | @import "./h5";
5 |
6 | .icon-unselected {
7 | width: 18px;
8 | height: 18px;
9 | background: #FFF;
10 | border: 1px solid #DDD;
11 | border-radius: 11px;
12 | box-sizing: border-box;
13 | }
14 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/components/index.ts:
--------------------------------------------------------------------------------
1 | import TUIChat from "./TUIChat";
2 | import TUIConversation from "./TUIConversation";
3 | import TUISearch from "./TUISearch";
4 | import TUIContact from "./TUIContact";
5 | import TUIGroup from "./TUIGroup";
6 |
7 | const TUIComponents = {
8 | TUIChat,
9 | TUIConversation,
10 | TUIContact,
11 | TUISearch,
12 | TUIGroup
13 | };
14 |
15 | export default TUIComponents;
16 |
17 | export {
18 | TUIChat,
19 | TUIConversation,
20 | TUIContact,
21 | TUISearch,
22 | TUIGroup,
23 | };
24 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/debug/index.d.ts:
--------------------------------------------------------------------------------
1 | export function genTestUserSig({ SDKAppID: number, secretKey: string, userID: string }): any;
2 | export const EXPIRETIME: number;
3 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/debug/index.js:
--------------------------------------------------------------------------------
1 | export * from "./GenerateTestUserSig";
2 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/index.ts:
--------------------------------------------------------------------------------
1 | import { genTestUserSig } from './debug';
2 | import Server from './server';
3 | import TUIComponents, {
4 | TUIChat,
5 | TUIConversation,
6 | TUIContact,
7 | TUISearch,
8 | TUIGroup,
9 | } from './components';
10 | import TUIKit from './index.vue';
11 | import { hideTUIChatFeatures } from './components/TUIChat/config';
12 |
13 | const TUIChatKit = new Server();
14 | TUIChatKit.init();
15 |
16 | export {
17 | TUIKit,
18 | TUIChatKit,
19 | TUIComponents,
20 | TUIChat,
21 | TUIConversation,
22 | TUIContact,
23 | TUISearch,
24 | TUIGroup,
25 | hideTUIChatFeatures,
26 | genTestUserSig,
27 | };
28 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/locales/en/component.ts:
--------------------------------------------------------------------------------
1 | const component = {
2 | "取消": "Cancel",
3 | "完成": "Done",
4 | "已选中": "Selected",
5 | "人": "",
6 | "保存": "Save",
7 | "请输入userID": "Enter a userID",
8 | "请输入groupID": "Enter a groupID",
9 | "确定": "submit",
10 | "全选": "All",
11 | "已在群聊中": "exists",
12 | "查看更多": "More",
13 | "图片 url 不存在": "Image url does not exist",
14 | "已取消": "Cancelled",
15 | "获取权限失败": "Failed to obtain permission",
16 | "已保存至相册": "Saved to album",
17 | "图片下载失败": "Image download failed",
18 | "暂不支持下载此类型图片": "Downloading this type of pictures is not supported yet",
19 | }
20 |
21 | export default component;
22 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/locales/en/emoji.ts:
--------------------------------------------------------------------------------
1 | import { default as Emoji } from '../../components/TUIChat/emoji-config/locales/en';
2 | export default Emoji;
3 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/locales/en/evaluate.ts:
--------------------------------------------------------------------------------
1 | const Evaluate = {
2 | "请对本次服务进行评价": "Please rate this service",
3 | "提交评价": "Feedback",
4 | "服务评价工具": "Service rate tool",
5 | "使用": "Build with",
6 | "自定义消息": "Custom message",
7 | "搭建": "",
8 | "星": "Star"
9 | }
10 |
11 | export default Evaluate;
12 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/locales/index.ts:
--------------------------------------------------------------------------------
1 |
2 | import en from './en';
3 | import zh_cn from './zh_cn';
4 | import zh_tw from './zh_tw';
5 |
6 | export interface ILanguageResources {
7 | [key: string]: string | ILanguageResources;
8 | }
9 |
10 | const messages: Record = {
11 | ...en,
12 | ...zh_cn,
13 | ...zh_tw,
14 | };
15 |
16 | export default messages;
17 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/locales/zh_cn/TUIConversation.ts:
--------------------------------------------------------------------------------
1 | const TUIConversation = {
2 | "发起会话": "发起会话",
3 | "发起单聊": "发起单聊",
4 | "发起群聊": "发起群聊",
5 | "请输入userID": "请输入userID",
6 | "删除会话": "删除会话",
7 | "删除后,将清空该聊天的消息记录": "删除后,将清空该聊天的消息记录",
8 | "删除后,将清空该群聊的消息记录": "删除后,将清空该群聊的消息记录",
9 | "置顶会话": "置顶会话",
10 | "取消置顶": "取消置顶",
11 | "消息免打扰": "消息免打扰",
12 | "取消免打扰": "取消免打扰",
13 | "系统通知": "系统通知",
14 | "有人@我": "有人@我",
15 | "@所有人": "@所有人",
16 | "条": "条",
17 | "我": "我",
18 | "网络异常,请您检查网络设置": "网络异常,请您检查网络设置",
19 | "您已被群管理员移出群聊": "您已被群管理员移出群聊",
20 | "该群聊已被解散": "该群聊已被解散",
21 | "您已退出该群聊": "您已退出该群聊",
22 | }
23 |
24 | export default TUIConversation;
25 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/locales/zh_cn/component.ts:
--------------------------------------------------------------------------------
1 | const components = {
2 | "取消": "取消",
3 | "完成": "完成",
4 | "已选中": "已选中",
5 | "人": "人",
6 | "保存": "保存",
7 | "请输入userID": "请输入userID",
8 | "请输入groupID": "请输入groupID",
9 | "确定": "确定",
10 | "全选": "全选",
11 | "已在群聊中": "已在群聊中",
12 | "查看更多": "查看更多",
13 | "图片 url 不存在": "图片 url 不存在",
14 | "已取消": "已取消",
15 | "获取权限失败": "获取权限失败",
16 | "已保存至相册": "已保存至相册",
17 | "图片下载失败": "图片下载失败",
18 | "暂不支持下载此类型图片": "暂不支持下载此类型图片",
19 | }
20 |
21 | export default components;
22 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/locales/zh_cn/emoji.ts:
--------------------------------------------------------------------------------
1 | import { default as Emoji } from '../../components/TUIChat/emoji-config/locales/zh_cn';
2 | export default Emoji;
3 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/locales/zh_cn/evaluate.ts:
--------------------------------------------------------------------------------
1 | const Evaluate = {
2 | "请对本次服务进行评价": "请对本次服务进行评价",
3 | "提交评价": "提交评价",
4 | "服务评价工具": "服务评价工具",
5 | "使用": "使用",
6 | "自定义消息": "自定义消息",
7 | "搭建": "搭建",
8 | "星": "星"
9 | }
10 |
11 | export default Evaluate;
12 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/locales/zh_cn/words.ts:
--------------------------------------------------------------------------------
1 | const Words = {
2 | "常用语-快捷回复工具": "常用语-快捷回复工具",
3 | "在吗?在吗?在吗?重要的话说三遍。": "在吗?在吗?在吗?重要的话说三遍。",
4 | "好久没聊天了,快来和我说说话~": "好久没聊天了,快来和我说说话~",
5 | "好的,就这么说定了。": "好的,就这么说定了。",
6 | "感恩的心,感谢有你。": "感恩的心,感谢有你。",
7 | "糟糕!是心动的感觉!": "糟糕!是心动的感觉!",
8 | "心疼地抱抱自己,我太难了!": "心疼地抱抱自己,我太难了!",
9 | "没关系,别在意,事情过去就过去了。": "没关系,别在意,事情过去就过去了。",
10 | "早上好,今天也是让人期待的一天呢!": "早上好,今天也是让人期待的一天呢!",
11 | "熬夜有什么用,又没人陪你聊天,早点休息吧。": "熬夜有什么用,又没人陪你聊天,早点休息吧。"
12 | }
13 |
14 | export default Words;
15 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/locales/zh_tw/TUIConversation.ts:
--------------------------------------------------------------------------------
1 | const TUIConversation = {
2 | "发起会话": "發起會話",
3 | "发起单聊": "發起單聊",
4 | "发起群聊": "發起群聊",
5 | "请输入userID": "請輸入userID",
6 | "删除会话": "刪除會話",
7 | "删除后,将清空该聊天的消息记录": "刪除後,將清空該聊天的消息記錄",
8 | "删除后,将清空该群聊的消息记录": "刪除後,將清空該群聊的消息記錄",
9 | "置顶会话": "置頂會話",
10 | "取消置顶": "取消置頂",
11 | "消息免打扰": "消息免打擾",
12 | "取消免打扰": "取消免打擾",
13 | "系统通知": "系統通知",
14 | "有人@我": "有人@我",
15 | "@所有人": "@所有人",
16 | "条": "條",
17 | "我": "我",
18 | "网络异常,请您检查网络设置": "網絡異常,請您檢查網絡設置",
19 | "您已被群管理员移出群聊": "您已被群管理員移出群聊",
20 | "该群聊已被解散": "該群聊已被解散",
21 | "您已退出该群聊": "您已退出該群聊",
22 | }
23 |
24 | export default TUIConversation;
25 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/locales/zh_tw/component.ts:
--------------------------------------------------------------------------------
1 | const components = {
2 | "取消": "取消",
3 | "完成": "完成",
4 | "已选中": "已選中",
5 | "人": "人",
6 | "保存": "保存",
7 | "请输入userID": "請輸入userID",
8 | "请输入groupID": "請輸入groupID",
9 | "确定": "確定",
10 | "全选": "全選",
11 | "已在群聊中": "已在群聊中",
12 | "查看更多": "查看更多",
13 | "图片 url 不存在": "圖片 url 不存在",
14 | "已取消": "已取消",
15 | "获取权限失败": "獲取權限失敗",
16 | "已保存至相册": "已保存至相冊",
17 | "图片下载失败": "圖片下載失敗",
18 | "暂不支持下载此类型图片": "暫不支持下載此類型圖片",
19 | };
20 |
21 | export default components;
22 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/locales/zh_tw/emoji.ts:
--------------------------------------------------------------------------------
1 | import { default as Emoji } from '../../components/TUIChat/emoji-config/locales/zh_tw';
2 | export default Emoji;
3 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/locales/zh_tw/evaluate.ts:
--------------------------------------------------------------------------------
1 | const Evaluate = {
2 | "请对本次服务进行评价": "請對本次服務進行評價",
3 | "提交评价": "提交評價",
4 | "服务评价工具": "服務評價工具",
5 | "使用": "使用",
6 | "自定义消息": "自定義消息",
7 | "搭建": "搭建",
8 | "星": "星"
9 | }
10 |
11 | export default Evaluate;
12 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/locales/zh_tw/words.ts:
--------------------------------------------------------------------------------
1 | const Words = {
2 | "常用语-快捷回复工具": "常用語-快捷回覆工具",
3 | "在吗?在吗?在吗?重要的话说三遍。": "在嗎?在嗎?在嗎?重要的話說三遍。",
4 | "好久没聊天了,快来和我说说话~": "好久沒聊天了,快來和我說說話~",
5 | "好的,就这么说定了。": "好的,就這麼說定了。",
6 | "感恩的心,感谢有你。": "感恩的心,感謝有你。",
7 | "糟糕!是心动的感觉!": "糟糕!是心動的感覺!",
8 | "心疼地抱抱自己,我太难了!": "心疼地抱抱自己,我太難了!",
9 | "没关系,别在意,事情过去就过去了。": "沒關係,別在意,事情過去就過去了。",
10 | "早上好,今天也是让人期待的一天呢!": "早上好,今天也是讓人期待的一天呢!",
11 | "熬夜有什么用,又没人陪你聊天,早点休息吧。": "熬夜有什麼用,又沒人陪你聊天,早點休息吧。"
12 | }
13 |
14 | export default Words;
15 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/plugins/extension-server/callkit.ts:
--------------------------------------------------------------------------------
1 | export default class CallkitPluginServer {}
2 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/plugins/plugin-components/message-customer/index.ts:
--------------------------------------------------------------------------------
1 | import {
2 | isCustomerServicePluginMessage,
3 | isMessageInvisible as isCustomServiceMessageInvisible,
4 | } from '@tencentcloud/tui-customer-service-plugin';
5 | export { isCustomerServicePluginMessage, isCustomServiceMessageInvisible };
6 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/plugins/plugin-components/message-customer/message-customer-service.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
14 |
17 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/utils/enableSampleTaskStatus.ts:
--------------------------------------------------------------------------------
1 | import { TUIStore, StoreName } from "@tencentcloud/chat-uikit-engine";
2 | export function enableSampleTaskStatus(taskKey: string) {
3 | const tasks = TUIStore.getData(StoreName.APP, "tasks");
4 | if (taskKey in tasks && !tasks[taskKey]) {
5 | tasks[taskKey] = true;
6 | TUIStore.update(StoreName.APP, "tasks", tasks);
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/utils/env.ts:
--------------------------------------------------------------------------------
1 | import { getPlatform } from '@tencentcloud/universal-api';
2 |
3 | declare const uni: any;
4 |
5 | export const isPC = getPlatform() === 'pc';
6 |
7 | export const isH5 = getPlatform() === 'h5';
8 |
9 | export const isWeChat = getPlatform() === 'wechat';
10 |
11 | export const isApp = getPlatform() === 'app';
12 |
13 | export const isUniFrameWork = typeof uni !== 'undefined';
14 |
15 | // H5, mini programs, and apps are all considered mobile.
16 | // If you need to unify the mobile UI style, you can directly use isMobile to control
17 | export const isMobile = isH5 || isWeChat || isApp;
18 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/TUIKit/utils/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./type-check";
2 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/assets/icon/arrow-down-line.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/Demo/src/assets/icon/arrow-down-line.png
--------------------------------------------------------------------------------
/Vue3/Demo/src/assets/icon/arrow-down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/Demo/src/assets/icon/arrow-down.png
--------------------------------------------------------------------------------
/Vue3/Demo/src/assets/icon/calendar.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/assets/icon/global.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/Demo/src/assets/icon/global.png
--------------------------------------------------------------------------------
/Vue3/Demo/src/assets/icon/menu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/Demo/src/assets/icon/menu.png
--------------------------------------------------------------------------------
/Vue3/Demo/src/assets/icon/setting.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/Demo/src/assets/icon/setting.png
--------------------------------------------------------------------------------
/Vue3/Demo/src/assets/image/create-group.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/Demo/src/assets/image/create-group.png
--------------------------------------------------------------------------------
/Vue3/Demo/src/assets/image/h5/login-bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/Demo/src/assets/image/h5/login-bg.png
--------------------------------------------------------------------------------
/Vue3/Demo/src/assets/image/login-background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/Demo/src/assets/image/login-background.png
--------------------------------------------------------------------------------
/Vue3/Demo/src/locales/en/index.ts:
--------------------------------------------------------------------------------
1 | import Login from './login.json'
2 | import Home from './home.json'
3 | import Profile from './profile.json'
4 |
5 | const messages = {
6 | en: {
7 | 当前语言: 'English',
8 | 即时通信: 'Chat',
9 | 即时通信IM: 'Chat',
10 | 社交娱乐: 'Entertaining & Socializing',
11 | 腾讯云: 'Tencent Cloud',
12 | 使用指引: 'User Guide',
13 | Login,
14 | Home,
15 | Profile
16 | }
17 | }
18 |
19 | export default messages
20 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/locales/zh_cn/index.ts:
--------------------------------------------------------------------------------
1 | import Login from './login.json';
2 | import Home from './home.json';
3 | import Profile from './profile.json';
4 |
5 | const messages = {
6 | zh_cn: {
7 | 当前语言: '简体中文',
8 | 即时通信: '即时通信',
9 | 即时通信IM: '即时通信IM',
10 | 社交娱乐: '社交娱乐',
11 | 腾讯云: '腾讯云',
12 | 使用指引: '使用指引',
13 | Login,
14 | Home,
15 | Profile
16 | },
17 | };
18 |
19 | export default messages;
20 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/locales/zh_tw/index.ts:
--------------------------------------------------------------------------------
1 | import Login from './login.json';
2 | import Home from './home.json';
3 | import Profile from './profile.json';
4 |
5 | const messages = {
6 | zh_tw: {
7 | 当前语言: '繁體中文',
8 | 即时通信: '即時通信',
9 | 即时通信IM: '即時通信IM',
10 | 社交娱乐: '社交娛樂',
11 | 腾讯云: '騰訊雲',
12 | 使用指引: '使用指引',
13 | Login,
14 | Home,
15 | Profile,
16 | },
17 | };
18 |
19 | export default messages;
20 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/shims-vue.d.ts:
--------------------------------------------------------------------------------
1 | declare module '*.vue' {
2 | import Vue from 'vue'
3 | export default Vue
4 | }
5 |
6 | declare module "@vue/composition-api";
7 |
8 | declare module '*.svg' {
9 | const content: any;
10 | export default content;
11 | }
--------------------------------------------------------------------------------
/Vue3/Demo/src/styles/home.scss:
--------------------------------------------------------------------------------
1 | @import './web/home.scss';
2 | @import './h5/home.scss';
3 | @import "./common.scss";
4 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/styles/login.scss:
--------------------------------------------------------------------------------
1 | @import "./web/login.scss";
2 | @import "./h5/login.scss";
3 | @import "./common.scss";
4 |
--------------------------------------------------------------------------------
/Vue3/Demo/src/styles/profile.scss:
--------------------------------------------------------------------------------
1 | @import "./web/profile.scss";
2 | @import "./h5/profile.scss";
3 | @import "./common.scss";
--------------------------------------------------------------------------------
/Vue3/Demo/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@vue/tsconfig/tsconfig.web.json",
3 | "include": ["env.d.ts", "src/**/*", "src/**/*.vue"],
4 | "exclude": ["node_modules"],
5 | "compilerOptions": {
6 | "baseUrl": ".",
7 | "paths": {
8 | "@/*": ["./src/*"]
9 | },
10 | "preserveValueImports": false,
11 | "importsNotUsedAsValues": "preserve"
12 | },
13 |
14 | "references": [
15 | {
16 | "path": "./tsconfig.node.json"
17 | }
18 | ]
19 | }
20 |
--------------------------------------------------------------------------------
/Vue3/Demo/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@vue/tsconfig/tsconfig.node.json",
3 | "include": ["vite.config.*", "vitest.config.*", "cypress.config.*", "playwright.config.*"],
4 | "compilerOptions": {
5 | "composite": true,
6 | "types": ["node"]
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/.eslintignore:
--------------------------------------------------------------------------------
1 | TUIPlugin/TUICallKit/*
2 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | env: {
4 | node: true,
5 | },
6 | extends: ['plugin:vue/vue3-essential', 'eslint:recommended', '@vue/typescript/recommended'],
7 | parserOptions: {
8 | ecmaVersion: 2020,
9 | },
10 | rules: {
11 | 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
12 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
13 | '@typescript-eslint/no-var-requires': 0,
14 | 'prefer-const': 0,
15 | 'vue/multi-word-component-names': 0,
16 | },
17 | };
18 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/.gitignore:
--------------------------------------------------------------------------------
1 | TUIPlugin/TUICallKit
2 | node_modules
3 | package-lock.json
4 | pnpm-lock.yaml
--------------------------------------------------------------------------------
/Vue3/TUIKit/.npmignore:
--------------------------------------------------------------------------------
1 | TUIPlugin/TUICallKit
2 | node_modules
3 | package-lock.json
4 | pnpm-lock.yaml
--------------------------------------------------------------------------------
/Vue3/TUIKit/assets/icon/call.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/TUIKit/assets/icon/call.png
--------------------------------------------------------------------------------
/Vue3/TUIKit/assets/icon/camera-uni.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/TUIKit/assets/icon/camera-uni.png
--------------------------------------------------------------------------------
/Vue3/TUIKit/assets/icon/close-image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/TUIKit/assets/icon/close-image.png
--------------------------------------------------------------------------------
/Vue3/TUIKit/assets/icon/convertText_en.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/assets/icon/d-right-arrow.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/assets/icon/down-icon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/assets/icon/downaload-image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/TUIKit/assets/icon/downaload-image.png
--------------------------------------------------------------------------------
/Vue3/TUIKit/assets/icon/face-dark.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/assets/icon/face-uni.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/TUIKit/assets/icon/face-uni.png
--------------------------------------------------------------------------------
/Vue3/TUIKit/assets/icon/image-uni.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/TUIKit/assets/icon/image-uni.png
--------------------------------------------------------------------------------
/Vue3/TUIKit/assets/icon/input-close.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/assets/icon/left-arrow.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/assets/icon/loading.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/TUIKit/assets/icon/loading.gif
--------------------------------------------------------------------------------
/Vue3/TUIKit/assets/icon/loading.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/TUIKit/assets/icon/loading.png
--------------------------------------------------------------------------------
/Vue3/TUIKit/assets/icon/minus.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/assets/icon/more-uni.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/TUIKit/assets/icon/more-uni.png
--------------------------------------------------------------------------------
/Vue3/TUIKit/assets/icon/more.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/TUIKit/assets/icon/more.png
--------------------------------------------------------------------------------
/Vue3/TUIKit/assets/icon/plus.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/assets/icon/right-icon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/assets/icon/star-light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/TUIKit/assets/icon/star-light.png
--------------------------------------------------------------------------------
/Vue3/TUIKit/assets/icon/star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/TUIKit/assets/icon/star.png
--------------------------------------------------------------------------------
/Vue3/TUIKit/assets/icon/video-dark.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/assets/icon/video-play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/TUIKit/assets/icon/video-play.png
--------------------------------------------------------------------------------
/Vue3/TUIKit/assets/icon/video-uni.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TencentCloud/chat-uikit-vue/eec7fb8c0eb274005a250a432fb95ec568a57cbf/Vue3/TUIKit/assets/icon/video-uni.png
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIChat/emoji-config/custom-emoji.ts:
--------------------------------------------------------------------------------
1 | import { IEmojiGroupList } from '../../../interface';
2 |
3 | /**
4 | * Custom big emoji
5 | */
6 | export const CUSTOM_BIG_EMOJI_URL: string = '';
7 |
8 | export const CUSTOM_BIG_EMOJI_GROUP_LIST: IEmojiGroupList = [];
9 |
10 | /**
11 | * Custom basic emoji
12 | */
13 | export const CUSTOM_BASIC_EMOJI_URL: string = '';
14 |
15 | export const CUSTOM_BASIC_EMOJI_URL_MAPPING: Record = {};
16 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIChat/index.ts:
--------------------------------------------------------------------------------
1 | import TUIChat from './index.vue';
2 | import Server from './server';
3 |
4 | new Server();
5 |
6 | export default TUIChat;
7 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIChat/message-input-toolbar/emoji-picker/index.ts:
--------------------------------------------------------------------------------
1 | import EmojiPicker from './index.vue';
2 | export default EmojiPicker;
3 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIChat/message-input-toolbar/emoji-picker/style/h5.scss:
--------------------------------------------------------------------------------
1 | .emoji-picker-h5 {
2 | width: 100%;
3 |
4 | &-list {
5 | justify-content: space-between;
6 | }
7 |
8 | &-list::after {
9 | content: "";
10 | display: block;
11 | flex: 1 1 auto;
12 | }
13 |
14 | .send-btn {
15 | width: 50px;
16 | height: 30px;
17 | background-color: #55C06A;
18 | position: absolute;
19 | right: 10px;
20 | font-size: 16px;
21 | color: #fff;
22 | text-align: center;
23 | line-height: 30px;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIChat/message-input-toolbar/emoji-picker/style/index.scss:
--------------------------------------------------------------------------------
1 | @import "../../../../../assets/styles/common";
2 | @import "./web";
3 | @import "./h5";
4 |
5 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIChat/message-input-toolbar/evaluate/index.ts:
--------------------------------------------------------------------------------
1 | import Evaluate from './index.vue';
2 | export default Evaluate;
3 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIChat/message-input-toolbar/evaluate/style/index.scss:
--------------------------------------------------------------------------------
1 | @import "./color";
2 | @import "./web";
3 | @import "./h5";
4 | @import "../../../../../assets/styles/common";
5 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIChat/message-input-toolbar/file-upload/index.ts:
--------------------------------------------------------------------------------
1 | import ImageUpload from './index.vue';
2 | export default ImageUpload;
3 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIChat/message-input-toolbar/image-upload/index.ts:
--------------------------------------------------------------------------------
1 | import ImageUpload from './index.vue';
2 | export default ImageUpload;
3 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIChat/message-input-toolbar/index.ts:
--------------------------------------------------------------------------------
1 | import MessageInputToolbar from './index.vue';
2 | export default MessageInputToolbar;
3 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIChat/message-input-toolbar/toolbar-item-container/style/color.scss:
--------------------------------------------------------------------------------
1 | .toolbar-item-container {
2 | &-dialog {
3 | background: #fff;
4 | box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIChat/message-input-toolbar/toolbar-item-container/style/h5.scss:
--------------------------------------------------------------------------------
1 | .toolbar-item-container-h5 {
2 | &-dialog {
3 | position: static !important;
4 | width: 100%;
5 | box-shadow: none;
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIChat/message-input-toolbar/toolbar-item-container/style/index.scss:
--------------------------------------------------------------------------------
1 | @import "../../../../../assets/styles/common";
2 | @import "./color";
3 | @import "./web";
4 | @import "./h5";
5 | @import "./uni";
6 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIChat/message-input-toolbar/user-selector/index.ts:
--------------------------------------------------------------------------------
1 | import UserSelector from './index.vue';
2 | export default UserSelector;
3 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIChat/message-input-toolbar/video-upload/index.ts:
--------------------------------------------------------------------------------
1 | import ImageUpload from './index.vue';
2 | export default ImageUpload;
3 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIChat/message-input-toolbar/words/index.ts:
--------------------------------------------------------------------------------
1 | import Words from "./index.vue";
2 | export default Words;
3 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIChat/message-input-toolbar/words/style/color.scss:
--------------------------------------------------------------------------------
1 | .words {
2 | background-color: #ffffff;
3 | &-header {
4 | &-close {
5 | color: #3370ff;
6 | }
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIChat/message-input-toolbar/words/style/index.scss:
--------------------------------------------------------------------------------
1 | @import url("../../../../../assets/styles/common.scss");
2 | @import "./color.scss";
3 | @import "./web.scss";
4 | @import "./h5.scss";
5 |
6 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIChat/message-input/index.ts:
--------------------------------------------------------------------------------
1 | import MessageInput from './index.vue';
2 | export default MessageInput;
3 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIChat/message-list/message-elements/message-stream-markdown/index.ts:
--------------------------------------------------------------------------------
1 | import { IMessageModel } from '@tencentcloud/chat-uikit-engine';
2 |
3 | export function isBotMessage(message: IMessageModel): boolean {
4 | if (!message || !message.ID || !message.from) {
5 | return false;
6 | }
7 |
8 | if (message.from.startsWith('@RBT#') && !message.to.startsWith('@RBT#')) {
9 | return true;
10 | }
11 |
12 | return false;
13 | }
14 |
15 | export * from './index.vue';
16 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIChat/message-list/message-elements/message-stream-markdown/operation/index.ts:
--------------------------------------------------------------------------------
1 | export * from './index.vue';
2 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIChat/message-list/message-elements/message-stream-markdown/operation/type.ts:
--------------------------------------------------------------------------------
1 | /** type & interface */
2 | export enum IOperationType {
3 | Copy = 'copy',
4 | // Retry is not supported now
5 | // Retry = 'retry',
6 | }
7 | export interface IOperation {
8 | key: IOperationType;
9 | name: string;
10 | icon: string;
11 | isDisabled: boolean;
12 | onClick: (e: Event, key: IOperationType) => void;
13 | }
14 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIChat/message-list/style/color.scss:
--------------------------------------------------------------------------------
1 | .tui-chat {
2 | .tui-message-list {
3 | .message-more {
4 | color: #999;
5 | cursor: pointer;
6 | }
7 | }
8 |
9 | .image-dialog {
10 | background: rgba(0, 0, 0, 0.6);
11 |
12 | header {
13 | background: rgba(0,0,0,0.49);
14 | }
15 | }
16 | }
17 |
18 | .tui-chat-h5 {
19 | .tui-chat-header {
20 | background: #FFF;
21 | }
22 |
23 | .tui-chat-footer {
24 | background: #FFF;
25 |
26 | .input {
27 | input {
28 | background: #F4F5F9;
29 | }
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIChat/message-list/style/h5.scss:
--------------------------------------------------------------------------------
1 | .tui-chat-h5 {
2 | flex: 1;
3 | position: static;
4 |
5 | .tui-chat-main {
6 | .tui-message-list {
7 | height: 100%;
8 | }
9 |
10 | .message-more {
11 | color: #999;
12 | cursor: pointer;
13 | font-size: 14px;
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIChat/message-list/style/index.scss:
--------------------------------------------------------------------------------
1 | @import "../../../../assets/styles/common";
2 | @import "./color";
3 | @import "./web";
4 | @import "./h5";
5 |
6 | :not(not) {
7 | display: flex;
8 | flex-direction: column;
9 | box-sizing: border-box;
10 | min-width: 0;
11 | }
12 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIChat/offlinePushInfoManager/index.ts:
--------------------------------------------------------------------------------
1 | import OfflinePushInfoManager from './offlinePushInfoManager';
2 |
3 | export * from './const';
4 | export * from './interface';
5 |
6 | export default OfflinePushInfoManager.getInstance();
7 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIChat/offlinePushInfoManager/info.ts:
--------------------------------------------------------------------------------
1 | import { IChatOfflinePushInfo, ICallOfflinePushInfo } from './interface';
2 |
3 | export const chatOfflinePushInfo: IChatOfflinePushInfo = {
4 | androidInfo: {},
5 | apnsInfo: {},
6 | };
7 |
8 | export const callOfflinePushInfo: ICallOfflinePushInfo = {};
9 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIChat/style/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../../assets/styles/common';
2 | @import './web';
3 | @import './h5';
4 | @import './uni';
5 | @import './wx';
6 |
7 | :not(not) {
8 | display: flex;
9 | flex-direction: column;
10 | box-sizing: border-box;
11 | min-width: 0;
12 | }
13 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIChat/style/uni.scss:
--------------------------------------------------------------------------------
1 | .tui-chat-uni {
2 | &-message-input {
3 | max-height: 370px;
4 | padding: 10px;
5 | }
6 |
7 | &-message-input-toolbar {
8 | z-index: 100;
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIChat/style/wx.scss:
--------------------------------------------------------------------------------
1 | .tui-chat-wx {
2 | &-message-input {
3 | padding: 0;
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIChat/utils/wordsList.ts:
--------------------------------------------------------------------------------
1 | export const wordsList = [
2 | {
3 | value: '在吗?在吗?在吗?重要的话说三遍。',
4 | },
5 | {
6 | value: '好久没聊天了,快来和我说说话~',
7 | },
8 | {
9 | value: '好的,就这么说定了。',
10 | },
11 | {
12 | value: '感恩的心,感谢有你。',
13 | },
14 | {
15 | value: '糟糕!是心动的感觉!',
16 | },
17 | {
18 | value: '心疼地抱抱自己,我太难了!',
19 | },
20 | {
21 | value: '没关系,别在意,事情过去就过去了。',
22 | },
23 | {
24 | value: '早上好,今天也是让人期待的一天呢!',
25 | },
26 | {
27 | value: '熬夜有什么用,又没人陪你聊天,早点休息吧。',
28 | },
29 | ];
30 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIContact/contact-info/index.ts:
--------------------------------------------------------------------------------
1 | import ContactInfo from './index.vue';
2 |
3 | export default ContactInfo;
4 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIContact/contact-info/style/index.scss:
--------------------------------------------------------------------------------
1 | @import "./web";
2 | @import "./h5";
3 | @import "../../../../assets/styles/common";
4 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIContact/contact-list/index.ts:
--------------------------------------------------------------------------------
1 | import ContactList from './index.vue';
2 |
3 | export default ContactList;
4 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIContact/contact-list/style/h5.scss:
--------------------------------------------------------------------------------
1 | .tui-contact-list-h5 {
2 | .tui-contact-list-item {
3 | .tui-contact-list-item-header {
4 | cursor: none;
5 | }
6 |
7 | .tui-contact-list-item-header:active,
8 | .tui-contact-list-item-main-item:active {
9 | background-color: #eef0f3;
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIContact/contact-list/style/index.scss:
--------------------------------------------------------------------------------
1 | @import './web';
2 | @import './h5';
3 | @import '../../../../assets/styles/common';
4 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIContact/contact-search/index.ts:
--------------------------------------------------------------------------------
1 | import ContactHeader from './index.vue';
2 | export default ContactHeader;
3 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIContact/index.ts:
--------------------------------------------------------------------------------
1 | import TUIContact from './index.vue';
2 | import Server from './server';
3 | Server.getInstance();
4 |
5 | export default TUIContact;
6 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIContact/select-friend/index.ts:
--------------------------------------------------------------------------------
1 | import SelectFriend from './index.vue';
2 |
3 | export default SelectFriend;
4 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIConversation/conversation-header/index.ts:
--------------------------------------------------------------------------------
1 | import ConversationHeader from './index.vue';
2 |
3 | export default ConversationHeader;
4 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIConversation/conversation-list/style/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../../../assets/styles/common';
2 | @import './color';
3 | @import './web';
4 | @import './h5';
5 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIConversation/conversation-network/index.ts:
--------------------------------------------------------------------------------
1 | import ConversationNetwork from './index.vue';
2 |
3 | export default ConversationNetwork;
4 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIConversation/index.ts:
--------------------------------------------------------------------------------
1 | import TUIConversation from "./index.vue";
2 | import TUIConversationServer from "./server";
3 | new TUIConversationServer();
4 |
5 | export default TUIConversation;
6 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIConversation/style/color.scss:
--------------------------------------------------------------------------------
1 | .tui-conversation {
2 | background: #fff;
3 | }
4 |
5 | .network {
6 | &-content {
7 | font-family: PingFangSC-Regular;
8 | font-weight: 400;
9 | color: #e54545;
10 | letter-spacing: 0;
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIConversation/style/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../../assets/styles/common';
2 | @import './web';
3 | @import './color';
4 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIGroup/create-group/index.ts:
--------------------------------------------------------------------------------
1 | import CreateGroup from './index.vue';
2 |
3 | export default CreateGroup;
4 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIGroup/create-group/style/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../../../assets/styles/common';
2 | @import './color';
3 | @import './web';
4 | @import './h5';
5 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIGroup/index.ts:
--------------------------------------------------------------------------------
1 | import TUIGroup from './index.vue';
2 | import Server from './server';
3 |
4 | Server.getInstance();
5 |
6 | export default TUIGroup;
7 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIGroup/manage-group/index.ts:
--------------------------------------------------------------------------------
1 | import ManageGroup from './index.vue';
2 |
3 | export default ManageGroup;
4 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIGroup/manage-group/style/h5.scss:
--------------------------------------------------------------------------------
1 | .deleted-dialog {
2 | padding: 20%;
3 | }
4 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUIGroup/select-member/index.ts:
--------------------------------------------------------------------------------
1 | import SelectMember from './index.vue';
2 |
3 | export default SelectMember;
4 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUINotification/interface.ts:
--------------------------------------------------------------------------------
1 | export interface ITUINotification {
2 | showPreviews: boolean;
3 | allowNotifications: boolean;
4 | notificationTitle: string;
5 | notificationIcon: string;
6 | }
7 |
8 | export interface INotificationConstructorParams {
9 | showPreviews?: boolean;
10 | allowNotifications?: boolean;
11 | notificationTitle?: string;
12 | notificationIcon?: string;
13 | }
14 |
15 | export type NotificationType = 'chat' | 'call';
16 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUISearch/index.ts:
--------------------------------------------------------------------------------
1 | import TUISearch from './index.vue';
2 | import Server from './server';
3 | new Server();
4 |
5 | export default TUISearch;
6 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUISearch/search-container/index.ts:
--------------------------------------------------------------------------------
1 | import SearchContainer from './index.vue';
2 | export default SearchContainer;
3 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUISearch/search-container/style/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../../../assets/styles/common';
2 | @import './web';
3 | @import './h5';
4 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUISearch/search-input/index.ts:
--------------------------------------------------------------------------------
1 | import SearchInput from './index.vue';
2 | export default SearchInput;
3 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUISearch/search-more/index.ts:
--------------------------------------------------------------------------------
1 | import SearchMore from './index.vue';
2 |
3 | export default SearchMore;
4 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUISearch/search-result/index.ts:
--------------------------------------------------------------------------------
1 | import SearchResult from './index.vue';
2 | export default SearchResult;
3 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUISearch/search-result/search-result-default/index.ts:
--------------------------------------------------------------------------------
1 | import SearchResultDefault from './index.vue';
2 | export default SearchResultDefault;
3 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUISearch/search-result/search-result-item/style/h5.scss:
--------------------------------------------------------------------------------
1 | .search-result-list-item-h5 {
2 | padding: 10px 0;
3 | border-radius: 0;
4 |
5 | .bubble {
6 | .bubble-left {
7 | .bubble-left-avatar {
8 | width: 48px;
9 | height: 48px;
10 | }
11 |
12 | .bubble-main {
13 | .bubble-main-name {
14 | color: #333;
15 | font-family: "PingFang SC", sans-serif;
16 | font-size: 14px;
17 | font-weight: 400;
18 | letter-spacing: 0;
19 | text-align: left;
20 | }
21 | }
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUISearch/search-result/search-result-item/style/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../../../../assets/styles/common';
2 | @import './web';
3 | @import './h5';
4 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUISearch/search-result/search-result-loading/index.ts:
--------------------------------------------------------------------------------
1 | import SearchResultLoading from './index.vue';
2 | export default SearchResultLoading;
3 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUISearch/search-result/style/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../../../assets/styles/common';
2 | @import './web';
3 | @import './h5';
4 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUISearch/style/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../../assets/styles/common';
2 | @import './web';
3 | @import './h5';
4 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/TUISearch/style/web.scss:
--------------------------------------------------------------------------------
1 | .tui-search {
2 | &-main-global {
3 | width: 100%;
4 | height: fit-content;
5 | }
6 |
7 | &-main-conversation {
8 | width: 100%;
9 | height: 100%;
10 | background: #fff;
11 | box-shadow: 0 1px 10px 0 rgba(2,16,43,0.15);
12 | }
13 |
14 | .tui-search-global {
15 | &-header {
16 | display: flex;
17 | flex-direction: row;
18 | justify-content: center;
19 | align-items: center;
20 | }
21 | }
22 |
23 | .tui-search-conversation {
24 | width: 100%;
25 | height: 100%;
26 | overflow: hidden;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/common/BottomPopup/index.ts:
--------------------------------------------------------------------------------
1 | import BottomPopup from './index.vue';
2 |
3 | export default BottomPopup;
4 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/common/BottomPopup/style/index.scss:
--------------------------------------------------------------------------------
1 | @import "../../../../assets/styles/common";
2 | @import "./h5";
3 | @import "./modal";
4 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/common/BottomPopup/style/modal.scss:
--------------------------------------------------------------------------------
1 | .bottom-popup-modal {
2 | background: rgba(0, 0, 0, 0.5);
3 | }
4 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/common/DatePicker/date-picker.ts:
--------------------------------------------------------------------------------
1 | import { Dayjs } from 'dayjs';
2 |
3 | export type DateCellType =
4 | | 'normal'
5 | | 'today'
6 | | 'week'
7 | | 'next-month'
8 | | 'prev-month';
9 | export interface DateCell {
10 | text?: number;
11 | disabled?: boolean;
12 | isSelected?: boolean;
13 | isSelectedStart?: boolean;
14 | isSelectedEnd?: boolean;
15 | isInRange?: boolean;
16 | isCurrent?: boolean;
17 | date: typeof Dayjs;
18 | type?: DateCellType;
19 | }
20 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/common/DatePicker/index.ts:
--------------------------------------------------------------------------------
1 | import DatePicker from './index.vue';
2 | export default DatePicker;
3 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/common/Dialog/index.ts:
--------------------------------------------------------------------------------
1 | import Dialog from './index.vue';
2 |
3 | export default Dialog;
4 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/common/Dialog/style/dialog.scss:
--------------------------------------------------------------------------------
1 | @import '../../../../assets/styles/common';
2 | @import "./color";
3 | @import "./web";
4 | @import "./h5";
5 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/common/Drag/index.ts:
--------------------------------------------------------------------------------
1 | import Drag from './index.vue';
2 | export default Drag;
3 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/common/ImagePreviewer/index.ts:
--------------------------------------------------------------------------------
1 | import ImagePreviewer from './index.vue';
2 |
3 | export default ImagePreviewer;
4 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/common/Loading/index.ts:
--------------------------------------------------------------------------------
1 | import Loading from './index.vue';
2 | export default Loading;
3 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/common/SelectUser/index.ts:
--------------------------------------------------------------------------------
1 | import SelectUser from './index.vue';
2 |
3 | export default SelectUser;
4 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/common/SwitchBar/index.ts:
--------------------------------------------------------------------------------
1 | import SwitchBar from './index.vue';
2 | export default SwitchBar;
3 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/common/Toast/type.ts:
--------------------------------------------------------------------------------
1 | const TOAST_TYPE = {
2 | SUCCESS: 'success',
3 | WARNING: 'warning',
4 | ERROR: 'error',
5 | NORMAL: 'normal',
6 | };
7 |
8 | export default TOAST_TYPE;
9 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/common/Transfer/index.ts:
--------------------------------------------------------------------------------
1 | import Transfer from './index.vue';
2 | export default Transfer;
3 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/common/Transfer/style/transfer.scss:
--------------------------------------------------------------------------------
1 | @import '../../../../assets/styles/common';
2 | @import "./color";
3 | @import "./web";
4 | @import "./h5";
5 |
6 | .icon-unselected {
7 | width: 18px;
8 | height: 18px;
9 | background: #FFF;
10 | border: 1px solid #DDD;
11 | border-radius: 11px;
12 | box-sizing: border-box;
13 | }
14 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/components/index.ts:
--------------------------------------------------------------------------------
1 | import TUIChat from "./TUIChat";
2 | import TUIConversation from "./TUIConversation";
3 | import TUISearch from "./TUISearch";
4 | import TUIContact from "./TUIContact";
5 | import TUIGroup from "./TUIGroup";
6 |
7 | const TUIComponents = {
8 | TUIChat,
9 | TUIConversation,
10 | TUIContact,
11 | TUISearch,
12 | TUIGroup
13 | };
14 |
15 | export default TUIComponents;
16 |
17 | export {
18 | TUIChat,
19 | TUIConversation,
20 | TUIContact,
21 | TUISearch,
22 | TUIGroup,
23 | };
24 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/debug/index.d.ts:
--------------------------------------------------------------------------------
1 | export function genTestUserSig({ SDKAppID: number, secretKey: string, userID: string }): any;
2 | export const EXPIRETIME: number;
3 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/debug/index.js:
--------------------------------------------------------------------------------
1 | export * from "./GenerateTestUserSig";
2 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/index.ts:
--------------------------------------------------------------------------------
1 | import { genTestUserSig } from './debug';
2 | import Server from './server';
3 | import TUIComponents, {
4 | TUIChat,
5 | TUIConversation,
6 | TUIContact,
7 | TUISearch,
8 | TUIGroup,
9 | } from './components';
10 | import TUIKit from './index.vue';
11 | import { hideTUIChatFeatures } from './components/TUIChat/config';
12 |
13 | const TUIChatKit = new Server();
14 | TUIChatKit.init();
15 |
16 | export {
17 | TUIKit,
18 | TUIChatKit,
19 | TUIComponents,
20 | TUIChat,
21 | TUIConversation,
22 | TUIContact,
23 | TUISearch,
24 | TUIGroup,
25 | hideTUIChatFeatures,
26 | genTestUserSig,
27 | };
28 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/locales/en/component.ts:
--------------------------------------------------------------------------------
1 | const component = {
2 | "取消": "Cancel",
3 | "完成": "Done",
4 | "已选中": "Selected",
5 | "人": "",
6 | "保存": "Save",
7 | "请输入userID": "Enter a userID",
8 | "请输入groupID": "Enter a groupID",
9 | "确定": "submit",
10 | "全选": "All",
11 | "已在群聊中": "exists",
12 | "查看更多": "More",
13 | "图片 url 不存在": "Image url does not exist",
14 | "已取消": "Cancelled",
15 | "获取权限失败": "Failed to obtain permission",
16 | "已保存至相册": "Saved to album",
17 | "图片下载失败": "Image download failed",
18 | "暂不支持下载此类型图片": "Downloading this type of pictures is not supported yet",
19 | }
20 |
21 | export default component;
22 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/locales/en/emoji.ts:
--------------------------------------------------------------------------------
1 | import { default as Emoji } from '../../components/TUIChat/emoji-config/locales/en';
2 | export default Emoji;
3 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/locales/en/evaluate.ts:
--------------------------------------------------------------------------------
1 | const Evaluate = {
2 | "请对本次服务进行评价": "Please rate this service",
3 | "提交评价": "Feedback",
4 | "服务评价工具": "Service rate tool",
5 | "使用": "Build with",
6 | "自定义消息": "Custom message",
7 | "搭建": "",
8 | "星": "Star"
9 | }
10 |
11 | export default Evaluate;
12 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/locales/index.ts:
--------------------------------------------------------------------------------
1 |
2 | import en from './en';
3 | import zh_cn from './zh_cn';
4 | import zh_tw from './zh_tw';
5 |
6 | export interface ILanguageResources {
7 | [key: string]: string | ILanguageResources;
8 | }
9 |
10 | const messages: Record = {
11 | ...en,
12 | ...zh_cn,
13 | ...zh_tw,
14 | };
15 |
16 | export default messages;
17 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/locales/zh_cn/TUIConversation.ts:
--------------------------------------------------------------------------------
1 | const TUIConversation = {
2 | "发起会话": "发起会话",
3 | "发起单聊": "发起单聊",
4 | "发起群聊": "发起群聊",
5 | "请输入userID": "请输入userID",
6 | "删除会话": "删除会话",
7 | "删除后,将清空该聊天的消息记录": "删除后,将清空该聊天的消息记录",
8 | "删除后,将清空该群聊的消息记录": "删除后,将清空该群聊的消息记录",
9 | "置顶会话": "置顶会话",
10 | "取消置顶": "取消置顶",
11 | "消息免打扰": "消息免打扰",
12 | "取消免打扰": "取消免打扰",
13 | "系统通知": "系统通知",
14 | "有人@我": "有人@我",
15 | "@所有人": "@所有人",
16 | "条": "条",
17 | "我": "我",
18 | "网络异常,请您检查网络设置": "网络异常,请您检查网络设置",
19 | "您已被群管理员移出群聊": "您已被群管理员移出群聊",
20 | "该群聊已被解散": "该群聊已被解散",
21 | "您已退出该群聊": "您已退出该群聊",
22 | }
23 |
24 | export default TUIConversation;
25 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/locales/zh_cn/component.ts:
--------------------------------------------------------------------------------
1 | const components = {
2 | "取消": "取消",
3 | "完成": "完成",
4 | "已选中": "已选中",
5 | "人": "人",
6 | "保存": "保存",
7 | "请输入userID": "请输入userID",
8 | "请输入groupID": "请输入groupID",
9 | "确定": "确定",
10 | "全选": "全选",
11 | "已在群聊中": "已在群聊中",
12 | "查看更多": "查看更多",
13 | "图片 url 不存在": "图片 url 不存在",
14 | "已取消": "已取消",
15 | "获取权限失败": "获取权限失败",
16 | "已保存至相册": "已保存至相册",
17 | "图片下载失败": "图片下载失败",
18 | "暂不支持下载此类型图片": "暂不支持下载此类型图片",
19 | }
20 |
21 | export default components;
22 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/locales/zh_cn/emoji.ts:
--------------------------------------------------------------------------------
1 | import { default as Emoji } from '../../components/TUIChat/emoji-config/locales/zh_cn';
2 | export default Emoji;
3 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/locales/zh_cn/evaluate.ts:
--------------------------------------------------------------------------------
1 | const Evaluate = {
2 | "请对本次服务进行评价": "请对本次服务进行评价",
3 | "提交评价": "提交评价",
4 | "服务评价工具": "服务评价工具",
5 | "使用": "使用",
6 | "自定义消息": "自定义消息",
7 | "搭建": "搭建",
8 | "星": "星"
9 | }
10 |
11 | export default Evaluate;
12 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/locales/zh_cn/words.ts:
--------------------------------------------------------------------------------
1 | const Words = {
2 | "常用语-快捷回复工具": "常用语-快捷回复工具",
3 | "在吗?在吗?在吗?重要的话说三遍。": "在吗?在吗?在吗?重要的话说三遍。",
4 | "好久没聊天了,快来和我说说话~": "好久没聊天了,快来和我说说话~",
5 | "好的,就这么说定了。": "好的,就这么说定了。",
6 | "感恩的心,感谢有你。": "感恩的心,感谢有你。",
7 | "糟糕!是心动的感觉!": "糟糕!是心动的感觉!",
8 | "心疼地抱抱自己,我太难了!": "心疼地抱抱自己,我太难了!",
9 | "没关系,别在意,事情过去就过去了。": "没关系,别在意,事情过去就过去了。",
10 | "早上好,今天也是让人期待的一天呢!": "早上好,今天也是让人期待的一天呢!",
11 | "熬夜有什么用,又没人陪你聊天,早点休息吧。": "熬夜有什么用,又没人陪你聊天,早点休息吧。"
12 | }
13 |
14 | export default Words;
15 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/locales/zh_tw/TUIConversation.ts:
--------------------------------------------------------------------------------
1 | const TUIConversation = {
2 | "发起会话": "發起會話",
3 | "发起单聊": "發起單聊",
4 | "发起群聊": "發起群聊",
5 | "请输入userID": "請輸入userID",
6 | "删除会话": "刪除會話",
7 | "删除后,将清空该聊天的消息记录": "刪除後,將清空該聊天的消息記錄",
8 | "删除后,将清空该群聊的消息记录": "刪除後,將清空該群聊的消息記錄",
9 | "置顶会话": "置頂會話",
10 | "取消置顶": "取消置頂",
11 | "消息免打扰": "消息免打擾",
12 | "取消免打扰": "取消免打擾",
13 | "系统通知": "系統通知",
14 | "有人@我": "有人@我",
15 | "@所有人": "@所有人",
16 | "条": "條",
17 | "我": "我",
18 | "网络异常,请您检查网络设置": "網絡異常,請您檢查網絡設置",
19 | "您已被群管理员移出群聊": "您已被群管理員移出群聊",
20 | "该群聊已被解散": "該群聊已被解散",
21 | "您已退出该群聊": "您已退出該群聊",
22 | }
23 |
24 | export default TUIConversation;
25 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/locales/zh_tw/component.ts:
--------------------------------------------------------------------------------
1 | const components = {
2 | "取消": "取消",
3 | "完成": "完成",
4 | "已选中": "已選中",
5 | "人": "人",
6 | "保存": "保存",
7 | "请输入userID": "請輸入userID",
8 | "请输入groupID": "請輸入groupID",
9 | "确定": "確定",
10 | "全选": "全選",
11 | "已在群聊中": "已在群聊中",
12 | "查看更多": "查看更多",
13 | "图片 url 不存在": "圖片 url 不存在",
14 | "已取消": "已取消",
15 | "获取权限失败": "獲取權限失敗",
16 | "已保存至相册": "已保存至相冊",
17 | "图片下载失败": "圖片下載失敗",
18 | "暂不支持下载此类型图片": "暫不支持下載此類型圖片",
19 | };
20 |
21 | export default components;
22 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/locales/zh_tw/emoji.ts:
--------------------------------------------------------------------------------
1 | import { default as Emoji } from '../../components/TUIChat/emoji-config/locales/zh_tw';
2 | export default Emoji;
3 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/locales/zh_tw/evaluate.ts:
--------------------------------------------------------------------------------
1 | const Evaluate = {
2 | "请对本次服务进行评价": "請對本次服務進行評價",
3 | "提交评价": "提交評價",
4 | "服务评价工具": "服務評價工具",
5 | "使用": "使用",
6 | "自定义消息": "自定義消息",
7 | "搭建": "搭建",
8 | "星": "星"
9 | }
10 |
11 | export default Evaluate;
12 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/locales/zh_tw/words.ts:
--------------------------------------------------------------------------------
1 | const Words = {
2 | "常用语-快捷回复工具": "常用語-快捷回覆工具",
3 | "在吗?在吗?在吗?重要的话说三遍。": "在嗎?在嗎?在嗎?重要的話說三遍。",
4 | "好久没聊天了,快来和我说说话~": "好久沒聊天了,快來和我說說話~",
5 | "好的,就这么说定了。": "好的,就這麼說定了。",
6 | "感恩的心,感谢有你。": "感恩的心,感謝有你。",
7 | "糟糕!是心动的感觉!": "糟糕!是心動的感覺!",
8 | "心疼地抱抱自己,我太难了!": "心疼地抱抱自己,我太難了!",
9 | "没关系,别在意,事情过去就过去了。": "沒關係,別在意,事情過去就過去了。",
10 | "早上好,今天也是让人期待的一天呢!": "早上好,今天也是讓人期待的一天呢!",
11 | "熬夜有什么用,又没人陪你聊天,早点休息吧。": "熬夜有什麼用,又沒人陪你聊天,早點休息吧。"
12 | }
13 |
14 | export default Words;
15 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/plugins/extension-server/callkit.ts:
--------------------------------------------------------------------------------
1 | export default class CallkitPluginServer {}
2 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/plugins/plugin-components/message-customer/index.ts:
--------------------------------------------------------------------------------
1 | import {
2 | isCustomerServicePluginMessage,
3 | isMessageInvisible as isCustomServiceMessageInvisible,
4 | } from '@tencentcloud/tui-customer-service-plugin';
5 | export { isCustomerServicePluginMessage, isCustomServiceMessageInvisible };
6 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/plugins/plugin-components/message-customer/message-customer-service.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
14 |
17 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/utils/enableSampleTaskStatus.ts:
--------------------------------------------------------------------------------
1 | import { TUIStore, StoreName } from "@tencentcloud/chat-uikit-engine";
2 | export function enableSampleTaskStatus(taskKey: string) {
3 | const tasks = TUIStore.getData(StoreName.APP, "tasks");
4 | if (taskKey in tasks && !tasks[taskKey]) {
5 | tasks[taskKey] = true;
6 | TUIStore.update(StoreName.APP, "tasks", tasks);
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/utils/env.ts:
--------------------------------------------------------------------------------
1 | import { getPlatform } from '@tencentcloud/universal-api';
2 |
3 | declare const uni: any;
4 |
5 | export const isPC = getPlatform() === 'pc';
6 |
7 | export const isH5 = getPlatform() === 'h5';
8 |
9 | export const isWeChat = getPlatform() === 'wechat';
10 |
11 | export const isApp = getPlatform() === 'app';
12 |
13 | export const isUniFrameWork = typeof uni !== 'undefined';
14 |
15 | // H5, mini programs, and apps are all considered mobile.
16 | // If you need to unify the mobile UI style, you can directly use isMobile to control
17 | export const isMobile = isH5 || isWeChat || isApp;
18 |
--------------------------------------------------------------------------------
/Vue3/TUIKit/utils/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./type-check";
2 |
--------------------------------------------------------------------------------