@tencentcloud/chat-uikit-react 3.0.2 → 3.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.cjs +5 -4
- package/CHANGELOG.md +9 -0
- package/debug/GenerateTestUserSig-es.js +26 -0
- package/debug/lib-generate-test-usersig-es.min.js +2 -0
- package/dist/components/Chat/Chat.d.ts +1 -1
- package/dist/components/Chat/Chat.js +18 -23
- package/dist/components/ChatHeader/AudioCallPicker/AudioCallPicker.d.ts +30 -0
- package/dist/components/ChatHeader/AudioCallPicker/AudioCallPicker.js +135 -0
- package/dist/components/ChatHeader/AudioCallPicker/index.d.ts +1 -0
- package/dist/components/ChatHeader/AudioCallPicker/index.js +4 -0
- package/dist/components/ChatHeader/ChatHeader.d.ts +6 -0
- package/dist/components/ChatHeader/ChatHeader.js +43 -41
- package/dist/components/ChatHeader/ChatHeaderUI/ChatHeaderUI.d.ts +14 -9
- package/dist/components/ChatHeader/ChatHeaderUI/ChatHeaderUI.js +47 -65
- package/dist/components/ChatHeader/VideoCallPicker/VideoCallPicker.d.ts +30 -0
- package/dist/components/ChatHeader/VideoCallPicker/VideoCallPicker.js +135 -0
- package/dist/components/ChatHeader/VideoCallPicker/index.d.ts +1 -0
- package/dist/components/ChatHeader/VideoCallPicker/index.js +4 -0
- package/dist/components/ChatHeader/index.d.ts +2 -1
- package/dist/components/ChatHeader/index.js +4 -2
- package/dist/components/Checkbox/index.js +1 -1
- package/dist/components/Modal/Modal.js +1 -1
- package/dist/components/Model/index.js +1 -1
- package/dist/components/Plugins/index.js +1 -1
- package/dist/components/Popup/index.js +1 -1
- package/dist/components/PopupNew/Popup.js +1 -1
- package/dist/components/Profile/Profile.js +20 -22
- package/dist/components/Profile/ProfileDefault.d.ts +3 -2
- package/dist/components/Profile/ProfileDefault.js +55 -56
- package/dist/components/Profile/hooks/useMyProfile.d.ts +2 -3
- package/dist/components/Profile/hooks/useMyProfile.js +1 -1
- package/dist/components/Profile/myProfile/MyProfile.d.ts +1 -1
- package/dist/components/Profile/myProfile/MyProfile.js +12 -16
- package/dist/components/index.js +27 -25
- package/dist/context/ChatContext.d.ts +1 -1
- package/dist/context/ChatContext.js +11 -16
- package/dist/context/ContactContext.d.ts +1 -1
- package/dist/external_modules/mui-BhvHeL5-.js +2253 -0
- package/dist/hooks/index.d.ts +2 -2
- package/dist/hooks/index.js +2 -2
- package/dist/{states/ChatHeaderState.d.ts → hooks/useChatHeader.d.ts} +6 -6
- package/dist/hooks/useChatHeader.js +41 -0
- package/dist/index-UBuvRM8r-DTXQB6zV.js +34000 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.js +93 -4129
- package/dist/server/mainServer.js +2 -2
- package/dist/states/UIManagerState.d.ts +5 -5
- package/dist/states/UIManagerState.js +2 -2
- package/dist/states/index.d.ts +0 -1
- package/dist/states/index.js +2 -4
- package/dist/styles/AudioCallPicker.css +1 -0
- package/dist/styles/ChatHeaderUI.css +1 -1
- package/dist/styles/VideoCallPicker.css +1 -0
- package/dist/styles/index-UBuvRM8r.css +1 -0
- package/dist/styles/index.css +1 -1
- package/dist/styles/index2.css +1 -1
- package/dist/styles/index3.css +1 -1
- package/dist/styles/index4.css +1 -1
- package/dist/styles/index5.css +1 -1
- package/dist/types/message.d.ts +1 -1
- package/dist/types/user.d.ts +4 -4
- package/package.json +12 -20
- package/src/components/ChatHeader/AudioCallPicker/AudioCallPicker.module.scss +57 -0
- package/src/components/ChatHeader/AudioCallPicker/AudioCallPicker.tsx +234 -0
- package/src/components/ChatHeader/AudioCallPicker/index.ts +1 -0
- package/src/components/ChatHeader/ChatHeader.tsx +15 -3
- package/src/components/ChatHeader/ChatHeaderUI/ChatHeaderUI.tsx +33 -40
- package/src/components/ChatHeader/VideoCallPicker/VideoCallPicker.module.scss +57 -0
- package/src/components/ChatHeader/VideoCallPicker/VideoCallPicker.tsx +233 -0
- package/src/components/ChatHeader/VideoCallPicker/index.ts +1 -0
- package/src/components/ChatHeader/index.ts +2 -1
- package/src/components/Profile/Profile.tsx +7 -6
- package/src/components/Profile/ProfileDefault.tsx +8 -8
- package/src/components/Profile/hooks/useMyProfile.tsx +2 -3
- package/src/components/Profile/myProfile/MyProfile.tsx +1 -1
- package/src/context/ChatContext.tsx +1 -1
- package/src/context/ContactContext.tsx +1 -1
- package/src/hooks/index.ts +2 -2
- package/src/{states/ChatHeaderState.ts → hooks/useChatHeader.ts} +19 -22
- package/src/index.ts +3 -5
- package/src/server/mainServer.ts +2 -2
- package/src/states/UIManagerState.ts +9 -9
- package/src/states/index.ts +0 -2
- package/src/styles/index.scss +0 -1
- package/src/types/message.ts +1 -1
- package/src/types/user.ts +4 -4
- package/vite.config.ts +4 -25
- package/dist/ChatSetting-BtQwjHr0.js +0 -28525
- package/dist/assets/fonts/iconfont.ttf +0 -0
- package/dist/assets/fonts/iconfont.woff +0 -0
- package/dist/assets/fonts/iconfont.woff2 +0 -0
- package/dist/components/ChatHeader/ChatHeaderActions/ChatHeaderActions.d.ts +0 -11
- package/dist/components/ChatHeader/ChatHeaderActions/ChatHeaderActions.js +0 -79
- package/dist/components/ChatHeader/ChatHeaderActions/index.d.ts +0 -1
- package/dist/components/ChatHeader/ChatHeaderActions/index.js +0 -4
- package/dist/components/IconFont/Icon.d.ts +0 -21
- package/dist/components/IconFont/Icon.js +0 -47
- package/dist/components/IconFont/index.d.ts +0 -2
- package/dist/components/IconFont/index.js +0 -4
- package/dist/external_modules/lodash-vwDjcXxQ.js +0 -0
- package/dist/external_modules/mui-BcA3SBHM.js +0 -2473
- package/dist/states/ChatHeaderState.js +0 -48
- package/dist/styles/ChatHeaderActions.css +0 -1
- package/dist/styles/ChatSetting.css +0 -1
- package/dist/styles/Icon2.css +0 -1
- package/src/assets/fonts/iconfont.ttf +0 -0
- package/src/assets/fonts/iconfont.woff +0 -0
- package/src/assets/fonts/iconfont.woff2 +0 -0
- package/src/components/ChatHeader/ChatHeaderActions/ChatHeaderActions.module.scss +0 -44
- package/src/components/ChatHeader/ChatHeaderActions/ChatHeaderActions.tsx +0 -105
- package/src/components/ChatHeader/ChatHeaderActions/index.ts +0 -1
- package/src/components/IconFont/Icon.module.scss +0 -42
- package/src/components/IconFont/Icon.tsx +0 -68
- package/src/components/IconFont/index.ts +0 -3
- package/src/styles/fonts/icon-font.scss +0 -18
package/dist/styles/index.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.
|
|
1
|
+
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}:root{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,*:after,*:before{box-sizing:border-box}ul,li{list-style:none;padding:0;margin:0}picture,img,video,canvas,svg{display:block;max-width:100%}img{max-width:100%;height:auto;vertical-align:middle;image-rendering:-webkit-optimize-contrast;aspect-ratio:attr(width)/attr(height);display:inline-block;-webkit-user-drag:none;-webkit-user-select:none;user-select:none}img:not([src],[srcset]){visibility:hidden}
|
package/dist/styles/index2.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.
|
|
1
|
+
.checkbox{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;position:relative}.checkbox-default{box-sizing:border-box;width:14px;height:14px;border-radius:14px;border:1px solid #DDDDDD}.checkbox-input{margin:0;padding:0;position:absolute;top:0;left:0;z-index:1;width:100%;height:100%;opacity:0}[data-uikit-theme=light] .info{background-color:var(--uikit-theme-light-bg-color-operate);color:var(--uikit-theme-light-text-color-primary);transition:color .3s ease-out,border-color .3s ease-out,background-color .3s ease-out}[data-uikit-theme=dark] .info{background-color:var(--uikit-theme-dark-bg-color-operate);color:var(--uikit-theme-dark-text-color-primary);transition:color .3s ease-out,border-color .3s ease-out,background-color .3s ease-out}[data-uikit-theme=light] .warn{background-color:var(--uikit-theme-light-text-color-warning);color:#fff;transition:color .3s ease-out,border-color .3s ease-out,background-color .3s ease-out}[data-uikit-theme=dark] .warn{background-color:var(--uikit-theme-dark-text-color-warning);color:#fff;transition:color .3s ease-out,border-color .3s ease-out,background-color .3s ease-out}[data-uikit-theme=light] .error{background-color:var(--uikit-theme-light-text-color-error);color:#fff;transition:color .3s ease-out,border-color .3s ease-out,background-color .3s ease-out}[data-uikit-theme=dark] .error{background-color:var(--uikit-theme-dark-text-color-error);color:#fff;transition:color .3s ease-out,border-color .3s ease-out,background-color .3s ease-out}
|
package/dist/styles/index3.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.
|
|
1
|
+
.model{background:#00000080;position:fixed;z-index:5;width:100vw;top:0;left:0;bottom:0;display:flex;justify-content:center;align-items:center}
|
package/dist/styles/index4.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.popup{
|
|
1
|
+
.plugin{display:flex;align-items:center;height:100%;padding:0 8px;gap:8px}.plugin-popup{height:100%;display:flex;align-items:center;position:relative}.plugin-popup-box{position:absolute;z-index:5;bottom:100%}.plugin-popup-box{border-radius:8px;overflow:hidden}[data-uikit-theme=light] .plugin-popup-box{background-color:var(--uikit-theme-light-dropdown-color-default);box-shadow:0 0 10px 0 var(--uikit-theme-light-shadow-color);transition:color .3s ease-out,border-color .3s ease-out,background-color .3s ease-out}[data-uikit-theme=dark] .plugin-popup-box{background-color:var(--uikit-theme-dark-dropdown-color-default);box-shadow:0 0 10px 0 var(--uikit-theme-dark-shadow-color);transition:color .3s ease-out,border-color .3s ease-out,background-color .3s ease-out}
|
package/dist/styles/index5.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}:root{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,*:after,*:before{box-sizing:border-box}ul,li{list-style:none;padding:0;margin:0}picture,img,video,canvas,svg{display:block;max-width:100%}img{max-width:100%;height:auto;vertical-align:middle;image-rendering:-webkit-optimize-contrast;aspect-ratio:attr(width)/attr(height);display:inline-block;-webkit-user-drag:none;-webkit-user-select:none;user-select:none}img:not([src],[srcset]){visibility:hidden}@font-face{font-family:iconfont;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff"),url(data:font/ttf;base64,AAEAAAALAIAAAwAwR1NVQiCLJXoAAAE4AAAAVE9TLzI8FU4xAAABjAAAAGBjbWFwE+OdSQAAAnQAAAPIZ2x5Zsl1roUAAAaEAAAU5GhlYWQqZyapAAAA4AAAADZoaGVhB94D7QAAALwAAAAkaG10eIiNAAAAAAHsAAAAiGxvY2FlKl8uAAAGPAAAAEZtYXhwATMAjAAAARgAAAAgbmFtZRCjPLAAABtoAAACZ3Bvc3RnIR2cAAAd0AAAAZcAAQAAA4D/gABcBEoAAAAABAAAAQAAAAAAAAAAAAAAAAAAACIAAQAAAAEAALhoKi1fDzz1AAsEAAAAAADjo/FTAAAAAOOj8VMAAP/oBAADHgAAAAgAAgAAAAAAAAABAAAAIgCAAAcAAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKADAAPgACREZMVAAObGF0bgAaAAQAAAAAAAAAAQAAAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAQEBAGQAAUAAAKJAswAAACPAokCzAAAAesAMgEIAAACAAUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBmRWQAwOYA610DgP+AAAAD3ACAAAAAAQAAAAAAAAAAAAAAAAACBAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAESgAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAwAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABEAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAAAAAUAAAADAAAALAAAAAQAAAIsAAEAAAAAASYAAwABAAAALAADAAoAAAIsAAQA+gAAACoAIAAEAArmAeYN5g/mGOYg5iPmNOZA5mLmc+aE5ojmjecO5xjnRufZ6DnoYOtd//8AAOYA5gXmD+YY5iDmI+Yz5kDmYuZz5oPmiOaN5w7nGOdG59noOehg61v//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAqACwAPAA8ADwAPAA8AD4APgA+AD4AQABAAEAAQABAAEAAQABAAEAAAAAMACEAIAAfABoAGwAcABgAGQAXABYAEAAFAAcABgAOAA8ADQARAAQAAQACAAoAAwAJABMACAAVABIACwAUAB0AHgAAAQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAABnAAAAAAAAAAhAADmAAAA5gAAAAAMAADmAQAA5gEAAAAhAADmBQAA5gUAAAAgAADmBgAA5gYAAAAfAADmBwAA5gcAAAAaAADmCAAA5ggAAAAbAADmCQAA5gkAAAAcAADmCgAA5goAAAAYAADmCwAA5gsAAAAZAADmDAAA5gwAAAAXAADmDQAA5g0AAAAWAADmDwAA5g8AAAAQAADmGAAA5hgAAAAFAADmIAAA5iAAAAAHAADmIwAA5iMAAAAGAADmMwAA5jMAAAAOAADmNAAA5jQAAAAPAADmQAAA5kAAAAANAADmYgAA5mIAAAARAADmcwAA5nMAAAAEAADmgwAA5oMAAAABAADmhAAA5oQAAAACAADmiAAA5ogAAAAKAADmjQAA5o0AAAADAADnDgAA5w4AAAAJAADnGAAA5xgAAAATAADnRgAA50YAAAAIAADn2QAA59kAAAAVAADoOQAA6DkAAAASAADoYAAA6GAAAAALAADrWwAA61sAAAAUAADrXAAA61wAAAAdAADrXQAA610AAAAeAAAAAABKAHwAwAEUAcgCPgKQAtoDKgOEA8wEGgS8BUQF0AYqBm4GpgcSB2IH5AgQCFQIggjYCToJgAm6Cc4J4gn2CgoKcgAAAAMAAP/0A4wDDAAPAB8AMAAABSEiJjURNDYzITIWFREUBgM0JiMhIgYVERQWMyEyNjUlBiIvASY0NjIfATc2MhYUBwNK/WwbJycbApQbJycbCQj9jggJCQgCcggJ/osHIAeEChQdB23xChoUCgwnGwKUGycnG/1sGycCxQgJCQj9jggJCQieCgqEBx4TCm3xChQdBwACAAD/9AOMAwwADwAfAAAFISImNRE0NjMhMhYVERQGAzQmIyEiBhURFBYzITI2NQNK/WwbJycbApQbJycbCQj9jggJCQgCcggJDCcbApQbJycb/WwbJwLFCAkJCP2OCAkJCAAAAgAAAAADgQMBABQAKQAAATIXFhcWFAcGBwYiJyYnJjQ3Njc2NyIHBgcGFBcWFxYyNzY3NjQnJicmAgBRRkMoKSkoQ0aiRkMoKSkoQ0ZRaFpXMzQ0M1da0FpXMzQ0M1daAqspKENGokZDKCkpKENGokZDKClVNDNXWtBaVzM0NDNXWtBaVzM0AAIAAP/zA40DDQAdADIAAAEnJiIGFB8BBwYUFjI/ARcWMjY0LwE3PgEuAgYHASYnJjc+ATc2Fx4BFxYHDgEHBicmAgBaDSMZDFtbDBkjDVpaDSMZDFtbCAYGEBYWCf6WSRsZGRuTZWFhZZMbGRkbk2VhYWUBvFsMGSMNWloNIxkMW1sMGSMNWloJFhYQBgYI/llKZWFhZZMbGRkbk2VhYWWTGxkZGwAAAAcAAP/0A2QDDAALACUAPwBbAGcAcwB/AAABIgYUFjsBMjY0JiM1MhYXMxYXFgcRFgcGIyEuATURJjY3Mz4BMxcjIiYnIyIGFxEGFhchMjc2JxE2JyYrAQ4BNzIWFREUBisBNTMyNjURNCYjISIGHQEjNTQ2MwMyFhQGKwEiJjQ2MyUyFhQGIyEiJjQ2MyUyFhQGIyEiJjQ2MwF7BAYGBJMEBgYEFiEGVicSDwIDEBIn/lAvJgErLEwGIhWTkxAbCVUVDAEBChcBrwoDBQEBBQILXwkb/x0qKh1OTgcKCgf+1QcLNSkeOQsPDwugCxAPDAFACxAQC/7ACxAPDAFACxAQC/7ACxAPDAKWBggGBggGNRoUARgWIf39IRgcAismAgQlKwEUGn4ODQwP/fsSCwEECRECBhAHAw0Ovyod/dMdKjULBwItBwoKBwYGHSr+LxAWDw8WEGoPFhAPFw9qDxYQEBYPAAAAAAMAAP/wA54DHgAUACkASQAAATIXFhcWFAcGBwYiJyYnJjQ3Njc2FyIHBgcGFBcWFxYyNzY3NjQnJicmEzY3NicuAScmBwYHBh4BMjc2NzYXHgEXFgcGBwYUHgECAG1dWjU3NzVaXdpdWjU3NzVaXW1MQUAlJiYlQEGYQUAlJiYlQEHPTRsaGhuaaWVlaU0RASIxEjZJR0dJbBMSEhM2ESMxAxA3NVpd2l1aNTc3NVpd2l1aNTd4JiVAQZhBQCUmJiVAQZhBQCUm/c1NaWVlaZobGhobTRIxIxE2ExISE2xJR0dJNhIxIgEAAAAAAwAA//QDjAMMABQAIAAzAAABIgcGBwYUFxYXFjI3Njc2NCcmJyYDIi4BND4BMzIWFAY3MQ4BBxcjNy4BLwEmNjsBMhYHAgBrXVk1NjY1WV3WXVk1NjY1WV1rDBUMDBUMEhkZGAEYEQUJBBAYAQoBGRIVEhkBAww2NVld1l1ZNTY2NVld1l1ZNTb9mAwUGBULGiQZrxEYAgEBAhgR3BIaGhIAAAAEAAAAAAPFAtMACAAPAB8ALwAAARQGIiY0NjIWBRUhNTcXPwEhIgYVERQWMyEyNjURNCYXERQGIyEiJjURNDYzITIWAY8xRzIyRzEBxP2Sjkbi4v0+BggIBgLCBgkJQSke/T4dKSkdAsIeKQINIzIyRzExzcZVjUfigAkG/egGCQkGAhgGCQ/96B4pKR4CGB4pKQAAAwAAAAADigLSAAgAGQAyAAABMjY0JiIGFBYTISIGFREUFjMhMjY1ETQmIwMmIyIPAQYjIi8CJiIHAxE+ATMhMhYXEwLFIzExRjExt/1OFB0dFAKyFB0dFLYJDQoNIQsJCwgIXgwjDN4BDQkCdAkNAQEBuDJGMTFGMgEaHhT9wBQdHRQCQBQd/qULChwIBwdnDQ7+9AHKCQsMCf42AAAAAAcAAAAAA6gDAAADAAQABwASACEALQA5AAABNCcxJxcxLwE0Ji8BLgErARUzJSEiBhURFBYzITI2NREhEyEiJjQ2MyEyFhQGJzIWFAYjISImNDYzA6cBAwMDeAsFiQIOCCXW/wD+2hQcHBQB8hUf/wCV/n8IDAwIAYEIDAwICAwMCP5/CAwMCAGgBQYTExOZBw0ChAUK1dUdFP1hFBwcFAHQ/oANEQ0NEQ3VDRANDRANAAAAAAMAAAAAA4oCtgAPABgALAAAASEiBhURFBYzITI2NRE0JgUyFhQGIiY0NgEGIyEiJjQ/AT4BHwE3PgEfARYGA279JAsREQsC3AsREf3uFyEhLiEhAdsCA/20AwQBlgIGAliLAgYCywIBArUQDP3ODBAQDAIyDBB+IS8hIS8h/oACBAUDsQIBAmmlAgEC8AIGAAYAAAAAA3YC9gAJABMAFwAbAB8AMAAAASE1NDYzITIWHQERFAYjISImNRE3FzMnMxczJzMXMycDPgEmLwEmIyIGHQEUFx4BNwN1/RYfFgKAFh8fFv2AFh+gNTY2azU2Nms1NjYwCAkHCrQGBgsQAwUVCgJVaxYfHxag/iAWHx8WAeCga2tra2tr/lgEEhUFWgMQC7QHBQoHBQAAAAIAAAAAA2oDCQBYAGwAAAEOAyMiJicGIyImJyYnJjc2Nz4CFzIXFh8BBwYeARcWNjc+Ajc2Jy4CIyIGBwYHBgcGHgIzMjc2NzY3Fw4BBwYjIicmJy4BNzY3PgIyFx4BFxYFBhYzMjc+ATc2PwEmIyIGBwYHBgNmAhYsRTAiNA8oRB0yDxIGBwQFEhIzRSYYEyEcGhUCBQwIDRoKEBYNAQQODT5eQj5kIyUTFQIEH0BgPxETJCMQDg8PJRQoKlNBPy0sKgMDHBpihKQ+PFcSFP5hBRodCAYKEAgJBhAMDRkjDQ0HBwGmLFRCKR0bNxsYHB8mJzEtKzshAQMHEhHyERYNAwQGCAwrOiI7OjZMKTIrLjg+QUpvSyUCBAoFBkQKDgQJGBYxL4xdUUxFbDoZGWE/QX41NwIEDg0QErsEFBMWGRwAAAUAAP/9A4MDAwAVACIALwBEAFkAACUiLwEuAT4CFh8BNz4BHgIGDwEGJyImNRE0NjIWFREUBgciJj0BNDYyFh0BFAYHIicmJyY0NzY3NjIXFhcWFAcGBwYDIgcGBwYUFxYXFjI3Njc2NCcmJyYCAA8KaQcFBQ0TEgZRUQYSEw0FBQdpCg8PFBQeFBQPDxQUHhQUD2laWDM1NTNYWtJaWDM1NTNYWmlWSkcqKysqR0qsSkcqKysqR0q/CmkHEhIOBQUHUFAHBQUOEhIHaQo0FQ8BBw8UFA/++Q8VNBQPNQ4VFQ41DxTCNTNYWtJaWDM1NTNYWtJaWDM1Ar8rKkdKrEpHKisrKkdKrEpHKisAAAAABAAAAAADjALwACAANwBHAFcAACUjNwcnJi8BJi8BEzY/ATY/AQUWHwEWHwEDBg8BBg8BJScHNwU2NzY3ESYnJichBgcGBxEWFxYXEzMVBwYHBgcGFTMVIzU+ASUzFQcGBwYHBhUzFSM1PgEBZEgBQAUkHAMYCAEBCBgDHCUHAkkiHAMaBwEBCBgDHCUI/teQAXoBPA8MCgQECgwP/coPCwsEBAoMD6A3DRAMEgsMUqQOOQEhNg0PDRIKDVKjDjgJZgEBCBkDHSUHAa0kHQQZCAEBCRcEHSYG/lMlHAQZCAEBSVZVAQQKDBABng8MCgUECg0Q/mMQDAoEAYs0CAoLERAUFICaKUIVNAgKCxEQFBSAmilCAAAAAAIAAAAAA3cC+AAYAD8AAAkBBiImNDcBIyImNDY7ATIeAR0BFAYiJjUVNDYyFh0BFA4BIyEiLgE1ETQ+ATsBMhYUBisBIgYVERQWMyEyNjUDLP6rCx8WCwFXjhAWFhCjHTAcFh8WFh8WHDAd/eQdMBwcMB3FDxYWD8UMEhIMAhwMEgJ1/q0LFh8LAVUWHxYcMB2jEBYWELQPFhYPxR0wHBwwHQIcHTAcFh8WEgz95AwSEgwAAAEAAAAAA5MDAQArAAABITc2NCYiDwEGFB8BFjI2NC8BITIeAgcOAiMhIgYUFjMhFj4BNzYuAgKb/l6DCxchC8QMDMQLIRcLfQGcIj8uFwIEMEsr/qAQFxcQAV8+bkYHBSBFXwI7ggwhFwzDDCELxAwXIQx+HDJAIixGKBchFwE6ZT40YU0qAAAFAAD/+wNuAvoADQARABUAGQAdAAABEyETMwMOASMhIiYnAxcRIxEzESMRJSEVISUVITUBSR8BNyBJIAIqHf7JHCoCIelJz0n+bQLc/SQCB/7bAgb+PgHC/jkcKCgcAccX/qsBVf6rAVWRScNJSQAAAwAA//QDJAMMADEAQgBOAAABNCYrASIGFRQOASIuATU0JisBIgYVFBceARcVIyIGHQEUFjMhMjY9ATQmKwE1PgE3NgUyPgE9ATQuASIOAR0BFB4BAzQ2MhYdARQGIiY1AyMEAzUDBDxnemc8BAM1AwQiIXVIgQkMAwIBaAIDDAmESHchI/7dKUUoKEVSRSgoRSoxRDExRDEBswMEBAM9Zzw8Zz0DBAQDSUA+UQlaEQwfAwUFAx8MEVoHUT9ATChEKMYoRSgoRSjGKEQoAVoiLy8ixiEwMCEAAgAA/+gDpwMXABIALAAACQEeAQcGBwEGLgE3EzYnAyY+AQcOARcTMzIWFAYrAQMGHgE3ATY3NTYmJwEmAQcCaCEWEA0a/ZchRSAKVgICVAsiRRAKCQNSzw0TEw3PUwMJEgkCagcEBAYJ/ZgJAwb+yBFFIRoN/sgQF0AiARoFBAEaI0EURwMRCv7vExoT/u8JEgYFATcDBwEJEgUBOAUAAAIAAAAAA8AC4AAVAF0AACUjNTQmKwEiBh0BIyIGHwEWMj8BNiYTLgEnJiIHDgEHDgIVFB4BOwEyNj0BNCYrASIuAjc+AT8CPgE3NjIXHgEfAh4BFRQOAisBIgYdARQWOwEyPgE1NC4BAnBKBQM8AwVKBQQDcAIIAnADBLYWWjs9hj07WRcrQyc2XDYoAwUFAygZLiQSAQEzKCYODS0eP5o/Hi0NDiYpMxMjLRkoAwUFAyg2XDYmRL7yAwUFA/IJBI4DA44ECQFTPV0aGxsaXT0LOFAuNlw2BQM8AwUTJS8ZKUALCiUiORYsLBU6IiUKC0MqGS0jEwUDPAMFNlw2LlA4AAAAAgAAAAADiwL2AAwAGQAAEzQ2MyEyFhQGIyEiJgEiJjURNDYyFhURFAagEw0Cqw0TEw39VQ0TAXUNExMbEhIBgA0TExoTE/6YEg4Cqg4SEg79Vg4SAAAAAAIAAAAAA3wDAAAcACkAACUyNjcXFjI+AS8BPgE1NCcmJyYiBwYHBhQXFhcWNyIuATQ+ATIeARQOAQG6MVwovw0nGQEOvR8gKilGSadIRykqKilGSVNBcEFBcINwQUFwkx4cvw0aJw2+KWAzVEhGKioqKkZIqEhGKStDQnCDb0JCb4NwQgAAAAACAAAAAAPOArwADAAZAAATNjIfARYUBiIvASY0JRYUBwEGIiY0NwE2MqMSMBLsESIxEe0RAyoREf4nETEjEQHZEjABvxER7BExIhHsETH9EjAS/ikRIjERAdgRAAQAAAAAA5MCSQAMABkAJgAzAAATNjIfARYUBiIvASY0BTYyHwEWFAYiLwEmNCUWFAcBBiImNDcBNjIXFhQHAQYiJjQ3ATYyfAwhDKAMGCEMoAwBJQsiC3kMGCEMeAwBDQwM/r8MIRcLAUEMIf0LC/6/DCEYDAFBDCEBnAwMoAsiFwygCyIdDAx4CyIXDHgLItMLIgv+wAwXIgsBQAwMCyIL/sAMFyILAUAMAAACAAAAAAOAAnoAJABBAAABFAYHDgEUFxYXFh0BFA4CIyEiJyYnJjcRND4CMyEyFx4BBzcRFAYjIicuAScmJyYnLgI0PgI3Njc2NzIWFQKeEAcJDwcNFAcSGyAO/pgTESIOBwENGCETAWcmHA0PAeEQEQgHCREJBgUPDhQmHiAtMREGCwoKFAsB3gMUCw0cIA4ZFAgCTQwgHBIHDyIREwE8Dx8bERoNIhIF/rIQGQQFCwYEBg0OFi82LDg2LgwEBwUBFhAABgAAAAADgwHcAAAADQAOABsAHAApAAATIxQeATI+ATQuASIOAQUjFB4BMj4BNC4BIg4BBSMUHgEyPgE0LgEiDgHBRBIgJR8TEx8lIBIBg0QSICQgEhIgJCASAYNFEx8lIBISICUfEwGXEx8TEx8lIBISIBITHxMTHyUgEhIgEhMfExMfJSASEiAAAAABAAD/+wOFAwUAIgAAEzc2Mh8BFhQPARYXFhc3NjIfARYUDwEGDwEmJyYnJic0NjejTg8tD34PDzgkP0VaMhAsD3QPD1QNEwjtvF80OAkODQKoTBAQgxAuEDpQPUIgNREReBAuEVoOAwECtltlbH4SIAwAAAEAAAAAAr8C9wAFAAAJAQcJARcBfQFCR/5tAZNHAYD+1UsBdgF3TAABAAAAAAN3ApwABQAACQEnCQEHAgD+1UsBdgF3TAID/r5HAZP+bUcAAQAAAAADHAL3AAUAAAkBNwkBJwKD/r5HAZP+bUcBgAErS/6K/olMAAEAAAAAA3cCaAAFAAAJARcJATcCAAErS/6K/olMASYBQUb+bQGTRgAEAAAAAANvAvgAFAAgADAAQwAAASIHBgcGFBcWFxYyNzY3NjQnJicmAzQ2MhYdARQGIiY1JzQ+ATIeAR0BFA4BIi4BNQUOASImJyY+ARYXHgEyNjc2HgEB+2RXVDEzMzFUV8lWVDEzMzFUVhQXIRcXIRfvCxIVEwsLExUSCwFcImNvYyIGAxEVBxpNVk4aCR8MAvgzMVRXyVZUMTMzMVRWyVdUMTP+5xAYGBA1ERcXETULEgsLEgs1CxILCxILoC0xMSsJFQ0CCCImJyINBB0AAAASAN4AAQAAAAAAAAATAAAAAQAAAAAAAQAIABMAAQAAAAAAAgAHABsAAQAAAAAAAwAIACIAAQAAAAAABAAIACoAAQAAAAAABQALADIAAQAAAAAABgAIAD0AAQAAAAAACgArAEUAAQAAAAAACwATAHAAAwABBAkAAAAmAIMAAwABBAkAAQAQAKkAAwABBAkAAgAOALkAAwABBAkAAwAQAMcAAwABBAkABAAQANcAAwABBAkABQAWAOcAAwABBAkABgAQAP0AAwABBAkACgBWAQ0AAwABBAkACwAmAWNDcmVhdGVkIGJ5IGljb25mb250aWNvbmZvbnRSZWd1bGFyaWNvbmZvbnRpY29uZm9udFZlcnNpb24gMS4waWNvbmZvbnRHZW5lcmF0ZWQgYnkgc3ZnMnR0ZiBmcm9tIEZvbnRlbGxvIHByb2plY3QuaHR0cDovL2ZvbnRlbGxvLmNvbQBDAHIAZQBhAHQAZQBkACAAYgB5ACAAaQBjAG8AbgBmAG8AbgB0AGkAYwBvAG4AZgBvAG4AdABSAGUAZwB1AGwAYQByAGkAYwBvAG4AZgBvAG4AdABpAGMAbwBuAGYAbwBuAHQAVgBlAHIAcwBpAG8AbgAgADEALgAwAGkAYwBvAG4AZgBvAG4AdABHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAAIAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIgECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBEwEUARUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjAA9jaGVja2JveGNoZWNrZWQIY2hlY2tib3gFcmFkaW8FY2xvc2UEY29weQdsb2FkaW5nBlNoYXBleAVpbWFnZQZpbWFnZTEEZmlsZQppbWFnZS1maWxsBXZpZGVvDk5vdGljZV9NZW50aW9uEWFycm93LWRvd24tY2lyY2xlB3lpbnlvbmcHemh1YW5mYQZjaGVodWkGZGVsZXRlBmF1ZGlvMQdzZW5kaW5nDmNsb3VkLWRvd25sb2FkA2FkZAZzZWFyY2gJQ2hlY2ttYXJrCmEtQ2hlY2thbGwFYXVkaW8EbW9yZQV2b2ljZRBqaWFudG91LXlvdS1jb3B5FWppYW50b3UteW91LWNvcHktY29weQtqaWFudG91LXlvdQtqaWFudG91LXhpYQRmYWNlAAAA) format("truetype")}.iconfont{font-family:iconfont,Arial,sans-serif!important;font-size:20px;font-style:normal;line-height:1;vertical-align:bottom;-webkit-font-smoothing:antialiased;-webkit-text-stroke-width:.2px;-moz-osx-font-smoothing:grayscale}
|
|
1
|
+
.popup{opacity:0}.popup-show{opacity:1}
|
package/dist/types/message.d.ts
CHANGED
package/dist/types/user.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
interface
|
|
1
|
+
interface UserStatus {
|
|
2
2
|
/**
|
|
3
3
|
* user status type
|
|
4
4
|
* 0: unknown
|
|
@@ -12,7 +12,7 @@ interface IUserStatus {
|
|
|
12
12
|
*/
|
|
13
13
|
customStatus: string;
|
|
14
14
|
}
|
|
15
|
-
interface
|
|
16
|
-
[userID: string]:
|
|
15
|
+
interface UserStatusMap {
|
|
16
|
+
[userID: string]: UserStatus;
|
|
17
17
|
}
|
|
18
|
-
export type {
|
|
18
|
+
export type { UserStatus, UserStatusMap };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tencentcloud/chat-uikit-react",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.4.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"module": "dist/index.js",
|
|
6
6
|
"exports": {
|
|
@@ -40,25 +40,14 @@
|
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"@mui/base": "5.0.0-beta.66",
|
|
43
|
-
"
|
|
44
|
-
"@tencentcloud/chat-uikit-engine": "~2.5.1",
|
|
45
|
-
"@tencentcloud/tui-core": "latest",
|
|
46
|
-
"@tencentcloud/uikit-base-component-react": "0.1.0",
|
|
47
|
-
"tuikit-atomicx-react": "0.1.2",
|
|
48
|
-
"@tencentcloud/universal-api": "^2.4.0",
|
|
49
|
-
"@tiptap/extension-image": "2.0.0-beta.220",
|
|
50
|
-
"@tiptap/extension-placeholder": "2.0.0-beta.220",
|
|
51
|
-
"@tiptap/react": "2.11.5",
|
|
52
|
-
"@tiptap/starter-kit": "2.11.5",
|
|
43
|
+
"tuikit-atomicx-react": "3.4.2",
|
|
53
44
|
"classnames": "^2.5.1",
|
|
54
|
-
"date-fns": "^2.29.3",
|
|
55
|
-
"lodash-es": "4.17.21",
|
|
56
|
-
"react": "^18.2.0",
|
|
57
|
-
"react-dom": "^18.2.0",
|
|
58
45
|
"react-transition-group": "^4.4.5",
|
|
59
46
|
"zustand": "^5.0.0"
|
|
60
47
|
},
|
|
61
48
|
"devDependencies": {
|
|
49
|
+
"react": "^18.2.0",
|
|
50
|
+
"react-dom": "^18.2.0",
|
|
62
51
|
"@chromatic-com/storybook": "^3.2.2",
|
|
63
52
|
"@storybook/addon-docs": "^8.4.5",
|
|
64
53
|
"@storybook/addon-essentials": "^8.4.5",
|
|
@@ -74,8 +63,6 @@
|
|
|
74
63
|
"@storybook/theming": "^8.4.5",
|
|
75
64
|
"@stylistic/stylelint-config": "^2.0.0",
|
|
76
65
|
"@tencentcloud/eslint-config-hybrid": "^0.0.1",
|
|
77
|
-
"@types/lodash-es": "^4.17.12",
|
|
78
|
-
"@types/lodash.throttle": "^4.1.9",
|
|
79
66
|
"@types/node": "latest",
|
|
80
67
|
"@types/postcss-url": "^10.0.4",
|
|
81
68
|
"@types/react": "^18.3.12",
|
|
@@ -102,12 +89,17 @@
|
|
|
102
89
|
"vite": "^5.4.10",
|
|
103
90
|
"vite-plugin-dts": "^4.2.2",
|
|
104
91
|
"vite-plugin-lib-inject-css": "^2.1.1",
|
|
105
|
-
"vite-plugin-static-copy": "^1.0.6"
|
|
92
|
+
"vite-plugin-static-copy": "^1.0.6",
|
|
93
|
+
"@trtc/calls-uikit-react": "~4.2.2"
|
|
106
94
|
},
|
|
107
95
|
"peerDependencies": {
|
|
108
|
-
"@tencentcloud/call-uikit-react": "3.3.9",
|
|
109
96
|
"i18next": "^23.7.11",
|
|
110
97
|
"react": "^18.2.0",
|
|
111
|
-
"react-dom": "^18.2.0"
|
|
98
|
+
"react-dom": "^18.2.0",
|
|
99
|
+
"@tencentcloud/lite-chat": "^1.5.0",
|
|
100
|
+
"@tencentcloud/tui-core-lite": "~1.0.0",
|
|
101
|
+
"@tencentcloud/chat-uikit-engine-lite": "~1.0.1",
|
|
102
|
+
"@tencentcloud/uikit-base-component-react": "1.1.1",
|
|
103
|
+
"@tencentcloud/universal-api": "^2.4.0"
|
|
112
104
|
}
|
|
113
105
|
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
@use "@tencentcloud/uikit-base-component-react/dist/styles/theme/util" as *;
|
|
2
|
+
|
|
3
|
+
.audio-call-picker {
|
|
4
|
+
&__button {
|
|
5
|
+
display: flex;
|
|
6
|
+
align-items: center;
|
|
7
|
+
justify-content: center;
|
|
8
|
+
cursor: pointer;
|
|
9
|
+
padding: 4px 6px;
|
|
10
|
+
border: none;
|
|
11
|
+
background: transparent;
|
|
12
|
+
transition: background-color 0.5s ease;
|
|
13
|
+
border-radius: 4px;
|
|
14
|
+
outline: none;
|
|
15
|
+
|
|
16
|
+
@include theme() {
|
|
17
|
+
&:hover {
|
|
18
|
+
background-color: get(button-color-secondary-hover);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
&:active {
|
|
22
|
+
background-color: get(button-color-secondary-active);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
&:focus {
|
|
27
|
+
outline: none;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
&--disabled {
|
|
31
|
+
opacity: 0.5;
|
|
32
|
+
cursor: not-allowed;
|
|
33
|
+
user-select: none;
|
|
34
|
+
pointer-events: none;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
&__icon {
|
|
39
|
+
transition: color 0.2s ease;
|
|
40
|
+
|
|
41
|
+
@include theme() {
|
|
42
|
+
color: get(text-color-link);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Global styles for dialog (non-module)
|
|
48
|
+
|
|
49
|
+
.group-call-dialog {
|
|
50
|
+
background: white;
|
|
51
|
+
border-radius: 8px;
|
|
52
|
+
max-width: 500px;
|
|
53
|
+
max-height: 70vh;
|
|
54
|
+
display: flex;
|
|
55
|
+
flex-direction: column;
|
|
56
|
+
box-shadow: 0 4px 20px rgba(0, 0, 0, 15%);
|
|
57
|
+
}
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import type React from 'react';
|
|
2
|
+
import { useState, useRef, useMemo, useCallback } from 'react';
|
|
3
|
+
import {
|
|
4
|
+
IconCallFilled,
|
|
5
|
+
Dialog,
|
|
6
|
+
useUIKit,
|
|
7
|
+
} from '@tencentcloud/uikit-base-component-react';
|
|
8
|
+
import cs from 'classnames';
|
|
9
|
+
import {
|
|
10
|
+
View,
|
|
11
|
+
useConversationListState,
|
|
12
|
+
useGroupSettingState,
|
|
13
|
+
ConversationType,
|
|
14
|
+
startCall,
|
|
15
|
+
UserPicker,
|
|
16
|
+
useLoginState,
|
|
17
|
+
} from 'tuikit-atomicx-react';
|
|
18
|
+
import classes from './AudioCallPicker.module.scss';
|
|
19
|
+
import type { IUserPickerRef } from 'tuikit-atomicx-react';
|
|
20
|
+
|
|
21
|
+
interface AudioCallPickerProps {
|
|
22
|
+
/**
|
|
23
|
+
* Label text for the button
|
|
24
|
+
*/
|
|
25
|
+
label?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Icon size in pixels
|
|
28
|
+
*/
|
|
29
|
+
iconSize?: number;
|
|
30
|
+
/**
|
|
31
|
+
* Whether the button is disabled
|
|
32
|
+
*/
|
|
33
|
+
disabled?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Custom className for the button
|
|
36
|
+
*/
|
|
37
|
+
className?: string;
|
|
38
|
+
/**
|
|
39
|
+
* Custom style for the button
|
|
40
|
+
*/
|
|
41
|
+
style?: React.CSSProperties;
|
|
42
|
+
/**
|
|
43
|
+
* Custom icon slot
|
|
44
|
+
*/
|
|
45
|
+
children?: React.ReactNode;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
interface GroupMemberOption {
|
|
49
|
+
key: string;
|
|
50
|
+
label: string;
|
|
51
|
+
avatarUrl?: string;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const AUDIO_CALL_TYPE = 1;
|
|
55
|
+
const MEMBER_PAGE_SIZE = 80;
|
|
56
|
+
const MAX_GROUP_CALL_MEMBERS = 8;
|
|
57
|
+
const MIN_GROUP_CALL_MEMBERS = 1;
|
|
58
|
+
|
|
59
|
+
const AudioCallPicker = (props: AudioCallPickerProps) => {
|
|
60
|
+
const {
|
|
61
|
+
label = '',
|
|
62
|
+
iconSize = 20,
|
|
63
|
+
disabled = false,
|
|
64
|
+
className,
|
|
65
|
+
style,
|
|
66
|
+
children,
|
|
67
|
+
} = props;
|
|
68
|
+
|
|
69
|
+
const { t } = useUIKit();
|
|
70
|
+
const { loginUserInfo } = useLoginState();
|
|
71
|
+
const { activeConversation } = useConversationListState();
|
|
72
|
+
const { allMembers, getGroupMemberList, memberCount } = useGroupSettingState();
|
|
73
|
+
|
|
74
|
+
const [isGroupCallDialogVisible, setIsGroupCallDialogVisible] = useState(false);
|
|
75
|
+
const groupMemberPickerRef = useRef<IUserPickerRef>(null);
|
|
76
|
+
|
|
77
|
+
const selfUserId = useMemo(() => loginUserInfo?.userId, [loginUserInfo]);
|
|
78
|
+
|
|
79
|
+
const isC2CConversation = useMemo(() => activeConversation?.type === ConversationType.C2C, [activeConversation]);
|
|
80
|
+
|
|
81
|
+
const groupMemberOptions = useMemo<GroupMemberOption[]>(() => allMembers?.map((member: any) => ({
|
|
82
|
+
key: member.userID,
|
|
83
|
+
label: member.nick || member.userID,
|
|
84
|
+
avatarUrl: member.avatar,
|
|
85
|
+
})) ?? [], [allMembers]);
|
|
86
|
+
|
|
87
|
+
const canStartCall = useMemo(() => {
|
|
88
|
+
if (!activeConversation || disabled) {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
// TODO: add more call permission check logic
|
|
92
|
+
return true;
|
|
93
|
+
}, [activeConversation, disabled]);
|
|
94
|
+
|
|
95
|
+
const initiatePrivateCall = useCallback((): void => {
|
|
96
|
+
const peerUserId = activeConversation?.userProfile?.userID;
|
|
97
|
+
if (!peerUserId) {
|
|
98
|
+
console.warn('No peer user ID found for C2C call');
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
try {
|
|
103
|
+
startCall({
|
|
104
|
+
userIDList: [peerUserId],
|
|
105
|
+
type: AUDIO_CALL_TYPE,
|
|
106
|
+
});
|
|
107
|
+
} catch (error) {
|
|
108
|
+
console.error('Failed to start private audio call:', error);
|
|
109
|
+
}
|
|
110
|
+
}, []);
|
|
111
|
+
|
|
112
|
+
const loadMoreGroupMembers = useCallback((): void => {
|
|
113
|
+
if (activeConversation?.type !== ConversationType.GROUP) {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
const currentMemberCount = allMembers?.length || 0;
|
|
118
|
+
const totalMemberCount = memberCount || 0;
|
|
119
|
+
|
|
120
|
+
if (currentMemberCount < totalMemberCount) {
|
|
121
|
+
getGroupMemberList({
|
|
122
|
+
count: MEMBER_PAGE_SIZE,
|
|
123
|
+
offset: currentMemberCount,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
}, [activeConversation, allMembers, memberCount, getGroupMemberList]);
|
|
127
|
+
|
|
128
|
+
const showGroupCallDialog = useCallback((): void => {
|
|
129
|
+
loadMoreGroupMembers();
|
|
130
|
+
setIsGroupCallDialogVisible(true);
|
|
131
|
+
}, [loadMoreGroupMembers]);
|
|
132
|
+
|
|
133
|
+
const handleCloseGroupCallDialog = useCallback(() => {
|
|
134
|
+
setIsGroupCallDialogVisible(false);
|
|
135
|
+
}, []);
|
|
136
|
+
|
|
137
|
+
const initiateGroupCall = useCallback((): void => {
|
|
138
|
+
const currentGroupId = activeConversation?.groupProfile?.groupID;
|
|
139
|
+
if (!groupMemberPickerRef.current || !currentGroupId) {
|
|
140
|
+
console.warn('Missing group information for group call');
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
const selectedMembers = groupMemberPickerRef.current.getSelectedItems();
|
|
145
|
+
if (!Array.isArray(selectedMembers) || selectedMembers.length === 0) {
|
|
146
|
+
console.warn('No members selected for group call');
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
const selectedUserIds = selectedMembers.map(member => member.key);
|
|
151
|
+
|
|
152
|
+
try {
|
|
153
|
+
startCall({
|
|
154
|
+
userIDList: selectedUserIds,
|
|
155
|
+
chatGroupID: currentGroupId,
|
|
156
|
+
type: AUDIO_CALL_TYPE,
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
handleCloseGroupCallDialog();
|
|
160
|
+
} catch (error) {
|
|
161
|
+
console.error('Failed to start group audio call:', error);
|
|
162
|
+
}
|
|
163
|
+
}, [handleCloseGroupCallDialog]);
|
|
164
|
+
|
|
165
|
+
const handleAudioCallClick = useCallback(() => {
|
|
166
|
+
if (!canStartCall) {
|
|
167
|
+
console.warn('Cannot start audio call');
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
if (isC2CConversation) {
|
|
172
|
+
initiatePrivateCall();
|
|
173
|
+
} else {
|
|
174
|
+
showGroupCallDialog();
|
|
175
|
+
}
|
|
176
|
+
}, []);
|
|
177
|
+
|
|
178
|
+
const handleConfirmGroupCall = useCallback(() => {
|
|
179
|
+
initiateGroupCall();
|
|
180
|
+
}, [initiateGroupCall]);
|
|
181
|
+
|
|
182
|
+
return (
|
|
183
|
+
<>
|
|
184
|
+
<View>
|
|
185
|
+
<button
|
|
186
|
+
type="button"
|
|
187
|
+
className={cs(
|
|
188
|
+
classes['audio-call-picker__button'],
|
|
189
|
+
{
|
|
190
|
+
[classes['audio-call-picker__button--disabled']]: disabled,
|
|
191
|
+
},
|
|
192
|
+
className,
|
|
193
|
+
)}
|
|
194
|
+
style={style}
|
|
195
|
+
onClick={handleAudioCallClick}
|
|
196
|
+
disabled={disabled}
|
|
197
|
+
aria-label={label || 'Audio Call'}
|
|
198
|
+
>
|
|
199
|
+
{children || (
|
|
200
|
+
<IconCallFilled
|
|
201
|
+
className={classes['audio-call-picker__icon']}
|
|
202
|
+
size={`${iconSize}px`}
|
|
203
|
+
/>
|
|
204
|
+
)}
|
|
205
|
+
</button>
|
|
206
|
+
|
|
207
|
+
{/* TODO: Replace with TUIDialog component */}
|
|
208
|
+
<Dialog
|
|
209
|
+
visible={isGroupCallDialogVisible}
|
|
210
|
+
title={t('MessageInput.select_call_members')}
|
|
211
|
+
cancelText={t('MessageInput.cancel')}
|
|
212
|
+
onCancel={handleCloseGroupCallDialog}
|
|
213
|
+
onClose={handleCloseGroupCallDialog}
|
|
214
|
+
confirmText={t('MessageInput.initiate_call')}
|
|
215
|
+
onConfirm={handleConfirmGroupCall}
|
|
216
|
+
className={classes['group-call-dialog']}
|
|
217
|
+
>
|
|
218
|
+
<UserPicker
|
|
219
|
+
ref={groupMemberPickerRef}
|
|
220
|
+
displayMode="list"
|
|
221
|
+
dataSource={groupMemberOptions}
|
|
222
|
+
lockedItems={selfUserId ? [{ key: selfUserId }] : []}
|
|
223
|
+
maxCount={MAX_GROUP_CALL_MEMBERS}
|
|
224
|
+
minCount={MIN_GROUP_CALL_MEMBERS}
|
|
225
|
+
onReachEnd={loadMoreGroupMembers}
|
|
226
|
+
/>
|
|
227
|
+
</Dialog>
|
|
228
|
+
</View>
|
|
229
|
+
</>
|
|
230
|
+
);
|
|
231
|
+
};
|
|
232
|
+
|
|
233
|
+
export { AudioCallPicker };
|
|
234
|
+
export type { AudioCallPickerProps };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { AudioCallPicker } from './AudioCallPicker';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
2
|
import { useEffect } from 'react';
|
|
3
|
-
import { TUIUserService } from '@tencentcloud/chat-uikit-engine';
|
|
3
|
+
import { TUIUserService } from '@tencentcloud/chat-uikit-engine-lite';
|
|
4
4
|
import { useMessageInputState } from 'tuikit-atomicx-react';
|
|
5
|
-
import {
|
|
5
|
+
import { useChatHeader } from '../../hooks';
|
|
6
6
|
import ChatHeaderUI from './ChatHeaderUI';
|
|
7
7
|
import type { AvatarProps } from 'tuikit-atomicx-react';
|
|
8
8
|
|
|
@@ -13,10 +13,16 @@ interface ChatHeaderProps {
|
|
|
13
13
|
avatar?: string | undefined;
|
|
14
14
|
/** Whether to show user status */
|
|
15
15
|
enableUserStatus?: boolean | undefined;
|
|
16
|
+
/** Whether to show call features */
|
|
17
|
+
enableCall?: boolean | undefined;
|
|
16
18
|
/** Whether to enable chat setting */
|
|
17
19
|
chatHeaderActions?: Array<'videoCall' | 'audioCall' | 'chatSetting' | 'search'> | undefined;
|
|
18
20
|
/** Custom avatar component */
|
|
19
21
|
Avatar?: React.ComponentType<AvatarProps> | undefined;
|
|
22
|
+
/** Custom left slot */
|
|
23
|
+
ChatHeaderLeft?: React.ReactNode | undefined;
|
|
24
|
+
/** Custom right slot */
|
|
25
|
+
ChatHeaderRight?: React.ReactNode | undefined;
|
|
20
26
|
/** Additional class names */
|
|
21
27
|
className?: string | undefined;
|
|
22
28
|
/** Additional style */
|
|
@@ -29,10 +35,13 @@ const ChatHeader = (props: ChatHeaderProps) => {
|
|
|
29
35
|
title,
|
|
30
36
|
avatar,
|
|
31
37
|
enableUserStatus = false,
|
|
38
|
+
enableCall = false,
|
|
32
39
|
chatHeaderActions,
|
|
33
40
|
Avatar,
|
|
34
41
|
className,
|
|
35
42
|
style,
|
|
43
|
+
ChatHeaderLeft,
|
|
44
|
+
ChatHeaderRight,
|
|
36
45
|
} = props;
|
|
37
46
|
|
|
38
47
|
const {
|
|
@@ -42,7 +51,7 @@ const ChatHeader = (props: ChatHeaderProps) => {
|
|
|
42
51
|
title: exceptedTitle,
|
|
43
52
|
avatar: exceptedAvatar,
|
|
44
53
|
userStatus,
|
|
45
|
-
} =
|
|
54
|
+
} = useChatHeader();
|
|
46
55
|
|
|
47
56
|
const { isPeerTyping } = useMessageInputState();
|
|
48
57
|
|
|
@@ -60,11 +69,14 @@ const ChatHeader = (props: ChatHeaderProps) => {
|
|
|
60
69
|
isPeerTyping={isPeerTyping}
|
|
61
70
|
system={system}
|
|
62
71
|
enableUserStatus={enableUserStatus}
|
|
72
|
+
enableCall={enableCall}
|
|
63
73
|
chatHeaderActions={chatHeaderActions}
|
|
64
74
|
Avatar={Avatar}
|
|
65
75
|
style={style}
|
|
66
76
|
className={className}
|
|
67
77
|
onSearchClick={props.onSearchClick}
|
|
78
|
+
ChatHeaderLeft={ChatHeaderLeft}
|
|
79
|
+
ChatHeaderRight={ChatHeaderRight}
|
|
68
80
|
/>
|
|
69
81
|
);
|
|
70
82
|
};
|