@weavy/uikit-react 14.0.3 → 15.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.
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
@@ -0,0 +1,194 @@
1
+ import React, { useContext, useState } from 'react';
2
+ import dayjs from 'dayjs';
3
+ import Dropdown from '../ui/Dropdown';
4
+ import Icon from '../ui/Icon';
5
+ import { ReactionsList, ReactionsMenu } from './Reactions';
6
+ import Comments from './Comments';
7
+ import Image, { ImageGrid } from './Image';
8
+ import { PreviewContext } from "../contexts/PreviewContext";
9
+ import Attachment from './Attachment';
10
+ import Avatar from './Avatar';
11
+ import Embed from './Embed';
12
+ import { UserContext } from '../contexts/UserContext';
13
+ import useMutateTrashPost from '../hooks/useMutateTrashPost';
14
+ import CommentCount from './CommentCount';
15
+ import useMutateSubscribe from '../hooks/useMutateSubscribe';
16
+ import useMutateUnsubscribe from '../hooks/useMutateUnsubscribe';
17
+ import Poll from './Poll';
18
+ import MeetingCard from './MeetingCard';
19
+
20
+ type Props = {
21
+ appId: number,
22
+ id: number,
23
+ text: string,
24
+ html: string,
25
+ created_at: string,
26
+ modified_at?: string,
27
+ created_by: MemberType,
28
+ trashed_at?: string,
29
+ attachments: FileType[],
30
+ reactions: ReactableType[],
31
+ embed: EmbedType | undefined,
32
+ comment_count?: number,
33
+ is_subscribed: boolean,
34
+ options?: PollOptionType[],
35
+ meeting?: MeetingType,
36
+ onEdit: (e: any) => void
37
+ }
38
+
39
+ const PostView = ({ appId, id, html, created_at, modified_at, created_by, attachments, reactions, embed, comment_count, is_subscribed, options, meeting, onEdit }: Props) => {
40
+ const { user } = useContext(UserContext);
41
+ const [loadComments, setLoadComments] = useState<boolean>(false);
42
+ const [showComments, setShowComments] = useState<boolean>(false);
43
+ const { openPreview, setPreviewFiles } = useContext(PreviewContext);
44
+ const date = dayjs.utc(created_at).tz(dayjs.tz.guess());
45
+ const trashPost = useMutateTrashPost();
46
+ const subscribe = useMutateSubscribe();
47
+ const unsubscribe = useMutateUnsubscribe();
48
+
49
+ let images = attachments?.filter((a: FileType) => a.kind === "image" && a.thumbnail_url);
50
+ let files = attachments?.filter((a: FileType) => a.kind !== "image" || !a.thumbnail_url);
51
+
52
+ const handleCommentsClick = (e: React.MouseEvent<HTMLAnchorElement>) => {
53
+ e.preventDefault();
54
+ setShowComments((previous) => !previous)
55
+ setLoadComments(true);
56
+ }
57
+
58
+ const handlePreviewClick = (e: React.MouseEvent<HTMLInputElement>, attachmentId: number) => {
59
+ e.preventDefault();
60
+ setPreviewFiles(attachments);
61
+ openPreview(attachmentId);
62
+ }
63
+
64
+ const handleTrash = () => {
65
+ trashPost.mutate({ id: id, appId: appId });
66
+ }
67
+
68
+ const handleSubscription = () => {
69
+ if (is_subscribed) {
70
+ unsubscribe.mutate({ id: id, appId: appId });
71
+ } else {
72
+ subscribe.mutate({ id: id, appId: appId });
73
+ }
74
+
75
+ }
76
+
77
+ return (
78
+ <div>
79
+ <div className='wy-item wy-item-lg'>
80
+ <Avatar src={created_by.avatar_url} size={48} name={created_by.display_name} />
81
+ <div className='wy-item-body'>
82
+ <div className='wy-item-row'>
83
+ <div className='wy-item-title'>{created_by.display_name}</div>
84
+ </div>
85
+ <div className='wy-item-row'>
86
+ <div className='wy-item-text'>
87
+ <time dateTime={created_at} title={date.format('LLLL')}>{date.fromNow()}</time>
88
+ {modified_at &&
89
+ <time dateTime={modified_at}> · edited</time>
90
+ }
91
+ </div>
92
+ </div>
93
+ </div>
94
+
95
+ <div className='wy-item-actions wy-item-actions-top'>
96
+ <Dropdown.UI directionX='left'>
97
+
98
+ {/* subscribe / unsubscribe */}
99
+ <Dropdown.Item onClick={handleSubscription}>
100
+ {is_subscribed &&
101
+ <>
102
+ <Icon.UI name="bell-off"></Icon.UI> Unsubscribe
103
+ </>
104
+ }
105
+ {!is_subscribed &&
106
+ <>
107
+ <Icon.UI name="bell"></Icon.UI> Subscribe
108
+ </>
109
+ }
110
+
111
+ </Dropdown.Item>
112
+
113
+ {/* edit action */}
114
+ {user.id === created_by.id &&
115
+ <Dropdown.Item onClick={onEdit}>
116
+ <Icon.UI name="pencil"></Icon.UI> Edit
117
+ </Dropdown.Item>
118
+ }
119
+
120
+ {/* trash action */}
121
+ {user.id === created_by.id &&
122
+ <Dropdown.Item onClick={handleTrash}>
123
+ <Icon.UI name="trashcan"></Icon.UI> Trash
124
+ </Dropdown.Item>
125
+ }
126
+ </Dropdown.UI>
127
+ </div>
128
+
129
+ </div>
130
+
131
+ {/* image grid */}
132
+ {images && !!images.length && <ImageGrid>
133
+ {images.map((a: FileType) =>
134
+ <React.Fragment key={a.id} >
135
+ {a.download_url &&
136
+ <Image onClick={(e) => handlePreviewClick(e, a.id)} src={a.download_url} previewSrc={a.preview_url} width={a.width} height={a.height} />
137
+ }
138
+ </React.Fragment>
139
+ )}
140
+ </ImageGrid>}
141
+
142
+ {/* embeds */}
143
+ {embed &&
144
+ <Embed embed={embed} />
145
+ }
146
+
147
+ <div className='wy-post-body'>
148
+ <div className='wy-content' dangerouslySetInnerHTML={{ __html: html }}>
149
+ {/* markdown */}
150
+
151
+ </div>
152
+
153
+ {/* poll */}
154
+ {options && options.length > 0 &&
155
+ <Poll appId={appId} parentId={id} options={options} />
156
+ }
157
+
158
+ {/* files */}
159
+ {files && !!files.length && <div className="wy-list wy-list-bordered">
160
+ {files.map((a: FileType) =>
161
+ <Attachment key={a.id} onClick={(e) => handlePreviewClick(e, a.id)} name={a.name} previewFormat={a.kind} provider={a.provider} url={a.download_url} previewUrl={a.provider ? a.external_url : a.preview_url} mediaType={a.media_type} kind={a.kind} size={a.size} />
162
+ )}
163
+ </div>}
164
+
165
+ {/* meeting */}
166
+ {meeting &&
167
+ <MeetingCard meeting={meeting}/>
168
+ }
169
+ </div>
170
+
171
+ <div className='wy-post-footer'>
172
+ <div className='wy-reactions-line'>
173
+ {/* reactions */}
174
+ <ReactionsList id={id} type="posts" parentId={appId} reactions={reactions} />
175
+ <ReactionsMenu id={id} type="posts" parentId={appId} reactions={reactions} />
176
+ </div>
177
+
178
+ {/* comment count */}
179
+ <a href="#" className='wy-meta' onClick={(e) => handleCommentsClick(e)}>
180
+ <CommentCount id={id} count={comment_count || 0} />
181
+ </a>
182
+ </div>
183
+
184
+ {/* comments */}
185
+ {loadComments &&
186
+ <div {...(showComments ? {} : { "hidden": true })}>
187
+ <Comments appId={appId} parentId={id} type="posts" />
188
+ </div>
189
+ }
190
+ </div>
191
+ )
192
+ }
193
+
194
+ export default PostView;
@@ -0,0 +1,59 @@
1
+ import React, { useState, useContext, useEffect, useCallback } from 'react';
2
+ import { WeavyContext } from '../contexts/WeavyContext';
3
+ import { PostsProps } from '../types/Posts';
4
+ import usePosts from '../hooks/usePosts';
5
+ import classNames from 'classnames';
6
+ import Editor from './Editor';
7
+ import PostList from './PostList';
8
+ import useMutatePost from '../hooks/useMutatePost';
9
+
10
+ const Posts = ({ uid, className }: PostsProps) => {
11
+
12
+ const { client } = useContext(WeavyContext);
13
+ const [appId, setAppId] = useState<number | null>(null);
14
+ const addPostMutation = useMutatePost();
15
+ if (!client) {
16
+ throw new Error('Weavy Posts component must be used within an WeavyProvider');
17
+ }
18
+
19
+ // init app
20
+ const { isLoading, data } = usePosts(uid, {});
21
+
22
+ useEffect(() => {
23
+ if (data) {
24
+ setAppId(data.id);
25
+ } else {
26
+ setAppId(null);
27
+ }
28
+ }, [data]);
29
+
30
+ const handleCreate = async (text: string, blobs: BlobType[], attachments: FileType[], meetingId: number | null, embed: number | null, options: PollOptionType[]) => {
31
+
32
+ await addPostMutation.mutateAsync({ appId: appId, text: text, blobs: blobs, meeting: meetingId, embed: embed, options: options }, {
33
+ onSuccess: (data: MessageType) => {
34
+
35
+ }
36
+ });
37
+ }
38
+
39
+ return (
40
+ <div className={classNames("wy-posts", className)}>
41
+
42
+ {!isLoading && !data &&
43
+ <div>No posts app with the contextual id <strong>{uid}</strong> was found.</div>
44
+ }
45
+ {appId && data &&
46
+ <div className='wy-post'>
47
+ <Editor editorType='posts' editorLocation='apps' appId={appId} placeholder={'Create a post'} buttonText='Post' onSubmit={handleCreate} showAttachments={true} showCloudFiles={true} showEmbeds={true} showPolls={true} useDraft={true}/>
48
+ </div>
49
+ }
50
+
51
+ {appId &&
52
+ <PostList appId={appId} />
53
+ }
54
+
55
+ </div>
56
+ )
57
+ }
58
+
59
+ export default Posts;
@@ -85,7 +85,7 @@ function mediaLoaded(event: any) {
85
85
  var src = event.target;
86
86
  if (src.tagName === 'VIDEO' || src.tagName === 'AUDIO') {
87
87
  if (src.classList.contains("wy-loading")) {
88
- console.log("loaded")
88
+ //console.log("loaded")
89
89
  src.classList.add("wy-loaded");
90
90
  }
91
91
  }
@@ -158,17 +158,15 @@ export const PreviewMedia = ({ format, src, name, mediaType }: MediaProps) => {
158
158
  <>
159
159
  <video ref={mediaRef} className="wy-content-video" controls crossOrigin="use-credentials" autoPlay>
160
160
  <source src={src} type={mediaType} />
161
- <PreviewIcon src={src} name={name} icon="file-video" download />
161
+ <PreviewIcon src={src} icon="file-video" />
162
162
  </video>
163
163
  <Spinner.UI />
164
164
  </>
165
- :
165
+ :
166
166
  <>
167
- <PreviewIcon src={src} name={name} icon="file-music" download>
168
- <audio ref={mediaRef} className="wy-content-audio" controls crossOrigin="use-credentials" autoPlay>
169
- <source src={src} type={mediaType} />
170
- </audio>
171
- </PreviewIcon>
167
+ <audio ref={mediaRef} className="wy-content-audio" controls crossOrigin="use-credentials" autoPlay>
168
+ <source src={src} type={mediaType} />
169
+ </audio>
172
170
  </>
173
171
  );
174
172
  }
