@droppii-org/chat-mobile 0.2.16 → 0.2.18

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.
Files changed (127) hide show
  1. package/lib/module/assets/images/icon_excel.png +0 -0
  2. package/lib/module/assets/images/icon_img.png +0 -0
  3. package/lib/module/assets/images/icon_pdf.png +0 -0
  4. package/lib/module/assets/images/icon_txt.png +0 -0
  5. package/lib/module/assets/images/icon_word.png +0 -0
  6. package/lib/module/assets/images/index.js +5 -0
  7. package/lib/module/assets/images/index.js.map +1 -1
  8. package/lib/module/components/AttachmentPreview/FilePreview.js +107 -0
  9. package/lib/module/components/AttachmentPreview/FilePreview.js.map +1 -0
  10. package/lib/module/components/AttachmentPreview/MediaPreview.js +212 -0
  11. package/lib/module/components/AttachmentPreview/MediaPreview.js.map +1 -0
  12. package/lib/module/components/AttachmentPreview/index.js +49 -0
  13. package/lib/module/components/AttachmentPreview/index.js.map +1 -0
  14. package/lib/module/components/MergedImageGrid.js +28 -18
  15. package/lib/module/components/MergedImageGrid.js.map +1 -1
  16. package/lib/module/components/messages/fileMessage/index.js +122 -12
  17. package/lib/module/components/messages/fileMessage/index.js.map +1 -1
  18. package/lib/module/components/messages/mergedMessage/index.js +4 -7
  19. package/lib/module/components/messages/mergedMessage/index.js.map +1 -1
  20. package/lib/module/hooks/useFileAttachment.js +116 -0
  21. package/lib/module/hooks/useFileAttachment.js.map +1 -0
  22. package/lib/module/hooks/useFileDownload.js +175 -0
  23. package/lib/module/hooks/useFileDownload.js.map +1 -0
  24. package/lib/module/hooks/useImageAttachment.js +16 -8
  25. package/lib/module/hooks/useImageAttachment.js.map +1 -1
  26. package/lib/module/hooks/useVideoAttachment.js +1 -1
  27. package/lib/module/index.js +1 -1
  28. package/lib/module/index.js.map +1 -1
  29. package/lib/module/screens/MediaView/VideoPlayer.js +1 -0
  30. package/lib/module/screens/MediaView/VideoPlayer.js.map +1 -1
  31. package/lib/module/screens/MediaView/index.js +7 -9
  32. package/lib/module/screens/MediaView/index.js.map +1 -1
  33. package/lib/module/screens/chat-detail/ChatComposer.js +44 -36
  34. package/lib/module/screens/chat-detail/ChatComposer.js.map +1 -1
  35. package/lib/module/screens/chat-detail/ChatListLegend.js +11 -2
  36. package/lib/module/screens/chat-detail/ChatListLegend.js.map +1 -1
  37. package/lib/module/screens/chat-detail/hooks/useAttachmentMapping.js +51 -0
  38. package/lib/module/screens/chat-detail/hooks/useAttachmentMapping.js.map +1 -0
  39. package/lib/module/screens/chat-detail/hooks/useAttachmentSendHandler.js +39 -13
  40. package/lib/module/screens/chat-detail/hooks/useAttachmentSendHandler.js.map +1 -1
  41. package/lib/module/services/attachmentHandlers/fileAttachmentHandler.js +6 -6
  42. package/lib/module/services/attachmentHandlers/fileAttachmentHandler.js.map +1 -1
  43. package/lib/module/services/attachmentHandlers/index.js +1 -1
  44. package/lib/module/services/attachmentHandlers/index.js.map +1 -1
  45. package/lib/module/services/attachmentHandlers/videoAttachmentHandler.js +1 -1
  46. package/lib/module/translation/resources/i18n.js +10 -0
  47. package/lib/module/translation/resources/i18n.js.map +1 -1
  48. package/lib/module/utils/device.js +32 -0
  49. package/lib/module/utils/device.js.map +1 -1
  50. package/lib/module/utils/imageUtils.js +44 -28
  51. package/lib/module/utils/imageUtils.js.map +1 -1
  52. package/lib/module/utils/videoThumbnail.js +76 -3
  53. package/lib/module/utils/videoThumbnail.js.map +1 -1
  54. package/lib/typescript/src/assets/images/index.d.ts +5 -0
  55. package/lib/typescript/src/assets/images/index.d.ts.map +1 -1
  56. package/lib/typescript/src/components/AttachmentPreview/FilePreview.d.ts +6 -0
  57. package/lib/typescript/src/components/AttachmentPreview/FilePreview.d.ts.map +1 -0
  58. package/lib/typescript/src/components/AttachmentPreview/MediaPreview.d.ts +9 -0
  59. package/lib/typescript/src/components/AttachmentPreview/MediaPreview.d.ts.map +1 -0
  60. package/lib/typescript/src/components/AttachmentPreview/index.d.ts +9 -0
  61. package/lib/typescript/src/components/AttachmentPreview/index.d.ts.map +1 -0
  62. package/lib/typescript/src/components/MergedImageGrid.d.ts +2 -2
  63. package/lib/typescript/src/components/MergedImageGrid.d.ts.map +1 -1
  64. package/lib/typescript/src/components/messages/fileMessage/index.d.ts.map +1 -1
  65. package/lib/typescript/src/components/messages/mergedMessage/index.d.ts.map +1 -1
  66. package/lib/typescript/src/hooks/useFileAttachment.d.ts +20 -0
  67. package/lib/typescript/src/hooks/useFileAttachment.d.ts.map +1 -0
  68. package/lib/typescript/src/hooks/useFileDownload.d.ts +15 -0
  69. package/lib/typescript/src/hooks/useFileDownload.d.ts.map +1 -0
  70. package/lib/typescript/src/hooks/useImageAttachment.d.ts +1 -2
  71. package/lib/typescript/src/hooks/useImageAttachment.d.ts.map +1 -1
  72. package/lib/typescript/src/screens/MediaView/VideoPlayer.d.ts.map +1 -1
  73. package/lib/typescript/src/screens/MediaView/index.d.ts.map +1 -1
  74. package/lib/typescript/src/screens/chat-detail/ChatComposer.d.ts.map +1 -1
  75. package/lib/typescript/src/screens/chat-detail/ChatListLegend.d.ts.map +1 -1
  76. package/lib/typescript/src/screens/chat-detail/hooks/useAttachmentMapping.d.ts +10 -0
  77. package/lib/typescript/src/screens/chat-detail/hooks/useAttachmentMapping.d.ts.map +1 -0
  78. package/lib/typescript/src/screens/chat-detail/hooks/useAttachmentSendHandler.d.ts +4 -1
  79. package/lib/typescript/src/screens/chat-detail/hooks/useAttachmentSendHandler.d.ts.map +1 -1
  80. package/lib/typescript/src/services/attachmentHandlers/fileAttachmentHandler.d.ts +2 -2
  81. package/lib/typescript/src/services/attachmentHandlers/fileAttachmentHandler.d.ts.map +1 -1
  82. package/lib/typescript/src/services/attachmentHandlers/index.d.ts +1 -1
  83. package/lib/typescript/src/services/attachmentHandlers/index.d.ts.map +1 -1
  84. package/lib/typescript/src/translation/resources/i18n.d.ts.map +1 -1
  85. package/lib/typescript/src/types/attachment.d.ts +22 -1
  86. package/lib/typescript/src/types/attachment.d.ts.map +1 -1
  87. package/lib/typescript/src/utils/device.d.ts +7 -0
  88. package/lib/typescript/src/utils/device.d.ts.map +1 -1
  89. package/lib/typescript/src/utils/imageUtils.d.ts +1 -0
  90. package/lib/typescript/src/utils/imageUtils.d.ts.map +1 -1
  91. package/lib/typescript/src/utils/videoThumbnail.d.ts.map +1 -1
  92. package/package.json +5 -1
  93. package/src/assets/images/icon_excel.png +0 -0
  94. package/src/assets/images/icon_img.png +0 -0
  95. package/src/assets/images/icon_pdf.png +0 -0
  96. package/src/assets/images/icon_txt.png +0 -0
  97. package/src/assets/images/icon_word.png +0 -0
  98. package/src/assets/images/index.ts +5 -0
  99. package/src/components/AttachmentPreview/FilePreview.tsx +137 -0
  100. package/src/components/AttachmentPreview/MediaPreview.tsx +238 -0
  101. package/src/components/AttachmentPreview/index.tsx +68 -0
  102. package/src/components/MergedImageGrid.tsx +36 -23
  103. package/src/components/messages/fileMessage/index.tsx +156 -13
  104. package/src/components/messages/mergedMessage/index.tsx +5 -7
  105. package/src/hooks/useFileAttachment.ts +163 -0
  106. package/src/hooks/useFileDownload.ts +200 -0
  107. package/src/hooks/useImageAttachment.ts +23 -13
  108. package/src/hooks/useVideoAttachment.ts +1 -1
  109. package/src/screens/MediaView/VideoPlayer.tsx +1 -0
  110. package/src/screens/MediaView/index.tsx +7 -6
  111. package/src/screens/chat-detail/ChatComposer.tsx +61 -30
  112. package/src/screens/chat-detail/ChatListLegend.tsx +9 -2
  113. package/src/screens/chat-detail/hooks/useAttachmentMapping.ts +58 -0
  114. package/src/screens/chat-detail/hooks/useAttachmentSendHandler.ts +50 -11
  115. package/src/services/attachmentHandlers/fileAttachmentHandler.ts +8 -7
  116. package/src/services/attachmentHandlers/index.ts +4 -1
  117. package/src/services/attachmentHandlers/videoAttachmentHandler.ts +1 -1
  118. package/src/translation/resources/i18n.ts +10 -0
  119. package/src/types/attachment.ts +23 -1
  120. package/src/utils/device.ts +58 -0
  121. package/src/utils/imageUtils.ts +50 -28
  122. package/src/utils/videoThumbnail.ts +77 -3
  123. package/lib/module/components/AttachmentPreview.js +0 -250
  124. package/lib/module/components/AttachmentPreview.js.map +0 -1
  125. package/lib/typescript/src/components/AttachmentPreview.d.ts +0 -28
  126. package/lib/typescript/src/components/AttachmentPreview.d.ts.map +0 -1
  127. package/src/components/AttachmentPreview.tsx +0 -304
