@dpocean/chatui 1.0.0
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/LICENSE +21 -0
- package/README.md +119 -0
- package/README.zh-CN.md +123 -0
- package/dist/index.css +1 -0
- package/dist/index.js +1 -0
- package/es/components/Avatar/index.js +21 -0
- package/es/components/Avatar/style.less +26 -0
- package/es/components/BackBottom/index.js +28 -0
- package/es/components/BackBottom/style.less +15 -0
- package/es/components/Backdrop/index.js +17 -0
- package/es/components/Backdrop/style.less +17 -0
- package/es/components/Bubble/index.js +17 -0
- package/es/components/Bubble/style.less +59 -0
- package/es/components/Button/index.js +45 -0
- package/es/components/Button/style.less +114 -0
- package/es/components/Card/Card.js +20 -0
- package/es/components/Card/CardActions.js +14 -0
- package/es/components/Card/CardContent.js +13 -0
- package/es/components/Card/CardHeader.js +52 -0
- package/es/components/Card/CardMedia.js +30 -0
- package/es/components/Card/CardText.js +13 -0
- package/es/components/Card/CardTitle.js +24 -0
- package/es/components/Card/index.js +7 -0
- package/es/components/Card/style.less +239 -0
- package/es/components/Carousel/Item.js +11 -0
- package/es/components/Carousel/index.js +369 -0
- package/es/components/Carousel/style.less +55 -0
- package/es/components/Chat/index.js +157 -0
- package/es/components/Chat/style.less +68 -0
- package/es/components/Checkbox/Checkbox.js +27 -0
- package/es/components/Checkbox/CheckboxGroup.js +43 -0
- package/es/components/Checkbox/index.js +2 -0
- package/es/components/ClickOutside/index.js +31 -0
- package/es/components/ComponentsProvider/ComponentsContext.js +10 -0
- package/es/components/ComponentsProvider/index.js +90 -0
- package/es/components/ComponentsProvider/interface.js +1 -0
- package/es/components/ComponentsProvider/useComponents.js +5 -0
- package/es/components/Composer/AccessoryWrap.js +9 -0
- package/es/components/Composer/Action.js +11 -0
- package/es/components/Composer/ComposerInput.js +58 -0
- package/es/components/Composer/SendButton.js +29 -0
- package/es/components/Composer/ToolbarItem.js +14 -0
- package/es/components/Composer/index.js +344 -0
- package/es/components/Composer/riseInput.js +49 -0
- package/es/components/Composer/style.less +103 -0
- package/es/components/Composer/viewportTop.js +22 -0
- package/es/components/ConfigProvider/index.js +44 -0
- package/es/components/ConfigProvider/locales/en_US.js +37 -0
- package/es/components/ConfigProvider/locales/es.js +37 -0
- package/es/components/ConfigProvider/locales/hi.js +37 -0
- package/es/components/ConfigProvider/locales/id.js +37 -0
- package/es/components/ConfigProvider/locales/index.js +20 -0
- package/es/components/ConfigProvider/locales/pt.js +37 -0
- package/es/components/ConfigProvider/locales/ur.js +37 -0
- package/es/components/ConfigProvider/locales/vi.js +37 -0
- package/es/components/ConfigProvider/locales/zh_CN.js +40 -0
- package/es/components/Countdown/index.js +22 -0
- package/es/components/Countdown/style.less +14 -0
- package/es/components/Coupon/index.js +84 -0
- package/es/components/Coupon/style.less +145 -0
- package/es/components/Divider/index.js +16 -0
- package/es/components/Divider/style.less +44 -0
- package/es/components/Empty/index.js +45 -0
- package/es/components/Empty/style.less +26 -0
- package/es/components/ErrorBoundary/index.js +58 -0
- package/es/components/FileCard/index.js +38 -0
- package/es/components/FileCard/style.less +63 -0
- package/es/components/Filter/index.js +200 -0
- package/es/components/Filter/style.less +96 -0
- package/es/components/Flex/Flex.js +52 -0
- package/es/components/Flex/FlexItem.js +25 -0
- package/es/components/Flex/index.js +2 -0
- package/es/components/Flex/style.less +78 -0
- package/es/components/Form/Form.js +20 -0
- package/es/components/Form/FormActions.js +12 -0
- package/es/components/Form/FormItem.js +19 -0
- package/es/components/Form/index.js +3 -0
- package/es/components/Form/style.less +64 -0
- package/es/components/Goods/index.js +126 -0
- package/es/components/Goods/style.less +119 -0
- package/es/components/HelpText/index.js +11 -0
- package/es/components/HelpText/style.less +4 -0
- package/es/components/Icon/index.js +24 -0
- package/es/components/Icon/style.less +21 -0
- package/es/components/IconButton/index.js +22 -0
- package/es/components/IconButton/style.less +25 -0
- package/es/components/Image/index.js +54 -0
- package/es/components/Image/style.less +11 -0
- package/es/components/ImageList/index.js +29 -0
- package/es/components/ImageList/style.less +20 -0
- package/es/components/InfiniteScroll/index.js +35 -0
- package/es/components/InfiniteScroll/style.less +4 -0
- package/es/components/Input/index.js +118 -0
- package/es/components/Input/style.less +74 -0
- package/es/components/KvList/KvItem.js +44 -0
- package/es/components/KvList/KvList.js +13 -0
- package/es/components/KvList/index.js +2 -0
- package/es/components/KvList/style.less +73 -0
- package/es/components/Label/index.js +12 -0
- package/es/components/Label/style.less +5 -0
- package/es/components/LazyComponent/SuspenseWrap.js +15 -0
- package/es/components/LazyComponent/index.js +50 -0
- package/es/components/LazyComponent/interface.js +1 -0
- package/es/components/List/List.js +17 -0
- package/es/components/List/ListItem.js +30 -0
- package/es/components/List/index.js +2 -0
- package/es/components/List/style.less +75 -0
- package/es/components/Loading/index.js +16 -0
- package/es/components/Loading/style.less +13 -0
- package/es/components/MediaObject/index.js +24 -0
- package/es/components/MediaObject/style.less +28 -0
- package/es/components/Message/Message.js +62 -0
- package/es/components/Message/SystemMessage.js +33 -0
- package/es/components/Message/index.js +2 -0
- package/es/components/Message/style.less +132 -0
- package/es/components/MessageContainer/index.js +187 -0
- package/es/components/MessageContainer/style.less +19 -0
- package/es/components/MessageStatus/index.js +84 -0
- package/es/components/MessageStatus/style.less +32 -0
- package/es/components/Modal/Base.js +131 -0
- package/es/components/Modal/Confirm.js +42 -0
- package/es/components/Modal/Modal.js +9 -0
- package/es/components/Modal/Popup.js +9 -0
- package/es/components/Modal/index.js +3 -0
- package/es/components/Modal/style.less +267 -0
- package/es/components/MultiRedPacket/index.js +29 -0
- package/es/components/MultiRedPacket/style.less +53 -0
- package/es/components/Navbar/index.js +49 -0
- package/es/components/Navbar/style.less +84 -0
- package/es/components/Notice/index.js +33 -0
- package/es/components/Notice/style.less +29 -0
- package/es/components/OrderObject/index.js +38 -0
- package/es/components/OrderObject/style.less +18 -0
- package/es/components/Popover/index.js +56 -0
- package/es/components/Popover/style.less +22 -0
- package/es/components/Portal/index.js +29 -0
- package/es/components/Price/index.js +92 -0
- package/es/components/Price/style.less +45 -0
- package/es/components/Progress/index.js +25 -0
- package/es/components/Progress/style.less +23 -0
- package/es/components/PullToRefresh/index.js +224 -0
- package/es/components/PullToRefresh/style.less +37 -0
- package/es/components/QuickReplies/QuickReplies.js +50 -0
- package/es/components/QuickReplies/QuickReply.js +29 -0
- package/es/components/QuickReplies/index.js +2 -0
- package/es/components/QuickReplies/style.less +94 -0
- package/es/components/Quote/index.js +16 -0
- package/es/components/Quote/style.less +46 -0
- package/es/components/Radio/Radio.js +27 -0
- package/es/components/Radio/RadioGroup.js +37 -0
- package/es/components/Radio/index.js +2 -0
- package/es/components/Radio/style.less +87 -0
- package/es/components/RateActions/index.js +54 -0
- package/es/components/RateActions/style.less +34 -0
- package/es/components/Recorder/index.js +128 -0
- package/es/components/Recorder/style.less +89 -0
- package/es/components/RedPacket/index.js +93 -0
- package/es/components/RedPacket/style.less +135 -0
- package/es/components/Ribbon/index.js +37 -0
- package/es/components/Ribbon/style.less +71 -0
- package/es/components/RichText/configDOMPurify.js +26 -0
- package/es/components/RichText/index.js +25 -0
- package/es/components/RichText/style.less +4 -0
- package/es/components/ScrollGrid/index.js +74 -0
- package/es/components/ScrollGrid/style.less +54 -0
- package/es/components/ScrollView/Item.js +39 -0
- package/es/components/ScrollView/ScrollView.js +89 -0
- package/es/components/ScrollView/index.js +1 -0
- package/es/components/ScrollView/style.less +60 -0
- package/es/components/Search/index.js +78 -0
- package/es/components/Search/style.less +47 -0
- package/es/components/Select/index.js +20 -0
- package/es/components/Select/style.less +11 -0
- package/es/components/SendConfirm/SendConfirm.js +45 -0
- package/es/components/SendConfirm/index.js +1 -0
- package/es/components/SendConfirm/style.less +16 -0
- package/es/components/Skeleton/index.js +21 -0
- package/es/components/Skeleton/style.less +26 -0
- package/es/components/StatusBadge/index.js +22 -0
- package/es/components/StatusBadge/style.less +27 -0
- package/es/components/Stepper/Step.js +56 -0
- package/es/components/Stepper/Stepper.js +40 -0
- package/es/components/Stepper/index.js +2 -0
- package/es/components/Stepper/style.less +105 -0
- package/es/components/Tabs/Tab.js +5 -0
- package/es/components/Tabs/Tabs.js +142 -0
- package/es/components/Tabs/index.js +2 -0
- package/es/components/Tabs/style.less +98 -0
- package/es/components/Tag/index.js +17 -0
- package/es/components/Tag/style.less +45 -0
- package/es/components/Text/index.js +28 -0
- package/es/components/Text/style.less +19 -0
- package/es/components/Think/index.js +37 -0
- package/es/components/Think/style.less +68 -0
- package/es/components/Time/Time.js +13 -0
- package/es/components/Time/index.js +1 -0
- package/es/components/Time/parser.js +50 -0
- package/es/components/Time/style.less +4 -0
- package/es/components/Tips/index.js +21 -0
- package/es/components/Tips/style.less +23 -0
- package/es/components/Toast/Toast.js +61 -0
- package/es/components/Toast/index.js +23 -0
- package/es/components/Toast/style.less +48 -0
- package/es/components/Toolbar/Toolbar.js +15 -0
- package/es/components/Toolbar/ToolbarButton.js +30 -0
- package/es/components/Toolbar/index.js +1 -0
- package/es/components/Toolbar/style.less +97 -0
- package/es/components/Tooltip/style.less +40 -0
- package/es/components/Tree/Tree.js +10 -0
- package/es/components/Tree/TreeNode.js +66 -0
- package/es/components/Tree/index.js +2 -0
- package/es/components/Tree/style.less +41 -0
- package/es/components/Typing/Typing.js +22 -0
- package/es/components/Typing/index.js +1 -0
- package/es/components/Typing/style.less +41 -0
- package/es/components/TypingBubble/index.js +48 -0
- package/es/components/Video/index.js +82 -0
- package/es/components/Video/style.less +47 -0
- package/es/components/VisuallyHidden/index.js +18 -0
- package/es/components/VisuallyHidden/style.less +0 -0
- package/es/global.d.js +7 -0
- package/es/hooks/useClickOutside.js +21 -0
- package/es/hooks/useCountdown.js +54 -0
- package/es/hooks/useForwardRef.js +14 -0
- package/es/hooks/useLatest.js +6 -0
- package/es/hooks/useMessages.js +72 -0
- package/es/hooks/useMount.js +47 -0
- package/es/hooks/useNextId.js +11 -0
- package/es/hooks/useQuickReplies.js +44 -0
- package/es/hooks/useTitleTyping.js +53 -0
- package/es/hooks/useTypewriter.js +35 -0
- package/es/hooks/useWindowResize.js +24 -0
- package/es/index.js +85 -0
- package/es/styles/animation.less +48 -0
- package/es/styles/dark.less +40 -0
- package/es/styles/font-face.less +22 -0
- package/es/styles/index.less +81 -0
- package/es/styles/root.less +122 -0
- package/es/styles/scale.less +19 -0
- package/es/styles/utils.less +9 -0
- package/es/styles/var.less +369 -0
- package/es/utils/canUse.js +32 -0
- package/es/utils/countLines.js +6 -0
- package/es/utils/date.js +28 -0
- package/es/utils/formatTime.js +16 -0
- package/es/utils/getExtName.js +4 -0
- package/es/utils/getFps.js +25 -0
- package/es/utils/getRandomInt.js +3 -0
- package/es/utils/getToBottom.js +3 -0
- package/es/utils/importScript.js +124 -0
- package/es/utils/index.js +23 -0
- package/es/utils/lazyComponent.js +26 -0
- package/es/utils/mountComponent.js +19 -0
- package/es/utils/parseDataTransfer.js +18 -0
- package/es/utils/prettyBytes.js +10 -0
- package/es/utils/smoothScroll.js +34 -0
- package/es/utils/style.js +13 -0
- package/es/utils/throttle.js +14 -0
- package/es/utils/toggleClass.js +5 -0
- package/es/utils/ua.js +11 -0
- package/lib/components/Avatar/index.d.ts +13 -0
- package/lib/components/Avatar/index.js +28 -0
- package/lib/components/BackBottom/index.d.ts +8 -0
- package/lib/components/BackBottom/index.js +36 -0
- package/lib/components/Backdrop/index.d.ts +7 -0
- package/lib/components/Backdrop/index.js +24 -0
- package/lib/components/Bubble/index.d.ts +6 -0
- package/lib/components/Bubble/index.js +24 -0
- package/lib/components/Button/index.d.ts +14 -0
- package/lib/components/Button/index.js +52 -0
- package/lib/components/Card/Card.d.ts +9 -0
- package/lib/components/Card/Card.js +27 -0
- package/lib/components/Card/CardActions.d.ts +7 -0
- package/lib/components/Card/CardActions.js +21 -0
- package/lib/components/Card/CardContent.d.ts +6 -0
- package/lib/components/Card/CardContent.js +20 -0
- package/lib/components/Card/CardHeader.d.ts +13 -0
- package/lib/components/Card/CardHeader.js +59 -0
- package/lib/components/Card/CardMedia.d.ts +9 -0
- package/lib/components/Card/CardMedia.js +37 -0
- package/lib/components/Card/CardText.d.ts +6 -0
- package/lib/components/Card/CardText.js +20 -0
- package/lib/components/Card/CardTitle.d.ts +9 -0
- package/lib/components/Card/CardTitle.js +31 -0
- package/lib/components/Card/index.d.ts +14 -0
- package/lib/components/Card/index.js +54 -0
- package/lib/components/Carousel/Item.d.ts +7 -0
- package/lib/components/Carousel/Item.js +18 -0
- package/lib/components/Carousel/index.d.ts +26 -0
- package/lib/components/Carousel/index.js +378 -0
- package/lib/components/Chat/index.d.ts +216 -0
- package/lib/components/Chat/index.js +166 -0
- package/lib/components/Checkbox/Checkbox.d.ts +7 -0
- package/lib/components/Checkbox/Checkbox.js +34 -0
- package/lib/components/Checkbox/CheckboxGroup.d.ts +15 -0
- package/lib/components/Checkbox/CheckboxGroup.js +50 -0
- package/lib/components/Checkbox/index.d.ts +4 -0
- package/lib/components/Checkbox/index.js +19 -0
- package/lib/components/ClickOutside/index.d.ts +7 -0
- package/lib/components/ClickOutside/index.js +40 -0
- package/lib/components/ComponentsProvider/ComponentsContext.d.ts +3 -0
- package/lib/components/ComponentsProvider/ComponentsContext.js +17 -0
- package/lib/components/ComponentsProvider/index.d.ts +5 -0
- package/lib/components/ComponentsProvider/index.js +105 -0
- package/lib/components/ComponentsProvider/interface.d.ts +40 -0
- package/lib/components/ComponentsProvider/interface.js +5 -0
- package/lib/components/ComponentsProvider/useComponents.d.ts +1 -0
- package/lib/components/ComponentsProvider/useComponents.js +12 -0
- package/lib/components/Composer/AccessoryWrap.d.ts +7 -0
- package/lib/components/Composer/AccessoryWrap.js +16 -0
- package/lib/components/Composer/Action.d.ts +3 -0
- package/lib/components/Composer/Action.js +18 -0
- package/lib/components/Composer/ComposerInput.d.ts +9 -0
- package/lib/components/Composer/ComposerInput.js +67 -0
- package/lib/components/Composer/SendButton.d.ts +7 -0
- package/lib/components/Composer/SendButton.js +37 -0
- package/lib/components/Composer/ToolbarItem.d.ts +8 -0
- package/lib/components/Composer/ToolbarItem.js +21 -0
- package/lib/components/Composer/index.d.ts +32 -0
- package/lib/components/Composer/index.js +353 -0
- package/lib/components/Composer/riseInput.d.ts +1 -0
- package/lib/components/Composer/riseInput.js +55 -0
- package/lib/components/Composer/viewportTop.d.ts +2 -0
- package/lib/components/Composer/viewportTop.js +29 -0
- package/lib/components/ConfigProvider/index.d.ts +33 -0
- package/lib/components/ConfigProvider/index.js +53 -0
- package/lib/components/ConfigProvider/locales/en_US.d.ts +38 -0
- package/lib/components/ConfigProvider/locales/en_US.js +43 -0
- package/lib/components/ConfigProvider/locales/es.d.ts +38 -0
- package/lib/components/ConfigProvider/locales/es.js +43 -0
- package/lib/components/ConfigProvider/locales/hi.d.ts +38 -0
- package/lib/components/ConfigProvider/locales/hi.js +43 -0
- package/lib/components/ConfigProvider/locales/id.d.ts +38 -0
- package/lib/components/ConfigProvider/locales/id.js +43 -0
- package/lib/components/ConfigProvider/locales/index.d.ts +2 -0
- package/lib/components/ConfigProvider/locales/index.js +27 -0
- package/lib/components/ConfigProvider/locales/pt.d.ts +38 -0
- package/lib/components/ConfigProvider/locales/pt.js +43 -0
- package/lib/components/ConfigProvider/locales/ur.d.ts +38 -0
- package/lib/components/ConfigProvider/locales/ur.js +43 -0
- package/lib/components/ConfigProvider/locales/vi.d.ts +38 -0
- package/lib/components/ConfigProvider/locales/vi.js +43 -0
- package/lib/components/ConfigProvider/locales/zh_CN.d.ts +38 -0
- package/lib/components/ConfigProvider/locales/zh_CN.js +46 -0
- package/lib/components/Countdown/index.d.ts +6 -0
- package/lib/components/Countdown/index.js +29 -0
- package/lib/components/Coupon/index.d.ts +18 -0
- package/lib/components/Coupon/index.js +91 -0
- package/lib/components/Divider/index.d.ts +7 -0
- package/lib/components/Divider/index.js +23 -0
- package/lib/components/Empty/index.d.ts +10 -0
- package/lib/components/Empty/index.js +52 -0
- package/lib/components/ErrorBoundary/index.d.ts +20 -0
- package/lib/components/ErrorBoundary/index.js +65 -0
- package/lib/components/FileCard/index.d.ts +8 -0
- package/lib/components/FileCard/index.js +45 -0
- package/lib/components/Filter/index.d.ts +17 -0
- package/lib/components/Filter/index.js +208 -0
- package/lib/components/Flex/Flex.d.ts +16 -0
- package/lib/components/Flex/Flex.js +59 -0
- package/lib/components/Flex/FlexItem.d.ts +8 -0
- package/lib/components/Flex/FlexItem.js +32 -0
- package/lib/components/Flex/index.d.ts +4 -0
- package/lib/components/Flex/index.js +19 -0
- package/lib/components/Form/Form.d.ts +9 -0
- package/lib/components/Form/Form.js +27 -0
- package/lib/components/Form/FormActions.d.ts +2 -0
- package/lib/components/Form/FormActions.js +19 -0
- package/lib/components/Form/FormItem.d.ts +10 -0
- package/lib/components/Form/FormItem.js +26 -0
- package/lib/components/Form/index.d.ts +5 -0
- package/lib/components/Form/index.js +32 -0
- package/lib/components/Goods/index.d.ts +32 -0
- package/lib/components/Goods/index.js +133 -0
- package/lib/components/HelpText/index.d.ts +2 -0
- package/lib/components/HelpText/index.js +18 -0
- package/lib/components/Icon/index.d.ts +8 -0
- package/lib/components/Icon/index.js +31 -0
- package/lib/components/IconButton/index.d.ts +6 -0
- package/lib/components/IconButton/index.js +29 -0
- package/lib/components/Image/index.d.ts +8 -0
- package/lib/components/Image/index.js +63 -0
- package/lib/components/ImageList/index.d.ts +13 -0
- package/lib/components/ImageList/index.js +36 -0
- package/lib/components/InfiniteScroll/index.d.ts +8 -0
- package/lib/components/InfiniteScroll/index.js +42 -0
- package/lib/components/Input/index.d.ts +15 -0
- package/lib/components/Input/index.js +127 -0
- package/lib/components/KvList/KvItem.d.ts +14 -0
- package/lib/components/KvList/KvItem.js +51 -0
- package/lib/components/KvList/KvList.d.ts +7 -0
- package/lib/components/KvList/KvList.js +20 -0
- package/lib/components/KvList/index.d.ts +4 -0
- package/lib/components/KvList/index.js +19 -0
- package/lib/components/Label/index.d.ts +2 -0
- package/lib/components/Label/index.js +19 -0
- package/lib/components/LazyComponent/SuspenseWrap.d.ts +3 -0
- package/lib/components/LazyComponent/SuspenseWrap.js +24 -0
- package/lib/components/LazyComponent/index.d.ts +6 -0
- package/lib/components/LazyComponent/index.js +57 -0
- package/lib/components/LazyComponent/interface.d.ts +18 -0
- package/lib/components/LazyComponent/interface.js +5 -0
- package/lib/components/List/List.d.ts +8 -0
- package/lib/components/List/List.js +24 -0
- package/lib/components/List/ListItem.d.ts +17 -0
- package/lib/components/List/ListItem.js +37 -0
- package/lib/components/List/index.d.ts +4 -0
- package/lib/components/List/index.js +19 -0
- package/lib/components/Loading/index.d.ts +6 -0
- package/lib/components/Loading/index.js +23 -0
- package/lib/components/MediaObject/index.d.ts +10 -0
- package/lib/components/MediaObject/index.js +31 -0
- package/lib/components/Message/Message.d.ts +54 -0
- package/lib/components/Message/Message.js +69 -0
- package/lib/components/Message/SystemMessage.d.ts +12 -0
- package/lib/components/Message/SystemMessage.js +42 -0
- package/lib/components/Message/index.d.ts +4 -0
- package/lib/components/Message/index.js +20 -0
- package/lib/components/MessageContainer/index.d.ts +19 -0
- package/lib/components/MessageContainer/index.js +197 -0
- package/lib/components/MessageStatus/index.d.ts +13 -0
- package/lib/components/MessageStatus/index.js +93 -0
- package/lib/components/Modal/Base.d.ts +24 -0
- package/lib/components/Modal/Base.js +140 -0
- package/lib/components/Modal/Confirm.d.ts +3 -0
- package/lib/components/Modal/Confirm.js +49 -0
- package/lib/components/Modal/Modal.d.ts +3 -0
- package/lib/components/Modal/Modal.js +16 -0
- package/lib/components/Modal/Popup.d.ts +3 -0
- package/lib/components/Modal/Popup.js +16 -0
- package/lib/components/Modal/index.d.ts +4 -0
- package/lib/components/Modal/index.js +26 -0
- package/lib/components/MultiRedPacket/index.d.ts +11 -0
- package/lib/components/MultiRedPacket/index.js +36 -0
- package/lib/components/Navbar/index.d.ts +13 -0
- package/lib/components/Navbar/index.js +56 -0
- package/lib/components/Notice/index.d.ts +9 -0
- package/lib/components/Notice/index.js +40 -0
- package/lib/components/OrderObject/index.d.ts +10 -0
- package/lib/components/OrderObject/index.js +45 -0
- package/lib/components/Popover/index.d.ts +9 -0
- package/lib/components/Popover/index.js +65 -0
- package/lib/components/Portal/index.d.ts +8 -0
- package/lib/components/Portal/index.js +36 -0
- package/lib/components/Price/index.d.ts +10 -0
- package/lib/components/Price/index.js +99 -0
- package/lib/components/Progress/index.d.ts +7 -0
- package/lib/components/Progress/index.js +32 -0
- package/lib/components/PullToRefresh/index.d.ts +27 -0
- package/lib/components/PullToRefresh/index.js +233 -0
- package/lib/components/QuickReplies/QuickReplies.d.ts +10 -0
- package/lib/components/QuickReplies/QuickReplies.js +59 -0
- package/lib/components/QuickReplies/QuickReply.d.ts +15 -0
- package/lib/components/QuickReplies/QuickReply.js +36 -0
- package/lib/components/QuickReplies/index.d.ts +4 -0
- package/lib/components/QuickReplies/index.js +20 -0
- package/lib/components/Quote/index.d.ts +8 -0
- package/lib/components/Quote/index.js +23 -0
- package/lib/components/Radio/Radio.d.ts +7 -0
- package/lib/components/Radio/Radio.js +34 -0
- package/lib/components/Radio/RadioGroup.d.ts +15 -0
- package/lib/components/Radio/RadioGroup.js +44 -0
- package/lib/components/Radio/index.d.ts +4 -0
- package/lib/components/Radio/index.js +19 -0
- package/lib/components/RateActions/index.d.ts +7 -0
- package/lib/components/RateActions/index.js +63 -0
- package/lib/components/Recorder/index.d.ts +15 -0
- package/lib/components/Recorder/index.js +137 -0
- package/lib/components/RedPacket/index.d.ts +20 -0
- package/lib/components/RedPacket/index.js +100 -0
- package/lib/components/Ribbon/index.d.ts +9 -0
- package/lib/components/Ribbon/index.js +44 -0
- package/lib/components/RichText/configDOMPurify.d.ts +1 -0
- package/lib/components/RichText/configDOMPurify.js +29 -0
- package/lib/components/RichText/index.d.ts +9 -0
- package/lib/components/RichText/index.js +32 -0
- package/lib/components/ScrollGrid/index.d.ts +7 -0
- package/lib/components/ScrollGrid/index.js +83 -0
- package/lib/components/ScrollView/Item.d.ts +9 -0
- package/lib/components/ScrollView/Item.js +48 -0
- package/lib/components/ScrollView/ScrollView.d.ts +28 -0
- package/lib/components/ScrollView/ScrollView.js +98 -0
- package/lib/components/ScrollView/index.d.ts +2 -0
- package/lib/components/ScrollView/index.js +12 -0
- package/lib/components/Search/index.d.ts +14 -0
- package/lib/components/Search/index.js +87 -0
- package/lib/components/Select/index.d.ts +7 -0
- package/lib/components/Select/index.js +27 -0
- package/lib/components/SendConfirm/SendConfirm.d.ts +7 -0
- package/lib/components/SendConfirm/SendConfirm.js +54 -0
- package/lib/components/SendConfirm/index.d.ts +1 -0
- package/lib/components/SendConfirm/index.js +12 -0
- package/lib/components/Skeleton/index.d.ts +10 -0
- package/lib/components/Skeleton/index.js +28 -0
- package/lib/components/StatusBadge/index.d.ts +6 -0
- package/lib/components/StatusBadge/index.js +29 -0
- package/lib/components/Stepper/Step.d.ts +15 -0
- package/lib/components/Stepper/Step.js +63 -0
- package/lib/components/Stepper/Stepper.d.ts +10 -0
- package/lib/components/Stepper/Stepper.js +47 -0
- package/lib/components/Stepper/index.d.ts +4 -0
- package/lib/components/Stepper/index.js +19 -0
- package/lib/components/Tabs/Tab.d.ts +6 -0
- package/lib/components/Tabs/Tab.js +12 -0
- package/lib/components/Tabs/Tabs.d.ts +12 -0
- package/lib/components/Tabs/Tabs.js +151 -0
- package/lib/components/Tabs/index.d.ts +4 -0
- package/lib/components/Tabs/index.js +19 -0
- package/lib/components/Tag/index.d.ts +10 -0
- package/lib/components/Tag/index.js +24 -0
- package/lib/components/Text/index.d.ts +10 -0
- package/lib/components/Text/index.js +35 -0
- package/lib/components/Think/index.d.ts +8 -0
- package/lib/components/Think/index.js +46 -0
- package/lib/components/Time/Time.d.ts +7 -0
- package/lib/components/Time/Time.js +20 -0
- package/lib/components/Time/index.d.ts +2 -0
- package/lib/components/Time/index.js +12 -0
- package/lib/components/Time/parser.d.ts +10 -0
- package/lib/components/Time/parser.js +56 -0
- package/lib/components/Tips/index.d.ts +9 -0
- package/lib/components/Tips/index.js +28 -0
- package/lib/components/Toast/Toast.d.ts +8 -0
- package/lib/components/Toast/Toast.js +70 -0
- package/lib/components/Toast/index.d.ts +10 -0
- package/lib/components/Toast/index.js +35 -0
- package/lib/components/Toolbar/Toolbar.d.ts +7 -0
- package/lib/components/Toolbar/Toolbar.js +22 -0
- package/lib/components/Toolbar/ToolbarButton.d.ts +13 -0
- package/lib/components/Toolbar/ToolbarButton.js +37 -0
- package/lib/components/Toolbar/index.d.ts +3 -0
- package/lib/components/Toolbar/index.js +12 -0
- package/lib/components/Tree/Tree.d.ts +6 -0
- package/lib/components/Tree/Tree.js +17 -0
- package/lib/components/Tree/TreeNode.d.ts +10 -0
- package/lib/components/Tree/TreeNode.js +75 -0
- package/lib/components/Tree/index.d.ts +4 -0
- package/lib/components/Tree/index.js +19 -0
- package/lib/components/Typing/Typing.d.ts +6 -0
- package/lib/components/Typing/Typing.js +29 -0
- package/lib/components/Typing/index.d.ts +1 -0
- package/lib/components/Typing/index.js +12 -0
- package/lib/components/TypingBubble/index.d.ts +12 -0
- package/lib/components/TypingBubble/index.js +57 -0
- package/lib/components/Video/index.d.ts +12 -0
- package/lib/components/Video/index.js +91 -0
- package/lib/components/VisuallyHidden/index.d.ts +2 -0
- package/lib/components/VisuallyHidden/index.js +25 -0
- package/lib/global.d.js +5 -0
- package/lib/hooks/useClickOutside.d.ts +1 -0
- package/lib/hooks/useClickOutside.js +27 -0
- package/lib/hooks/useCountdown.d.ts +11 -0
- package/lib/hooks/useCountdown.js +61 -0
- package/lib/hooks/useForwardRef.d.ts +2 -0
- package/lib/hooks/useForwardRef.js +20 -0
- package/lib/hooks/useLatest.d.ts +1 -0
- package/lib/hooks/useLatest.js +12 -0
- package/lib/hooks/useMessages.d.ts +14 -0
- package/lib/hooks/useMessages.js +79 -0
- package/lib/hooks/useMount.d.ts +11 -0
- package/lib/hooks/useMount.js +54 -0
- package/lib/hooks/useNextId.d.ts +1 -0
- package/lib/hooks/useNextId.js +17 -0
- package/lib/hooks/useQuickReplies.d.ts +12 -0
- package/lib/hooks/useQuickReplies.js +51 -0
- package/lib/hooks/useTitleTyping.d.ts +10 -0
- package/lib/hooks/useTitleTyping.js +60 -0
- package/lib/hooks/useTypewriter.d.ts +9 -0
- package/lib/hooks/useTypewriter.js +42 -0
- package/lib/hooks/useWindowResize.d.ts +1 -0
- package/lib/hooks/useWindowResize.js +30 -0
- package/lib/index.d.ts +153 -0
- package/lib/index.js +751 -0
- package/lib/utils/canUse.d.ts +2 -0
- package/lib/utils/canUse.js +39 -0
- package/lib/utils/countLines.d.ts +1 -0
- package/lib/utils/countLines.js +12 -0
- package/lib/utils/date.d.ts +17 -0
- package/lib/utils/date.js +37 -0
- package/lib/utils/formatTime.d.ts +1 -0
- package/lib/utils/formatTime.js +22 -0
- package/lib/utils/getExtName.d.ts +2 -0
- package/lib/utils/getExtName.js +10 -0
- package/lib/utils/getFps.d.ts +2 -0
- package/lib/utils/getFps.js +31 -0
- package/lib/utils/getRandomInt.d.ts +1 -0
- package/lib/utils/getRandomInt.js +9 -0
- package/lib/utils/getToBottom.d.ts +1 -0
- package/lib/utils/getToBottom.js +9 -0
- package/lib/utils/importScript.d.ts +19 -0
- package/lib/utils/importScript.js +130 -0
- package/lib/utils/index.d.ts +14 -0
- package/lib/utils/index.js +30 -0
- package/lib/utils/lazyComponent.d.ts +5 -0
- package/lib/utils/lazyComponent.js +33 -0
- package/lib/utils/mountComponent.d.ts +2 -0
- package/lib/utils/mountComponent.js +26 -0
- package/lib/utils/parseDataTransfer.d.ts +1 -0
- package/lib/utils/parseDataTransfer.js +24 -0
- package/lib/utils/prettyBytes.d.ts +2 -0
- package/lib/utils/prettyBytes.js +16 -0
- package/lib/utils/smoothScroll.d.ts +8 -0
- package/lib/utils/smoothScroll.js +41 -0
- package/lib/utils/style.d.ts +2 -0
- package/lib/utils/style.js +19 -0
- package/lib/utils/throttle.d.ts +1 -0
- package/lib/utils/throttle.js +20 -0
- package/lib/utils/toggleClass.d.ts +2 -0
- package/lib/utils/toggleClass.js +11 -0
- package/lib/utils/ua.d.ts +7 -0
- package/lib/utils/ua.js +18 -0
- package/package.json +114 -0
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
3
|
+
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
|
4
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
5
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
6
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
7
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
8
|
+
import React, { useState, useRef, useEffect, useImperativeHandle, useCallback } from 'react';
|
|
9
|
+
import clsx from 'clsx';
|
|
10
|
+
import { Recorder } from '../Recorder';
|
|
11
|
+
import { Toolbar } from '../Toolbar';
|
|
12
|
+
import { AccessoryWrap } from './AccessoryWrap';
|
|
13
|
+
import { Popover } from '../Popover';
|
|
14
|
+
import { ToolbarItem } from './ToolbarItem';
|
|
15
|
+
import { ComposerInput } from './ComposerInput';
|
|
16
|
+
import { SendButton } from './SendButton';
|
|
17
|
+
import { Action } from './Action';
|
|
18
|
+
import toggleClass from '../../utils/toggleClass';
|
|
19
|
+
import { isIOS, isArkWeb, isAliApp } from '../../utils/ua';
|
|
20
|
+
import { updateViewportTop, setViewportTop } from './viewportTop';
|
|
21
|
+
export var CLASS_NAME_FOCUSING = 'S--focusing';
|
|
22
|
+
export var Composer = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
23
|
+
var _props$text = props.text,
|
|
24
|
+
initialText = _props$text === void 0 ? '' : _props$text,
|
|
25
|
+
oTextOnce = props.textOnce,
|
|
26
|
+
_props$inputType = props.inputType,
|
|
27
|
+
initialInputType = _props$inputType === void 0 ? 'text' : _props$inputType,
|
|
28
|
+
wideBreakpoint = props.wideBreakpoint,
|
|
29
|
+
_props$placeholder = props.placeholder,
|
|
30
|
+
oPlaceholder = _props$placeholder === void 0 ? '请输入...' : _props$placeholder,
|
|
31
|
+
_props$recorder = props.recorder,
|
|
32
|
+
recorder = _props$recorder === void 0 ? {} : _props$recorder,
|
|
33
|
+
onInputTypeChange = props.onInputTypeChange,
|
|
34
|
+
onFocus = props.onFocus,
|
|
35
|
+
onBlur = props.onBlur,
|
|
36
|
+
onChange = props.onChange,
|
|
37
|
+
onSend = props.onSend,
|
|
38
|
+
onBeforeSend = props.onBeforeSend,
|
|
39
|
+
onImageSend = props.onImageSend,
|
|
40
|
+
onAccessoryToggle = props.onAccessoryToggle,
|
|
41
|
+
_props$toolbar = props.toolbar,
|
|
42
|
+
toolbar = _props$toolbar === void 0 ? [] : _props$toolbar,
|
|
43
|
+
onToolbarClick = props.onToolbarClick,
|
|
44
|
+
rightAction = props.rightAction,
|
|
45
|
+
inputOptions = props.inputOptions;
|
|
46
|
+
var _useState = useState(initialText),
|
|
47
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
48
|
+
text = _useState2[0],
|
|
49
|
+
setText = _useState2[1];
|
|
50
|
+
var _useState3 = useState(oTextOnce),
|
|
51
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
52
|
+
textOnce = _useState4[0],
|
|
53
|
+
setTextOnce = _useState4[1];
|
|
54
|
+
var _useState5 = useState(!!text),
|
|
55
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
56
|
+
hasValue = _useState6[0],
|
|
57
|
+
setHasValue = _useState6[1];
|
|
58
|
+
var _useState7 = useState(oTextOnce || oPlaceholder),
|
|
59
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
60
|
+
placeholder = _useState8[0],
|
|
61
|
+
setPlaceholder = _useState8[1];
|
|
62
|
+
var _useState9 = useState(initialInputType || 'text'),
|
|
63
|
+
_useState0 = _slicedToArray(_useState9, 2),
|
|
64
|
+
inputType = _useState0[0],
|
|
65
|
+
setInputType = _useState0[1];
|
|
66
|
+
var _useState1 = useState(false),
|
|
67
|
+
_useState10 = _slicedToArray(_useState1, 2),
|
|
68
|
+
isAccessoryOpen = _useState10[0],
|
|
69
|
+
setAccessoryOpen = _useState10[1];
|
|
70
|
+
var _useState11 = useState(''),
|
|
71
|
+
_useState12 = _slicedToArray(_useState11, 2),
|
|
72
|
+
accessoryContent = _useState12[0],
|
|
73
|
+
setAccessoryContent = _useState12[1];
|
|
74
|
+
var inputRef = useRef(null);
|
|
75
|
+
var focused = useRef(false);
|
|
76
|
+
var blurTimer = useRef();
|
|
77
|
+
var valueTimer = useRef();
|
|
78
|
+
var popoverTarget = useRef();
|
|
79
|
+
var isMountRef = useRef(false);
|
|
80
|
+
var _useState13 = useState(false),
|
|
81
|
+
_useState14 = _slicedToArray(_useState13, 2),
|
|
82
|
+
isWide = _useState14[0],
|
|
83
|
+
setWide = _useState14[1];
|
|
84
|
+
useEffect(function () {
|
|
85
|
+
var mq = wideBreakpoint && window.matchMedia ? window.matchMedia("(min-width: ".concat(wideBreakpoint, ")")) : false;
|
|
86
|
+
function handleMq(e) {
|
|
87
|
+
setWide(e.matches);
|
|
88
|
+
}
|
|
89
|
+
setWide(mq && mq.matches);
|
|
90
|
+
if (mq) {
|
|
91
|
+
mq.addListener(handleMq);
|
|
92
|
+
}
|
|
93
|
+
return function () {
|
|
94
|
+
if (mq) {
|
|
95
|
+
mq.removeListener(handleMq);
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
}, [wideBreakpoint]);
|
|
99
|
+
useEffect(function () {
|
|
100
|
+
toggleClass('S--wide', isWide);
|
|
101
|
+
if (!isWide) {
|
|
102
|
+
setAccessoryContent('');
|
|
103
|
+
}
|
|
104
|
+
}, [isWide]);
|
|
105
|
+
useEffect(function () {
|
|
106
|
+
if (isMountRef.current && onAccessoryToggle) {
|
|
107
|
+
onAccessoryToggle(isAccessoryOpen);
|
|
108
|
+
}
|
|
109
|
+
}, [isAccessoryOpen, onAccessoryToggle]);
|
|
110
|
+
useEffect(function () {
|
|
111
|
+
isMountRef.current = true;
|
|
112
|
+
}, []);
|
|
113
|
+
useEffect(function () {
|
|
114
|
+
var _window = window,
|
|
115
|
+
visualViewport = _window.visualViewport;
|
|
116
|
+
if (!visualViewport) return;
|
|
117
|
+
var winHeight = window.innerHeight;
|
|
118
|
+
function toggleFocusing() {
|
|
119
|
+
if (window.innerHeight > winHeight) {
|
|
120
|
+
// iOS 下第一次的时候 winHeight 有可能不准
|
|
121
|
+
winHeight = window.innerHeight;
|
|
122
|
+
}
|
|
123
|
+
// 视窗变高做失焦处理
|
|
124
|
+
// 场景:键盘收起键盘时并没有失去焦点
|
|
125
|
+
if (focused.current && visualViewport.height >= winHeight) {
|
|
126
|
+
var _inputRef$current;
|
|
127
|
+
(_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 || _inputRef$current.blur();
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
function resizeHandler() {
|
|
131
|
+
// Android 没有下面安全区且可以悬浮键盘,故不做收起失焦处理
|
|
132
|
+
if (isIOS || isArkWeb && isAliApp) {
|
|
133
|
+
toggleFocusing();
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
visualViewport.addEventListener('resize', resizeHandler);
|
|
137
|
+
return function () {
|
|
138
|
+
visualViewport.removeEventListener('resize', resizeHandler);
|
|
139
|
+
};
|
|
140
|
+
}, []);
|
|
141
|
+
useEffect(function () {
|
|
142
|
+
if (text) {
|
|
143
|
+
clearTimeout(valueTimer.current);
|
|
144
|
+
setHasValue(true);
|
|
145
|
+
} else {
|
|
146
|
+
// 中文上屏时有一瞬间会无值,所以做延迟处理
|
|
147
|
+
valueTimer.current = setTimeout(function () {
|
|
148
|
+
setHasValue(false);
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
}, [text]);
|
|
152
|
+
useImperativeHandle(ref, function () {
|
|
153
|
+
return {
|
|
154
|
+
setText: setText
|
|
155
|
+
};
|
|
156
|
+
});
|
|
157
|
+
var handleInputTypeChange = useCallback(function () {
|
|
158
|
+
var isVoice = inputType === 'voice';
|
|
159
|
+
var nextType = isVoice ? 'text' : 'voice';
|
|
160
|
+
setInputType(nextType);
|
|
161
|
+
if (isVoice) {
|
|
162
|
+
var input = inputRef.current;
|
|
163
|
+
input.focus();
|
|
164
|
+
// eslint-disable-next-line no-multi-assign
|
|
165
|
+
input.selectionStart = input.selectionEnd = input.value.length;
|
|
166
|
+
}
|
|
167
|
+
if (onInputTypeChange) {
|
|
168
|
+
onInputTypeChange(nextType);
|
|
169
|
+
}
|
|
170
|
+
}, [inputType, onInputTypeChange]);
|
|
171
|
+
var handleInputFocus = useCallback(function (e) {
|
|
172
|
+
clearTimeout(blurTimer.current);
|
|
173
|
+
toggleClass(CLASS_NAME_FOCUSING, true);
|
|
174
|
+
focused.current = true;
|
|
175
|
+
if (isIOS) {
|
|
176
|
+
updateViewportTop();
|
|
177
|
+
}
|
|
178
|
+
if (onFocus) {
|
|
179
|
+
onFocus(e);
|
|
180
|
+
}
|
|
181
|
+
}, [onFocus]);
|
|
182
|
+
var handleInputBlur = useCallback(function (e) {
|
|
183
|
+
blurTimer.current = setTimeout(function () {
|
|
184
|
+
toggleClass(CLASS_NAME_FOCUSING, false);
|
|
185
|
+
focused.current = false;
|
|
186
|
+
}, 0);
|
|
187
|
+
if (isIOS) {
|
|
188
|
+
setViewportTop(0);
|
|
189
|
+
}
|
|
190
|
+
if (onBlur) {
|
|
191
|
+
onBlur(e);
|
|
192
|
+
}
|
|
193
|
+
}, [onBlur]);
|
|
194
|
+
var send = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
195
|
+
var sendType, sendContent, allowed;
|
|
196
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
197
|
+
while (1) switch (_context.prev = _context.next) {
|
|
198
|
+
case 0:
|
|
199
|
+
sendType = 'text';
|
|
200
|
+
sendContent = text || textOnce || '';
|
|
201
|
+
if (sendContent) {
|
|
202
|
+
_context.next = 1;
|
|
203
|
+
break;
|
|
204
|
+
}
|
|
205
|
+
return _context.abrupt("return");
|
|
206
|
+
case 1:
|
|
207
|
+
if (!onBeforeSend) {
|
|
208
|
+
_context.next = 3;
|
|
209
|
+
break;
|
|
210
|
+
}
|
|
211
|
+
_context.next = 2;
|
|
212
|
+
return Promise.resolve(onBeforeSend(sendType, sendContent));
|
|
213
|
+
case 2:
|
|
214
|
+
allowed = _context.sent;
|
|
215
|
+
if (allowed) {
|
|
216
|
+
_context.next = 3;
|
|
217
|
+
break;
|
|
218
|
+
}
|
|
219
|
+
return _context.abrupt("return");
|
|
220
|
+
case 3:
|
|
221
|
+
if (text) {
|
|
222
|
+
onSend(sendType, text);
|
|
223
|
+
setText('');
|
|
224
|
+
} else if (textOnce) {
|
|
225
|
+
onSend(sendType, textOnce);
|
|
226
|
+
}
|
|
227
|
+
if (textOnce) {
|
|
228
|
+
setTextOnce('');
|
|
229
|
+
setPlaceholder(oPlaceholder);
|
|
230
|
+
}
|
|
231
|
+
if (focused.current) {
|
|
232
|
+
inputRef.current.focus();
|
|
233
|
+
}
|
|
234
|
+
case 4:
|
|
235
|
+
case "end":
|
|
236
|
+
return _context.stop();
|
|
237
|
+
}
|
|
238
|
+
}, _callee);
|
|
239
|
+
})), [oPlaceholder, onBeforeSend, onSend, text, textOnce]);
|
|
240
|
+
var handleInputKeyDown = useCallback(function (e) {
|
|
241
|
+
if (!e.shiftKey && e.keyCode === 13) {
|
|
242
|
+
send();
|
|
243
|
+
e.preventDefault();
|
|
244
|
+
}
|
|
245
|
+
}, [send]);
|
|
246
|
+
var handleTextChange = useCallback(function (value, e) {
|
|
247
|
+
setText(value);
|
|
248
|
+
if (onChange) {
|
|
249
|
+
onChange(value, e);
|
|
250
|
+
}
|
|
251
|
+
}, [onChange]);
|
|
252
|
+
var handleSendBtnClick = useCallback(function (e) {
|
|
253
|
+
send();
|
|
254
|
+
e.preventDefault();
|
|
255
|
+
}, [send]);
|
|
256
|
+
var handleAccessoryToggle = useCallback(function () {
|
|
257
|
+
setAccessoryOpen(!isAccessoryOpen);
|
|
258
|
+
}, [isAccessoryOpen]);
|
|
259
|
+
var handleAccessoryBlur = useCallback(function () {
|
|
260
|
+
setTimeout(function () {
|
|
261
|
+
setAccessoryOpen(false);
|
|
262
|
+
setAccessoryContent('');
|
|
263
|
+
});
|
|
264
|
+
}, []);
|
|
265
|
+
var handleToolbarClick = useCallback(function (item, e) {
|
|
266
|
+
if (onToolbarClick) {
|
|
267
|
+
onToolbarClick(item, e);
|
|
268
|
+
}
|
|
269
|
+
if (item.render) {
|
|
270
|
+
popoverTarget.current = e.currentTarget;
|
|
271
|
+
setAccessoryContent(item.render);
|
|
272
|
+
}
|
|
273
|
+
}, [onToolbarClick]);
|
|
274
|
+
var handlePopoverClose = useCallback(function () {
|
|
275
|
+
setAccessoryContent('');
|
|
276
|
+
}, []);
|
|
277
|
+
var isInputText = inputType === 'text';
|
|
278
|
+
var inputTypeIcon = isInputText ? 'mic' : 'keyboard';
|
|
279
|
+
var hasToolbar = toolbar.length > 0;
|
|
280
|
+
var inputProps = _objectSpread(_objectSpread({}, inputOptions), {}, {
|
|
281
|
+
value: text,
|
|
282
|
+
inputRef: inputRef,
|
|
283
|
+
placeholder: placeholder,
|
|
284
|
+
onFocus: handleInputFocus,
|
|
285
|
+
onBlur: handleInputBlur,
|
|
286
|
+
onKeyDown: handleInputKeyDown,
|
|
287
|
+
onChange: handleTextChange,
|
|
288
|
+
onImageSend: onImageSend
|
|
289
|
+
});
|
|
290
|
+
if (isWide) {
|
|
291
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
292
|
+
className: "Composer Composer--lg"
|
|
293
|
+
}, hasToolbar && toolbar.map(function (item) {
|
|
294
|
+
return /*#__PURE__*/React.createElement(ToolbarItem, {
|
|
295
|
+
item: item,
|
|
296
|
+
onClick: function onClick(e) {
|
|
297
|
+
return handleToolbarClick(item, e);
|
|
298
|
+
},
|
|
299
|
+
key: item.type
|
|
300
|
+
});
|
|
301
|
+
}), accessoryContent && /*#__PURE__*/React.createElement(Popover, {
|
|
302
|
+
active: !!accessoryContent,
|
|
303
|
+
target: popoverTarget.current,
|
|
304
|
+
onClose: handlePopoverClose
|
|
305
|
+
}, accessoryContent), /*#__PURE__*/React.createElement("div", {
|
|
306
|
+
className: "Composer-inputWrap"
|
|
307
|
+
}, /*#__PURE__*/React.createElement(ComposerInput, _extends({
|
|
308
|
+
invisible: false
|
|
309
|
+
}, inputProps))), /*#__PURE__*/React.createElement(SendButton, {
|
|
310
|
+
onClick: handleSendBtnClick,
|
|
311
|
+
disabled: !hasValue
|
|
312
|
+
}));
|
|
313
|
+
}
|
|
314
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
315
|
+
className: "Composer",
|
|
316
|
+
"data-has-value": hasValue,
|
|
317
|
+
"data-has-text-once": !!textOnce
|
|
318
|
+
}, recorder.canRecord && /*#__PURE__*/React.createElement(Action, {
|
|
319
|
+
className: "Composer-inputTypeBtn",
|
|
320
|
+
"data-icon": inputTypeIcon,
|
|
321
|
+
icon: inputTypeIcon,
|
|
322
|
+
onClick: handleInputTypeChange,
|
|
323
|
+
"aria-label": isInputText ? '切换到语音输入' : '切换到键盘输入'
|
|
324
|
+
}), /*#__PURE__*/React.createElement("div", {
|
|
325
|
+
className: "Composer-inputWrap"
|
|
326
|
+
}, /*#__PURE__*/React.createElement(ComposerInput, _extends({
|
|
327
|
+
invisible: !isInputText
|
|
328
|
+
}, inputProps)), !isInputText && /*#__PURE__*/React.createElement(Recorder, recorder)), !text && rightAction && /*#__PURE__*/React.createElement(Action, rightAction), hasToolbar && /*#__PURE__*/React.createElement(Action, {
|
|
329
|
+
className: clsx('Composer-toggleBtn', {
|
|
330
|
+
active: isAccessoryOpen
|
|
331
|
+
}),
|
|
332
|
+
icon: "plus",
|
|
333
|
+
onClick: handleAccessoryToggle,
|
|
334
|
+
"aria-label": isAccessoryOpen ? '关闭工具栏' : '展开工具栏'
|
|
335
|
+
}), hasValue && /*#__PURE__*/React.createElement(SendButton, {
|
|
336
|
+
onClick: handleSendBtnClick,
|
|
337
|
+
disabled: !hasValue
|
|
338
|
+
})), isAccessoryOpen && /*#__PURE__*/React.createElement(AccessoryWrap, {
|
|
339
|
+
onClickOutside: handleAccessoryBlur
|
|
340
|
+
}, accessoryContent || /*#__PURE__*/React.createElement(Toolbar, {
|
|
341
|
+
items: toolbar,
|
|
342
|
+
onClick: handleToolbarClick
|
|
343
|
+
})));
|
|
344
|
+
});
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { isIOS, isSafariOrIOS11, getIOSMajorVersion } from '../../utils/ua';
|
|
2
|
+
function testScrollType() {
|
|
3
|
+
if (isIOS) {
|
|
4
|
+
if (isSafariOrIOS11) {
|
|
5
|
+
/**
|
|
6
|
+
* 不处理
|
|
7
|
+
* - Safari
|
|
8
|
+
* - iOS 11.0-11.3(`scrollTop`/`scrolIntoView` 有 bug)
|
|
9
|
+
*/
|
|
10
|
+
return 0;
|
|
11
|
+
}
|
|
12
|
+
var major = getIOSMajorVersion();
|
|
13
|
+
// iOS 12及以下用 `scrollTop` 的方式
|
|
14
|
+
if (major < 13) {
|
|
15
|
+
return 1;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
// 其它的用 `scrollIntoView` 的方式
|
|
19
|
+
return 2;
|
|
20
|
+
}
|
|
21
|
+
export default function riseInput(input, wrap) {
|
|
22
|
+
var scrollType = testScrollType();
|
|
23
|
+
var scrollTimer;
|
|
24
|
+
var target = wrap || input;
|
|
25
|
+
var scrollIntoView = function scrollIntoView() {
|
|
26
|
+
if (scrollType === 0) return;
|
|
27
|
+
if (scrollType === 1) {
|
|
28
|
+
document.body.scrollTop = document.body.scrollHeight;
|
|
29
|
+
} else {
|
|
30
|
+
target.scrollIntoView(false);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
input.addEventListener('focus', function () {
|
|
34
|
+
setTimeout(scrollIntoView, 300);
|
|
35
|
+
scrollTimer = setTimeout(scrollIntoView, 1000);
|
|
36
|
+
});
|
|
37
|
+
input.addEventListener('blur', function () {
|
|
38
|
+
clearTimeout(scrollTimer);
|
|
39
|
+
|
|
40
|
+
// 某些情况下收起键盘后输入框不收回,页面下面空白
|
|
41
|
+
// 比如:闲鱼、大麦、乐动力、微信
|
|
42
|
+
if (scrollType && isIOS) {
|
|
43
|
+
// 以免点击快捷短语无效
|
|
44
|
+
setTimeout(function () {
|
|
45
|
+
document.body.scrollIntoView();
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
.Composer {
|
|
2
|
+
display: flex;
|
|
3
|
+
align-items: flex-end;
|
|
4
|
+
padding: @composer-padding;
|
|
5
|
+
--action-size: @composer-input-min-height;
|
|
6
|
+
--action-font-size: 20Px;
|
|
7
|
+
|
|
8
|
+
> div + div {
|
|
9
|
+
margin-left: 9Px;
|
|
10
|
+
}
|
|
11
|
+
&[data-has-value="false"] .Composer-actions[data-action="send"],
|
|
12
|
+
&[data-has-value="true"] .Composer-actions[data-action-icon] {
|
|
13
|
+
width: 0;
|
|
14
|
+
margin: 0;
|
|
15
|
+
opacity: 0;
|
|
16
|
+
}
|
|
17
|
+
&[data-has-value="true"] {
|
|
18
|
+
.Composer-inputWrap {
|
|
19
|
+
margin-left: 0;
|
|
20
|
+
}
|
|
21
|
+
.Composer-sendBtn {
|
|
22
|
+
animation: 0.3s sendIn;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.Composer-actions {
|
|
28
|
+
display: flex;
|
|
29
|
+
align-items: center;
|
|
30
|
+
overflow: hidden;
|
|
31
|
+
width: var(--action-size);
|
|
32
|
+
height: var(--action-size);
|
|
33
|
+
transition: width 0.1s;
|
|
34
|
+
|
|
35
|
+
&[data-action='send'] {
|
|
36
|
+
width: var(--send-width, 63Px);
|
|
37
|
+
}
|
|
38
|
+
.IconBtn {
|
|
39
|
+
padding: 8Px;
|
|
40
|
+
background: var(--color-fill-1);
|
|
41
|
+
font-size: var(--action-font-size);
|
|
42
|
+
color: var(--color-text-1);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.Composer-toggleBtn {
|
|
47
|
+
.Icon {
|
|
48
|
+
transition: transform 0.3s;
|
|
49
|
+
}
|
|
50
|
+
&.active .Icon {
|
|
51
|
+
transform: rotate(45deg);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.Composer-inputWrap {
|
|
56
|
+
flex: 1;
|
|
57
|
+
position: relative;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.Composer-input {
|
|
61
|
+
overflow-x: hidden;
|
|
62
|
+
max-height: @composer-input-max-height;
|
|
63
|
+
padding: @composer-input-padding;
|
|
64
|
+
border: 0;
|
|
65
|
+
border-radius: var(--radius-md);
|
|
66
|
+
// background: @composer-input-bg;
|
|
67
|
+
line-height: 20Px;
|
|
68
|
+
font-size: 15Px;
|
|
69
|
+
caret-color: @composer-input-caret-color;
|
|
70
|
+
transition: @composer-input-transition;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.Composer-sendBtn {
|
|
74
|
+
flex: 0 0 auto;
|
|
75
|
+
min-width: 0;
|
|
76
|
+
padding-left: 16Px;
|
|
77
|
+
padding-right: 16Px;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
@keyframes sendIn {
|
|
81
|
+
0% {
|
|
82
|
+
transform: scale(0.2);
|
|
83
|
+
}
|
|
84
|
+
100% {
|
|
85
|
+
transform: scale(1);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.ChatApp[data-elder-mode="true"] {
|
|
90
|
+
.Composer {
|
|
91
|
+
--action-size: 50Px;
|
|
92
|
+
--action-font-size: 34Px;
|
|
93
|
+
}
|
|
94
|
+
.Composer-input {
|
|
95
|
+
padding: 9Px 12Px;
|
|
96
|
+
font-size: 21Px;
|
|
97
|
+
line-height: 32Px;
|
|
98
|
+
}
|
|
99
|
+
.Composer-sendBtn {
|
|
100
|
+
padding: 4Px 13Px;
|
|
101
|
+
font-size: 17Px;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
var rootEl = document.documentElement;
|
|
2
|
+
var chatApp;
|
|
3
|
+
var requestID;
|
|
4
|
+
var viewportTop = 0;
|
|
5
|
+
export function setViewportTop(top) {
|
|
6
|
+
cancelAnimationFrame(requestID);
|
|
7
|
+
rootEl.style.setProperty('--viewport-top', "".concat(top, "px"));
|
|
8
|
+
}
|
|
9
|
+
export function updateViewportTop() {
|
|
10
|
+
if (!chatApp) {
|
|
11
|
+
chatApp = document.querySelector('.ChatApp');
|
|
12
|
+
}
|
|
13
|
+
if (!chatApp) return;
|
|
14
|
+
var _chatApp$getBoundingC = chatApp.getBoundingClientRect(),
|
|
15
|
+
top = _chatApp$getBoundingC.top;
|
|
16
|
+
if (top === 0) {
|
|
17
|
+
requestID = requestAnimationFrame(updateViewportTop);
|
|
18
|
+
} else {
|
|
19
|
+
viewportTop = Math.abs(top);
|
|
20
|
+
setViewportTop(viewportTop);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
+
import React, { useContext } from 'react';
|
|
5
|
+
import defaultLocales from './locales';
|
|
6
|
+
var DEFAULT_LOCALE = 'en-US';
|
|
7
|
+
export var ConfigContext = /*#__PURE__*/React.createContext({});
|
|
8
|
+
export var ConfigProvider = function ConfigProvider(_ref) {
|
|
9
|
+
var _ref$locale = _ref.locale,
|
|
10
|
+
locale = _ref$locale === void 0 ? DEFAULT_LOCALE : _ref$locale,
|
|
11
|
+
locales = _ref.locales,
|
|
12
|
+
colorScheme = _ref.colorScheme,
|
|
13
|
+
elderMode = _ref.elderMode,
|
|
14
|
+
children = _ref.children;
|
|
15
|
+
return /*#__PURE__*/React.createElement(ConfigContext.Provider, {
|
|
16
|
+
value: {
|
|
17
|
+
locale: locale,
|
|
18
|
+
locales: locales,
|
|
19
|
+
colorScheme: colorScheme,
|
|
20
|
+
elderMode: elderMode
|
|
21
|
+
}
|
|
22
|
+
}, children);
|
|
23
|
+
};
|
|
24
|
+
export var useConfig = function useConfig() {
|
|
25
|
+
return useContext(ConfigContext);
|
|
26
|
+
};
|
|
27
|
+
export var useLocale = function useLocale(componentName, fallback) {
|
|
28
|
+
var _useContext = useContext(ConfigContext),
|
|
29
|
+
locale = _useContext.locale,
|
|
30
|
+
locales = _useContext.locales;
|
|
31
|
+
var defaultStrings = locale && defaultLocales[locale] || defaultLocales[DEFAULT_LOCALE];
|
|
32
|
+
var strings = _objectSpread(_objectSpread({}, defaultStrings), locales);
|
|
33
|
+
if (!locale && !locales && fallback) {
|
|
34
|
+
strings = fallback;
|
|
35
|
+
} else if (componentName) {
|
|
36
|
+
strings = strings[componentName] || {};
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
locale: locale,
|
|
40
|
+
trans: function trans(key) {
|
|
41
|
+
return key ? strings[key] : strings;
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
BackBottom: {
|
|
3
|
+
newMsgOne: '{n} new message',
|
|
4
|
+
newMsgOther: '{n} new messages',
|
|
5
|
+
bottom: 'Bottom'
|
|
6
|
+
},
|
|
7
|
+
Time: {
|
|
8
|
+
weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
|
|
9
|
+
formats: {
|
|
10
|
+
LT: 'HH:mm',
|
|
11
|
+
lll: 'M/D/YYYY HH:mm',
|
|
12
|
+
WT: 'dddd HH:mm',
|
|
13
|
+
YT: 'Yesterday HH:mm'
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
Composer: {
|
|
17
|
+
send: 'Send'
|
|
18
|
+
},
|
|
19
|
+
SendConfirm: {
|
|
20
|
+
title: 'Send photo',
|
|
21
|
+
send: 'Send',
|
|
22
|
+
cancel: 'Cancel'
|
|
23
|
+
},
|
|
24
|
+
RateActions: {
|
|
25
|
+
up: 'Up vote',
|
|
26
|
+
down: 'Down vote'
|
|
27
|
+
},
|
|
28
|
+
Recorder: {
|
|
29
|
+
hold2talk: 'Hold to Talk',
|
|
30
|
+
release2send: 'Release to Send',
|
|
31
|
+
releaseOrSwipe: 'Release to send, swipe up to cancel',
|
|
32
|
+
release2cancel: 'Release to cancel'
|
|
33
|
+
},
|
|
34
|
+
Search: {
|
|
35
|
+
search: 'Search'
|
|
36
|
+
}
|
|
37
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
BackBottom: {
|
|
3
|
+
newMsgOne: '{n} nuevo mensaje',
|
|
4
|
+
newMsgOther: '{n} nuevos mensajes',
|
|
5
|
+
bottom: 'Fondo'
|
|
6
|
+
},
|
|
7
|
+
Time: {
|
|
8
|
+
weekdays: ['domingo', 'Lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'],
|
|
9
|
+
formats: {
|
|
10
|
+
LT: 'HH:mm',
|
|
11
|
+
lll: 'M/D/YYYY HH:mm',
|
|
12
|
+
WT: 'dddd HH:mm',
|
|
13
|
+
YT: 'Ayer HH:mm'
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
Composer: {
|
|
17
|
+
send: 'Enviar'
|
|
18
|
+
},
|
|
19
|
+
SendConfirm: {
|
|
20
|
+
title: 'Enviar foto',
|
|
21
|
+
send: 'Enviar',
|
|
22
|
+
cancel: 'Cancelar'
|
|
23
|
+
},
|
|
24
|
+
RateActions: {
|
|
25
|
+
up: 'Voto positivo',
|
|
26
|
+
down: 'Voto negativo'
|
|
27
|
+
},
|
|
28
|
+
Recorder: {
|
|
29
|
+
hold2talk: 'Sostén para hablar',
|
|
30
|
+
release2send: 'Liberar para enviar',
|
|
31
|
+
releaseOrSwipe: 'Suelta para enviar, desliza hacia arriba para cancelar',
|
|
32
|
+
release2cancel: 'Liberar para cancelar'
|
|
33
|
+
},
|
|
34
|
+
Search: {
|
|
35
|
+
search: 'Buscar'
|
|
36
|
+
}
|
|
37
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
BackBottom: {
|
|
3
|
+
newMsgOne: '{n} नया संदेश',
|
|
4
|
+
newMsgOther: '{n} नए संदेश',
|
|
5
|
+
bottom: 'नीचे'
|
|
6
|
+
},
|
|
7
|
+
Time: {
|
|
8
|
+
weekdays: ['रविवार', 'सोमवार', 'मंगलवार', 'बुधवार', 'गुरुवार', 'शुक्रवार', 'शनिवार'],
|
|
9
|
+
formats: {
|
|
10
|
+
LT: 'HH:mm',
|
|
11
|
+
lll: 'M/D/YYYY HH:mm',
|
|
12
|
+
WT: 'dddd HH:mm',
|
|
13
|
+
YT: 'कल HH:mm'
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
Composer: {
|
|
17
|
+
send: 'भेजें'
|
|
18
|
+
},
|
|
19
|
+
SendConfirm: {
|
|
20
|
+
title: 'फोटो भेजें',
|
|
21
|
+
send: 'भेजें',
|
|
22
|
+
cancel: 'रद्द करें'
|
|
23
|
+
},
|
|
24
|
+
RateActions: {
|
|
25
|
+
up: 'ऊपर वोट',
|
|
26
|
+
down: 'डाउन वोट'
|
|
27
|
+
},
|
|
28
|
+
Recorder: {
|
|
29
|
+
hold2talk: 'होल्ड टू टॉक',
|
|
30
|
+
release2send: 'जारी करें भेजने के लिए',
|
|
31
|
+
releaseOrSwipe: 'भेजने के लिए रिलीज़ करें, रद्द करने के लिए ऊपर स्वाइप करें',
|
|
32
|
+
release2cancel: 'रिलीज़ करो ताकि रद्द किया जा सके'
|
|
33
|
+
},
|
|
34
|
+
Search: {
|
|
35
|
+
search: 'खोजें'
|
|
36
|
+
}
|
|
37
|
+
};
|