@@ -235,14 +233,14 @@ export const PreviewEmbed = ({ src, name, icon, provider }: EmbedProps) => {
235
233
  useEffect(() => {
236
234
  if (embedElement) {
237
235
  let embedFallbackTimeout = setTimeout(function () {
238
- console.log("fallback");
236
+ //console.log("fallback");
239
237
  embedElement.classList.add("wy-fallback");
240
238
  }, 2500)
241
239
 
242
240
  let embedLoaded = (event: any) => {
243
241
  var obj = event.target;
244
242
  if (obj.tagName === 'OBJECT' && obj.classList.contains("wy-loading") && !obj.classList.contains("wy-loaded")) {
245
- console.log("loaded");
243
+ //console.log("loaded");
246
244
  obj.classList.add("wy-loaded");
247
245
  clearTimeout(embedFallbackTimeout);
248
246
  }
@@ -266,7 +264,7 @@ export const PreviewEmbed = ({ src, name, icon, provider }: EmbedProps) => {
266
264
 
267
265
  <Spinner.UI />
268
266
 
269
- <PreviewIcon src={src} name={name} icon={icon} provider={provider} className="wy-content-iframe-fallback" />
267
+ <PreviewIcon src={src} icon={icon} provider={provider} className="wy-content-iframe-fallback" />
270
268
  </>
271
269
  );
272
270
  }
@@ -275,13 +273,11 @@ type IconProps = {
275
273
  children?: React.ReactNode,
276
274
  src: string,
277
275
  icon: string,
278
- name: string,
279
276
  provider?: string,
280
- download?: boolean,
281
277
  className?: string
282
278
  }
283
279
 
284
- export const PreviewIcon = ({ children, src, icon, name, provider, download = false, className }: IconProps) => {
280
+ export const PreviewIcon = ({ children, src, icon, provider, className }: IconProps) => {
285
281
  return (
286
282
  <div className={classNames("wy-content-icon", className)}>
287
283
  <div className="wy-content-icon">
@@ -291,12 +287,9 @@ export const PreviewIcon = ({ children, src, icon, name, provider, download = fa
291
287
  {provider ?
292
288
  <>
293
289
  <span>No preview available. </span>
294
- <a href={src} target="_blank" title={name}>{`Open in ${provider}?`}</a>
295
- </>
296
- : download ?
297
- <a href={src} target="_top" download>{name}</a>
298
- :
299
- <a href={src} target="_blank">{name} <Icon.UI name="open-in-new" size={1} /></a>
290
+ <a href={src} target="_blank">{`Open in ${provider}?`}</a>
291
+ </>
292
+ : <span>No preview available :(</span>
300
293
  }
301
294
  </div>
302
295
  {children}
@@ -334,7 +327,7 @@ export const Preview = ({ client, src, link, format, name, icon, width, height,
334
327
  <PreviewText key={src} src={src} />
335
328
  }
336
329
  {format === "code" &&
337
- <PreviewText key={src} src={src} html code />
330
+ <PreviewText key={src} src={src} html={!/^(?:blob:|data:)/.test(src)} code />
338
331
  }
339
332
  {format === "html" &&
340
333
  <PreviewText key={src} src={src} html />
@@ -344,9 +337,9 @@ export const Preview = ({ client, src, link, format, name, icon, width, height,
344
337
  }
345
338
  {format === "none" && (
346
339
  link ?
347
- <PreviewIcon src={src} name={name} icon={icon} provider={provider} />
340
+ <PreviewIcon src={link} icon={icon} provider={provider} />
348
341
  :
349
- <PreviewIcon src={src} name={name} icon={icon} download />
342
+ <PreviewIcon src={src} icon={icon} />
350
343
  )}
351
344
  </>
352
345
  )