@weavy/uikit-react 14.0.4 → 15.0.1

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 (360) hide show
  1. package/.vscode/settings.json +2 -0
  2. package/changelog.md +10 -0
  3. package/dist/cjs/client/WeavyClient.d.ts +1 -0
  4. package/dist/cjs/components/Attachment.d.ts +5 -5
  5. package/dist/cjs/components/Blob.d.ts +9 -0
  6. package/dist/cjs/components/Comment.d.ts +18 -0
  7. package/dist/cjs/components/CommentCount.d.ts +7 -0
  8. package/dist/cjs/components/CommentEdit.d.ts +16 -0
  9. package/dist/cjs/components/CommentPlaceholder.d.ts +8 -0
  10. package/dist/cjs/components/CommentTrashed.d.ts +15 -0
  11. package/dist/cjs/components/CommentView.d.ts +18 -0
  12. package/dist/cjs/components/Comments.d.ts +8 -0
  13. package/dist/cjs/components/ConversationListItem.d.ts +1 -1
  14. package/dist/cjs/components/Dropzone.d.ts +10 -0
  15. package/dist/cjs/components/Editor.d.ts +25 -0
  16. package/dist/cjs/components/Embed.d.ts +8 -0
  17. package/dist/cjs/components/FileItem.d.ts +41 -0
  18. package/dist/cjs/components/FileList.d.ts +11 -0
  19. package/dist/cjs/components/FileVersions.d.ts +9 -0
  20. package/dist/cjs/components/Files.d.ts +4 -0
  21. package/dist/cjs/components/Image.d.ts +3 -3
  22. package/dist/cjs/components/MeetingCard.d.ts +1 -1
  23. package/dist/cjs/components/Meetings.d.ts +2 -1
  24. package/dist/cjs/components/Poll.d.ts +8 -0
  25. package/dist/cjs/components/PollOption.d.ts +10 -0
  26. package/dist/cjs/components/Post.d.ts +21 -0
  27. package/dist/cjs/components/PostEdit.d.ts +17 -0
  28. package/dist/cjs/components/PostList.d.ts +6 -0
  29. package/dist/cjs/components/PostPlaceholder.d.ts +8 -0
  30. package/dist/cjs/components/PostTrashed.d.ts +14 -0
  31. package/dist/cjs/components/PostView.d.ts +21 -0
  32. package/dist/cjs/components/Posts.d.ts +4 -0
  33. package/dist/cjs/components/Preview.d.ts +1 -3
  34. package/dist/cjs/components/PreviewFiles.d.ts +10 -0
  35. package/dist/cjs/components/Reactions.d.ts +6 -2
  36. package/dist/cjs/components/SearchUsers.d.ts +2 -1
  37. package/dist/cjs/contexts/CloudFilesContext.d.ts +9 -0
  38. package/dist/cjs/hooks/useApps.d.ts +1 -0
  39. package/dist/cjs/hooks/useCloudFiles.d.ts +3 -0
  40. package/dist/cjs/hooks/useCommentList.d.ts +1 -0
  41. package/dist/cjs/hooks/useEmbeds.d.ts +5 -0
  42. package/dist/cjs/hooks/useFileList.d.ts +1 -0
  43. package/dist/cjs/hooks/useFileUploader.d.ts +8 -0
  44. package/dist/cjs/hooks/useFileVersions.d.ts +2 -0
  45. package/dist/cjs/hooks/useInfiniteScroll.d.ts +4 -0
  46. package/dist/cjs/hooks/useIsFirstRender.d.ts +2 -0
  47. package/dist/cjs/hooks/useMutateApps.d.ts +5 -0
  48. package/dist/cjs/hooks/useMutateComment.d.ts +10 -0
  49. package/dist/cjs/hooks/useMutateConversationName.d.ts +1 -1
  50. package/dist/cjs/hooks/useMutateDeleteReaction.d.ts +3 -1
  51. package/dist/cjs/hooks/useMutateEditComment.d.ts +10 -0
  52. package/dist/cjs/hooks/useMutateEditPost.d.ts +10 -0
  53. package/dist/cjs/hooks/useMutateExternalBlobs.d.ts +2 -2
  54. package/dist/cjs/hooks/useMutateFile.d.ts +26 -0
  55. package/dist/cjs/hooks/useMutateFileRename.d.ts +5 -0
  56. package/dist/cjs/hooks/useMutateFileSubscribe.d.ts +7 -0
  57. package/dist/cjs/hooks/useMutateFileTrash.d.ts +10 -0
  58. package/dist/cjs/hooks/useMutateFileVersion.d.ts +7 -0
  59. package/dist/cjs/hooks/useMutateFiles.d.ts +2 -0
  60. package/dist/cjs/hooks/useMutateLeaveConversation.d.ts +4 -0
  61. package/dist/cjs/hooks/useMutateMessage.d.ts +2 -2
  62. package/dist/cjs/hooks/useMutatePost.d.ts +10 -0
  63. package/dist/cjs/hooks/useMutateReaction.d.ts +3 -1
  64. package/dist/cjs/hooks/useMutateRead.d.ts +1 -1
  65. package/dist/cjs/hooks/useMutateReplaceReaction.d.ts +6 -0
  66. package/dist/cjs/hooks/useMutateRestoreComment.d.ts +5 -0
  67. package/dist/cjs/hooks/useMutateRestorePost.d.ts +4 -0
  68. package/dist/cjs/hooks/useMutateStarred.d.ts +4 -0
  69. package/dist/cjs/hooks/useMutateSubscribe.d.ts +4 -0
  70. package/dist/cjs/hooks/useMutateTrashComment.d.ts +5 -0
  71. package/dist/cjs/hooks/useMutateTrashPost.d.ts +4 -0
  72. package/dist/cjs/hooks/useMutateTyping.d.ts +2 -0
  73. package/dist/cjs/hooks/useMutateUnsubscribe.d.ts +4 -0
  74. package/dist/cjs/hooks/useMutateVote.d.ts +5 -0
  75. package/dist/cjs/hooks/usePost.d.ts +1 -0
  76. package/dist/cjs/hooks/usePosts.d.ts +1 -0
  77. package/dist/cjs/hooks/usePostsList.d.ts +1 -0
  78. package/dist/cjs/hooks/useReactionList.d.ts +1 -0
  79. package/dist/cjs/hooks/useSessionState.d.ts +2 -0
  80. package/dist/cjs/hooks/useUnload.d.ts +2 -0
  81. package/dist/cjs/hooks/useUpdateEffect.d.ts +3 -0
  82. package/dist/cjs/hooks/useVotes.d.ts +1 -0
  83. package/dist/cjs/index.d.ts +3 -1
  84. package/dist/cjs/index.js +28 -6
  85. package/dist/cjs/index.js.map +1 -1
  86. package/dist/cjs/types/ConversationListItem.d.ts +1 -0
  87. package/dist/cjs/types/Files.d.ts +7 -0
  88. package/dist/cjs/types/Message.d.ts +2 -2
  89. package/dist/cjs/types/Posts.d.ts +4 -0
  90. package/dist/cjs/types/interfaces.d.ts +9 -0
  91. package/dist/cjs/types/types.d.ts +138 -22
  92. package/dist/cjs/ui/Dropdown.d.ts +18 -2
  93. package/dist/cjs/ui/Icon.d.ts +10 -2
  94. package/dist/cjs/ui/Overlay.d.ts +3 -1
  95. package/dist/cjs/ui/Sheet.d.ts +14 -0
  96. package/dist/cjs/ui/Spinner.d.ts +2 -1
  97. package/dist/cjs/utils/cacheUtils.d.ts +14 -0
  98. package/dist/cjs/utils/fileUtilities.d.ts +10 -1
  99. package/dist/cjs/utils/mentions.d.ts +6 -0
  100. package/dist/cjs/utils/openUrl.d.ts +1 -0
  101. package/dist/css/weavy-chat.css +637 -218
  102. package/dist/css/weavy-files.css +3046 -0
  103. package/dist/css/weavy-messenger.css +643 -213
  104. package/dist/css/weavy-posts.css +2773 -0
  105. package/dist/css/weavy.css +1749 -308
  106. package/dist/esm/client/WeavyClient.d.ts +1 -0
  107. package/dist/esm/components/Attachment.d.ts +5 -5
  108. package/dist/esm/components/Blob.d.ts +9 -0
  109. package/dist/esm/components/Comment.d.ts +18 -0
  110. package/dist/esm/components/CommentCount.d.ts +7 -0
  111. package/dist/esm/components/CommentEdit.d.ts +16 -0
  112. package/dist/esm/components/CommentPlaceholder.d.ts +8 -0
  113. package/dist/esm/components/CommentTrashed.d.ts +15 -0
  114. package/dist/esm/components/CommentView.d.ts +18 -0
  115. package/dist/esm/components/Comments.d.ts +8 -0
  116. package/dist/esm/components/ConversationListItem.d.ts +1 -1
  117. package/dist/esm/components/Dropzone.d.ts +10 -0
  118. package/dist/esm/components/Editor.d.ts +25 -0
  119. package/dist/esm/components/Embed.d.ts +8 -0
  120. package/dist/esm/components/FileItem.d.ts +41 -0
  121. package/dist/esm/components/FileList.d.ts +11 -0
  122. package/dist/esm/components/FileVersions.d.ts +9 -0
  123. package/dist/esm/components/Files.d.ts +4 -0
  124. package/dist/esm/components/Image.d.ts +3 -3
  125. package/dist/esm/components/MeetingCard.d.ts +1 -1
  126. package/dist/esm/components/Meetings.d.ts +2 -1
  127. package/dist/esm/components/Poll.d.ts +8 -0
  128. package/dist/esm/components/PollOption.d.ts +10 -0
  129. package/dist/esm/components/Post.d.ts +21 -0
  130. package/dist/esm/components/PostEdit.d.ts +17 -0
  131. package/dist/esm/components/PostList.d.ts +6 -0
  132. package/dist/esm/components/PostPlaceholder.d.ts +8 -0
  133. package/dist/esm/components/PostTrashed.d.ts +14 -0
  134. package/dist/esm/components/PostView.d.ts +21 -0
  135. package/dist/esm/components/Posts.d.ts +4 -0
  136. package/dist/esm/components/Preview.d.ts +1 -3
  137. package/dist/esm/components/PreviewFiles.d.ts +10 -0
  138. package/dist/esm/components/Reactions.d.ts +6 -2
  139. package/dist/esm/components/SearchUsers.d.ts +2 -1
  140. package/dist/esm/contexts/CloudFilesContext.d.ts +9 -0
  141. package/dist/esm/hooks/useApps.d.ts +1 -0
  142. package/dist/esm/hooks/useCloudFiles.d.ts +3 -0
  143. package/dist/esm/hooks/useCommentList.d.ts +1 -0
  144. package/dist/esm/hooks/useEmbeds.d.ts +5 -0
  145. package/dist/esm/hooks/useFileList.d.ts +1 -0
  146. package/dist/esm/hooks/useFileUploader.d.ts +8 -0
  147. package/dist/esm/hooks/useFileVersions.d.ts +2 -0
  148. package/dist/esm/hooks/useInfiniteScroll.d.ts +4 -0
  149. package/dist/esm/hooks/useIsFirstRender.d.ts +2 -0
  150. package/dist/esm/hooks/useMutateApps.d.ts +5 -0
  151. package/dist/esm/hooks/useMutateComment.d.ts +10 -0
  152. package/dist/esm/hooks/useMutateConversationName.d.ts +1 -1
  153. package/dist/esm/hooks/useMutateDeleteReaction.d.ts +3 -1
  154. package/dist/esm/hooks/useMutateEditComment.d.ts +10 -0
  155. package/dist/esm/hooks/useMutateEditPost.d.ts +10 -0
  156. package/dist/esm/hooks/useMutateExternalBlobs.d.ts +2 -2
  157. package/dist/esm/hooks/useMutateFile.d.ts +26 -0
  158. package/dist/esm/hooks/useMutateFileRename.d.ts +5 -0
  159. package/dist/esm/hooks/useMutateFileSubscribe.d.ts +7 -0
  160. package/dist/esm/hooks/useMutateFileTrash.d.ts +10 -0
  161. package/dist/esm/hooks/useMutateFileVersion.d.ts +7 -0
  162. package/dist/esm/hooks/useMutateFiles.d.ts +2 -0
  163. package/dist/esm/hooks/useMutateLeaveConversation.d.ts +4 -0
  164. package/dist/esm/hooks/useMutateMessage.d.ts +2 -2
  165. package/dist/esm/hooks/useMutatePost.d.ts +10 -0
  166. package/dist/esm/hooks/useMutateReaction.d.ts +3 -1
  167. package/dist/esm/hooks/useMutateRead.d.ts +1 -1
  168. package/dist/esm/hooks/useMutateReplaceReaction.d.ts +6 -0
  169. package/dist/esm/hooks/useMutateRestoreComment.d.ts +5 -0
  170. package/dist/esm/hooks/useMutateRestorePost.d.ts +4 -0
  171. package/dist/esm/hooks/useMutateStarred.d.ts +4 -0
  172. package/dist/esm/hooks/useMutateSubscribe.d.ts +4 -0
  173. package/dist/esm/hooks/useMutateTrashComment.d.ts +5 -0
  174. package/dist/esm/hooks/useMutateTrashPost.d.ts +4 -0
  175. package/dist/esm/hooks/useMutateTyping.d.ts +2 -0
  176. package/dist/esm/hooks/useMutateUnsubscribe.d.ts +4 -0
  177. package/dist/esm/hooks/useMutateVote.d.ts +5 -0
  178. package/dist/esm/hooks/usePost.d.ts +1 -0
  179. package/dist/esm/hooks/usePosts.d.ts +1 -0
  180. package/dist/esm/hooks/usePostsList.d.ts +1 -0
  181. package/dist/esm/hooks/useReactionList.d.ts +1 -0
  182. package/dist/esm/hooks/useSessionState.d.ts +2 -0
  183. package/dist/esm/hooks/useUnload.d.ts +2 -0
  184. package/dist/esm/hooks/useUpdateEffect.d.ts +3 -0
  185. package/dist/esm/hooks/useVotes.d.ts +1 -0
  186. package/dist/esm/index.d.ts +3 -1
  187. package/dist/esm/index.js +28 -6
  188. package/dist/esm/index.js.map +1 -1
  189. package/dist/esm/types/ConversationListItem.d.ts +1 -0
  190. package/dist/esm/types/Files.d.ts +7 -0
  191. package/dist/esm/types/Message.d.ts +2 -2
  192. package/dist/esm/types/Posts.d.ts +4 -0
  193. package/dist/esm/types/interfaces.d.ts +9 -0
  194. package/dist/esm/types/types.d.ts +138 -22
  195. package/dist/esm/ui/Dropdown.d.ts +18 -2
  196. package/dist/esm/ui/Icon.d.ts +10 -2
  197. package/dist/esm/ui/Overlay.d.ts +3 -1
  198. package/dist/esm/ui/Sheet.d.ts +14 -0
  199. package/dist/esm/ui/Spinner.d.ts +2 -1
  200. package/dist/esm/utils/cacheUtils.d.ts +14 -0
  201. package/dist/esm/utils/fileUtilities.d.ts +10 -1
  202. package/dist/esm/utils/mentions.d.ts +6 -0
  203. package/dist/esm/utils/openUrl.d.ts +1 -0
  204. package/dist/index.d.ts +50 -6
  205. package/package.json +8 -2
  206. package/src/client/WeavyClient.ts +35 -1
  207. package/src/components/Attachment.tsx +20 -13
  208. package/src/components/Blob.tsx +28 -0
  209. package/src/components/Comment.tsx +43 -0
  210. package/src/components/CommentCount.tsx +15 -0
  211. package/src/components/CommentEdit.tsx +48 -0
  212. package/src/components/CommentPlaceholder.tsx +34 -0
  213. package/src/components/CommentTrashed.tsx +45 -0
  214. package/src/components/CommentView.tsx +142 -0
  215. package/src/components/Comments.tsx +78 -0
  216. package/src/components/Conversation.tsx +85 -31
  217. package/src/components/ConversationList.tsx +12 -41
  218. package/src/components/ConversationListItem.tsx +125 -74
  219. package/src/components/Dropzone.tsx +26 -0
  220. package/src/components/Editor.tsx +700 -0
  221. package/src/components/Embed.tsx +80 -0
  222. package/src/components/FileItem.tsx +391 -0
  223. package/src/components/FileList.tsx +166 -0
  224. package/src/components/FileVersions.tsx +100 -0
  225. package/src/components/Files.tsx +294 -0
  226. package/src/components/Image.tsx +11 -10
  227. package/src/components/Meeting.tsx +1 -2
  228. package/src/components/MeetingCard.tsx +1 -1
  229. package/src/components/Meetings.tsx +13 -5
  230. package/src/components/Message.tsx +14 -19
  231. package/src/components/Messages.tsx +38 -64
  232. package/src/components/NewConversation.tsx +8 -6
  233. package/src/components/PdfViewer.tsx +2 -2
  234. package/src/components/Poll.tsx +45 -0
  235. package/src/components/PollOption.tsx +65 -0
  236. package/src/components/Post.tsx +45 -0
  237. package/src/components/PostEdit.tsx +49 -0
  238. package/src/components/PostList.tsx +95 -0
  239. package/src/components/PostPlaceholder.tsx +32 -0
  240. package/src/components/PostTrashed.tsx +35 -0
  241. package/src/components/PostView.tsx +194 -0
  242. package/src/components/Posts.tsx +59 -0
  243. package/src/components/Preview.tsx +16 -23
  244. package/src/components/PreviewFiles.tsx +336 -0
  245. package/src/components/Reactions.tsx +142 -38
  246. package/src/components/SearchUsers.tsx +77 -37
  247. package/src/components/Typing.tsx +1 -1
  248. package/src/{components/FileBrowser.tsx → contexts/CloudFilesContext.tsx} +46 -30
  249. package/src/contexts/PreviewContext.tsx +102 -85
  250. package/src/contexts/WeavyContext.tsx +10 -6
  251. package/src/hooks/useApps.ts +23 -0
  252. package/src/hooks/useCloudFiles.ts +12 -0
  253. package/src/hooks/useCommentList.ts +30 -0
  254. package/src/hooks/useEmbeds.ts +126 -0
  255. package/src/hooks/useEvents.ts +3 -1
  256. package/src/hooks/useFileList.ts +84 -0
  257. package/src/hooks/useFileUploader.ts +38 -1
  258. package/src/hooks/useFileVersions.ts +20 -0
  259. package/src/hooks/useInfiniteScroll.ts +45 -0
  260. package/src/hooks/useIsFirstRender.ts +15 -0
  261. package/src/hooks/useMembers.ts +3 -3
  262. package/src/hooks/useMutateApps.ts +48 -0
  263. package/src/hooks/useMutateComment.ts +60 -0
  264. package/src/hooks/useMutateConversationName.ts +1 -1
  265. package/src/hooks/useMutateDeleteReaction.ts +17 -4
  266. package/src/hooks/useMutateEditComment.ts +63 -0
  267. package/src/hooks/useMutateEditPost.ts +64 -0
  268. package/src/hooks/useMutateExternalBlobs.ts +5 -9
  269. package/src/hooks/useMutateFile.ts +311 -0
  270. package/src/hooks/useMutateFileRename.ts +51 -0
  271. package/src/hooks/useMutateFileSubscribe.ts +80 -0
  272. package/src/hooks/useMutateFileTrash.ts +115 -0
  273. package/src/hooks/useMutateFileVersion.ts +85 -0
  274. package/src/hooks/useMutateFiles.ts +23 -0
  275. package/src/hooks/useMutateLeaveConversation.ts +38 -0
  276. package/src/hooks/useMutateMessage.ts +23 -62
  277. package/src/hooks/useMutatePost.ts +60 -0
  278. package/src/hooks/useMutateReaction.ts +21 -6
  279. package/src/hooks/useMutateRead.ts +8 -2
  280. package/src/hooks/useMutateRemoveMembers.ts +2 -9
  281. package/src/hooks/useMutateReplaceReaction.ts +59 -0
  282. package/src/hooks/useMutateRestoreComment.ts +37 -0
  283. package/src/hooks/useMutateRestorePost.ts +36 -0
  284. package/src/hooks/useMutateStarred.ts +35 -0
  285. package/src/hooks/useMutateSubscribe.ts +36 -0
  286. package/src/hooks/useMutateTrashComment.ts +37 -0
  287. package/src/hooks/useMutateTrashPost.ts +36 -0
  288. package/src/hooks/useMutateTyping.ts +5 -3
  289. package/src/hooks/useMutateUnsubscribe.ts +36 -0
  290. package/src/hooks/useMutateVote.ts +59 -0
  291. package/src/hooks/usePost.ts +20 -0
  292. package/src/hooks/usePosts.ts +21 -0
  293. package/src/hooks/usePostsList.ts +31 -0
  294. package/src/hooks/useReactionList.ts +21 -0
  295. package/src/hooks/useSearchUsers.ts +2 -2
  296. package/src/hooks/useSessionState.ts +23 -0
  297. package/src/hooks/useUnload.ts +19 -0
  298. package/src/hooks/useUpdateEffect.ts +16 -0
  299. package/src/hooks/useVotes.ts +21 -0
  300. package/src/index.ts +5 -1
  301. package/src/scss/theme/_appbar.scss +8 -4
  302. package/src/scss/theme/_card.scss +2 -0
  303. package/src/scss/theme/_comment-editor-cm.scss +5 -1
  304. package/src/scss/theme/_comments.scss +9 -8
  305. package/src/scss/theme/_conversations.scss +4 -0
  306. package/src/scss/theme/_files.scss +2 -81
  307. package/src/scss/theme/_icons.scss +21 -3
  308. package/src/scss/theme/_input.scss +13 -7
  309. package/src/scss/theme/_item.scss +23 -1
  310. package/src/scss/theme/_message-editor-cm.scss +5 -1
  311. package/src/scss/theme/_pager.scss +1 -1
  312. package/src/scss/theme/_post-editor-cm.scss +2 -2
  313. package/src/scss/theme/_post.scss +3 -10
  314. package/src/scss/theme/_preview-pdf-viewer.scss +996 -0
  315. package/src/scss/theme/_preview-pdf.scss +57 -783
  316. package/src/scss/theme/_sheet.scss +4 -1
  317. package/src/scss/theme/_spinner.scss +10 -1
  318. package/src/scss/theme/_tables.scss +2 -0
  319. package/src/scss/theme/base/_scroll.scss +3 -0
  320. package/src/scss/weavy-chat.scss +3 -1
  321. package/src/scss/weavy-files.scss +31 -0
  322. package/src/scss/weavy-messenger.scss +3 -1
  323. package/src/scss/weavy-posts.scss +35 -0
  324. package/src/scss/weavy.scss +2 -0
  325. package/src/types/ConversationListItem.ts +1 -0
  326. package/src/types/Files.ts +7 -0
  327. package/src/types/Message.ts +2 -2
  328. package/src/types/Posts.ts +4 -0
  329. package/src/types/interfaces.ts +13 -0
  330. package/src/types/types.ts +157 -28
  331. package/src/ui/Button.tsx +6 -5
  332. package/src/ui/Dropdown.tsx +67 -16
  333. package/src/ui/Icon.tsx +112 -15
  334. package/src/ui/Overlay.tsx +6 -2
  335. package/src/ui/Sheet.tsx +87 -0
  336. package/src/ui/Spinner.tsx +7 -4
  337. package/src/utils/cacheUtils.ts +246 -0
  338. package/src/utils/fileUtilities.ts +208 -24
  339. package/src/utils/infinite-scroll.js +103 -0
  340. package/src/utils/mentions.ts +50 -0
  341. package/src/utils/openUrl.ts +41 -0
  342. package/src/utils/{scrollToBottom.js → scroll-position.js} +50 -9
  343. package/src/utils/{scrollbarDetection.js → scrollbar-detection.js} +0 -0
  344. package/src/utils/utils.js +15 -1
  345. package/tsconfig.json +1 -1
  346. package/dist/cjs/components/ConversationForm.d.ts +0 -7
  347. package/dist/cjs/components/File.d.ts +0 -9
  348. package/dist/cjs/components/FileBrowser.d.ts +0 -6
  349. package/dist/cjs/hooks/usePreview.d.ts +0 -4
  350. package/dist/cjs/hooks/useReactions.d.ts +0 -3
  351. package/dist/esm/components/ConversationForm.d.ts +0 -7
  352. package/dist/esm/components/File.d.ts +0 -9
  353. package/dist/esm/components/FileBrowser.d.ts +0 -6
  354. package/dist/esm/hooks/usePreview.d.ts +0 -4
  355. package/dist/esm/hooks/useReactions.d.ts +0 -3
  356. package/src/components/ConversationForm.tsx +0 -210
  357. package/src/components/File.tsx +0 -21
  358. package/src/hooks/usePreview.ts +0 -21
  359. package/src/hooks/useReactions.ts +0 -51
  360. package/src/utils/infiniteScroll.js +0 -184
