@unif/react-native-chat 2.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 +20 -0
- package/README.md +48 -0
- package/lib/module/actions/index.js +2 -0
- package/lib/module/actions/index.js.map +1 -0
- package/lib/module/actions/types.js +4 -0
- package/lib/module/actions/types.js.map +1 -0
- package/lib/module/components/Attachments/AttachmentItem.js +108 -0
- package/lib/module/components/Attachments/AttachmentItem.js.map +1 -0
- package/lib/module/components/Attachments/Attachments.js +60 -0
- package/lib/module/components/Attachments/Attachments.js.map +1 -0
- package/lib/module/components/Attachments/constants.js +18 -0
- package/lib/module/components/Attachments/constants.js.map +1 -0
- package/lib/module/components/Attachments/index.js +4 -0
- package/lib/module/components/Attachments/index.js.map +1 -0
- package/lib/module/components/Attachments/styles.js +83 -0
- package/lib/module/components/Attachments/styles.js.map +1 -0
- package/lib/module/components/Attachments/types.js +4 -0
- package/lib/module/components/Attachments/types.js.map +1 -0
- package/lib/module/components/Chat/Chat.js +29 -0
- package/lib/module/components/Chat/Chat.js.map +1 -0
- package/lib/module/components/Chat/index.js +4 -0
- package/lib/module/components/Chat/index.js.map +1 -0
- package/lib/module/components/Chat/styles.js +17 -0
- package/lib/module/components/Chat/styles.js.map +1 -0
- package/lib/module/components/Chat/types.js +4 -0
- package/lib/module/components/Chat/types.js.map +1 -0
- package/lib/module/components/Citation/Citation.js +32 -0
- package/lib/module/components/Citation/Citation.js.map +1 -0
- package/lib/module/components/Citation/index.js +4 -0
- package/lib/module/components/Citation/index.js.map +1 -0
- package/lib/module/components/Citation/styles.js +15 -0
- package/lib/module/components/Citation/styles.js.map +1 -0
- package/lib/module/components/Citation/types.js +2 -0
- package/lib/module/components/Citation/types.js.map +1 -0
- package/lib/module/components/Composer/Composer.js +149 -0
- package/lib/module/components/Composer/Composer.js.map +1 -0
- package/lib/module/components/Composer/constants.js +14 -0
- package/lib/module/components/Composer/constants.js.map +1 -0
- package/lib/module/components/Composer/index.js +4 -0
- package/lib/module/components/Composer/index.js.map +1 -0
- package/lib/module/components/Composer/styles.js +43 -0
- package/lib/module/components/Composer/styles.js.map +1 -0
- package/lib/module/components/Composer/types.js +4 -0
- package/lib/module/components/Composer/types.js.map +1 -0
- package/lib/module/components/Confirmation/Confirmation.js +56 -0
- package/lib/module/components/Confirmation/Confirmation.js.map +1 -0
- package/lib/module/components/Confirmation/constants.js +10 -0
- package/lib/module/components/Confirmation/constants.js.map +1 -0
- package/lib/module/components/Confirmation/index.js +4 -0
- package/lib/module/components/Confirmation/index.js.map +1 -0
- package/lib/module/components/Confirmation/styles.js +34 -0
- package/lib/module/components/Confirmation/styles.js.map +1 -0
- package/lib/module/components/Confirmation/types.js +4 -0
- package/lib/module/components/Confirmation/types.js.map +1 -0
- package/lib/module/components/Feedback/Feedback.js +82 -0
- package/lib/module/components/Feedback/Feedback.js.map +1 -0
- package/lib/module/components/Feedback/constants.js +15 -0
- package/lib/module/components/Feedback/constants.js.map +1 -0
- package/lib/module/components/Feedback/index.js +4 -0
- package/lib/module/components/Feedback/index.js.map +1 -0
- package/lib/module/components/Feedback/styles.js +30 -0
- package/lib/module/components/Feedback/styles.js.map +1 -0
- package/lib/module/components/Feedback/types.js +4 -0
- package/lib/module/components/Feedback/types.js.map +1 -0
- package/lib/module/components/Message/MarkdownContent/MarkdownContent.js +68 -0
- package/lib/module/components/Message/MarkdownContent/MarkdownContent.js.map +1 -0
- package/lib/module/components/Message/MarkdownContent/MarkdownImage/MarkdownImage.js +53 -0
- package/lib/module/components/Message/MarkdownContent/MarkdownImage/MarkdownImage.js.map +1 -0
- package/lib/module/components/Message/MarkdownContent/MarkdownImage/styles.js +10 -0
- package/lib/module/components/Message/MarkdownContent/MarkdownImage/styles.js.map +1 -0
- package/lib/module/components/Message/MarkdownContent/MarkdownImage/types.js +2 -0
- package/lib/module/components/Message/MarkdownContent/MarkdownImage/types.js.map +1 -0
- package/lib/module/components/Message/MarkdownContent/styles.js +85 -0
- package/lib/module/components/Message/MarkdownContent/styles.js.map +1 -0
- package/lib/module/components/Message/MarkdownContent/types.js +2 -0
- package/lib/module/components/Message/MarkdownContent/types.js.map +1 -0
- package/lib/module/components/Message/Message.js +87 -0
- package/lib/module/components/Message/Message.js.map +1 -0
- package/lib/module/components/Message/constants.js +4 -0
- package/lib/module/components/Message/constants.js.map +1 -0
- package/lib/module/components/Message/index.js +4 -0
- package/lib/module/components/Message/index.js.map +1 -0
- package/lib/module/components/Message/isNestedAction.js +14 -0
- package/lib/module/components/Message/isNestedAction.js.map +1 -0
- package/lib/module/components/Message/styles.js +73 -0
- package/lib/module/components/Message/styles.js.map +1 -0
- package/lib/module/components/Message/types.js +4 -0
- package/lib/module/components/Message/types.js.map +1 -0
- package/lib/module/components/MessageList/MessageList.js +223 -0
- package/lib/module/components/MessageList/MessageList.js.map +1 -0
- package/lib/module/components/MessageList/constants.js +4 -0
- package/lib/module/components/MessageList/constants.js.map +1 -0
- package/lib/module/components/MessageList/index.js +4 -0
- package/lib/module/components/MessageList/index.js.map +1 -0
- package/lib/module/components/MessageList/styles.js +20 -0
- package/lib/module/components/MessageList/styles.js.map +1 -0
- package/lib/module/components/MessageList/types.js +4 -0
- package/lib/module/components/MessageList/types.js.map +1 -0
- package/lib/module/components/MessageList/webPrependAnchor/constants.js +4 -0
- package/lib/module/components/MessageList/webPrependAnchor/constants.js.map +1 -0
- package/lib/module/components/MessageList/webPrependAnchor/index.js +4 -0
- package/lib/module/components/MessageList/webPrependAnchor/index.js.map +1 -0
- package/lib/module/components/MessageList/webPrependAnchor/types.js +4 -0
- package/lib/module/components/MessageList/webPrependAnchor/types.js.map +1 -0
- package/lib/module/components/MessageList/webPrependAnchor/useWebPrependAnchor.js +19 -0
- package/lib/module/components/MessageList/webPrependAnchor/useWebPrependAnchor.js.map +1 -0
- package/lib/module/components/MessageList/webPrependAnchor/useWebPrependAnchor.web.js +208 -0
- package/lib/module/components/MessageList/webPrependAnchor/useWebPrependAnchor.web.js.map +1 -0
- package/lib/module/components/Process/Process.js +121 -0
- package/lib/module/components/Process/Process.js.map +1 -0
- package/lib/module/components/Process/constants.js +17 -0
- package/lib/module/components/Process/constants.js.map +1 -0
- package/lib/module/components/Process/index.js +4 -0
- package/lib/module/components/Process/index.js.map +1 -0
- package/lib/module/components/Process/styles.js +77 -0
- package/lib/module/components/Process/styles.js.map +1 -0
- package/lib/module/components/Process/types.js +4 -0
- package/lib/module/components/Process/types.js.map +1 -0
- package/lib/module/components/Sources/Sources.js +64 -0
- package/lib/module/components/Sources/Sources.js.map +1 -0
- package/lib/module/components/Sources/constants.js +4 -0
- package/lib/module/components/Sources/constants.js.map +1 -0
- package/lib/module/components/Sources/index.js +4 -0
- package/lib/module/components/Sources/index.js.map +1 -0
- package/lib/module/components/Sources/styles.js +52 -0
- package/lib/module/components/Sources/styles.js.map +1 -0
- package/lib/module/components/Sources/types.js +4 -0
- package/lib/module/components/Sources/types.js.map +1 -0
- package/lib/module/components/Suggestions/Suggestions.js +31 -0
- package/lib/module/components/Suggestions/Suggestions.js.map +1 -0
- package/lib/module/components/Suggestions/index.js +4 -0
- package/lib/module/components/Suggestions/index.js.map +1 -0
- package/lib/module/components/Suggestions/styles.js +18 -0
- package/lib/module/components/Suggestions/styles.js.map +1 -0
- package/lib/module/components/Suggestions/types.js +4 -0
- package/lib/module/components/Suggestions/types.js.map +1 -0
- package/lib/module/index.js +14 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/actions/index.d.ts +2 -0
- package/lib/typescript/src/actions/index.d.ts.map +1 -0
- package/lib/typescript/src/actions/types.d.ts +11 -0
- package/lib/typescript/src/actions/types.d.ts.map +1 -0
- package/lib/typescript/src/components/Attachments/AttachmentItem.d.ts +3 -0
- package/lib/typescript/src/components/Attachments/AttachmentItem.d.ts.map +1 -0
- package/lib/typescript/src/components/Attachments/Attachments.d.ts +3 -0
- package/lib/typescript/src/components/Attachments/Attachments.d.ts.map +1 -0
- package/lib/typescript/src/components/Attachments/constants.d.ts +13 -0
- package/lib/typescript/src/components/Attachments/constants.d.ts.map +1 -0
- package/lib/typescript/src/components/Attachments/index.d.ts +3 -0
- package/lib/typescript/src/components/Attachments/index.d.ts.map +1 -0
- package/lib/typescript/src/components/Attachments/styles.d.ts +80 -0
- package/lib/typescript/src/components/Attachments/styles.d.ts.map +1 -0
- package/lib/typescript/src/components/Attachments/types.d.ts +34 -0
- package/lib/typescript/src/components/Attachments/types.d.ts.map +1 -0
- package/lib/typescript/src/components/Chat/Chat.d.ts +3 -0
- package/lib/typescript/src/components/Chat/Chat.d.ts.map +1 -0
- package/lib/typescript/src/components/Chat/index.d.ts +3 -0
- package/lib/typescript/src/components/Chat/index.d.ts.map +1 -0
- package/lib/typescript/src/components/Chat/styles.d.ts +15 -0
- package/lib/typescript/src/components/Chat/styles.d.ts.map +1 -0
- package/lib/typescript/src/components/Chat/types.d.ts +12 -0
- package/lib/typescript/src/components/Chat/types.d.ts.map +1 -0
- package/lib/typescript/src/components/Citation/Citation.d.ts +3 -0
- package/lib/typescript/src/components/Citation/Citation.d.ts.map +1 -0
- package/lib/typescript/src/components/Citation/index.d.ts +3 -0
- package/lib/typescript/src/components/Citation/index.d.ts.map +1 -0
- package/lib/typescript/src/components/Citation/styles.d.ts +12 -0
- package/lib/typescript/src/components/Citation/styles.d.ts.map +1 -0
- package/lib/typescript/src/components/Citation/types.d.ts +8 -0
- package/lib/typescript/src/components/Citation/types.d.ts.map +1 -0
- package/lib/typescript/src/components/Composer/Composer.d.ts +4 -0
- package/lib/typescript/src/components/Composer/Composer.d.ts.map +1 -0
- package/lib/typescript/src/components/Composer/constants.d.ts +12 -0
- package/lib/typescript/src/components/Composer/constants.d.ts.map +1 -0
- package/lib/typescript/src/components/Composer/index.d.ts +3 -0
- package/lib/typescript/src/components/Composer/index.d.ts.map +1 -0
- package/lib/typescript/src/components/Composer/styles.d.ts +40 -0
- package/lib/typescript/src/components/Composer/styles.d.ts.map +1 -0
- package/lib/typescript/src/components/Composer/types.d.ts +53 -0
- package/lib/typescript/src/components/Composer/types.d.ts.map +1 -0
- package/lib/typescript/src/components/Confirmation/Confirmation.d.ts +3 -0
- package/lib/typescript/src/components/Confirmation/Confirmation.d.ts.map +1 -0
- package/lib/typescript/src/components/Confirmation/constants.d.ts +5 -0
- package/lib/typescript/src/components/Confirmation/constants.d.ts.map +1 -0
- package/lib/typescript/src/components/Confirmation/index.d.ts +3 -0
- package/lib/typescript/src/components/Confirmation/index.d.ts.map +1 -0
- package/lib/typescript/src/components/Confirmation/styles.d.ts +31 -0
- package/lib/typescript/src/components/Confirmation/styles.d.ts.map +1 -0
- package/lib/typescript/src/components/Confirmation/types.d.ts +19 -0
- package/lib/typescript/src/components/Confirmation/types.d.ts.map +1 -0
- package/lib/typescript/src/components/Feedback/Feedback.d.ts +3 -0
- package/lib/typescript/src/components/Feedback/Feedback.d.ts.map +1 -0
- package/lib/typescript/src/components/Feedback/constants.d.ts +5 -0
- package/lib/typescript/src/components/Feedback/constants.d.ts.map +1 -0
- package/lib/typescript/src/components/Feedback/index.d.ts +3 -0
- package/lib/typescript/src/components/Feedback/index.d.ts.map +1 -0
- package/lib/typescript/src/components/Feedback/styles.d.ts +27 -0
- package/lib/typescript/src/components/Feedback/styles.d.ts.map +1 -0
- package/lib/typescript/src/components/Feedback/types.d.ts +12 -0
- package/lib/typescript/src/components/Feedback/types.d.ts.map +1 -0
- package/lib/typescript/src/components/Message/MarkdownContent/MarkdownContent.d.ts +3 -0
- package/lib/typescript/src/components/Message/MarkdownContent/MarkdownContent.d.ts.map +1 -0
- package/lib/typescript/src/components/Message/MarkdownContent/MarkdownImage/MarkdownImage.d.ts +3 -0
- package/lib/typescript/src/components/Message/MarkdownContent/MarkdownImage/MarkdownImage.d.ts.map +1 -0
- package/lib/typescript/src/components/Message/MarkdownContent/MarkdownImage/styles.d.ts +7 -0
- package/lib/typescript/src/components/Message/MarkdownContent/MarkdownImage/styles.d.ts.map +1 -0
- package/lib/typescript/src/components/Message/MarkdownContent/MarkdownImage/types.d.ts +9 -0
- package/lib/typescript/src/components/Message/MarkdownContent/MarkdownImage/types.d.ts.map +1 -0
- package/lib/typescript/src/components/Message/MarkdownContent/styles.d.ts +92 -0
- package/lib/typescript/src/components/Message/MarkdownContent/styles.d.ts.map +1 -0
- package/lib/typescript/src/components/Message/MarkdownContent/types.d.ts +5 -0
- package/lib/typescript/src/components/Message/MarkdownContent/types.d.ts.map +1 -0
- package/lib/typescript/src/components/Message/Message.d.ts +3 -0
- package/lib/typescript/src/components/Message/Message.d.ts.map +1 -0
- package/lib/typescript/src/components/Message/constants.d.ts +2 -0
- package/lib/typescript/src/components/Message/constants.d.ts.map +1 -0
- package/lib/typescript/src/components/Message/index.d.ts +3 -0
- package/lib/typescript/src/components/Message/index.d.ts.map +1 -0
- package/lib/typescript/src/components/Message/isNestedAction.d.ts +3 -0
- package/lib/typescript/src/components/Message/isNestedAction.d.ts.map +1 -0
- package/lib/typescript/src/components/Message/styles.d.ts +70 -0
- package/lib/typescript/src/components/Message/styles.d.ts.map +1 -0
- package/lib/typescript/src/components/Message/types.d.ts +44 -0
- package/lib/typescript/src/components/Message/types.d.ts.map +1 -0
- package/lib/typescript/src/components/MessageList/MessageList.d.ts +4 -0
- package/lib/typescript/src/components/MessageList/MessageList.d.ts.map +1 -0
- package/lib/typescript/src/components/MessageList/constants.d.ts +2 -0
- package/lib/typescript/src/components/MessageList/constants.d.ts.map +1 -0
- package/lib/typescript/src/components/MessageList/index.d.ts +3 -0
- package/lib/typescript/src/components/MessageList/index.d.ts.map +1 -0
- package/lib/typescript/src/components/MessageList/styles.d.ts +16 -0
- package/lib/typescript/src/components/MessageList/styles.d.ts.map +1 -0
- package/lib/typescript/src/components/MessageList/types.d.ts +36 -0
- package/lib/typescript/src/components/MessageList/types.d.ts.map +1 -0
- package/lib/typescript/src/components/MessageList/webPrependAnchor/constants.d.ts +2 -0
- package/lib/typescript/src/components/MessageList/webPrependAnchor/constants.d.ts.map +1 -0
- package/lib/typescript/src/components/MessageList/webPrependAnchor/index.d.ts +3 -0
- package/lib/typescript/src/components/MessageList/webPrependAnchor/index.d.ts.map +1 -0
- package/lib/typescript/src/components/MessageList/webPrependAnchor/types.d.ts +72 -0
- package/lib/typescript/src/components/MessageList/webPrependAnchor/types.d.ts.map +1 -0
- package/lib/typescript/src/components/MessageList/webPrependAnchor/useWebPrependAnchor.d.ts +3 -0
- package/lib/typescript/src/components/MessageList/webPrependAnchor/useWebPrependAnchor.d.ts.map +1 -0
- package/lib/typescript/src/components/MessageList/webPrependAnchor/useWebPrependAnchor.web.d.ts +3 -0
- package/lib/typescript/src/components/MessageList/webPrependAnchor/useWebPrependAnchor.web.d.ts.map +1 -0
- package/lib/typescript/src/components/Process/Process.d.ts +3 -0
- package/lib/typescript/src/components/Process/Process.d.ts.map +1 -0
- package/lib/typescript/src/components/Process/constants.d.ts +5 -0
- package/lib/typescript/src/components/Process/constants.d.ts.map +1 -0
- package/lib/typescript/src/components/Process/index.d.ts +3 -0
- package/lib/typescript/src/components/Process/index.d.ts.map +1 -0
- package/lib/typescript/src/components/Process/styles.d.ts +74 -0
- package/lib/typescript/src/components/Process/styles.d.ts.map +1 -0
- package/lib/typescript/src/components/Process/types.d.ts +32 -0
- package/lib/typescript/src/components/Process/types.d.ts.map +1 -0
- package/lib/typescript/src/components/Sources/Sources.d.ts +3 -0
- package/lib/typescript/src/components/Sources/Sources.d.ts.map +1 -0
- package/lib/typescript/src/components/Sources/constants.d.ts +2 -0
- package/lib/typescript/src/components/Sources/constants.d.ts.map +1 -0
- package/lib/typescript/src/components/Sources/index.d.ts +3 -0
- package/lib/typescript/src/components/Sources/index.d.ts.map +1 -0
- package/lib/typescript/src/components/Sources/styles.d.ts +49 -0
- package/lib/typescript/src/components/Sources/styles.d.ts.map +1 -0
- package/lib/typescript/src/components/Sources/types.d.ts +16 -0
- package/lib/typescript/src/components/Sources/types.d.ts.map +1 -0
- package/lib/typescript/src/components/Suggestions/Suggestions.d.ts +3 -0
- package/lib/typescript/src/components/Suggestions/Suggestions.d.ts.map +1 -0
- package/lib/typescript/src/components/Suggestions/index.d.ts +3 -0
- package/lib/typescript/src/components/Suggestions/index.d.ts.map +1 -0
- package/lib/typescript/src/components/Suggestions/styles.d.ts +14 -0
- package/lib/typescript/src/components/Suggestions/styles.d.ts.map +1 -0
- package/lib/typescript/src/components/Suggestions/types.d.ts +18 -0
- package/lib/typescript/src/components/Suggestions/types.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +24 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/package.json +178 -0
- package/src/actions/index.ts +1 -0
- package/src/actions/types.ts +11 -0
- package/src/components/Attachments/AttachmentItem.tsx +139 -0
- package/src/components/Attachments/Attachments.tsx +72 -0
- package/src/components/Attachments/constants.ts +21 -0
- package/src/components/Attachments/index.ts +6 -0
- package/src/components/Attachments/styles.ts +54 -0
- package/src/components/Attachments/types.ts +38 -0
- package/src/components/Chat/Chat.tsx +26 -0
- package/src/components/Chat/index.ts +2 -0
- package/src/components/Chat/styles.ts +12 -0
- package/src/components/Chat/types.ts +11 -0
- package/src/components/Citation/Citation.tsx +33 -0
- package/src/components/Citation/index.ts +2 -0
- package/src/components/Citation/styles.ts +15 -0
- package/src/components/Citation/types.ts +7 -0
- package/src/components/Composer/Composer.tsx +208 -0
- package/src/components/Composer/constants.ts +11 -0
- package/src/components/Composer/index.ts +11 -0
- package/src/components/Composer/styles.ts +25 -0
- package/src/components/Composer/types.ts +61 -0
- package/src/components/Confirmation/Confirmation.tsx +63 -0
- package/src/components/Confirmation/constants.ts +12 -0
- package/src/components/Confirmation/index.ts +2 -0
- package/src/components/Confirmation/styles.ts +39 -0
- package/src/components/Confirmation/types.ts +21 -0
- package/src/components/Feedback/Feedback.tsx +87 -0
- package/src/components/Feedback/constants.ts +16 -0
- package/src/components/Feedback/index.ts +2 -0
- package/src/components/Feedback/styles.ts +30 -0
- package/src/components/Feedback/types.ts +13 -0
- package/src/components/Message/MarkdownContent/MarkdownContent.tsx +70 -0
- package/src/components/Message/MarkdownContent/MarkdownImage/MarkdownImage.tsx +52 -0
- package/src/components/Message/MarkdownContent/MarkdownImage/styles.ts +4 -0
- package/src/components/Message/MarkdownContent/MarkdownImage/types.ts +8 -0
- package/src/components/Message/MarkdownContent/styles.ts +61 -0
- package/src/components/Message/MarkdownContent/types.ts +4 -0
- package/src/components/Message/Message.tsx +137 -0
- package/src/components/Message/constants.ts +2 -0
- package/src/components/Message/index.ts +10 -0
- package/src/components/Message/isNestedAction.ts +22 -0
- package/src/components/Message/styles.ts +42 -0
- package/src/components/Message/types.ts +45 -0
- package/src/components/MessageList/MessageList.tsx +238 -0
- package/src/components/MessageList/constants.ts +1 -0
- package/src/components/MessageList/index.ts +6 -0
- package/src/components/MessageList/styles.ts +7 -0
- package/src/components/MessageList/types.ts +36 -0
- package/src/components/MessageList/webPrependAnchor/constants.ts +6 -0
- package/src/components/MessageList/webPrependAnchor/index.ts +7 -0
- package/src/components/MessageList/webPrependAnchor/types.ts +92 -0
- package/src/components/MessageList/webPrependAnchor/useWebPrependAnchor.ts +27 -0
- package/src/components/MessageList/webPrependAnchor/useWebPrependAnchor.web.ts +293 -0
- package/src/components/Process/Process.tsx +160 -0
- package/src/components/Process/constants.ts +22 -0
- package/src/components/Process/index.ts +9 -0
- package/src/components/Process/styles.ts +77 -0
- package/src/components/Process/types.ts +39 -0
- package/src/components/Sources/Sources.tsx +70 -0
- package/src/components/Sources/constants.ts +1 -0
- package/src/components/Sources/index.ts +2 -0
- package/src/components/Sources/styles.ts +59 -0
- package/src/components/Sources/types.ts +17 -0
- package/src/components/Suggestions/Suggestions.tsx +34 -0
- package/src/components/Suggestions/index.ts +2 -0
- package/src/components/Suggestions/styles.ts +16 -0
- package/src/components/Suggestions/types.ts +19 -0
- package/src/index.tsx +61 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useEffect, useState } from 'react';
|
|
4
|
+
import { Image, View } from 'react-native';
|
|
5
|
+
import { Icon, Thumbnail } from '@unif/react-native-design';
|
|
6
|
+
import { styles } from "./styles.js";
|
|
7
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
export function MarkdownImage({
|
|
9
|
+
uri,
|
|
10
|
+
label
|
|
11
|
+
}) {
|
|
12
|
+
const [width, setWidth] = useState(1);
|
|
13
|
+
const [ratio, setRatio] = useState(undefined);
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
let active = true;
|
|
16
|
+
// 只取资源几何;加载与失败占位仍由 Design Thumbnail 持有。
|
|
17
|
+
Image.getSize(uri, (imageWidth, imageHeight) => {
|
|
18
|
+
if (active && Number.isFinite(imageWidth) && Number.isFinite(imageHeight) && imageWidth > 0 && imageHeight > 0) {
|
|
19
|
+
setRatio({
|
|
20
|
+
uri,
|
|
21
|
+
value: imageWidth / imageHeight
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}, () => {});
|
|
25
|
+
return () => {
|
|
26
|
+
active = false;
|
|
27
|
+
};
|
|
28
|
+
}, [uri]);
|
|
29
|
+
return /*#__PURE__*/_jsx(View, {
|
|
30
|
+
style: styles.root,
|
|
31
|
+
onLayout: ({
|
|
32
|
+
nativeEvent: {
|
|
33
|
+
layout
|
|
34
|
+
}
|
|
35
|
+
}) => setWidth(Math.max(1, layout.width)),
|
|
36
|
+
children: /*#__PURE__*/_jsx(Thumbnail, {
|
|
37
|
+
source: {
|
|
38
|
+
uri
|
|
39
|
+
},
|
|
40
|
+
size: {
|
|
41
|
+
width,
|
|
42
|
+
height: width / (ratio?.uri === uri ? ratio.value : 1),
|
|
43
|
+
borderRadius: 0
|
|
44
|
+
},
|
|
45
|
+
resizeMode: "contain",
|
|
46
|
+
fallback: /*#__PURE__*/_jsx(Icon, {
|
|
47
|
+
name: "image"
|
|
48
|
+
}),
|
|
49
|
+
accessibilityLabel: label || '图片'
|
|
50
|
+
})
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=MarkdownImage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useEffect","useState","Image","View","Icon","Thumbnail","styles","jsx","_jsx","MarkdownImage","uri","label","width","setWidth","ratio","setRatio","undefined","active","getSize","imageWidth","imageHeight","Number","isFinite","value","style","root","onLayout","nativeEvent","layout","Math","max","children","source","size","height","borderRadius","resizeMode","fallback","name","accessibilityLabel"],"sourceRoot":"../../../../../../src","sources":["components/Message/MarkdownContent/MarkdownImage/MarkdownImage.tsx"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAC3C,SAASC,KAAK,EAAEC,IAAI,QAAQ,cAAc;AAC1C,SAASC,IAAI,EAAEC,SAAS,QAAQ,2BAA2B;AAC3D,SAASC,MAAM,QAAQ,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGlC,OAAO,SAASC,aAAaA,CAAC;EAAEC,GAAG;EAAEC;AAA0B,CAAC,EAAE;EAChE,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAGZ,QAAQ,CAAC,CAAC,CAAC;EACrC,MAAM,CAACa,KAAK,EAAEC,QAAQ,CAAC,GAAGd,QAAQ,CAAyBe,SAAS,CAAC;EACrEhB,SAAS,CAAC,MAAM;IACd,IAAIiB,MAAM,GAAG,IAAI;IACjB;IACAf,KAAK,CAACgB,OAAO,CACXR,GAAG,EACH,CAACS,UAAU,EAAEC,WAAW,KAAK;MAC3B,IACEH,MAAM,IACNI,MAAM,CAACC,QAAQ,CAACH,UAAU,CAAC,IAC3BE,MAAM,CAACC,QAAQ,CAACF,WAAW,CAAC,IAC5BD,UAAU,GAAG,CAAC,IACdC,WAAW,GAAG,CAAC,EACf;QACAL,QAAQ,CAAC;UAAEL,GAAG;UAAEa,KAAK,EAAEJ,UAAU,GAAGC;QAAY,CAAC,CAAC;MACpD;IACF,CAAC,EACD,MAAM,CAAC,CACT,CAAC;IACD,OAAO,MAAM;MACXH,MAAM,GAAG,KAAK;IAChB,CAAC;EACH,CAAC,EAAE,CAACP,GAAG,CAAC,CAAC;EACT,oBACEF,IAAA,CAACL,IAAI;IACHqB,KAAK,EAAElB,MAAM,CAACmB,IAAK;IACnBC,QAAQ,EAAEA,CAAC;MAAEC,WAAW,EAAE;QAAEC;MAAO;IAAE,CAAC,KACpCf,QAAQ,CAACgB,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEF,MAAM,CAAChB,KAAK,CAAC,CACnC;IAAAmB,QAAA,eAEDvB,IAAA,CAACH,SAAS;MACR2B,MAAM,EAAE;QAAEtB;MAAI,CAAE;MAChBuB,IAAI,EAAE;QACJrB,KAAK;QACLsB,MAAM,EAAEtB,KAAK,IAAIE,KAAK,EAAEJ,GAAG,KAAKA,GAAG,GAAGI,KAAK,CAACS,KAAK,GAAG,CAAC,CAAC;QACtDY,YAAY,EAAE;MAChB,CAAE;MACFC,UAAU,EAAC,SAAS;MACpBC,QAAQ,eAAE7B,IAAA,CAACJ,IAAI;QAACkC,IAAI,EAAC;MAAO,CAAE,CAAE;MAChCC,kBAAkB,EAAE5B,KAAK,IAAI;IAAK,CACnC;EAAC,CACE,CAAC;AAEX","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["StyleSheet","styles","create","root","width","minWidth"],"sourceRoot":"../../../../../../src","sources":["components/Message/MarkdownContent/MarkdownImage/styles.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,OAAO,MAAMC,MAAM,GAAGD,UAAU,CAACE,MAAM,CAAC;EACtCC,IAAI,EAAE;IAAEC,KAAK,EAAE,MAAM;IAAEC,QAAQ,EAAE;EAAE;AACrC,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../../../../src","sources":["components/Message/MarkdownContent/MarkdownImage/types.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { StyleSheet } from 'react-native';
|
|
4
|
+
import { type, space, fontMono } from '@unif/react-native-design';
|
|
5
|
+
export const createStyles = colors => {
|
|
6
|
+
const body = {
|
|
7
|
+
fontSize: type.body,
|
|
8
|
+
lineHeight: type.body * 1.5,
|
|
9
|
+
color: colors.foreground
|
|
10
|
+
};
|
|
11
|
+
return StyleSheet.create({
|
|
12
|
+
text: body,
|
|
13
|
+
em: {
|
|
14
|
+
...body,
|
|
15
|
+
fontStyle: 'italic'
|
|
16
|
+
},
|
|
17
|
+
strong: {
|
|
18
|
+
...body,
|
|
19
|
+
fontWeight: 'bold'
|
|
20
|
+
},
|
|
21
|
+
strikethrough: {
|
|
22
|
+
...body,
|
|
23
|
+
textDecorationLine: 'line-through'
|
|
24
|
+
},
|
|
25
|
+
link: {
|
|
26
|
+
...body,
|
|
27
|
+
color: colors.primary
|
|
28
|
+
},
|
|
29
|
+
li: body,
|
|
30
|
+
codespan: {
|
|
31
|
+
...body,
|
|
32
|
+
fontFamily: fontMono,
|
|
33
|
+
backgroundColor: colors.surfaceContainer
|
|
34
|
+
},
|
|
35
|
+
h1: {
|
|
36
|
+
fontSize: type.h1,
|
|
37
|
+
lineHeight: type.h1 * 1.4,
|
|
38
|
+
color: colors.foreground,
|
|
39
|
+
borderBottomColor: colors.outline
|
|
40
|
+
},
|
|
41
|
+
h2: {
|
|
42
|
+
fontSize: type.h2,
|
|
43
|
+
lineHeight: type.h2 * 1.4,
|
|
44
|
+
color: colors.foreground,
|
|
45
|
+
borderBottomColor: colors.outline
|
|
46
|
+
},
|
|
47
|
+
h3: {
|
|
48
|
+
fontSize: type.h3,
|
|
49
|
+
lineHeight: type.h3 * 1.4,
|
|
50
|
+
color: colors.foreground
|
|
51
|
+
},
|
|
52
|
+
h4: {
|
|
53
|
+
fontSize: type.body,
|
|
54
|
+
lineHeight: type.body * 1.4,
|
|
55
|
+
color: colors.foreground
|
|
56
|
+
},
|
|
57
|
+
h5: {
|
|
58
|
+
fontSize: type.sm,
|
|
59
|
+
lineHeight: type.sm * 1.4,
|
|
60
|
+
color: colors.foreground
|
|
61
|
+
},
|
|
62
|
+
h6: {
|
|
63
|
+
fontSize: type.xs,
|
|
64
|
+
lineHeight: type.xs * 1.4,
|
|
65
|
+
color: colors.foreground
|
|
66
|
+
},
|
|
67
|
+
paragraph: {
|
|
68
|
+
paddingVertical: space[1]
|
|
69
|
+
},
|
|
70
|
+
code: {
|
|
71
|
+
padding: space[2],
|
|
72
|
+
backgroundColor: colors.surfaceContainer
|
|
73
|
+
},
|
|
74
|
+
blockquote: {
|
|
75
|
+
borderLeftColor: colors.outline
|
|
76
|
+
},
|
|
77
|
+
hr: {
|
|
78
|
+
borderBottomColor: colors.outline
|
|
79
|
+
},
|
|
80
|
+
table: {
|
|
81
|
+
borderColor: colors.outline
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["StyleSheet","type","space","fontMono","createStyles","colors","body","fontSize","lineHeight","color","foreground","create","text","em","fontStyle","strong","fontWeight","strikethrough","textDecorationLine","link","primary","li","codespan","fontFamily","backgroundColor","surfaceContainer","h1","borderBottomColor","outline","h2","h3","h4","h5","sm","h6","xs","paragraph","paddingVertical","code","padding","blockquote","borderLeftColor","hr","table","borderColor"],"sourceRoot":"../../../../../src","sources":["components/Message/MarkdownContent/styles.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SAASC,IAAI,EAAEC,KAAK,EAAEC,QAAQ,QAAQ,2BAA2B;AAGjE,OAAO,MAAMC,YAAY,GAAIC,MAAmB,IAAK;EACnD,MAAMC,IAAI,GAAG;IACXC,QAAQ,EAAEN,IAAI,CAACK,IAAI;IACnBE,UAAU,EAAEP,IAAI,CAACK,IAAI,GAAG,GAAG;IAC3BG,KAAK,EAAEJ,MAAM,CAACK;EAChB,CAAC;EACD,OAAOV,UAAU,CAACW,MAAM,CAAC;IACvBC,IAAI,EAAEN,IAAI;IACVO,EAAE,EAAE;MAAE,GAAGP,IAAI;MAAEQ,SAAS,EAAE;IAAS,CAAC;IACpCC,MAAM,EAAE;MAAE,GAAGT,IAAI;MAAEU,UAAU,EAAE;IAAO,CAAC;IACvCC,aAAa,EAAE;MAAE,GAAGX,IAAI;MAAEY,kBAAkB,EAAE;IAAe,CAAC;IAC9DC,IAAI,EAAE;MAAE,GAAGb,IAAI;MAAEG,KAAK,EAAEJ,MAAM,CAACe;IAAQ,CAAC;IACxCC,EAAE,EAAEf,IAAI;IACRgB,QAAQ,EAAE;MACR,GAAGhB,IAAI;MACPiB,UAAU,EAAEpB,QAAQ;MACpBqB,eAAe,EAAEnB,MAAM,CAACoB;IAC1B,CAAC;IACDC,EAAE,EAAE;MACFnB,QAAQ,EAAEN,IAAI,CAACyB,EAAE;MACjBlB,UAAU,EAAEP,IAAI,CAACyB,EAAE,GAAG,GAAG;MACzBjB,KAAK,EAAEJ,MAAM,CAACK,UAAU;MACxBiB,iBAAiB,EAAEtB,MAAM,CAACuB;IAC5B,CAAC;IACDC,EAAE,EAAE;MACFtB,QAAQ,EAAEN,IAAI,CAAC4B,EAAE;MACjBrB,UAAU,EAAEP,IAAI,CAAC4B,EAAE,GAAG,GAAG;MACzBpB,KAAK,EAAEJ,MAAM,CAACK,UAAU;MACxBiB,iBAAiB,EAAEtB,MAAM,CAACuB;IAC5B,CAAC;IACDE,EAAE,EAAE;MACFvB,QAAQ,EAAEN,IAAI,CAAC6B,EAAE;MACjBtB,UAAU,EAAEP,IAAI,CAAC6B,EAAE,GAAG,GAAG;MACzBrB,KAAK,EAAEJ,MAAM,CAACK;IAChB,CAAC;IACDqB,EAAE,EAAE;MACFxB,QAAQ,EAAEN,IAAI,CAACK,IAAI;MACnBE,UAAU,EAAEP,IAAI,CAACK,IAAI,GAAG,GAAG;MAC3BG,KAAK,EAAEJ,MAAM,CAACK;IAChB,CAAC;IACDsB,EAAE,EAAE;MACFzB,QAAQ,EAAEN,IAAI,CAACgC,EAAE;MACjBzB,UAAU,EAAEP,IAAI,CAACgC,EAAE,GAAG,GAAG;MACzBxB,KAAK,EAAEJ,MAAM,CAACK;IAChB,CAAC;IACDwB,EAAE,EAAE;MACF3B,QAAQ,EAAEN,IAAI,CAACkC,EAAE;MACjB3B,UAAU,EAAEP,IAAI,CAACkC,EAAE,GAAG,GAAG;MACzB1B,KAAK,EAAEJ,MAAM,CAACK;IAChB,CAAC;IACD0B,SAAS,EAAE;MAAEC,eAAe,EAAEnC,KAAK,CAAC,CAAC;IAAE,CAAC;IACxCoC,IAAI,EAAE;MAAEC,OAAO,EAAErC,KAAK,CAAC,CAAC,CAAC;MAAEsB,eAAe,EAAEnB,MAAM,CAACoB;IAAiB,CAAC;IACrEe,UAAU,EAAE;MAAEC,eAAe,EAAEpC,MAAM,CAACuB;IAAQ,CAAC;IAC/Cc,EAAE,EAAE;MAAEf,iBAAiB,EAAEtB,MAAM,CAACuB;IAAQ,CAAC;IACzCe,KAAK,EAAE;MAAEC,WAAW,EAAEvC,MAAM,CAACuB;IAAQ;EACvC,CAAC,CAAC;AACJ,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../../../src","sources":["components/Message/MarkdownContent/types.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { Pressable, Text, View } from 'react-native';
|
|
4
|
+
import { Button, Spinner, useThemedStyles } from '@unif/react-native-design';
|
|
5
|
+
import { MarkdownContent } from "./MarkdownContent/MarkdownContent.js";
|
|
6
|
+
import { createStyles } from "./styles.js";
|
|
7
|
+
import { isNestedAction } from "./isNestedAction.js";
|
|
8
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
|
+
export function Message(props) {
|
|
10
|
+
const {
|
|
11
|
+
placement = 'start',
|
|
12
|
+
avatar,
|
|
13
|
+
name,
|
|
14
|
+
surface = 'bubble',
|
|
15
|
+
fullWidth = false,
|
|
16
|
+
status = 'idle',
|
|
17
|
+
statusText,
|
|
18
|
+
header,
|
|
19
|
+
footer,
|
|
20
|
+
actions = [],
|
|
21
|
+
onPress,
|
|
22
|
+
onLongPress,
|
|
23
|
+
style,
|
|
24
|
+
testID
|
|
25
|
+
} = props;
|
|
26
|
+
const styles = useThemedStyles(createStyles);
|
|
27
|
+
const hasContent = Boolean(props.text?.length) || props.children !== undefined && props.children !== null && props.children !== false || header !== undefined && header !== null && header !== false || footer !== undefined && footer !== null && footer !== false;
|
|
28
|
+
const waiting = (status === 'pending' || status === 'streaming') && !hasContent;
|
|
29
|
+
const contentStyle = [styles.content, fullWidth && styles.fullWidth, surface === 'bubble' && [styles.bubble, placement === 'end' && styles.outgoing], surface === 'outlined' && styles.outlined, status === 'failed' && styles.failed];
|
|
30
|
+
const content = /*#__PURE__*/_jsxs(_Fragment, {
|
|
31
|
+
children: [header, props.text !== undefined ? props.format === 'markdown' ? /*#__PURE__*/_jsx(MarkdownContent, {
|
|
32
|
+
text: props.text,
|
|
33
|
+
onLinkPress: props.onLinkPress
|
|
34
|
+
}) : /*#__PURE__*/_jsx(Text, {
|
|
35
|
+
selectable: true,
|
|
36
|
+
style: styles.text,
|
|
37
|
+
numberOfLines: props.numberOfLines,
|
|
38
|
+
children: props.text
|
|
39
|
+
}) : props.children, waiting ? /*#__PURE__*/_jsx(View, {
|
|
40
|
+
accessible: true,
|
|
41
|
+
accessibilityLabel: "\u6B63\u5728\u7B49\u5F85\u56DE\u590D",
|
|
42
|
+
accessibilityState: {
|
|
43
|
+
busy: true
|
|
44
|
+
},
|
|
45
|
+
children: /*#__PURE__*/_jsx(Spinner, {})
|
|
46
|
+
}) : null, statusText ? /*#__PURE__*/_jsx(Text, {
|
|
47
|
+
style: [styles.status, status === 'failed' && styles.errorText],
|
|
48
|
+
children: statusText
|
|
49
|
+
}) : null, footer]
|
|
50
|
+
});
|
|
51
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
52
|
+
style: [styles.root, placement === 'end' && styles.end, style],
|
|
53
|
+
testID: testID,
|
|
54
|
+
children: [avatar, /*#__PURE__*/_jsxs(View, {
|
|
55
|
+
style: [styles.column, placement === 'end' && styles.columnEnd, fullWidth && styles.fullWidth],
|
|
56
|
+
children: [name ? /*#__PURE__*/_jsx(Text, {
|
|
57
|
+
style: styles.name,
|
|
58
|
+
children: name
|
|
59
|
+
}) : null, onPress || onLongPress ? /*#__PURE__*/_jsx(Pressable, {
|
|
60
|
+
style: contentStyle,
|
|
61
|
+
onPress: onPress ? event => {
|
|
62
|
+
if (!isNestedAction(event)) onPress();
|
|
63
|
+
} : undefined,
|
|
64
|
+
onLongPress: onLongPress ? event => {
|
|
65
|
+
if (!isNestedAction(event)) onLongPress();
|
|
66
|
+
} : undefined,
|
|
67
|
+
accessible: false,
|
|
68
|
+
children: content
|
|
69
|
+
}) : /*#__PURE__*/_jsx(View, {
|
|
70
|
+
style: contentStyle,
|
|
71
|
+
children: content
|
|
72
|
+
}), actions.length ? /*#__PURE__*/_jsx(View, {
|
|
73
|
+
style: styles.actions,
|
|
74
|
+
children: actions.map(action => /*#__PURE__*/_jsx(Button, {
|
|
75
|
+
label: action.label,
|
|
76
|
+
leftIcon: action.icon,
|
|
77
|
+
disabled: action.disabled,
|
|
78
|
+
loading: action.loading,
|
|
79
|
+
accessibilityHint: action.accessibilityHint,
|
|
80
|
+
variant: "text",
|
|
81
|
+
onPress: action.onPress
|
|
82
|
+
}, action.id))
|
|
83
|
+
}) : null]
|
|
84
|
+
})]
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=Message.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Pressable","Text","View","Button","Spinner","useThemedStyles","MarkdownContent","createStyles","isNestedAction","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","Message","props","placement","avatar","name","surface","fullWidth","status","statusText","header","footer","actions","onPress","onLongPress","style","testID","styles","hasContent","Boolean","text","length","children","undefined","waiting","contentStyle","content","bubble","outgoing","outlined","failed","format","onLinkPress","selectable","numberOfLines","accessible","accessibilityLabel","accessibilityState","busy","errorText","root","end","column","columnEnd","event","map","action","label","leftIcon","icon","disabled","loading","accessibilityHint","variant","id"],"sourceRoot":"../../../../src","sources":["components/Message/Message.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["INTERACTIVE_CONTENT_SELECTOR"],"sourceRoot":"../../../../src","sources":["components/Message/constants.ts"],"mappings":";;AAAA,OAAO,MAAMA,4BAA4B,GACvC,+HAA+H","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Message"],"sourceRoot":"../../../../src","sources":["components/Message/index.ts"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,cAAW","ignoreList":[]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { INTERACTIVE_CONTENT_SELECTOR } from "./constants.js";
|
|
4
|
+
export function isNestedAction(event) {
|
|
5
|
+
const {
|
|
6
|
+
target,
|
|
7
|
+
currentTarget
|
|
8
|
+
} = event;
|
|
9
|
+
// 原生由 responder 交付实际目标;Web 的 RNGH 按钮仍可能冒泡到 RN Pressable。
|
|
10
|
+
if (typeof target !== 'object' || target === null || !('closest' in target) || typeof target.closest !== 'function' || typeof currentTarget !== 'object' || currentTarget === null || !('contains' in currentTarget) || typeof currentTarget.contains !== 'function') return false;
|
|
11
|
+
const action = target.closest(INTERACTIVE_CONTENT_SELECTOR);
|
|
12
|
+
return Boolean(action && action !== currentTarget && currentTarget.contains(action));
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=isNestedAction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["INTERACTIVE_CONTENT_SELECTOR","isNestedAction","event","target","currentTarget","closest","contains","action","Boolean"],"sourceRoot":"../../../../src","sources":["components/Message/isNestedAction.ts"],"mappings":";;AACA,SAASA,4BAA4B,QAAQ,gBAAa;AAE1D,OAAO,SAASC,cAAcA,CAACC,KAA4B,EAAW;EACpE,MAAM;IAAEC,MAAM;IAAEC;EAAc,CAAC,GAAGF,KAAK;EACvC;EACA,IACE,OAAOC,MAAM,KAAK,QAAQ,IAC1BA,MAAM,KAAK,IAAI,IACf,EAAE,SAAS,IAAIA,MAAM,CAAC,IACtB,OAAOA,MAAM,CAACE,OAAO,KAAK,UAAU,IACpC,OAAOD,aAAa,KAAK,QAAQ,IACjCA,aAAa,KAAK,IAAI,IACtB,EAAE,UAAU,IAAIA,aAAa,CAAC,IAC9B,OAAOA,aAAa,CAACE,QAAQ,KAAK,UAAU,EAE5C,OAAO,KAAK;EACd,MAAMC,MAAM,GAAGJ,MAAM,CAACE,OAAO,CAACL,4BAA4B,CAAC;EAC3D,OAAOQ,OAAO,CACZD,MAAM,IAAIA,MAAM,KAAKH,aAAa,IAAIA,aAAa,CAACE,QAAQ,CAACC,MAAM,CACrE,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { StyleSheet } from 'react-native';
|
|
4
|
+
import { radius, space, type } from '@unif/react-native-design';
|
|
5
|
+
export const createStyles = colors => StyleSheet.create({
|
|
6
|
+
root: {
|
|
7
|
+
flexDirection: 'row',
|
|
8
|
+
alignItems: 'flex-start',
|
|
9
|
+
gap: space[2],
|
|
10
|
+
minWidth: 0,
|
|
11
|
+
paddingVertical: space[2]
|
|
12
|
+
},
|
|
13
|
+
end: {
|
|
14
|
+
flexDirection: 'row-reverse'
|
|
15
|
+
},
|
|
16
|
+
column: {
|
|
17
|
+
flexShrink: 1,
|
|
18
|
+
maxWidth: '100%',
|
|
19
|
+
gap: space[1],
|
|
20
|
+
alignItems: 'flex-start'
|
|
21
|
+
},
|
|
22
|
+
columnEnd: {
|
|
23
|
+
alignItems: 'flex-end'
|
|
24
|
+
},
|
|
25
|
+
fullWidth: {
|
|
26
|
+
flex: 1,
|
|
27
|
+
alignSelf: 'stretch'
|
|
28
|
+
},
|
|
29
|
+
content: {
|
|
30
|
+
minWidth: 0,
|
|
31
|
+
maxWidth: '100%',
|
|
32
|
+
gap: space[2]
|
|
33
|
+
},
|
|
34
|
+
bubble: {
|
|
35
|
+
padding: space[3],
|
|
36
|
+
borderRadius: radius.lg,
|
|
37
|
+
backgroundColor: colors.surface
|
|
38
|
+
},
|
|
39
|
+
outgoing: {
|
|
40
|
+
backgroundColor: colors.primaryContainer
|
|
41
|
+
},
|
|
42
|
+
outlined: {
|
|
43
|
+
padding: space[3],
|
|
44
|
+
borderRadius: radius.lg,
|
|
45
|
+
borderWidth: 1,
|
|
46
|
+
borderColor: colors.outline
|
|
47
|
+
},
|
|
48
|
+
failed: {
|
|
49
|
+
borderWidth: 1,
|
|
50
|
+
borderColor: colors.error
|
|
51
|
+
},
|
|
52
|
+
text: {
|
|
53
|
+
fontSize: type.body,
|
|
54
|
+
color: colors.foreground
|
|
55
|
+
},
|
|
56
|
+
name: {
|
|
57
|
+
fontSize: type.sm,
|
|
58
|
+
color: colors.foregroundMuted
|
|
59
|
+
},
|
|
60
|
+
status: {
|
|
61
|
+
fontSize: type.sm,
|
|
62
|
+
color: colors.foregroundMuted
|
|
63
|
+
},
|
|
64
|
+
errorText: {
|
|
65
|
+
color: colors.error
|
|
66
|
+
},
|
|
67
|
+
actions: {
|
|
68
|
+
flexDirection: 'row',
|
|
69
|
+
flexWrap: 'wrap',
|
|
70
|
+
gap: space[2]
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["StyleSheet","radius","space","type","createStyles","colors","create","root","flexDirection","alignItems","gap","minWidth","paddingVertical","end","column","flexShrink","maxWidth","columnEnd","fullWidth","flex","alignSelf","content","bubble","padding","borderRadius","lg","backgroundColor","surface","outgoing","primaryContainer","outlined","borderWidth","borderColor","outline","failed","error","text","fontSize","body","color","foreground","name","sm","foregroundMuted","status","errorText","actions","flexWrap"],"sourceRoot":"../../../../src","sources":["components/Message/styles.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SAASC,MAAM,EAAEC,KAAK,EAAEC,IAAI,QAAQ,2BAA2B;AAG/D,OAAO,MAAMC,YAAY,GAAIC,MAAmB,IAC9CL,UAAU,CAACM,MAAM,CAAC;EAChBC,IAAI,EAAE;IACJC,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,YAAY;IACxBC,GAAG,EAAER,KAAK,CAAC,CAAC,CAAC;IACbS,QAAQ,EAAE,CAAC;IACXC,eAAe,EAAEV,KAAK,CAAC,CAAC;EAC1B,CAAC;EACDW,GAAG,EAAE;IAAEL,aAAa,EAAE;EAAc,CAAC;EACrCM,MAAM,EAAE;IACNC,UAAU,EAAE,CAAC;IACbC,QAAQ,EAAE,MAAM;IAChBN,GAAG,EAAER,KAAK,CAAC,CAAC,CAAC;IACbO,UAAU,EAAE;EACd,CAAC;EACDQ,SAAS,EAAE;IAAER,UAAU,EAAE;EAAW,CAAC;EACrCS,SAAS,EAAE;IAAEC,IAAI,EAAE,CAAC;IAAEC,SAAS,EAAE;EAAU,CAAC;EAC5CC,OAAO,EAAE;IAAEV,QAAQ,EAAE,CAAC;IAAEK,QAAQ,EAAE,MAAM;IAAEN,GAAG,EAAER,KAAK,CAAC,CAAC;EAAE,CAAC;EACzDoB,MAAM,EAAE;IACNC,OAAO,EAAErB,KAAK,CAAC,CAAC,CAAC;IACjBsB,YAAY,EAAEvB,MAAM,CAACwB,EAAE;IACvBC,eAAe,EAAErB,MAAM,CAACsB;EAC1B,CAAC;EACDC,QAAQ,EAAE;IAAEF,eAAe,EAAErB,MAAM,CAACwB;EAAiB,CAAC;EACtDC,QAAQ,EAAE;IACRP,OAAO,EAAErB,KAAK,CAAC,CAAC,CAAC;IACjBsB,YAAY,EAAEvB,MAAM,CAACwB,EAAE;IACvBM,WAAW,EAAE,CAAC;IACdC,WAAW,EAAE3B,MAAM,CAAC4B;EACtB,CAAC;EACDC,MAAM,EAAE;IAAEH,WAAW,EAAE,CAAC;IAAEC,WAAW,EAAE3B,MAAM,CAAC8B;EAAM,CAAC;EACrDC,IAAI,EAAE;IAAEC,QAAQ,EAAElC,IAAI,CAACmC,IAAI;IAAEC,KAAK,EAAElC,MAAM,CAACmC;EAAW,CAAC;EACvDC,IAAI,EAAE;IAAEJ,QAAQ,EAAElC,IAAI,CAACuC,EAAE;IAAEH,KAAK,EAAElC,MAAM,CAACsC;EAAgB,CAAC;EAC1DC,MAAM,EAAE;IAAEP,QAAQ,EAAElC,IAAI,CAACuC,EAAE;IAAEH,KAAK,EAAElC,MAAM,CAACsC;EAAgB,CAAC;EAC5DE,SAAS,EAAE;IAAEN,KAAK,EAAElC,MAAM,CAAC8B;EAAM,CAAC;EAClCW,OAAO,EAAE;IAAEtC,aAAa,EAAE,KAAK;IAAEuC,QAAQ,EAAE,MAAM;IAAErC,GAAG,EAAER,KAAK,CAAC,CAAC;EAAE;AACnE,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../../src","sources":["components/Message/types.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useImperativeHandle, useLayoutEffect, useRef, useState } from 'react';
|
|
4
|
+
import { FlatList, View } from 'react-native';
|
|
5
|
+
import { Button } from '@unif/react-native-design';
|
|
6
|
+
import { DEFAULT_END_THRESHOLD } from "./constants.js";
|
|
7
|
+
import { styles } from "./styles.js";
|
|
8
|
+
import { useWebPrependAnchor } from "./webPrependAnchor/index.js";
|
|
9
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
10
|
+
export function MessageList({
|
|
11
|
+
items,
|
|
12
|
+
keyExtractor,
|
|
13
|
+
renderItem,
|
|
14
|
+
extraData,
|
|
15
|
+
header,
|
|
16
|
+
footer,
|
|
17
|
+
empty,
|
|
18
|
+
renderSeparator,
|
|
19
|
+
initialPosition = 'end',
|
|
20
|
+
followOutput = 'whenAtEnd',
|
|
21
|
+
endThreshold = DEFAULT_END_THRESHOLD,
|
|
22
|
+
showScrollToEnd = true,
|
|
23
|
+
onAtEndChange,
|
|
24
|
+
hasEarlier = false,
|
|
25
|
+
loadingEarlier = false,
|
|
26
|
+
onRequestEarlier,
|
|
27
|
+
keyboardDismissMode = 'on-drag',
|
|
28
|
+
style,
|
|
29
|
+
testID,
|
|
30
|
+
ref
|
|
31
|
+
}) {
|
|
32
|
+
const listRef = useRef(null);
|
|
33
|
+
const measurements = useRef({
|
|
34
|
+
viewport: 0,
|
|
35
|
+
content: 0,
|
|
36
|
+
offset: 0,
|
|
37
|
+
hasContentSize: false
|
|
38
|
+
});
|
|
39
|
+
const initial = useRef(initialPosition);
|
|
40
|
+
const initialized = useRef(false);
|
|
41
|
+
const previousKeys = useRef([]);
|
|
42
|
+
const prependPending = useRef(false);
|
|
43
|
+
const pendingScroll = useRef(undefined);
|
|
44
|
+
const userScrolling = useRef(false);
|
|
45
|
+
const atEndRef = useRef(undefined);
|
|
46
|
+
const [atEnd, setAtEnd] = useState(true);
|
|
47
|
+
const threshold = Number.isFinite(endThreshold) ? Math.max(0, endThreshold) : DEFAULT_END_THRESHOLD;
|
|
48
|
+
const keys = items.map(keyExtractor);
|
|
49
|
+
const {
|
|
50
|
+
getRowNativeID,
|
|
51
|
+
preservingPrependRef,
|
|
52
|
+
cancelPrependPreservation
|
|
53
|
+
} = useWebPrependAnchor({
|
|
54
|
+
listRef,
|
|
55
|
+
itemsIdentity: items,
|
|
56
|
+
keys
|
|
57
|
+
});
|
|
58
|
+
useLayoutEffect(() => {
|
|
59
|
+
const previous = previousKeys.current;
|
|
60
|
+
const added = keys.length - previous.length;
|
|
61
|
+
const onlyPrepended = previous.length > 0 && added > 0 && previous.every((key, index) => keys[index + added] === key);
|
|
62
|
+
const changed = keys.length !== previous.length || keys.some((key, index) => key !== previous[index]);
|
|
63
|
+
if (changed) prependPending.current = onlyPrepended;
|
|
64
|
+
previousKeys.current = keys;
|
|
65
|
+
});
|
|
66
|
+
function ready() {
|
|
67
|
+
const current = measurements.current;
|
|
68
|
+
return current.viewport > 0 && current.hasContentSize;
|
|
69
|
+
}
|
|
70
|
+
function publishPosition() {
|
|
71
|
+
if (!ready()) return;
|
|
72
|
+
const {
|
|
73
|
+
viewport,
|
|
74
|
+
content,
|
|
75
|
+
offset
|
|
76
|
+
} = measurements.current;
|
|
77
|
+
const next = content - viewport - Math.max(0, offset) <= threshold;
|
|
78
|
+
if (next !== atEndRef.current) {
|
|
79
|
+
atEndRef.current = next;
|
|
80
|
+
setAtEnd(next);
|
|
81
|
+
onAtEndChange?.(next);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
function scrollToEnd(options = {}) {
|
|
85
|
+
cancelPrependPreservation();
|
|
86
|
+
const request = {
|
|
87
|
+
animated: options.animated ?? true
|
|
88
|
+
};
|
|
89
|
+
if (!ready()) {
|
|
90
|
+
pendingScroll.current = request;
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
pendingScroll.current = undefined;
|
|
94
|
+
listRef.current?.scrollToOffset({
|
|
95
|
+
offset: Math.max(0, measurements.current.content - measurements.current.viewport),
|
|
96
|
+
animated: request.animated
|
|
97
|
+
});
|
|
98
|
+
if (measurements.current.content <= measurements.current.viewport) publishPosition();
|
|
99
|
+
}
|
|
100
|
+
useImperativeHandle(ref, () => ({
|
|
101
|
+
scrollToEnd
|
|
102
|
+
}));
|
|
103
|
+
function reconcileLayout(contentChanged) {
|
|
104
|
+
if (!ready()) return;
|
|
105
|
+
const request = pendingScroll.current;
|
|
106
|
+
if (items.length > 0 && !initialized.current) {
|
|
107
|
+
initialized.current = true;
|
|
108
|
+
if (request || initial.current === 'end') {
|
|
109
|
+
scrollToEnd(request ?? {
|
|
110
|
+
animated: false
|
|
111
|
+
});
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
publishPosition();
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
if (request) {
|
|
118
|
+
scrollToEnd(request);
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
const prepended = prependPending.current;
|
|
122
|
+
if (contentChanged) prependPending.current = false;
|
|
123
|
+
const shouldFollow = initialized.current && followOutput === 'whenAtEnd' && !userScrolling.current && !prepended && !preservingPrependRef.current && atEndRef.current;
|
|
124
|
+
if (shouldFollow) scrollToEnd({
|
|
125
|
+
animated: false
|
|
126
|
+
});else publishPosition();
|
|
127
|
+
}
|
|
128
|
+
function onScroll(event) {
|
|
129
|
+
const {
|
|
130
|
+
contentOffset,
|
|
131
|
+
contentSize,
|
|
132
|
+
layoutMeasurement
|
|
133
|
+
} = event.nativeEvent;
|
|
134
|
+
const movedUp = contentOffset.y < measurements.current.offset;
|
|
135
|
+
const resizingAtEnd = atEndRef.current && !movedUp && !userScrolling.current && followOutput === 'whenAtEnd' && (measurements.current.content !== contentSize.height || measurements.current.viewport !== layoutMeasurement.height);
|
|
136
|
+
measurements.current = {
|
|
137
|
+
offset: contentOffset.y,
|
|
138
|
+
content: contentSize.height,
|
|
139
|
+
viewport: layoutMeasurement.height,
|
|
140
|
+
hasContentSize: true
|
|
141
|
+
};
|
|
142
|
+
if (!resizingAtEnd) publishPosition();
|
|
143
|
+
}
|
|
144
|
+
const history = hasEarlier && onRequestEarlier;
|
|
145
|
+
const hasHeader = Boolean(header || history);
|
|
146
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
147
|
+
style: [styles.root, style],
|
|
148
|
+
testID: testID,
|
|
149
|
+
children: [/*#__PURE__*/_jsx(FlatList, {
|
|
150
|
+
ref: listRef,
|
|
151
|
+
testID: testID ? `${testID}-list` : undefined,
|
|
152
|
+
style: styles.list,
|
|
153
|
+
data: items,
|
|
154
|
+
keyExtractor: keyExtractor,
|
|
155
|
+
extraData: extraData,
|
|
156
|
+
renderItem: ({
|
|
157
|
+
item,
|
|
158
|
+
index
|
|
159
|
+
}) => /*#__PURE__*/_jsxs(View, {
|
|
160
|
+
nativeID: getRowNativeID(keyExtractor(item)),
|
|
161
|
+
children: [index > 0 && renderSeparator ? renderSeparator(items[index - 1], item) : null, renderItem(item, index)]
|
|
162
|
+
}),
|
|
163
|
+
ListHeaderComponent: hasHeader ? /*#__PURE__*/_jsxs(View, {
|
|
164
|
+
children: [header, history ? /*#__PURE__*/_jsx(Button, {
|
|
165
|
+
label: loadingEarlier ? '正在加载…' : '查看更早消息',
|
|
166
|
+
variant: "text",
|
|
167
|
+
loading: loadingEarlier,
|
|
168
|
+
onPress: onRequestEarlier
|
|
169
|
+
}) : null]
|
|
170
|
+
}) : undefined,
|
|
171
|
+
ListFooterComponent: footer ? /*#__PURE__*/_jsx(View, {
|
|
172
|
+
children: footer
|
|
173
|
+
}) : undefined,
|
|
174
|
+
ListEmptyComponent: empty ? /*#__PURE__*/_jsx(View, {
|
|
175
|
+
children: empty
|
|
176
|
+
}) : undefined,
|
|
177
|
+
maintainVisibleContentPosition: {
|
|
178
|
+
minIndexForVisible: 0
|
|
179
|
+
},
|
|
180
|
+
keyboardDismissMode: keyboardDismissMode,
|
|
181
|
+
keyboardShouldPersistTaps: "handled",
|
|
182
|
+
scrollEventThrottle: 16,
|
|
183
|
+
onLayout: ({
|
|
184
|
+
nativeEvent: {
|
|
185
|
+
layout
|
|
186
|
+
}
|
|
187
|
+
}) => {
|
|
188
|
+
measurements.current.viewport = layout.height;
|
|
189
|
+
reconcileLayout(false);
|
|
190
|
+
},
|
|
191
|
+
onContentSizeChange: (_width, height) => {
|
|
192
|
+
measurements.current.content = height;
|
|
193
|
+
measurements.current.hasContentSize = true;
|
|
194
|
+
reconcileLayout(true);
|
|
195
|
+
},
|
|
196
|
+
onScroll: onScroll,
|
|
197
|
+
onScrollBeginDrag: () => {
|
|
198
|
+
userScrolling.current = true;
|
|
199
|
+
},
|
|
200
|
+
onMomentumScrollBegin: () => {
|
|
201
|
+
userScrolling.current = true;
|
|
202
|
+
},
|
|
203
|
+
onScrollEndDrag: event => {
|
|
204
|
+
onScroll(event);
|
|
205
|
+
if (!event.nativeEvent.velocity?.y) {
|
|
206
|
+
userScrolling.current = false;
|
|
207
|
+
publishPosition();
|
|
208
|
+
}
|
|
209
|
+
},
|
|
210
|
+
onMomentumScrollEnd: event => {
|
|
211
|
+
onScroll(event);
|
|
212
|
+
userScrolling.current = false;
|
|
213
|
+
publishPosition();
|
|
214
|
+
}
|
|
215
|
+
}), showScrollToEnd && items.length > 0 && !atEnd ? /*#__PURE__*/_jsx(Button, {
|
|
216
|
+
label: "\u56DE\u5230\u6700\u65B0\u6D88\u606F",
|
|
217
|
+
variant: "secondary",
|
|
218
|
+
style: styles.returnToEnd,
|
|
219
|
+
onPress: () => scrollToEnd()
|
|
220
|
+
}) : null]
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=MessageList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useImperativeHandle","useLayoutEffect","useRef","useState","FlatList","View","Button","DEFAULT_END_THRESHOLD","styles","useWebPrependAnchor","jsxs","_jsxs","jsx","_jsx","MessageList","items","keyExtractor","renderItem","extraData","header","footer","empty","renderSeparator","initialPosition","followOutput","endThreshold","showScrollToEnd","onAtEndChange","hasEarlier","loadingEarlier","onRequestEarlier","keyboardDismissMode","style","testID","ref","listRef","measurements","viewport","content","offset","hasContentSize","initial","initialized","previousKeys","prependPending","pendingScroll","undefined","userScrolling","atEndRef","atEnd","setAtEnd","threshold","Number","isFinite","Math","max","keys","map","getRowNativeID","preservingPrependRef","cancelPrependPreservation","itemsIdentity","previous","current","added","length","onlyPrepended","every","key","index","changed","some","ready","publishPosition","next","scrollToEnd","options","request","animated","scrollToOffset","reconcileLayout","contentChanged","prepended","shouldFollow","onScroll","event","contentOffset","contentSize","layoutMeasurement","nativeEvent","movedUp","y","resizingAtEnd","height","history","hasHeader","Boolean","root","children","list","data","item","nativeID","ListHeaderComponent","label","variant","loading","onPress","ListFooterComponent","ListEmptyComponent","maintainVisibleContentPosition","minIndexForVisible","keyboardShouldPersistTaps","scrollEventThrottle","onLayout","layout","onContentSizeChange","_width","onScrollBeginDrag","onMomentumScrollBegin","onScrollEndDrag","velocity","onMomentumScrollEnd","returnToEnd"],"sourceRoot":"../../../../src","sources":["components/MessageList/MessageList.tsx"],"mappings":"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","ignoreList":[]}
|