@@ -2,6 +2,11 @@
2
2
 
3
3
  const Images = {
4
4
  ICON_BOT: require('./icon_bot.png'),
5
+ ICON_EXCEL: require('./icon_excel.png'),
6
+ ICON_IMG: require('./icon_img.png'),
7
+ ICON_PDF: require('./icon_pdf.png'),
8
+ ICON_TXT: require('./icon_txt.png'),
9
+ ICON_WORD: require('./icon_word.png'),
5
10
  TAG_BOT: require('./tag_bot.png'),
6
11
  TAG_MALL: require('./tag_mall.png'),
7
12
  ICON_DROPPII: require('./icon_droppii.png')
@@ -1 +1 @@
1
- {"version":3,"names":["Images","ICON_BOT","require","TAG_BOT","TAG_MALL","ICON_DROPPII"],"sourceRoot":"../../../../src","sources":["assets/images/index.ts"],"mappings":";;AAAA,MAAMA,MAAM,GAAG;EACbC,QAAQ,EAAEC,OAAO,CAAC,gBAAgB,CAAC;EACnCC,OAAO,EAAED,OAAO,CAAC,eAAe,CAAC;EACjCE,QAAQ,EAAEF,OAAO,CAAC,gBAAgB,CAAC;EACnCG,YAAY,EAAEH,OAAO,CAAC,oBAAoB;AAC5C,CAAC;AAED,eAAeF,MAAM","ignoreList":[]}
1
+ {"version":3,"names":["Images","ICON_BOT","require","ICON_EXCEL","ICON_IMG","ICON_PDF","ICON_TXT","ICON_WORD","TAG_BOT","TAG_MALL","ICON_DROPPII"],"sourceRoot":"../../../../src","sources":["assets/images/index.ts"],"mappings":";;AAAA,MAAMA,MAAM,GAAG;EACbC,QAAQ,EAAEC,OAAO,CAAC,gBAAgB,CAAC;EACnCC,UAAU,EAAED,OAAO,CAAC,kBAAkB,CAAC;EACvCE,QAAQ,EAAEF,OAAO,CAAC,gBAAgB,CAAC;EACnCG,QAAQ,EAAEH,OAAO,CAAC,gBAAgB,CAAC;EACnCI,QAAQ,EAAEJ,OAAO,CAAC,gBAAgB,CAAC;EACnCK,SAAS,EAAEL,OAAO,CAAC,iBAAiB,CAAC;EACrCM,OAAO,EAAEN,OAAO,CAAC,eAAe,CAAC;EACjCO,QAAQ,EAAEP,OAAO,CAAC,gBAAgB,CAAC;EACnCQ,YAAY,EAAER,OAAO,CAAC,oBAAoB;AAC5C,CAAC;AAED,eAAeF,MAAM","ignoreList":[]}
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+
3
+ import { memo, useCallback } from 'react';
4
+ import { ActivityIndicator, StyleSheet } from 'react-native';
5
+ import { KContainer, KImage, KLabel, KColors } from '@droppii/libs';
6
+ import FileViewer from 'react-native-file-viewer';
7
+ import UIUtils from "../../utils/ui.js";
8
+ import { trans } from "../../translation/index.js";
9
+ import { formatFileSize, getFileIcon } from "../../utils/imageUtils.js";
10
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
+ export const FilePreview = /*#__PURE__*/memo(({
12
+ file,
13
+ onRemove
14
+ }) => {
15
+ const handlePress = useCallback(async () => {
16
+ if (file.isUploading || file.error) return;
17
+ try {
18
+ const path = file.metadata.uri?.startsWith('file://') ? file.metadata.uri.slice(7) : file.metadata.uri;
19
+ await FileViewer.open(path ?? '', {
20
+ showOpenWithDialog: true,
21
+ showAppsSuggestions: true
22
+ });
23
+ } catch {
24
+ UIUtils.toast.open({
25
+ title: trans('chat:file_preview_unsupported'),
26
+ theme: 'warning'
27
+ });
28
+ }
29
+ }, [file]);
30
+ const handleRemove = useCallback(() => {
31
+ onRemove(file.metadata.id ?? '');
32
+ }, [file.metadata?.id, onRemove]);
33
+ const iconSource = getFileIcon(file.metadata.mimeType);
34
+ const hasError = !!file.error;
35
+ return /*#__PURE__*/_jsxs(KContainer.Touchable, {
36
+ row: true,
37
+ alignItems: true,
38
+ width: 160,
39
+ onPress: handlePress,
40
+ br: "3x",
41
+ background: !hasError ? KColors.hexToRgba(KColors.palette.gray.w400, 0.1) : KColors.hexToRgba(KColors.danger.light, 0.2),
42
+ paddingL: '0.5rem',
43
+ paddingR: '1rem',
44
+ paddingV: '0.25rem',
45
+ children: [/*#__PURE__*/_jsx(KContainer.VisibleView, {
46
+ visible: file.isUploading,
47
+ children: /*#__PURE__*/_jsx(ActivityIndicator, {
48
+ size: "small",
49
+ color: KColors.palette.primary.w400,
50
+ style: styles.loader
51
+ })
52
+ }), /*#__PURE__*/_jsx(KContainer.VisibleView, {
53
+ visible: !file.isUploading,
54
+ children: /*#__PURE__*/_jsx(KImage.Base, {
55
+ uri: iconSource,
56
+ style: styles.icon,
57
+ resizeMode: "contain"
58
+ })
59
+ }), /*#__PURE__*/_jsxs(KContainer.View, {
60
+ flex: true,
61
+ children: [/*#__PURE__*/_jsx(KLabel.Text, {
62
+ typo: "TextSmMedium",
63
+ color: KColors.gray.dark,
64
+ numberOfLines: 1,
65
+ ellipsizeMode: "middle",
66
+ children: file.metadata.filename
67
+ }), /*#__PURE__*/_jsx(KLabel.Text, {
68
+ typo: "TextXsNormal",
69
+ color: KColors.palette.gray.w500,
70
+ numberOfLines: 1,
71
+ children: hasError ? file.error : file.isUploading ? `${file.uploadProgress}%` : formatFileSize(file.metadata.size ?? 0)
72
+ })]
73
+ }), /*#__PURE__*/_jsx(KContainer.Touchable, {
74
+ onPress: handleRemove,
75
+ center: true,
76
+ width: 20,
77
+ height: 20,
78
+ br: 'round',
79
+ background: KColors.gray.dark,
80
+ hitSlop: 8,
81
+ style: styles.removeBtn,
82
+ children: /*#__PURE__*/_jsx(KImage.VectorIcons, {
83
+ name: "close",
84
+ provider: "MaterialCommunityIcons",
85
+ size: 18,
86
+ color: KColors.white
87
+ })
88
+ })]
89
+ });
90
+ });
91
+ FilePreview.displayName = 'FilePreview';
92
+ const styles = StyleSheet.create({
93
+ icon: {
94
+ width: 20,
95
+ height: 20,
96
+ marginRight: 7
97
+ },
98
+ loader: {
99
+ marginRight: 8
100
+ },
101
+ removeBtn: {
102
+ position: 'absolute',
103
+ right: -4,
104
+ top: -4
105
+ }
106
+ });
107
+ //# sourceMappingURL=FilePreview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","useCallback","ActivityIndicator","StyleSheet","KContainer","KImage","KLabel","KColors","FileViewer","UIUtils","trans","formatFileSize","getFileIcon","jsx","_jsx","jsxs","_jsxs","FilePreview","file","onRemove","handlePress","isUploading","error","path","metadata","uri","startsWith","slice","open","showOpenWithDialog","showAppsSuggestions","toast","title","theme","handleRemove","id","iconSource","mimeType","hasError","Touchable","row","alignItems","width","onPress","br","background","hexToRgba","palette","gray","w400","danger","light","paddingL","paddingR","paddingV","children","VisibleView","visible","size","color","primary","style","styles","loader","Base","icon","resizeMode","View","flex","Text","typo","dark","numberOfLines","ellipsizeMode","filename","w500","uploadProgress","center","height","hitSlop","removeBtn","VectorIcons","name","provider","white","displayName","create","marginRight","position","right","top"],"sourceRoot":"../../../../src","sources":["components/AttachmentPreview/FilePreview.tsx"],"mappings":";;AAAA,SAASA,IAAI,EAAEC,WAAW,QAAQ,OAAO;AACzC,SAASC,iBAAiB,EAAEC,UAAU,QAAQ,cAAc;AAC5D,SAASC,UAAU,EAAEC,MAAM,EAAEC,MAAM,EAAEC,OAAO,QAAQ,eAAe;AACnE,OAAOC,UAAU,MAAM,0BAA0B;AACjD,OAAOC,OAAO,MAAM,mBAAgB;AACpC,SAASC,KAAK,QAAQ,4BAAmB;AACzC,SAASC,cAAc,EAAEC,WAAW,QAAQ,2BAAwB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAGrE,OAAO,MAAMC,WAAW,gBAAGjB,IAAI,CAC7B,CAAC;EACCkB,IAAI;EACJC;AAIF,CAAC,KAAK;EACJ,MAAMC,WAAW,GAAGnB,WAAW,CAAC,YAAY;IAC1C,IAAIiB,IAAI,CAACG,WAAW,IAAIH,IAAI,CAACI,KAAK,EAAE;IACpC,IAAI;MACF,MAAMC,IAAI,GAAGL,IAAI,CAACM,QAAQ,CAACC,GAAG,EAAEC,UAAU,CAAC,SAAS,CAAC,GACjDR,IAAI,CAACM,QAAQ,CAACC,GAAG,CAACE,KAAK,CAAC,CAAC,CAAC,GAC1BT,IAAI,CAACM,QAAQ,CAACC,GAAG;MACrB,MAAMjB,UAAU,CAACoB,IAAI,CAACL,IAAI,IAAI,EAAE,EAAE;QAChCM,kBAAkB,EAAE,IAAI;QACxBC,mBAAmB,EAAE;MACvB,CAAC,CAAC;IACJ,CAAC,CAAC,MAAM;MACNrB,OAAO,CAACsB,KAAK,CAACH,IAAI,CAAC;QACjBI,KAAK,EAAEtB,KAAK,CAAC,+BAA+B,CAAC;QAC7CuB,KAAK,EAAE;MACT,CAAC,CAAC;IACJ;EACF,CAAC,EAAE,CAACf,IAAI,CAAC,CAAC;EAEV,MAAMgB,YAAY,GAAGjC,WAAW,CAAC,MAAM;IACrCkB,QAAQ,CAACD,IAAI,CAACM,QAAQ,CAACW,EAAE,IAAI,EAAE,CAAC;EAClC,CAAC,EAAE,CAACjB,IAAI,CAACM,QAAQ,EAAEW,EAAE,EAAEhB,QAAQ,CAAC,CAAC;EAEjC,MAAMiB,UAAU,GAAGxB,WAAW,CAACM,IAAI,CAACM,QAAQ,CAACa,QAAQ,CAAC;EACtD,MAAMC,QAAQ,GAAG,CAAC,CAACpB,IAAI,CAACI,KAAK;EAE7B,oBACEN,KAAA,CAACZ,UAAU,CAACmC,SAAS;IACnBC,GAAG;IACHC,UAAU;IACVC,KAAK,EAAE,GAAI;IACXC,OAAO,EAAEvB,WAAY;IACrBwB,EAAE,EAAC,IAAI;IACPC,UAAU,EACR,CAACP,QAAQ,GACL/B,OAAO,CAACuC,SAAS,CAACvC,OAAO,CAACwC,OAAO,CAACC,IAAI,CAACC,IAAI,EAAE,GAAG,CAAC,GACjD1C,OAAO,CAACuC,SAAS,CAACvC,OAAO,CAAC2C,MAAM,CAACC,KAAK,EAAE,GAAG,CAChD;IACDC,QAAQ,EAAE,QAAS;IACnBC,QAAQ,EAAE,MAAO;IACjBC,QAAQ,EAAE,SAAU;IAAAC,QAAA,gBAGpBzC,IAAA,CAACV,UAAU,CAACoD,WAAW;MAACC,OAAO,EAAEvC,IAAI,CAACG,WAAY;MAAAkC,QAAA,eAChDzC,IAAA,CAACZ,iBAAiB;QAChBwD,IAAI,EAAC,OAAO;QACZC,KAAK,EAAEpD,OAAO,CAACwC,OAAO,CAACa,OAAO,CAACX,IAAK;QACpCY,KAAK,EAAEC,MAAM,CAACC;MAAO,CACtB;IAAC,CACoB,CAAC,eACzBjD,IAAA,CAACV,UAAU,CAACoD,WAAW;MAACC,OAAO,EAAE,CAACvC,IAAI,CAACG,WAAY;MAAAkC,QAAA,eACjDzC,IAAA,CAACT,MAAM,CAAC2D,IAAI;QACVvC,GAAG,EAAEW,UAAW;QAChByB,KAAK,EAAEC,MAAM,CAACG,IAAK;QACnBC,UAAU,EAAC;MAAS,CACrB;IAAC,CACoB,CAAC,eAGzBlD,KAAA,CAACZ,UAAU,CAAC+D,IAAI;MAACC,IAAI;MAAAb,QAAA,gBACnBzC,IAAA,CAACR,MAAM,CAAC+D,IAAI;QACVC,IAAI,EAAC,cAAc;QACnBX,KAAK,EAAEpD,OAAO,CAACyC,IAAI,CAACuB,IAAK;QACzBC,aAAa,EAAE,CAAE;QACjBC,aAAa,EAAC,QAAQ;QAAAlB,QAAA,EAErBrC,IAAI,CAACM,QAAQ,CAACkD;MAAQ,CACZ,CAAC,eACd5D,IAAA,CAACR,MAAM,CAAC+D,IAAI;QACVC,IAAI,EAAC,cAAc;QACnBX,KAAK,EAAEpD,OAAO,CAACwC,OAAO,CAACC,IAAI,CAAC2B,IAAK;QACjCH,aAAa,EAAE,CAAE;QAAAjB,QAAA,EAEhBjB,QAAQ,GACLpB,IAAI,CAACI,KAAK,GACVJ,IAAI,CAACG,WAAW,GACd,GAAGH,IAAI,CAAC0D,cAAc,GAAG,GACzBjE,cAAc,CAACO,IAAI,CAACM,QAAQ,CAACkC,IAAI,IAAI,CAAC;MAAC,CAClC,CAAC;IAAA,CACC,CAAC,eAGlB5C,IAAA,CAACV,UAAU,CAACmC,SAAS;MACnBI,OAAO,EAAET,YAAa;MACtB2C,MAAM;MACNnC,KAAK,EAAE,EAAG;MACVoC,MAAM,EAAE,EAAG;MACXlC,EAAE,EAAE,OAAQ;MACZC,UAAU,EAAEtC,OAAO,CAACyC,IAAI,CAACuB,IAAK;MAC9BQ,OAAO,EAAE,CAAE;MACXlB,KAAK,EAAEC,MAAM,CAACkB,SAAU;MAAAzB,QAAA,eAExBzC,IAAA,CAACT,MAAM,CAAC4E,WAAW;QACjBC,IAAI,EAAC,OAAO;QACZC,QAAQ,EAAC,wBAAwB;QACjCzB,IAAI,EAAE,EAAG;QACTC,KAAK,EAAEpD,OAAO,CAAC6E;MAAM,CACtB;IAAC,CACkB,CAAC;EAAA,CACH,CAAC;AAE3B,CACF,CAAC;AAEDnE,WAAW,CAACoE,WAAW,GAAG,aAAa;AAEvC,MAAMvB,MAAM,GAAG3D,UAAU,CAACmF,MAAM,CAAC;EAC/BrB,IAAI,EAAE;IACJvB,KAAK,EAAE,EAAE;IACToC,MAAM,EAAE,EAAE;IACVS,WAAW,EAAE;EACf,CAAC;EACDxB,MAAM,EAAE;IACNwB,WAAW,EAAE;EACf,CAAC;EACDP,SAAS,EAAE;IACTQ,QAAQ,EAAE,UAAU;IACpBC,KAAK,EAAE,CAAC,CAAC;IACTC,GAAG,EAAE,CAAC;EACR;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,212 @@
1
+ "use strict";
2
+
3
+ import { memo } from 'react';
4
+ import { KColors, KContainer, KImage, KLabel } from '@droppii/libs';
5
+ import { StyleSheet } from 'react-native';
6
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
+ const formatDuration = seconds => {
8
+ const totalSecs = Math.floor(seconds);
9
+ const mins = Math.floor(totalSecs / 60);
10
+ const secs = totalSecs % 60;
11
+ return `${mins.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}`;
12
+ };
13
+ const getAttachmentIcon = type => {
14
+ switch (type) {
15
+ case 'image':
16
+ return 'image';
17
+ case 'video':
18
+ return 'play-circle';
19
+ case 'audio':
20
+ return 'music';
21
+ case 'document':
22
+ return 'file-document';
23
+ case 'file':
24
+ default:
25
+ return 'file';
26
+ }
27
+ };
28
+ export const MediaPreview = /*#__PURE__*/memo(({
29
+ item,
30
+ index,
31
+ onRemove
32
+ }) => {
33
+ const {
34
+ type,
35
+ metadata,
36
+ uploadProgress,
37
+ error,
38
+ isUploading,
39
+ thumbnailUrl
40
+ } = item;
41
+ const isImage = type === 'image';
42
+ const isVideo = type === 'video';
43
+ const hasPreview = isImage || isVideo;
44
+ return /*#__PURE__*/_jsxs(KContainer.View, {
45
+ children: [/*#__PURE__*/_jsxs(KContainer.View, {
46
+ style: styles.thumbnail,
47
+ center: true,
48
+ children: [isVideo && thumbnailUrl && /*#__PURE__*/_jsx(KImage.Base, {
49
+ uri: thumbnailUrl,
50
+ width: 48,
51
+ height: 48,
52
+ resizeMode: "cover"
53
+ }), isVideo && !thumbnailUrl && /*#__PURE__*/_jsx(KContainer.View, {
54
+ style: [styles.videoBg, styles.videoThumbnail]
55
+ }), isImage && /*#__PURE__*/_jsx(KImage.Base, {
56
+ uri: `file://${metadata.path}`,
57
+ width: 48,
58
+ height: 48
59
+ }), !hasPreview && /*#__PURE__*/_jsx(KContainer.View, {
60
+ style: styles.iconOverlay,
61
+ center: true,
62
+ background: KColors.palette.gray.w100,
63
+ children: /*#__PURE__*/_jsx(KImage.VectorIcons, {
64
+ name: getAttachmentIcon(type),
65
+ provider: "MaterialCommunityIcons",
66
+ size: 24,
67
+ color: KColors.palette.primary.w400
68
+ })
69
+ }), isVideo && !!metadata.duration && /*#__PURE__*/_jsx(KContainer.View, {
70
+ style: styles.durationBadge,
71
+ center: true,
72
+ children: /*#__PURE__*/_jsx(KLabel.Text, {
73
+ typo: "TextXsNormal",
74
+ color: KColors.white,
75
+ style: styles.durationText,
76
+ children: formatDuration(metadata.duration / 1000)
77
+ })
78
+ }), !hasPreview && /*#__PURE__*/_jsx(KContainer.View, {
79
+ style: styles.typeIcon,
80
+ center: true,
81
+ children: /*#__PURE__*/_jsx(KImage.VectorIcons, {
82
+ name: getAttachmentIcon(type),
83
+ provider: "MaterialCommunityIcons",
84
+ size: 14,
85
+ color: KColors.white
86
+ })
87
+ }), error && /*#__PURE__*/_jsx(KContainer.View, {
88
+ style: styles.errorOverlay,
89
+ center: true,
90
+ children: /*#__PURE__*/_jsx(KImage.VectorIcons, {
91
+ name: "close-circle",
92
+ provider: "MaterialCommunityIcons",
93
+ size: 28,
94
+ color: KColors.white
95
+ })
96
+ }), isUploading && /*#__PURE__*/_jsx(KContainer.View, {
97
+ style: styles.progressOverlay,
98
+ center: true,
99
+ children: /*#__PURE__*/_jsxs(KLabel.Text, {
100
+ typo: "TextSmNormal",
101
+ color: KColors.white,
102
+ children: [uploadProgress, "%"]
103
+ })
104
+ })]
105
+ }), /*#__PURE__*/_jsx(KContainer.Touchable, {
106
+ style: styles.removeButton,
107
+ center: true,
108
+ br: "round",
109
+ background: KColors.black,
110
+ onPress: () => onRemove(type, index),
111
+ disabled: isUploading,
112
+ hitSlop: 10,
113
+ children: /*#__PURE__*/_jsx(KImage.VectorIcons, {
114
+ name: "close",
115
+ provider: "MaterialCommunityIcons",
116
+ size: 18,
117
+ color: KColors.white
118
+ })
119
+ })]
120
+ });
121
+ });
122
+ MediaPreview.displayName = 'MediaPreview';
123
+ const styles = StyleSheet.create({
124
+ thumbnail: {
125
+ position: 'relative',
126
+ width: 48,
127
+ height: 48,
128
+ borderRadius: 4,
129
+ overflow: 'hidden',
130
+ backgroundColor: KColors.palette.gray.w50
131
+ },
132
+ durationBadge: {
133
+ position: 'absolute',
134
+ bottom: 4,
135
+ right: 4,
136
+ backgroundColor: 'rgba(0, 0, 0, 0.8)',
137
+ borderRadius: 3,
138
+ paddingVertical: 2,
139
+ paddingHorizontal: 4
140
+ },
141
+ durationText: {
142
+ fontSize: 11,
143
+ fontWeight: '600'
144
+ },
145
+ iconOverlay: {
146
+ width: 48,
147
+ height: 48,
148
+ borderRadius: 4
149
+ },
150
+ videoIcon: {
151
+ position: 'absolute',
152
+ top: 2,
153
+ right: 2,
154
+ backgroundColor: 'rgba(0, 0, 0, 0.6)',
155
+ borderRadius: 8,
156
+ width: 20,
157
+ height: 20
158
+ },
159
+ typeIcon: {
160
+ position: 'absolute',
161
+ bottom: 2,
162
+ right: 2,
163
+ backgroundColor: 'rgba(0, 0, 0, 0.7)',
164
+ borderRadius: 6,
165
+ width: 16,
166
+ height: 16
167
+ },
168
+ videoBg: {
169
+ width: 48,
170
+ height: 48,
171
+ borderRadius: 4
172
+ },
173
+ videoThumbnail: {
174
+ backgroundColor: KColors.black
175
+ },
176
+ progressOverlay: {
177
+ position: 'absolute',
178
+ top: 0,
179
+ left: 0,
180
+ right: 0,
181
+ bottom: 0,
182
+ backgroundColor: 'rgba(0, 0, 0, 0.6)'
183
+ },
184
+ errorOverlay: {
185
+ position: 'absolute',
186
+ top: 0,
187
+ left: 0,
188
+ right: 0,
189
+ bottom: 0,
190
+ backgroundColor: 'rgba(255, 59, 48, 0.8)'
191
+ },
192
+ removeButton: {
193
+ position: 'absolute',
194
+ right: -4,
195
+ top: -4,
196
+ width: 22,
197
+ height: 22,
198
+ shadowColor: '#000',
199
+ shadowOffset: {
200
+ width: 0,
201
+ height: 1
202
+ },
203
+ shadowOpacity: 0.2,
204
+ shadowRadius: 2,
205
+ elevation: 3
206
+ },
207
+ sendButton: {
208
+ width: 48,
209
+ height: 48
210
+ }
211
+ });
212
+ //# sourceMappingURL=MediaPreview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","KColors","KContainer","KImage","KLabel","StyleSheet","jsx","_jsx","jsxs","_jsxs","formatDuration","seconds","totalSecs","Math","floor","mins","secs","toString","padStart","getAttachmentIcon","type","MediaPreview","item","index","onRemove","metadata","uploadProgress","error","isUploading","thumbnailUrl","isImage","isVideo","hasPreview","View","children","style","styles","thumbnail","center","Base","uri","width","height","resizeMode","videoBg","videoThumbnail","path","iconOverlay","background","palette","gray","w100","VectorIcons","name","provider","size","color","primary","w400","duration","durationBadge","Text","typo","white","durationText","typeIcon","errorOverlay","progressOverlay","Touchable","removeButton","br","black","onPress","disabled","hitSlop","displayName","create","position","borderRadius","overflow","backgroundColor","w50","bottom","right","paddingVertical","paddingHorizontal","fontSize","fontWeight","videoIcon","top","left","shadowColor","shadowOffset","shadowOpacity","shadowRadius","elevation","sendButton"],"sourceRoot":"../../../../src","sources":["components/AttachmentPreview/MediaPreview.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ import { memo, useCallback } from 'react';
4
+ import { ScrollView, StyleSheet } from 'react-native';
5
+ import { MediaPreview } from "./MediaPreview.js";
6
+ import { FilePreview } from "./FilePreview.js";
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ export const AttachmentPreview = /*#__PURE__*/memo(({
9
+ visible,
10
+ attachments,
11
+ onRemove
12
+ }) => {
13
+ const onFileRemove = useCallback(id => {
14
+ onRemove('file', id);
15
+ }, [onRemove]);
16
+ if (!visible || !attachments?.length) {
17
+ return null;
18
+ }
19
+ return /*#__PURE__*/_jsx(ScrollView, {
20
+ horizontal: true,
21
+ showsHorizontalScrollIndicator: false,
22
+ scrollEventThrottle: 16,
23
+ contentContainerStyle: styles.scrollContent,
24
+ children: attachments?.map((item, index) => {
25
+ switch (item.type) {
26
+ case 'file':
27
+ return /*#__PURE__*/_jsx(FilePreview, {
28
+ file: item,
29
+ onRemove: onFileRemove
30
+ }, `${item.type}-${index}`);
31
+ default:
32
+ return /*#__PURE__*/_jsx(MediaPreview, {
33
+ index: index,
34
+ item: item,
35
+ onRemove: onRemove
36
+ }, `${item.type}-${index}`);
37
+ }
38
+ })
39
+ });
40
+ });
41
+ AttachmentPreview.displayName = 'AttachmentPreview';
42
+ const styles = StyleSheet.create({
43
+ scrollContent: {
44
+ padding: 8,
45
+ paddingTop: 12,
46
+ gap: 8
47
+ }
48
+ });
49
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","useCallback","ScrollView","StyleSheet","MediaPreview","FilePreview","jsx","_jsx","AttachmentPreview","visible","attachments","onRemove","onFileRemove","id","length","horizontal","showsHorizontalScrollIndicator","scrollEventThrottle","contentContainerStyle","styles","scrollContent","children","map","item","index","type","file","displayName","create","padding","paddingTop","gap"],"sourceRoot":"../../../../src","sources":["components/AttachmentPreview/index.tsx"],"mappings":";;AAAA,SAASA,IAAI,EAAEC,WAAW,QAAQ,OAAO;AACzC,SAASC,UAAU,EAAEC,UAAU,QAAQ,cAAc;AAErD,SAASC,YAAY,QAAQ,mBAAgB;AAC7C,SAASC,WAAW,QAAQ,kBAAe;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAQ5C,OAAO,MAAMC,iBAAiB,gBAAGR,IAAI,CACnC,CAAC;EAAES,OAAO;EAAEC,WAAW;EAAEC;AAAiC,CAAC,KAAK;EAC9D,MAAMC,YAAY,GAAGX,WAAW,CAC7BY,EAAU,IAAK;IACdF,QAAQ,CAAC,MAAM,EAAEE,EAAE,CAAC;EACtB,CAAC,EACD,CAACF,QAAQ,CACX,CAAC;EAED,IAAI,CAACF,OAAO,IAAI,CAACC,WAAW,EAAEI,MAAM,EAAE;IACpC,OAAO,IAAI;EACb;EAEA,oBACEP,IAAA,CAACL,UAAU;IACTa,UAAU;IACVC,8BAA8B,EAAE,KAAM;IACtCC,mBAAmB,EAAE,EAAG;IACxBC,qBAAqB,EAAEC,MAAM,CAACC,aAAc;IAAAC,QAAA,EAE3CX,WAAW,EAAEY,GAAG,CAAC,CAACC,IAAI,EAAEC,KAAK,KAAK;MACjC,QAAQD,IAAI,CAACE,IAAI;QACf,KAAK,MAAM;UACT,oBACElB,IAAA,CAACF,WAAW;YAEVqB,IAAI,EAAEH,IAAK;YACXZ,QAAQ,EAAEC;UAAa,GAFlB,GAAGW,IAAI,CAACE,IAAI,IAAID,KAAK,EAG3B,CAAC;QAGN;UACE,oBACEjB,IAAA,CAACH,YAAY;YAEXoB,KAAK,EAAEA,KAAM;YACbD,IAAI,EAAEA,IAAK;YACXZ,QAAQ,EAAEA;UAAS,GAHd,GAAGY,IAAI,CAACE,IAAI,IAAID,KAAK,EAI3B,CAAC;MAER;IACF,CAAC;EAAC,CACQ,CAAC;AAEjB,CACF,CAAC;AAEDhB,iBAAiB,CAACmB,WAAW,GAAG,mBAAmB;AAEnD,MAAMR,MAAM,GAAGhB,UAAU,CAACyB,MAAM,CAAC;EAC/BR,aAAa,EAAE;IACbS,OAAO,EAAE,CAAC;IACVC,UAAU,EAAE,EAAE;IACdC,GAAG,EAAE;EACP;AACF,CAAC,CAAC","ignoreList":[]}
@@ -2,17 +2,17 @@
2
2
 
3
3
  import { memo, useMemo, useState, useCallback } from 'react';
4
4
  import { StyleSheet, useWindowDimensions } from 'react-native';
5
- import { KContainer, KImage, KLabel, KColors } from '@droppii/libs';
5
+ import { KContainer, KImage, KLabel, KColors, KSpacingValue } from '@droppii/libs';
6
6
  import ChatImageDimens from "../utils/chatImageDimens.js";
7
7
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
8
  /**
9
9
  * Generic image grid for merged messages
10
- * Layout: 1 image (1x1), 2 images (1x2), 3 images (1x3), 4+ images (2x2)
11
- * Shows "+N more" overlay on last cell if images exceed limit
10
+ * Layout: always a single horizontal row (1xN), N capped at maxDisplay (default 3)
11
+ * Shows "+N more" overlay on last cell if images exceed limit (e.g. 4 images → 3 + "+1")
12
12
  */
13
13
  export const MergedImageGrid = /*#__PURE__*/memo(({
14
14
  images,
15
- maxDisplay = 4,
15
+ maxDisplay = 3,
16
16
  onMediaPress
17
17
  }) => {
18
18
  const windowWidth = useWindowDimensions().width;
@@ -75,20 +75,30 @@ export const MergedImageGrid = /*#__PURE__*/memo(({
75
75
  return null;
76
76
  }
77
77
 
78
- // Calculate columns based on image count
79
- let columns = 1;
80
- if (displayedImages.length === 2) {
81
- columns = 2; // 2 images: horizontal layout (1x2)
82
- } else if (displayedImages.length === 3) {
83
- columns = 3; // 3 images: horizontal layout (1x3)
84
- } else if (displayedImages.length >= 4) {
85
- columns = 2; // 4+ images: grid layout (2x2)
86
- }
87
-
88
- // Use calculated aspect ratio for single image, 100x100 for multiple images
89
- const cellSize = displayedImages.length === 1 && singleImageSize ? singleImageSize.width : 100;
90
- const cellHeight = displayedImages.length === 1 && singleImageSize ? singleImageSize.height : cellSize;
78
+ // Always lay out images in a single horizontal row (1xN)
79
+ const columns = displayedImages.length;
91
80
  const gap = 4;
81
+
82
+ // Mirror the parent layout chain so the row never exceeds its container:
83
+ // messageRow: width 100% with 0.75rem horizontal padding (both sides)
84
+ // bubble wrapper: maxWidth 80% of that
85
+ // bubble: another 0.75rem horizontal padding (both sides)
86
+ const rowPaddingH = KSpacingValue['0.75rem'] * 2;
87
+ const bubblePaddingH = KSpacingValue['0.75rem'] * 2;
88
+ const availableWidth = (windowWidth - rowPaddingH) * 0.8 - bubblePaddingH;
89
+
90
+ // Single image keeps its aspect-ratio size; multiple images share the row
91
+ // width so the whole row fits inside the bubble (cell capped at 100px).
92
+ let cellSize;
93
+ let cellHeight;
94
+ if (displayedImages.length === 1 && singleImageSize) {
95
+ cellSize = singleImageSize.width;
96
+ cellHeight = singleImageSize.height;
97
+ } else {
98
+ const fitted = Math.floor((availableWidth - gap * (columns - 1)) / columns);
99
+ cellSize = Math.min(100, fitted);
100
+ cellHeight = cellSize;
101
+ }
92
102
  const totalWidth = cellSize * columns + gap * (columns - 1);
93
103
  return /*#__PURE__*/_jsx(KContainer.View, {
94
104
  style: [styles.grid, {
@@ -137,7 +147,7 @@ MergedImageGrid.displayName = 'MergedImageGrid';
137
147
  const styles = StyleSheet.create({
138
148
  grid: {
139
149
  flexDirection: 'row',
140
- flexWrap: 'wrap',
150
+ flexWrap: 'nowrap',
141
151
  gap: 4,
142
152
  justifyContent: 'flex-start',
143
153
  alignItems: 'flex-start'
@@ -1 +1 @@
1
- {"version":3,"names":["memo","useMemo","useState","useCallback","StyleSheet","useWindowDimensions","KContainer","KImage","KLabel","KColors","ChatImageDimens","jsx","_jsx","jsxs","_jsxs","MergedImageGrid","images","maxDisplay","onMediaPress","windowWidth","width","loadingState","setLoadingState","displayedImages","slice","hiddenCount","Math","max","length","singleImageSize","image","pictureElem","imgWidth","bigPicture","imgHeight","height","maxWidth","floor","aspectRatio","finalWidth","finalHeight","maxHeight","round","mediaItems","map","imageUrl","snapshotPicture","url","sourcePicture","filter","item","Boolean","handleImageLoadEnd","index","prev","handleImagePress","initializeLoading","initial","forEach","_","columns","cellSize","cellHeight","gap","totalWidth","View","style","styles","grid","children","optimizedUrl","getOptimizedImageUrlWithDimensions","isLastCell","showHiddenCount","isImageLoading","Touchable","onPress","imageCell","Base","uri","onLoadEnd","skeleton","hiddenOverlay","center","Text","typo","color","white","displayName","create","flexDirection","flexWrap","justifyContent","alignItems","position","overflow","borderRadius","backgroundColor","top","left","right","bottom"],"sourceRoot":"../../../src","sources":["components/MergedImageGrid.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["memo","useMemo","useState","useCallback","StyleSheet","useWindowDimensions","KContainer","KImage","KLabel","KColors","KSpacingValue","ChatImageDimens","jsx","_jsx","jsxs","_jsxs","MergedImageGrid","images","maxDisplay","onMediaPress","windowWidth","width","loadingState","setLoadingState","displayedImages","slice","hiddenCount","Math","max","length","singleImageSize","image","pictureElem","imgWidth","bigPicture","imgHeight","height","maxWidth","floor","aspectRatio","finalWidth","finalHeight","maxHeight","round","mediaItems","map","imageUrl","snapshotPicture","url","sourcePicture","filter","item","Boolean","handleImageLoadEnd","index","prev","handleImagePress","initializeLoading","initial","forEach","_","columns","gap","rowPaddingH","bubblePaddingH","availableWidth","cellSize","cellHeight","fitted","min","totalWidth","View","style","styles","grid","children","optimizedUrl","getOptimizedImageUrlWithDimensions","isLastCell","showHiddenCount","isImageLoading","Touchable","onPress","imageCell","Base","uri","onLoadEnd","skeleton","hiddenOverlay","center","Text","typo","color","white","displayName","create","flexDirection","flexWrap","justifyContent","alignItems","position","overflow","borderRadius","backgroundColor","top","left","right","bottom"],"sourceRoot":"../../../src","sources":["components/MergedImageGrid.tsx"],"mappings":"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","ignoreList":[]}