@@ -1,4 +1,5 @@
1
1
  export interface ConversationListItemProps {
2
2
  item: ConversationType;
3
+ userId: number;
3
4
  refetchConversations: Function;
4
5
  }
@@ -0,0 +1,7 @@
1
+ export interface FilesProps {
2
+ uid: string;
3
+ className?: string;
4
+ view?: FileView;
5
+ order?: FileOrder;
6
+ trashed?: boolean;
7
+ }
@@ -7,8 +7,8 @@ export interface MessageProps {
7
7
  name: string;
8
8
  created_at: string;
9
9
  created_by: string;
10
- attachments: AttachmentType[];
11
- meeting: MeetingCardType;
10
+ attachments: FileType[];
11
+ meeting?: MeetingType;
12
12
  parentId: number | null;
13
13
  reactions: ReactableType[];
14
14
  reactions_count?: number;
@@ -0,0 +1,4 @@
1
+ export interface PostsProps {
2
+ uid: string;
3
+ className?: string;
4
+ }
@@ -0,0 +1,9 @@
1
+ import { Completion } from "@codemirror/autocomplete";
2
+ interface MentionsCompletion extends Completion {
3
+ item?: {
4
+ is_member: boolean;
5
+ avatar_url: string;
6
+ display_name: string;
7
+ };
8
+ }
9
+ export { MentionsCompletion };
@@ -7,11 +7,17 @@ interface WeavyClient {
7
7
  destroy: Function;
8
8
  get: (url: string, retry?: boolean) => Promise<Response>;
9
9
  post: (url: string, method: "GET" | "POST" | "PUT" | "DELETE" | "PATCH", body: string | FormData, contentType?: string, retry?: boolean) => Promise<Response>;
10
+ upload: (url: string, method: "POST" | "PUT" | "PATCH", body: string | FormData, contentType?: string, onProgress?: (progress: number) => void, retry?: boolean) => Promise<Response>;
10
11
  }
11
12
  declare type WeavyClientOptions = {
12
13
  url: string;
13
14
  tokenFactory: (refresh: boolean) => Promise<string>;
14
15
  };
16
+ declare type ServerErrorResponse = {
17
+ status: number;
18
+ title: string;
19
+ detail?: string;
20
+ };
15
21
  declare type WeavyContextProps = {
16
22
  client: WeavyClient | null;
17
23
  options?: WeavyContextOptions;
@@ -33,9 +39,13 @@ declare type MessengerContextProps = {
33
39
  declare type UserContextProps = {
34
40
  user: UserType;
35
41
  };
42
+ declare type CloudFilesContextProps = {
43
+ open: Function;
44
+ };
36
45
  declare type PreviewContextProps = {
37
46
  openPreview: Function;
38
47
  closePreview: Function;
48
+ setPreviewFiles: Function;
39
49
  };
40
50
  declare type ProviderProps = {
41
51
  children: React.ReactNode;
@@ -63,15 +73,34 @@ declare type MessagesResult = {
63
73
  end: number;
64
74
  count: number;
65
75
  };
76
+ declare type SortOrder = {
77
+ by: string;
78
+ descending: boolean;
79
+ };
80
+ declare type FileOrderBy = "id" | "name" | "size" | "created_at" | "modified_at" | "timestamp";
81
+ declare type FileOrder = SortOrder & {
82
+ by: FileOrderBy;
83
+ descending: boolean;
84
+ };
85
+ declare type FileView = "list" | "grid";
86
+ declare type FilesResult = {
87
+ data: FileType[];
88
+ start: number;
89
+ end: number;
90
+ count: number;
91
+ };
66
92
  declare type ConversationType = {
67
93
  id: number;
94
+ created_by_id: number;
68
95
  display_name: string;
69
96
  last_message: MessageType;
70
97
  is_unread: boolean;
71
98
  is_pinned: boolean;
99
+ is_starred: boolean;
72
100
  type: string;
73
- member_ids: number[];
74
101
  avatar_url: string;
102
+ user_id?: number;
103
+ member_count?: number;
75
104
  };
76
105
  declare type MemberType = {
77
106
  id: number;
@@ -91,16 +120,33 @@ declare type MessageType = {
91
120
  id: number;
92
121
  html: string;
93
122
  text: string;
123
+ plain: string;
94
124
  app_id: number;
95
125
  temp?: boolean;
96
126
  created_at: string;
97
127
  created_by: MemberType;
98
128
  created_by_id: number;
99
- attachments: AttachmentType[];
129
+ modified_at?: string;
130
+ modified_by?: MemberType;
131
+ trashed_at?: string;
132
+ trashed_by?: MemberType;
133
+ attachments: FileType[];
100
134
  attachment_ids: number[];
101
- meeting: MeetingCardType;
135
+ attachment_count?: number;
136
+ meeting?: MeetingType;
102
137
  meeting_id?: number;
103
138
  reactions: ReactableType[];
139
+ embed?: EmbedType;
140
+ comment_count?: number;
141
+ is_subscribed: boolean;
142
+ is_trashed: boolean;
143
+ options?: PollOptionType[];
144
+ };
145
+ declare type PollOptionType = {
146
+ id: number | null;
147
+ text: string;
148
+ has_voted?: boolean;
149
+ vote_count?: number;
104
150
  };
105
151
  declare type UserType = {
106
152
  id: number;
@@ -112,31 +158,47 @@ declare type UserType = {
112
158
  avatar_url: string;
113
159
  presence: string;
114
160
  };
115
- declare type FileType = {
161
+ declare type FileKindType = "archive" | "audio" | "code" | "document" | "email" | "presentation" | "spreadsheet" | "image" | "text" | "video" | "file";
162
+ declare type PreviewFormatType = "audio" | "code" | "embed" | "html" | "image" | "pdf" | "text" | "video" | "none";
163
+ declare type ProviderType = "google-drive" | "onedrive" | "box" | "dropbox";
164
+ declare type BlobType = {
116
165
  id: number;
117
166
  name: string;
167
+ size?: number;
168
+ media_type?: string;
169
+ thumbnail_url?: string;
118
170
  };
119
- declare type AttachmentType = {
171
+ declare type FileType = {
120
172
  id: number;
173
+ refId?: number;
174
+ version: number;
121
175
  name: string;
122
- kind: string;
176
+ kind: FileKindType;
123
177
  media_type: string;
124
- width: number;
125
- height: number;
126
- size: number;
127
- provider: string;
128
- download_url: string;
178
+ width?: number;
179
+ height?: number;
180
+ size?: number;
181
+ provider?: string;
182
+ download_url?: string;
129
183
  embed_url: string;
130
- external_url: string;
131
- thumbnail_url: string;
184
+ external_url?: string;
185
+ application_url?: string;
132
186
  preview_format: PreviewFormatType;
133
- application_url: string;
134
- preview_url: string;
187
+ preview_url?: string;
188
+ thumbnail_url?: string;
135
189
  created_at: string;
136
190
  created_by?: UserType;
137
- createdById?: number;
191
+ created_by_id: number;
192
+ modified_at?: string;
193
+ modified_by?: UserType;
194
+ modified_by_id?: number;
195
+ comment_ids?: number[];
196
+ is_subscribed: boolean;
197
+ is_trashed: boolean;
198
+ status?: "ok" | "pending" | "conflict" | "error";
199
+ statusText?: string;
200
+ progress?: number;
138
201
  };
139
- declare type PreviewFormatType = "audio" | "code" | "embed" | "html" | "image" | "pdf" | "text" | "video" | "none";
140
202
  declare type ReactionType = {
141
203
  id: number;
142
204
  parent: MessageType;
@@ -153,11 +215,13 @@ declare type ReactionGroup = {
153
215
  count: number;
154
216
  has_reacted: boolean;
155
217
  };
156
- declare type MeetingType = {
157
- id: number;
158
- provider: string;
218
+ declare type ReactionsResult = {
219
+ data: ReactionType[];
220
+ start: number;
221
+ end: number;
222
+ count: number;
159
223
  };
160
- declare type MeetingCardType = {
224
+ declare type MeetingType = {
161
225
  id: number;
162
226
  provider: string;
163
227
  provider_id: string;
@@ -205,5 +269,57 @@ declare type RealtimeTyping = {
205
269
  action: string;
206
270
  id: number;
207
271
  actor: MemberTypingType;
208
- conversation: ConversationType;
272
+ entity: EntityType;
273
+ type: string;
274
+ };
275
+ declare type AppType = {
276
+ id: number;
277
+ type: string;
278
+ uid: string;
279
+ display_name: string;
280
+ name: string;
281
+ description: string;
282
+ avatar_url: string;
283
+ metadata: any;
284
+ tags?: string[];
285
+ created_at: string;
286
+ created_by_id: number;
287
+ created_by?: UserType;
288
+ modified_at?: string;
289
+ modified_by_id?: number;
290
+ modified_by?: UserType;
291
+ member_count?: number;
292
+ members?: MemberType[];
293
+ is_subscribed: boolean;
294
+ is_trashed: boolean;
295
+ archive_url: string;
296
+ };
297
+ declare type PostsType = {
298
+ id: number;
299
+ display_name: string;
300
+ last_message: MessageType;
301
+ is_unread: boolean;
302
+ is_pinned: boolean;
303
+ type: string;
304
+ member_ids: number[];
305
+ avatar_url: string;
306
+ };
307
+ declare type EmbedType = {
308
+ id: number;
309
+ title: string;
310
+ description: string;
311
+ type: "link" | "video" | "photo" | "audio" | "rich";
312
+ host: string;
313
+ original_url: string;
314
+ provider_name: string;
315
+ provider_url?: string;
316
+ thumbnail_url?: string;
317
+ thumbnail_width?: number;
318
+ thumbnail_height?: number;
319
+ width?: number;
320
+ height?: number;
321
+ author_name: string;
322
+ author_url: string;
323
+ html?: string;
324
+ image?: string;
209
325
  };
@@ -2,18 +2,34 @@ import React from "react";
2
2
  declare type DropdownProps = {
3
3
  directionX?: "left" | "right";
4
4
  directionY?: "up" | "down";
5
+ icon?: string;
5
6
  children: React.ReactNode;
6
7
  className?: string;
8
+ title?: string;
9
+ buttonContent?: React.ReactNode;
10
+ disabled?: boolean;
11
+ noWrapper?: boolean;
7
12
  props?: React.HTMLAttributes<HTMLSpanElement>;
8
13
  };
9
14
  declare type ItemProps = {
10
15
  children: React.ReactNode;
11
16
  className?: string;
12
17
  onClick?: (e: any) => void;
18
+ active?: boolean;
13
19
  props?: React.HTMLAttributes<HTMLDivElement>;
14
20
  };
21
+ declare type AnchorProps = {
22
+ children: React.ReactNode;
23
+ className?: string;
24
+ link?: string;
25
+ active?: boolean;
26
+ download?: boolean;
27
+ props?: React.HTMLAttributes<HTMLAnchorElement>;
28
+ };
15
29
  declare const UIDropdown: {
16
- UI: ({ directionX, directionY, children, className, ...props }: DropdownProps) => JSX.Element;
17
- Item: ({ children, className, onClick, ...props }: ItemProps) => JSX.Element;
30
+ UI: ({ directionX, directionY, icon, children, className, title, buttonContent, disabled, noWrapper, ...props }: DropdownProps) => JSX.Element;
31
+ Item: ({ children, className, onClick, active, ...props }: ItemProps) => JSX.Element;
32
+ Anchor: ({ children, className, link, active, download, ...props }: AnchorProps) => JSX.Element;
33
+ Divider: () => JSX.Element;
18
34
  };
19
35
  export default UIDropdown;
@@ -1,10 +1,18 @@
1
- /// <reference types="react" />
1
+ import { ReactNode } from "react";
2
2
  declare type Props = {
3
3
  name: string;
4
4
  color?: string;
5
5
  size?: number;
6
+ title?: string;
7
+ className?: string;
8
+ };
9
+ declare type IconActiveStackProps = {
10
+ className?: string;
11
+ children: ReactNode;
6
12
  };
7
13
  declare const UIIcon: {
8
- UI: ({ name, color, size, ...props }: Props) => JSX.Element;
14
+ UI: ({ name, color, size, className, title, ...props }: Props) => JSX.Element;
15
+ Raw: ({ name, color, size, className, title, ...props }: Props) => JSX.Element;
16
+ ActiveStack: ({ className, children }: IconActiveStackProps) => JSX.Element;
9
17
  };
10
18
  export default UIIcon;
@@ -5,8 +5,10 @@ declare type OverlayProps = {
5
5
  className?: string;
6
6
  isOpen: boolean;
7
7
  style?: Styles;
8
+ closeOnEsc?: boolean;
9
+ onClose?: () => void;
8
10
  };
9
11
  declare const UIOverlay: {
10
- UI: ({ children, className, isOpen, style }: OverlayProps) => JSX.Element;
12
+ UI: ({ children, className, isOpen, style, closeOnEsc, onClose }: OverlayProps) => JSX.Element;
11
13
  };
12
14
  export default UIOverlay;
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import { Styles } from 'react-modal';
3
+ declare type SheetProps = {
4
+ children: React.ReactNode;
5
+ className?: string;
6
+ isOpen: boolean;
7
+ style?: Styles;
8
+ title: string;
9
+ onClose?: (e: any) => void;
10
+ };
11
+ declare const UISheet: {
12
+ UI: ({ children, className, isOpen, style, title, onClose }: SheetProps) => JSX.Element;
13
+ };
14
+ export default UISheet;
@@ -3,8 +3,9 @@ declare type SpinnerProps = {
3
3
  size?: number;
4
4
  spin?: boolean;
5
5
  overlay?: boolean;
6
+ progress?: number;
6
7
  };
7
8
  declare const UISpinner: {
8
- UI: ({ spin, size, overlay }: SpinnerProps) => JSX.Element;
9
+ UI: ({ spin, size, overlay, progress }: SpinnerProps) => JSX.Element;
9
10
  };
10
11
  export default UISpinner;
@@ -0,0 +1,14 @@
1
+ import { InfiniteData, QueryClient, QueryKey } from "react-query";
2
+ export declare function findAnyExistingItem<TDataItem>(queryData: InfiniteData<any> | undefined, propertyName: string, value: string, copy?: boolean): TDataItem | undefined;
3
+ export declare function addToQueryData(queryData: any, item: any, sorting?: {
4
+ by?: string;
5
+ descending?: boolean;
6
+ }, tempId?: number): any;
7
+ export declare function updateQueryData(queryData: any, select: number | ((item: any) => boolean), fnUpdater: Function): any;
8
+ export declare function removeQueryData(queryData: any, select: number | ((item: any) => boolean)): any;
9
+ export declare const addCacheItem: <T>(queryClient: QueryClient, key: QueryKey, item: any, tempId?: number, sorting?: {
10
+ by?: string;
11
+ descending?: boolean;
12
+ }) => void | T;
13
+ export declare const updateCacheItem: <T>(queryClient: QueryClient, key: QueryKey, select: number | ((item: any) => boolean), fnUpdater: Function) => void | T;
14
+ export declare const removeCacheItem: <T>(queryClient: QueryClient, key: QueryKey, select: number | ((item: any) => boolean)) => void | T;
@@ -1,4 +1,4 @@
1
- export declare const fileSizeAsString: (size: number) => string;
1
+ export declare const fileSizeAsString: (size: number, significantDigits?: number) => string;
2
2
  export declare function getExtension(name: string): string;
3
3
  export declare function isAudio(ext: string): boolean;
4
4
  export declare function isImage(ext: string): boolean;
@@ -15,3 +15,12 @@ export declare function getIcon(name: string, mediaType?: string): {
15
15
  icon: string;
16
16
  color?: string;
17
17
  };
18
+ /**
19
+ * Returns preview formats that can be rendered directly in the browser
20
+ *
21
+ * @param {string} name - Name of the file
22
+ * @returns PreviewFormatType
23
+ */
24
+ export declare function getWebPreviewFormat(name: string): PreviewFormatType;
25
+ export declare function getProvider(provider: string | undefined): ProviderType | "";
26
+ export declare function getKind(name: string): FileKindType;
@@ -0,0 +1,6 @@
1
+ import { Decoration, ViewPlugin, ViewUpdate } from "@codemirror/view";
2
+ import { RangeSet } from "@codemirror/state";
3
+ export declare const mentions: ViewPlugin<{
4
+ mentions: RangeSet<Decoration>;
5
+ update(update: ViewUpdate): void;
6
+ }>;
@@ -0,0 +1 @@
1
+ export default function openUrl(url?: string, target?: string, name?: string, download?: boolean): void;
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
2
  import * as _microsoft_signalr from '@microsoft/signalr';
3
- import React, { FC } from 'react';
3
+ import React, { FC, ReactNode } from 'react';
4
4
  import { Styles } from 'react-modal';
5
5
 
6
6
  declare class WeavyClient$1 {
@@ -19,6 +19,7 @@ declare class WeavyClient$1 {
19
19
  constructor(options: WeavyClientOptions);
20
20
  get(url: string, retry?: boolean): Promise<Response>;
21
21
  post(url: string, method: "GET" | "POST" | "PUT" | "DELETE" | "PATCH", body: string | FormData, contentType?: string, retry?: boolean): Promise<Response>;
22
+ upload(url: string, method: "POST" | "PUT" | "PATCH", body: string | FormData, contentType?: string, onProgress?: (progress: number) => void, retry?: boolean): Promise<Response>;
22
23
  getToken(refresh: boolean): Promise<string>;
23
24
  tokenFactoryInternal(refresh?: boolean, fromSR?: boolean): Promise<string>;
24
25
  subscribe(group: string, event: string, callback: any): Promise<void>;
@@ -61,6 +62,23 @@ interface ChatProps {
61
62
 
62
63
  declare const Chat: ({ uid, className }: ChatProps) => JSX.Element;
63
64
 
65
+ interface PostsProps {
66
+ uid: string;
67
+ className?: string;
68
+ }
69
+
70
+ declare const Posts: ({ uid, className }: PostsProps) => JSX.Element;
71
+
72
+ interface FilesProps {
73
+ uid: string;
74
+ className?: string;
75
+ view?: FileView;
76
+ order?: FileOrder;
77
+ trashed?: boolean;
78
+ }
79
+
80
+ declare const Files: ({ uid, className, view: initView, order: initOrder, trashed: initTrashed }: FilesProps) => 0 | JSX.Element | undefined;
81
+
64
82
  declare const UIButton: {
65
83
  UI: any;
66
84
  };
@@ -68,28 +86,52 @@ declare const UIButton: {
68
86
  declare type DropdownProps = {
69
87
  directionX?: "left" | "right";
70
88
  directionY?: "up" | "down";
89
+ icon?: string;
71
90
  children: React.ReactNode;
72
91
  className?: string;
92
+ title?: string;
93
+ buttonContent?: React.ReactNode;
94
+ disabled?: boolean;
95
+ noWrapper?: boolean;
73
96
  props?: React.HTMLAttributes<HTMLSpanElement>;
74
97
  };
75
98
  declare type ItemProps = {
76
99
  children: React.ReactNode;
77
100
  className?: string;
78
101
  onClick?: (e: any) => void;
102
+ active?: boolean;
79
103
  props?: React.HTMLAttributes<HTMLDivElement>;
80
104
  };
105
+ declare type AnchorProps = {
106
+ children: React.ReactNode;
107
+ className?: string;
108
+ link?: string;
109
+ active?: boolean;
110
+ download?: boolean;
111
+ props?: React.HTMLAttributes<HTMLAnchorElement>;
112
+ };
81
113
  declare const UIDropdown: {
82
- UI: ({ directionX, directionY, children, className, ...props }: DropdownProps) => JSX.Element;
83
- Item: ({ children, className, onClick, ...props }: ItemProps) => JSX.Element;
114
+ UI: ({ directionX, directionY, icon, children, className, title, buttonContent, disabled, noWrapper, ...props }: DropdownProps) => JSX.Element;
115
+ Item: ({ children, className, onClick, active, ...props }: ItemProps) => JSX.Element;
116
+ Anchor: ({ children, className, link, active, download, ...props }: AnchorProps) => JSX.Element;
117
+ Divider: () => JSX.Element;
84
118
  };
85
119
 
86
120
  declare type Props = {
87
121
  name: string;
88
122
  color?: string;
89
123
  size?: number;
124
+ title?: string;
125
+ className?: string;
126
+ };
127
+ declare type IconActiveStackProps = {
128
+ className?: string;
129
+ children: ReactNode;
90
130
  };
91
131
  declare const UIIcon: {
92
- UI: ({ name, color, size, ...props }: Props) => JSX.Element;
132
+ UI: ({ name, color, size, className, title, ...props }: Props) => JSX.Element;
133
+ Raw: ({ name, color, size, className, title, ...props }: Props) => JSX.Element;
134
+ ActiveStack: ({ className, children }: IconActiveStackProps) => JSX.Element;
93
135
  };
94
136
 
95
137
  declare type OverlayProps = {
@@ -97,9 +139,11 @@ declare type OverlayProps = {
97
139
  className?: string;
98
140
  isOpen: boolean;
99
141
  style?: Styles;
142
+ closeOnEsc?: boolean;
143
+ onClose?: () => void;
100
144
  };
101
145
  declare const UIOverlay: {
102
- UI: ({ children, className, isOpen, style }: OverlayProps) => JSX.Element;
146
+ UI: ({ children, className, isOpen, style, closeOnEsc, onClose }: OverlayProps) => JSX.Element;
103
147
  };
104
148
 
105
- export { UIButton as Button, Chat, _default as Conversation, ConversationBadge, ConversationList, UIDropdown as Dropdown, UIIcon as Icon, Messenger, MessengerContext, MessengerProvider, UIOverlay as Overlay, WeavyClient$1 as WeavyClient, WeavyContext, WeavyProvider };
149
+ export { UIButton as Button, Chat, _default as Conversation, ConversationBadge, ConversationList, UIDropdown as Dropdown, Files, UIIcon as Icon, Messenger, MessengerContext, MessengerProvider, UIOverlay as Overlay, Posts, WeavyClient$1 as WeavyClient, WeavyContext, WeavyProvider };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@weavy/uikit-react",
3
- "version": "14.0.4",
3
+ "version": "15.0.1",
4
4
  "author": "Weavy",
5
5
  "description": "React UI-kit for Weavy",
6
6
  "homepage": "https://github.com/weavy/weavy-uikit-react",
@@ -42,15 +42,21 @@
42
42
  "watch-js": "rollup -c --watch"
43
43
  },
44
44
  "dependencies": {
45
+ "@codemirror/autocomplete": "^6.3.0",
46
+ "@codemirror/lang-markdown": "^6.0.4",
45
47
  "@mdi/js": "^6.9.96",
46
48
  "@mdi/react": "^1.6.0",
47
49
  "@microsoft/signalr": "^6.0.3",
50
+ "@popperjs/core": "^2.11.6",
51
+ "@uiw/react-codemirror": "^4.12.4",
48
52
  "classnames": "^2.3.1",
49
53
  "dayjs": "^1.11.1",
50
54
  "lodash.debounce": "^4.0.8",
51
55
  "lodash.throttle": "^4.1.1",
52
- "pdfjs-dist": "^2.16.105",
56
+ "pdfjs-dist": "^3.0.279",
57
+ "react-dropzone": "^14.2.3",
53
58
  "react-modal": "^3.14.4",
59
+ "react-popper": "^2.3.0",
54
60
  "react-query": "^3.34.16"
55
61
  },
56
62
  "engines": {
@@ -77,10 +77,44 @@ export default class WeavyClient {
77
77
  return await this.post(url, method, body, contentType, false);
78
78
  }
79
79
 
80
- console.error(`Error calling endpoint ${url}`, response)
80
+ //console.error(`Error calling endpoint ${url}`, response)
81
81
  }
82
82
 
83
83
  return response;
84
+ };
85
+
86
+
87
+ async upload (url: string, method: "POST" | "PUT" | "PATCH", body: string | FormData, contentType: string = "application/json", onProgress?: (progress: number) => void, retry: boolean = true) {
88
+ const client = this as WeavyClient;
89
+ const token = await client.tokenFactoryInternal();
90
+
91
+ return await new Promise<Response>(function (resolve, reject) {
92
+ // XMLHttpRequest instead of fetch because we want to track progress
93
+ let xhr = new XMLHttpRequest();
94
+ xhr.open(method, client.url + url, true);
95
+ xhr.setRequestHeader("Authorization", "Bearer " + token)
96
+ if (contentType !== ""){
97
+ xhr.setRequestHeader("content-type", contentType);
98
+ }
99
+ if (onProgress) {
100
+ xhr.upload.addEventListener("progress", (e: ProgressEvent<EventTarget>) => {
101
+ onProgress((e.loaded / e.total) * 100 || 100)
102
+ })
103
+ }
104
+
105
+ xhr.onload = (evt: ProgressEvent<EventTarget>) => {
106
+ if (retry && (xhr.status === 401 || xhr.status === 401)) {
107
+ client.tokenFactoryInternal(true)
108
+ .then(() => client.upload(url, method, body, contentType, onProgress, false))
109
+ .then(resolve)
110
+ .catch(reject);
111
+ } else {
112
+ resolve(new Response(xhr.response, { status: xhr.status, statusText: xhr.statusText }));
113
+ }
114
+ };
115
+ xhr.onerror = reject;
116
+ xhr.send(body);
117
+ });
84
118
  }
85
119
 
86
120
  async getToken(refresh: boolean) {
@@ -1,29 +1,36 @@
1
+ import classNames from "classnames";
1
2
  import React from "react";
2
3
  import Icon from "../ui/Icon";
3
- import { fileSizeAsString, getIcon } from "../utils/fileUtilities";
4
+ import { fileSizeAsString, getExtension, getIcon, getKind, getProvider } from "../utils/fileUtilities";
5
+ import { toKebabCase } from "../utils/utils";
4
6
 
5
7
  type Props = {
6
8
  previewFormat: string,
7
- url: string,
8
- previewUrl: string,
9
+ url?: string,
10
+ previewUrl?: string,
9
11
  mediaType: string,
10
12
  name: string,
11
13
  kind: string,
12
- size: number,
13
- provider: string,
14
+ size?: number,
15
+ provider?: string,
14
16
  onClick?: (e: any) => void
15
17
  }
16
18
 
17
- const Attachment = ({ previewFormat, url, previewUrl, mediaType, name, kind, size, provider, onClick }: Props) => {
18
- let fileSize = size > 0 ? fileSizeAsString(size) : null;
19
- let { icon, color } = getIcon(name, mediaType)
19
+ const Attachment = ({url, previewUrl, name,size, provider, onClick }: Props) => {
20
+ let fileSize = size && size > 0 ? fileSizeAsString(size) : null;
21
+ //let { icon, color } = getIcon(name, mediaType);
22
+ let ext = getExtension(name);
23
+ let { icon } = getIcon(name);
24
+ let kind = getKind(name);
25
+ let prov = getProvider(provider);
26
+
20
27
  return (
21
- <a href={previewUrl || url} className="wy-item wy-item-hover wy-item-lg wy-attachment" target={"_blank"} title={name} onClick={onClick ? (e) => onClick(e) : undefined}>
22
- <Icon.UI name={icon} color={color} size={2} />
23
- <div className="wy-item-body wy-attachment-content">
24
- <div className="wy-item-title wy-attachment-title">{name}</div>
28
+ <a href={previewUrl || url} className="wy-item wy-item-lg" target={"_blank"} title={name} onClick={onClick ? (e) => onClick(e) : undefined}>
29
+ <Icon.UI name={icon + (prov ? `+${prov}` : "")} size={2} className={classNames("wy-kind-" + toKebabCase(kind), "wy-ext-" + ext.substring(1))} />
30
+ <div className="wy-item-body ">
31
+ <div className="wy-item-title">{name}</div>
25
32
  {fileSize &&
26
- <div className="wy-item-text wy-attachment-meta" title={fileSize}>{fileSize}</div>
33
+ <div className="wy-item-text" title={fileSize}>{fileSize}</div>
27
34
  }
28
35
  </div>
29
36
  </a>