@selfcommunity/react-ui 0.7.0-alpha.334 → 0.7.0-alpha.336

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 (320) hide show
  1. package/lib/cjs/components/BottomNavigation/BottomNavigation.js +8 -11
  2. package/lib/cjs/components/BroadcastMessages/Message.js +14 -5
  3. package/lib/cjs/components/CommentsObject/CommentsObject.js +1 -22
  4. package/lib/cjs/components/Composer/Attributes/Attributes.d.ts +22 -0
  5. package/lib/cjs/components/Composer/Attributes/Attributes.js +41 -0
  6. package/lib/cjs/components/Composer/Attributes/index.d.ts +3 -0
  7. package/lib/cjs/components/Composer/{Poll → Attributes}/index.js +2 -2
  8. package/lib/cjs/components/Composer/Composer.d.ts +53 -84
  9. package/lib/cjs/components/Composer/Composer.js +249 -443
  10. package/lib/cjs/components/Composer/Content/ContentDiscussion/ContentDiscussion.d.ts +32 -0
  11. package/lib/cjs/components/Composer/Content/ContentDiscussion/ContentDiscussion.js +53 -0
  12. package/lib/cjs/components/Composer/Content/ContentDiscussion/index.d.ts +3 -0
  13. package/lib/cjs/components/Composer/Content/ContentDiscussion/index.js +5 -0
  14. package/lib/cjs/components/Composer/Content/ContentPoll/ContentPoll.d.ts +26 -0
  15. package/lib/cjs/components/Composer/Content/ContentPoll/ContentPoll.js +129 -0
  16. package/lib/cjs/components/Composer/Content/ContentPoll/index.d.ts +3 -0
  17. package/lib/cjs/components/Composer/Content/ContentPoll/index.js +5 -0
  18. package/lib/cjs/components/Composer/Content/ContentPost/ContentPost.d.ts +32 -0
  19. package/lib/cjs/components/Composer/Content/ContentPost/ContentPost.js +51 -0
  20. package/lib/cjs/components/Composer/Content/ContentPost/index.d.ts +3 -0
  21. package/lib/cjs/components/Composer/Content/ContentPost/index.js +5 -0
  22. package/lib/cjs/components/Composer/Layer/AudienceLayer/AudienceLayer.d.ts +11 -0
  23. package/lib/cjs/components/Composer/Layer/AudienceLayer/AudienceLayer.js +74 -0
  24. package/lib/cjs/components/Composer/Layer/AudienceLayer/index.d.ts +3 -0
  25. package/lib/cjs/components/Composer/Layer/AudienceLayer/index.js +5 -0
  26. package/lib/cjs/components/Composer/Layer/CategoryLayer/CategoryLayer.d.ts +9 -0
  27. package/lib/cjs/components/Composer/Layer/CategoryLayer/CategoryLayer.js +41 -0
  28. package/lib/cjs/components/Composer/Layer/CategoryLayer/index.d.ts +3 -0
  29. package/lib/cjs/components/Composer/Layer/CategoryLayer/index.js +5 -0
  30. package/lib/cjs/components/Composer/Layer/CloseLayer/CloseLayer.d.ts +7 -0
  31. package/lib/cjs/components/Composer/Layer/CloseLayer/CloseLayer.js +41 -0
  32. package/lib/cjs/components/Composer/Layer/CloseLayer/index.d.ts +3 -0
  33. package/lib/cjs/components/Composer/{Audience → Layer/CloseLayer}/index.js +2 -2
  34. package/lib/cjs/components/Composer/Layer/LocationLayer/LocationLayer.d.ts +9 -0
  35. package/lib/cjs/components/Composer/Layer/LocationLayer/LocationLayer.js +41 -0
  36. package/lib/cjs/components/Composer/Layer/LocationLayer/index.d.ts +3 -0
  37. package/lib/cjs/components/Composer/Layer/LocationLayer/index.js +5 -0
  38. package/lib/cjs/components/Composer/Skeleton.d.ts +0 -4
  39. package/lib/cjs/components/Composer/Skeleton.js +10 -72
  40. package/lib/cjs/components/Composer/TypeSwitchButtonGroup/TypeSwitchButtonGroup.d.ts +6 -0
  41. package/lib/cjs/components/Composer/TypeSwitchButtonGroup/TypeSwitchButtonGroup.js +47 -0
  42. package/lib/cjs/components/Composer/TypeSwitchButtonGroup/index.d.ts +3 -0
  43. package/lib/cjs/components/Composer/TypeSwitchButtonGroup/index.js +5 -0
  44. package/lib/cjs/components/Composer/constants.d.ts +1 -0
  45. package/lib/cjs/components/Composer/constants.js +4 -0
  46. package/lib/cjs/components/Composer/index.d.ts +2 -3
  47. package/lib/cjs/components/Composer/index.js +1 -6
  48. package/lib/cjs/components/ComposerIconButton/ComposerIconButton.d.ts +2 -1
  49. package/lib/cjs/components/ComposerIconButton/ComposerIconButton.js +8 -8
  50. package/lib/cjs/components/Editor/Editor.js +14 -5
  51. package/lib/cjs/components/Feed/prefetchedData.d.ts +2 -368
  52. package/lib/cjs/components/Feed/prefetchedData.js +17 -16
  53. package/lib/cjs/components/FeedObject/Actions/Share/Share.js +2 -2
  54. package/lib/cjs/components/FeedObject/FeedObject.d.ts +2 -2
  55. package/lib/cjs/components/FeedObject/FeedObject.js +8 -7
  56. package/lib/cjs/components/FeedObjectMediaPreview/FeedObjectMediaPreview.d.ts +38 -0
  57. package/lib/cjs/components/FeedObjectMediaPreview/FeedObjectMediaPreview.js +66 -0
  58. package/lib/cjs/components/FeedObjectMediaPreview/index.d.ts +3 -0
  59. package/lib/cjs/components/FeedObjectMediaPreview/index.js +5 -0
  60. package/lib/cjs/components/InlineComposerWidget/InlineComposerWidget.d.ts +25 -33
  61. package/lib/cjs/components/InlineComposerWidget/InlineComposerWidget.js +34 -67
  62. package/lib/cjs/components/InlineComposerWidget/Skeleton.d.ts +4 -5
  63. package/lib/cjs/components/InlineComposerWidget/Skeleton.js +17 -37
  64. package/lib/cjs/components/InlineComposerWidget/constants.d.ts +1 -0
  65. package/lib/cjs/components/InlineComposerWidget/constants.js +4 -0
  66. package/lib/cjs/components/LocationAutocomplete/LocationAutocomplete.d.ts +2 -2
  67. package/lib/cjs/components/LocationAutocomplete/LocationAutocomplete.js +4 -2
  68. package/lib/cjs/components/NavigationMenuIconButton/NavigationMenuIconButton.d.ts +1 -1
  69. package/lib/cjs/components/NavigationToolbarMobile/NavigationToolbarMobile.d.ts +0 -5
  70. package/lib/cjs/components/NavigationToolbarMobile/NavigationToolbarMobile.js +19 -30
  71. package/lib/cjs/components/NavigationToolbarMobile/Skeleton.js +5 -6
  72. package/lib/cjs/components/NavigationToolbarMobile/constants.d.ts +1 -0
  73. package/lib/cjs/components/NavigationToolbarMobile/constants.js +4 -0
  74. package/lib/cjs/constants/Composer.d.ts +2 -0
  75. package/lib/cjs/constants/Composer.js +4 -2
  76. package/lib/cjs/index.d.ts +12 -12
  77. package/lib/cjs/index.js +14 -17
  78. package/lib/cjs/shared/Lightbox/Lightbox.js +2 -2
  79. package/lib/{esm/shared/Media/Image/PreviewComponent.d.ts → cjs/shared/Media/File/DisplayComponent.d.ts} +1 -11
  80. package/lib/cjs/shared/Media/{Image/PreviewComponent.js → File/DisplayComponent.js} +55 -145
  81. package/lib/{esm/shared/Media/Image/PreviewImage → cjs/shared/Media/File/Lightbox}/index.d.ts +4 -3
  82. package/lib/cjs/shared/Media/File/Lightbox/index.js +37 -0
  83. package/lib/cjs/shared/Media/File/PreviewComponent.d.ts +9 -0
  84. package/lib/cjs/shared/Media/File/PreviewComponent.js +51 -0
  85. package/lib/cjs/shared/Media/File/TriggerButton.d.ts +12 -0
  86. package/lib/cjs/shared/Media/File/TriggerButton.js +112 -0
  87. package/lib/cjs/shared/Media/File/asUploadButton.d.ts +7 -0
  88. package/lib/cjs/shared/Media/File/asUploadButton.js +30 -0
  89. package/lib/cjs/shared/Media/File/constants.d.ts +1 -0
  90. package/lib/cjs/shared/Media/File/constants.js +4 -0
  91. package/lib/cjs/shared/Media/File/filter.d.ts +3 -0
  92. package/lib/cjs/shared/Media/File/filter.js +4 -0
  93. package/lib/cjs/shared/Media/File/index.d.ts +3 -0
  94. package/lib/cjs/shared/Media/File/index.js +16 -0
  95. package/lib/cjs/shared/Media/Link/DisplayComponent.d.ts +20 -0
  96. package/lib/cjs/shared/Media/Link/DisplayComponent.js +69 -0
  97. package/lib/cjs/shared/Media/Link/LayerComponent.d.ts +9 -0
  98. package/lib/cjs/shared/Media/Link/LayerComponent.js +46 -0
  99. package/lib/cjs/shared/Media/Link/PreviewComponent.d.ts +7 -21
  100. package/lib/cjs/shared/Media/Link/PreviewComponent.js +28 -56
  101. package/lib/cjs/shared/Media/Link/TriggerButton.d.ts +4 -0
  102. package/lib/cjs/shared/Media/Link/TriggerButton.js +21 -0
  103. package/lib/cjs/shared/Media/Link/UrlTextField/index.js +1 -2
  104. package/lib/cjs/shared/Media/Link/constants.d.ts +1 -0
  105. package/lib/cjs/shared/Media/Link/constants.js +4 -0
  106. package/lib/cjs/shared/Media/Link/filter.d.ts +3 -0
  107. package/lib/cjs/shared/Media/Link/filter.js +4 -0
  108. package/lib/cjs/shared/Media/Link/index.js +9 -8
  109. package/lib/cjs/shared/Media/Share/DisplayComponent.d.ts +11 -0
  110. package/lib/cjs/shared/Media/Share/DisplayComponent.js +31 -0
  111. package/lib/cjs/shared/Media/Share/constants.d.ts +1 -0
  112. package/lib/cjs/shared/Media/Share/constants.js +4 -0
  113. package/lib/cjs/shared/Media/Share/filter.d.ts +3 -0
  114. package/lib/cjs/shared/Media/Share/filter.js +4 -0
  115. package/lib/cjs/shared/Media/Share/index.js +7 -7
  116. package/lib/cjs/shared/Media/index.d.ts +2 -4
  117. package/lib/cjs/shared/Media/index.js +3 -7
  118. package/lib/cjs/types/composer.d.ts +15 -0
  119. package/lib/cjs/types/composer.js +2 -0
  120. package/lib/cjs/types/media.d.ts +9 -5
  121. package/lib/esm/components/BottomNavigation/BottomNavigation.js +8 -11
  122. package/lib/esm/components/BroadcastMessages/Message.js +14 -5
  123. package/lib/esm/components/CommentsObject/CommentsObject.js +1 -22
  124. package/lib/esm/components/Composer/Attributes/Attributes.d.ts +22 -0
  125. package/lib/esm/components/Composer/Attributes/Attributes.js +38 -0
  126. package/lib/esm/components/Composer/Attributes/index.d.ts +3 -0
  127. package/lib/esm/components/Composer/Attributes/index.js +2 -0
  128. package/lib/esm/components/Composer/Composer.d.ts +53 -84
  129. package/lib/esm/components/Composer/Composer.js +246 -439
  130. package/lib/esm/components/Composer/Content/ContentDiscussion/ContentDiscussion.d.ts +32 -0
  131. package/lib/esm/components/Composer/Content/ContentDiscussion/ContentDiscussion.js +50 -0
  132. package/lib/esm/components/Composer/Content/ContentDiscussion/index.d.ts +3 -0
  133. package/lib/esm/components/Composer/Content/ContentDiscussion/index.js +2 -0
  134. package/lib/esm/components/Composer/Content/ContentPoll/ContentPoll.d.ts +26 -0
  135. package/lib/esm/components/Composer/Content/ContentPoll/ContentPoll.js +127 -0
  136. package/lib/esm/components/Composer/Content/ContentPoll/index.d.ts +3 -0
  137. package/lib/esm/components/Composer/Content/ContentPoll/index.js +2 -0
  138. package/lib/esm/components/Composer/Content/ContentPost/ContentPost.d.ts +32 -0
  139. package/lib/esm/components/Composer/Content/ContentPost/ContentPost.js +49 -0
  140. package/lib/esm/components/Composer/Content/ContentPost/index.d.ts +3 -0
  141. package/lib/esm/components/Composer/Content/ContentPost/index.js +2 -0
  142. package/lib/esm/components/Composer/Layer/AudienceLayer/AudienceLayer.d.ts +11 -0
  143. package/lib/esm/components/Composer/Layer/AudienceLayer/AudienceLayer.js +72 -0
  144. package/lib/esm/components/Composer/Layer/AudienceLayer/index.d.ts +3 -0
  145. package/lib/esm/components/Composer/Layer/AudienceLayer/index.js +2 -0
  146. package/lib/esm/components/Composer/Layer/CategoryLayer/CategoryLayer.d.ts +9 -0
  147. package/lib/esm/components/Composer/Layer/CategoryLayer/CategoryLayer.js +39 -0
  148. package/lib/esm/components/Composer/Layer/CategoryLayer/index.d.ts +3 -0
  149. package/lib/esm/components/Composer/Layer/CategoryLayer/index.js +2 -0
  150. package/lib/esm/components/Composer/Layer/CloseLayer/CloseLayer.d.ts +7 -0
  151. package/lib/esm/components/Composer/Layer/CloseLayer/CloseLayer.js +39 -0
  152. package/lib/esm/components/Composer/Layer/CloseLayer/index.d.ts +3 -0
  153. package/lib/esm/components/Composer/Layer/CloseLayer/index.js +2 -0
  154. package/lib/esm/components/Composer/Layer/LocationLayer/LocationLayer.d.ts +9 -0
  155. package/lib/esm/components/Composer/Layer/LocationLayer/LocationLayer.js +39 -0
  156. package/lib/esm/components/Composer/Layer/LocationLayer/index.d.ts +3 -0
  157. package/lib/esm/components/Composer/Layer/LocationLayer/index.js +2 -0
  158. package/lib/esm/components/Composer/Skeleton.d.ts +0 -4
  159. package/lib/esm/components/Composer/Skeleton.js +6 -68
  160. package/lib/esm/components/Composer/TypeSwitchButtonGroup/TypeSwitchButtonGroup.d.ts +6 -0
  161. package/lib/esm/components/Composer/TypeSwitchButtonGroup/TypeSwitchButtonGroup.js +44 -0
  162. package/lib/esm/components/Composer/TypeSwitchButtonGroup/index.d.ts +3 -0
  163. package/lib/esm/components/Composer/TypeSwitchButtonGroup/index.js +2 -0
  164. package/lib/esm/components/Composer/constants.d.ts +1 -0
  165. package/lib/esm/components/Composer/constants.js +1 -0
  166. package/lib/esm/components/Composer/index.d.ts +2 -3
  167. package/lib/esm/components/Composer/index.js +1 -3
  168. package/lib/esm/components/ComposerIconButton/ComposerIconButton.d.ts +2 -1
  169. package/lib/esm/components/ComposerIconButton/ComposerIconButton.js +8 -8
  170. package/lib/esm/components/Editor/Editor.js +16 -7
  171. package/lib/esm/components/Feed/Feed.js +4 -4
  172. package/lib/esm/components/Feed/prefetchedData.d.ts +2 -368
  173. package/lib/esm/components/Feed/prefetchedData.js +17 -16
  174. package/lib/esm/components/FeedObject/Actions/Share/Share.js +4 -4
  175. package/lib/esm/components/FeedObject/FeedObject.d.ts +2 -2
  176. package/lib/esm/components/FeedObject/FeedObject.js +11 -10
  177. package/lib/esm/components/FeedObjectMediaPreview/FeedObjectMediaPreview.d.ts +38 -0
  178. package/lib/esm/components/FeedObjectMediaPreview/FeedObjectMediaPreview.js +64 -0
  179. package/lib/esm/components/FeedObjectMediaPreview/index.d.ts +3 -0
  180. package/lib/esm/components/FeedObjectMediaPreview/index.js +2 -0
  181. package/lib/esm/components/InlineComposerWidget/InlineComposerWidget.d.ts +25 -33
  182. package/lib/esm/components/InlineComposerWidget/InlineComposerWidget.js +31 -64
  183. package/lib/esm/components/InlineComposerWidget/Skeleton.d.ts +4 -5
  184. package/lib/esm/components/InlineComposerWidget/Skeleton.js +15 -35
  185. package/lib/esm/components/InlineComposerWidget/constants.d.ts +1 -0
  186. package/lib/esm/components/InlineComposerWidget/constants.js +1 -0
  187. package/lib/esm/components/LocationAutocomplete/LocationAutocomplete.d.ts +2 -2
  188. package/lib/esm/components/LocationAutocomplete/LocationAutocomplete.js +4 -2
  189. package/lib/esm/components/NavigationMenuIconButton/NavigationMenuIconButton.d.ts +1 -1
  190. package/lib/esm/components/NavigationMenuIconButton/NavigationMenuIconButton.js +1 -1
  191. package/lib/esm/components/NavigationToolbarMobile/NavigationToolbarMobile.d.ts +0 -5
  192. package/lib/esm/components/NavigationToolbarMobile/NavigationToolbarMobile.js +12 -23
  193. package/lib/esm/components/NavigationToolbarMobile/Skeleton.js +3 -4
  194. package/lib/esm/components/NavigationToolbarMobile/constants.d.ts +1 -0
  195. package/lib/esm/components/NavigationToolbarMobile/constants.js +1 -0
  196. package/lib/esm/constants/Composer.d.ts +2 -0
  197. package/lib/esm/constants/Composer.js +3 -1
  198. package/lib/esm/index.d.ts +12 -12
  199. package/lib/esm/index.js +33 -33
  200. package/lib/esm/shared/Lightbox/Lightbox.js +2 -2
  201. package/lib/{cjs/shared/Media/Image/PreviewComponent.d.ts → esm/shared/Media/File/DisplayComponent.d.ts} +1 -11
  202. package/lib/esm/shared/Media/{Image/PreviewComponent.js → File/DisplayComponent.js} +50 -140
  203. package/lib/{cjs/shared/Media/Image/PreviewImage → esm/shared/Media/File/Lightbox}/index.d.ts +4 -3
  204. package/lib/esm/shared/Media/File/Lightbox/index.js +34 -0
  205. package/lib/esm/shared/Media/File/PreviewComponent.d.ts +9 -0
  206. package/lib/esm/shared/Media/File/PreviewComponent.js +49 -0
  207. package/lib/esm/shared/Media/File/TriggerButton.d.ts +12 -0
  208. package/lib/esm/shared/Media/File/TriggerButton.js +110 -0
  209. package/lib/esm/shared/Media/File/asUploadButton.d.ts +7 -0
  210. package/lib/esm/shared/Media/File/asUploadButton.js +28 -0
  211. package/lib/esm/shared/Media/File/constants.d.ts +1 -0
  212. package/lib/esm/shared/Media/File/constants.js +1 -0
  213. package/lib/esm/shared/Media/File/filter.d.ts +3 -0
  214. package/lib/esm/shared/Media/File/filter.js +2 -0
  215. package/lib/esm/shared/Media/File/index.d.ts +3 -0
  216. package/lib/esm/shared/Media/File/index.js +13 -0
  217. package/lib/esm/shared/Media/Link/DisplayComponent.d.ts +20 -0
  218. package/lib/esm/shared/Media/Link/DisplayComponent.js +67 -0
  219. package/lib/esm/shared/Media/Link/LayerComponent.d.ts +9 -0
  220. package/lib/esm/shared/Media/Link/LayerComponent.js +44 -0
  221. package/lib/esm/shared/Media/Link/PreviewComponent.d.ts +7 -21
  222. package/lib/esm/shared/Media/Link/PreviewComponent.js +27 -54
  223. package/lib/esm/shared/Media/Link/TriggerButton.d.ts +4 -0
  224. package/lib/esm/shared/Media/Link/TriggerButton.js +19 -0
  225. package/lib/esm/shared/Media/Link/UrlTextField/index.js +2 -3
  226. package/lib/esm/shared/Media/Link/constants.d.ts +1 -0
  227. package/lib/esm/shared/Media/Link/constants.js +1 -0
  228. package/lib/esm/shared/Media/Link/filter.d.ts +3 -0
  229. package/lib/esm/shared/Media/Link/filter.js +2 -0
  230. package/lib/esm/shared/Media/Link/index.js +9 -8
  231. package/lib/esm/shared/Media/Share/DisplayComponent.d.ts +11 -0
  232. package/lib/esm/shared/Media/Share/DisplayComponent.js +29 -0
  233. package/lib/esm/shared/Media/Share/constants.d.ts +1 -0
  234. package/lib/esm/shared/Media/Share/constants.js +1 -0
  235. package/lib/esm/shared/Media/Share/filter.d.ts +3 -0
  236. package/lib/esm/shared/Media/Share/filter.js +2 -0
  237. package/lib/esm/shared/Media/Share/index.js +7 -7
  238. package/lib/esm/shared/Media/index.d.ts +2 -4
  239. package/lib/esm/shared/Media/index.js +2 -4
  240. package/lib/esm/types/composer.d.ts +15 -0
  241. package/lib/esm/types/composer.js +1 -0
  242. package/lib/esm/types/media.d.ts +9 -5
  243. package/lib/umd/react-ui.js +1 -1
  244. package/package.json +7 -7
  245. package/lib/cjs/components/Composer/Audience/Audience.d.ts +0 -71
  246. package/lib/cjs/components/Composer/Audience/Audience.js +0 -69
  247. package/lib/cjs/components/Composer/Audience/index.d.ts +0 -3
  248. package/lib/cjs/components/Composer/Poll/Poll.d.ts +0 -31
  249. package/lib/cjs/components/Composer/Poll/Poll.js +0 -151
  250. package/lib/cjs/components/Composer/Poll/index.d.ts +0 -3
  251. package/lib/cjs/shared/Media/Document/EditButton.d.ts +0 -2
  252. package/lib/cjs/shared/Media/Document/EditButton.js +0 -10
  253. package/lib/cjs/shared/Media/Document/EditComponent.d.ts +0 -3
  254. package/lib/cjs/shared/Media/Document/EditComponent.js +0 -103
  255. package/lib/cjs/shared/Media/Document/PreviewComponent.d.ts +0 -3
  256. package/lib/cjs/shared/Media/Document/PreviewComponent.js +0 -43
  257. package/lib/cjs/shared/Media/Document/index.d.ts +0 -3
  258. package/lib/cjs/shared/Media/Document/index.js +0 -16
  259. package/lib/cjs/shared/Media/Image/EditButton.d.ts +0 -2
  260. package/lib/cjs/shared/Media/Image/EditButton.js +0 -10
  261. package/lib/cjs/shared/Media/Image/EditComponent.d.ts +0 -3
  262. package/lib/cjs/shared/Media/Image/EditComponent.js +0 -102
  263. package/lib/cjs/shared/Media/Image/PreviewImage/index.js +0 -41
  264. package/lib/cjs/shared/Media/Image/index.d.ts +0 -3
  265. package/lib/cjs/shared/Media/Image/index.js +0 -16
  266. package/lib/cjs/shared/Media/Link/EditButton.d.ts +0 -2
  267. package/lib/cjs/shared/Media/Link/EditButton.js +0 -10
  268. package/lib/cjs/shared/Media/Link/EditComponent.d.ts +0 -3
  269. package/lib/cjs/shared/Media/Link/EditComponent.js +0 -46
  270. package/lib/cjs/shared/Media/Share/PreviewComponent.d.ts +0 -7
  271. package/lib/cjs/shared/Media/Share/PreviewComponent.js +0 -32
  272. package/lib/cjs/shared/Media/Video/EditButton.d.ts +0 -2
  273. package/lib/cjs/shared/Media/Video/EditButton.js +0 -10
  274. package/lib/cjs/shared/Media/Video/EditComponent.d.ts +0 -3
  275. package/lib/cjs/shared/Media/Video/EditComponent.js +0 -89
  276. package/lib/cjs/shared/Media/Video/PreviewComponent.d.ts +0 -19
  277. package/lib/cjs/shared/Media/Video/PreviewComponent.js +0 -37
  278. package/lib/cjs/shared/Media/Video/index.d.ts +0 -3
  279. package/lib/cjs/shared/Media/Video/index.js +0 -16
  280. package/lib/cjs/shared/MediasPreview/index.d.ts +0 -18
  281. package/lib/cjs/shared/MediasPreview/index.js +0 -44
  282. package/lib/esm/components/Composer/Audience/Audience.d.ts +0 -71
  283. package/lib/esm/components/Composer/Audience/Audience.js +0 -66
  284. package/lib/esm/components/Composer/Audience/index.d.ts +0 -3
  285. package/lib/esm/components/Composer/Audience/index.js +0 -2
  286. package/lib/esm/components/Composer/Poll/Poll.d.ts +0 -31
  287. package/lib/esm/components/Composer/Poll/Poll.js +0 -149
  288. package/lib/esm/components/Composer/Poll/index.d.ts +0 -3
  289. package/lib/esm/components/Composer/Poll/index.js +0 -2
  290. package/lib/esm/shared/Media/Document/EditButton.d.ts +0 -2
  291. package/lib/esm/shared/Media/Document/EditButton.js +0 -7
  292. package/lib/esm/shared/Media/Document/EditComponent.d.ts +0 -3
  293. package/lib/esm/shared/Media/Document/EditComponent.js +0 -101
  294. package/lib/esm/shared/Media/Document/PreviewComponent.d.ts +0 -3
  295. package/lib/esm/shared/Media/Document/PreviewComponent.js +0 -41
  296. package/lib/esm/shared/Media/Document/index.d.ts +0 -3
  297. package/lib/esm/shared/Media/Document/index.js +0 -13
  298. package/lib/esm/shared/Media/Image/EditButton.d.ts +0 -2
  299. package/lib/esm/shared/Media/Image/EditButton.js +0 -7
  300. package/lib/esm/shared/Media/Image/EditComponent.d.ts +0 -3
  301. package/lib/esm/shared/Media/Image/EditComponent.js +0 -100
  302. package/lib/esm/shared/Media/Image/PreviewImage/index.js +0 -38
  303. package/lib/esm/shared/Media/Image/index.d.ts +0 -3
  304. package/lib/esm/shared/Media/Image/index.js +0 -13
  305. package/lib/esm/shared/Media/Link/EditButton.d.ts +0 -2
  306. package/lib/esm/shared/Media/Link/EditButton.js +0 -7
  307. package/lib/esm/shared/Media/Link/EditComponent.d.ts +0 -3
  308. package/lib/esm/shared/Media/Link/EditComponent.js +0 -43
  309. package/lib/esm/shared/Media/Share/PreviewComponent.d.ts +0 -7
  310. package/lib/esm/shared/Media/Share/PreviewComponent.js +0 -29
  311. package/lib/esm/shared/Media/Video/EditButton.d.ts +0 -2
  312. package/lib/esm/shared/Media/Video/EditButton.js +0 -7
  313. package/lib/esm/shared/Media/Video/EditComponent.d.ts +0 -3
  314. package/lib/esm/shared/Media/Video/EditComponent.js +0 -87
  315. package/lib/esm/shared/Media/Video/PreviewComponent.d.ts +0 -19
  316. package/lib/esm/shared/Media/Video/PreviewComponent.js +0 -34
  317. package/lib/esm/shared/Media/Video/index.d.ts +0 -3
  318. package/lib/esm/shared/Media/Video/index.js +0 -13
  319. package/lib/esm/shared/MediasPreview/index.d.ts +0 -18
  320. package/lib/esm/shared/MediasPreview/index.js +0 -42
@@ -1,129 +1,40 @@
1
- import React, { useState } from 'react';
1
+ import React, { useCallback, useMemo, useState } from 'react';
2
2
  import { styled } from '@mui/material/styles';
3
- import PreviewImage from './PreviewImage';
4
- import { Grid, Typography, Box } from '@mui/material';
3
+ import Lightbox from './Lightbox';
4
+ import { Box, Grid, Typography } from '@mui/material';
5
5
  import classNames from 'classnames';
6
6
  import Icon from '@mui/material/Icon';
7
7
  import { useInView } from 'react-intersection-observer';
8
- const PREFIX = 'SCPreviewMediaImage';
8
+ import { PREFIX } from './constants';
9
+ import filter from './filter';
9
10
  const classes = {
10
- root: `${PREFIX}-root`,
11
+ displayRoot: `${PREFIX}-display-root`,
11
12
  background: `${PREFIX}-background`,
12
- backgroundPortrait: `${PREFIX}-backgroundPortrait`,
13
- heightOne: `${PREFIX}-heightOne`,
14
- heightHalfOne: `${PREFIX}-heightHalfOne`,
15
- heightTwo: `${PREFIX}-heightTwo`,
16
- heightThree: `${PREFIX}-heightThree`,
13
+ backgroundPortrait: `${PREFIX}-background-portrait`,
14
+ heightOne: `${PREFIX}-height-one`,
15
+ heightHalfOne: `${PREFIX}-height-half-one`,
16
+ heightTwo: `${PREFIX}-height-two`,
17
+ heightThree: `${PREFIX}-height-three`,
17
18
  cover: `${PREFIX}-cover`,
18
- coverText: `${PREFIX}-coverText`,
19
+ coverText: `${PREFIX}-cover-text`,
19
20
  slide: `${PREFIX}-slide`,
20
21
  border: `${PREFIX}-border`,
21
22
  gallery: `${PREFIX}-gallery`,
22
23
  title: `${PREFIX}-title`,
23
- iconFile: `${PREFIX}-iconFile`
24
+ iconFile: `${PREFIX}-icon-file`
24
25
  };
25
26
  const Root = styled(Box, {
26
27
  name: PREFIX,
27
- slot: 'Root',
28
- overridesResolver: (props, styles) => styles.root
29
- })(({ theme }) => ({
30
- textAlign: 'center',
31
- margin: 'auto',
32
- width: '100%',
33
- position: 'relative',
34
- [theme.breakpoints.down('md')]: {
35
- minHeight: 170
36
- },
37
- [`& .${classes.background}`]: {
38
- backgroundSize: 'cover !important',
39
- backgroundPosition: 'center !important',
40
- backgroundRepeat: 'no-repeat !important'
41
- },
42
- [`& .${classes.backgroundPortrait}`]: {
43
- backgroundSize: 'contain !important',
44
- backgroundPosition: 'center !important',
45
- backgroundRepeat: 'no-repeat !important'
46
- },
47
- [`& .${classes.heightOne}`]: {
48
- width: '100%',
49
- paddingTop: '99%'
50
- },
51
- [`& .${classes.heightHalfOne}`]: {
52
- paddingTop: '50%'
53
- },
54
- [`& .${classes.heightTwo}`]: {
55
- width: '50%',
56
- paddingTop: '50%'
57
- },
58
- [`& .${classes.heightThree}`]: {
59
- width: '33.3333%',
60
- paddingTop: '33.3333%'
61
- },
62
- [`& .${classes.cover}`]: {
63
- backgroundColor: 'rgba(102,102,102,0.2)',
64
- opacity: 0.8,
65
- position: 'absolute',
66
- right: 0,
67
- top: 0,
68
- left: 0,
69
- bottom: 0
70
- },
71
- [`& .${classes.coverText}`]: {
72
- right: 0,
73
- left: 0,
74
- bottom: 0,
75
- color: '#FFF',
76
- fontSize: '7%',
77
- position: 'absolute',
78
- top: '50%',
79
- transform: 'translate(0%, -50%)',
80
- textAlign: 'center',
81
- '& > p': {
82
- margin: 0,
83
- position: 'absolute',
84
- top: '50%',
85
- left: '50%',
86
- transform: 'translate(-50%, -50%)'
87
- }
88
- },
89
- [`& .${classes.slide}`]: {
90
- height: 0,
91
- bottom: '100%',
92
- overflow: 'hidden',
93
- fontSize: '3%',
94
- color: '#FFF'
95
- },
96
- [`& .${classes.border}`]: {
97
- position: 'relative',
98
- border: '2px solid #FFF',
99
- '&:hover > div': {
100
- bottom: 0,
101
- height: 'auto'
102
- },
103
- '&:hover > div.animate-text': {
104
- top: '66%'
105
- }
106
- },
107
- [`& .${classes.gallery}`]: {
108
- cursor: 'pointer'
109
- },
110
- [`& .${classes.title} .MuiTypography-root`]: {
111
- color: '#FFF',
112
- backgroundColor: theme.palette.getContrastText('#FFF'),
113
- opacity: 0.6
114
- },
115
- [`& .${classes.iconFile}`]: {
116
- fontSize: 14,
117
- position: 'relative',
118
- top: 2
119
- }
120
- }));
28
+ slot: 'DisplayRoot'
29
+ })(({ theme }) => ({}));
121
30
  export default (props) => {
122
31
  // PROPS
123
- const { className = '', medias = [], maxVisible = 5, gallery = true, adornment = null, onClick = null, onMediaClick = null } = props;
32
+ const { className = '', medias = [], maxVisible = 5, gallery = true, onMediaClick = null } = props;
124
33
  // STATE
125
34
  const [preview, setPreview] = useState(-1);
126
35
  const { ref, inView } = useInView({ triggerOnce: false });
36
+ // MEMO
37
+ const _medias = useMemo(() => medias.filter(filter), [medias]);
127
38
  // HANDLERS
128
39
  const handleClose = () => {
129
40
  setPreview(-1);
@@ -136,17 +47,14 @@ export default (props) => {
136
47
  }
137
48
  return image;
138
49
  };
139
- const openPreviewImage = (index) => {
140
- if (onClick) {
141
- return onClick({ src: medias[index], index });
142
- }
50
+ const openPreviewImage = useCallback((index) => {
143
51
  if (gallery === false) {
144
52
  // Prevent gallery
145
53
  return;
146
54
  }
147
55
  setPreview(index);
148
- onMediaClick(medias[index]);
149
- };
56
+ onMediaClick(_medias[index]);
57
+ }, [_medias]);
150
58
  // RENDERING
151
59
  const renderTitle = (o) => {
152
60
  if (!o) {
@@ -170,42 +78,42 @@ export default (props) => {
170
78
  o.title)))));
171
79
  };
172
80
  const renderOne = () => {
173
- const overlay = medias.length > maxVisible && maxVisible == 1 ? renderCountOverlay(true) : renderOverlay(0);
174
- const isGif = medias[0].image_mimetype ? medias[0].image_mimetype.includes('image/gif') : false;
175
- const isLandscape = medias[0].image_height < medias[0].image_width;
176
- return (React.createElement(Grid, { container: true, style: Object.assign({}, (medias[0].image_thumbnail && medias[0].image_thumbnail.color ? { backgroundColor: medias[0].image_thumbnail.color } : {})) },
81
+ const overlay = _medias.length > maxVisible && maxVisible == 1 ? renderCountOverlay(true) : renderOverlay(0);
82
+ const isGif = _medias[0].image_mimetype ? _medias[0].image_mimetype.includes('image/gif') : false;
83
+ const isLandscape = _medias[0].image_height < _medias[0].image_width;
84
+ return (React.createElement(Grid, { container: true, style: Object.assign({}, (_medias[0].image_thumbnail && _medias[0].image_thumbnail.color ? { backgroundColor: _medias[0].image_thumbnail.color } : {})) },
177
85
  React.createElement(Grid, { item: true, ref: ref, xs: 12, classes: {
178
- root: classNames(classes.border, classes.heightOne, Object.assign(Object.assign({}, (isGif || isLandscape ? { [classes.background]: true } : { [classes.backgroundPortrait]: true })), { [classes.gallery]: gallery, [classes.heightHalfOne]: medias.length > 1 }))
179
- }, onClick: () => openPreviewImage(0), style: Object.assign({ background: `url(${getImageUrl(medias[0], inView && isGif)})` }, (isLandscape ? { paddingTop: `${(100 * medias[0].image_height) / medias[0].image_width}%` } : {})) },
86
+ root: classNames(classes.border, classes.heightOne, Object.assign(Object.assign({}, (isGif || isLandscape ? { [classes.background]: true } : { [classes.backgroundPortrait]: true })), { [classes.gallery]: gallery, [classes.heightHalfOne]: _medias.length > 1 }))
87
+ }, onClick: () => openPreviewImage(0), style: Object.assign({ background: `url(${getImageUrl(_medias[0], inView && isGif)})` }, (isLandscape ? { paddingTop: `${(100 * _medias[0].image_height) / _medias[0].image_width}%` } : {})) },
180
88
  overlay,
181
- renderTitle(medias[0]))));
89
+ renderTitle(_medias[0]))));
182
90
  };
183
91
  const renderTwo = () => {
184
- const overlay = medias.length > maxVisible && [2, 3].includes(+maxVisible) ? renderCountOverlay(true) : renderOverlay(1);
185
- const conditionalRender = [3, 4].includes(medias.length) || (medias.length > +maxVisible && [3, 4].includes(+maxVisible));
92
+ const overlay = _medias.length > maxVisible && [2, 3].includes(+maxVisible) ? renderCountOverlay(true) : renderOverlay(1);
93
+ const conditionalRender = [3, 4].includes(_medias.length) || (_medias.length > +maxVisible && [3, 4].includes(+maxVisible));
186
94
  return (React.createElement(Grid, { container: true },
187
- React.createElement(Grid, { item: true, xs: 6, classes: { root: classNames(classes.border, classes.heightTwo, classes.background, { [classes.gallery]: gallery }) }, onClick: () => openPreviewImage(conditionalRender ? 1 : 0), style: { background: `url(${getImageUrl(conditionalRender ? medias[1] : medias[0])})` } },
95
+ React.createElement(Grid, { item: true, xs: 6, classes: { root: classNames(classes.border, classes.heightTwo, classes.background, { [classes.gallery]: gallery }) }, onClick: () => openPreviewImage(conditionalRender ? 1 : 0), style: { background: `url(${getImageUrl(conditionalRender ? _medias[1] : _medias[0])})` } },
188
96
  renderOverlay(conditionalRender ? 1 : 0),
189
- renderTitle(medias[0])),
190
- React.createElement(Grid, { item: true, xs: 6, classes: { root: classNames(classes.border, classes.heightTwo, classes.background, { [classes.gallery]: gallery }) }, onClick: () => openPreviewImage(conditionalRender ? 2 : 1), style: { background: `url(${getImageUrl(conditionalRender ? medias[2] : medias[1])})` } },
97
+ renderTitle(_medias[0])),
98
+ React.createElement(Grid, { item: true, xs: 6, classes: { root: classNames(classes.border, classes.heightTwo, classes.background, { [classes.gallery]: gallery }) }, onClick: () => openPreviewImage(conditionalRender ? 2 : 1), style: { background: `url(${getImageUrl(conditionalRender ? _medias[2] : _medias[1])})` } },
191
99
  overlay,
192
- renderTitle(medias[1]))));
100
+ renderTitle(_medias[1]))));
193
101
  };
194
102
  const renderThree = () => {
195
- const conditionalRender = medias.length == 4 || (medias.length > +maxVisible && +maxVisible == 4);
196
- const overlay = !maxVisible || maxVisible > 5 || (medias.length > maxVisible && [4, 5].includes(+maxVisible))
103
+ const conditionalRender = _medias.length == 4 || (_medias.length > +maxVisible && +maxVisible == 4);
104
+ const overlay = !maxVisible || maxVisible > 5 || (_medias.length > maxVisible && [4, 5].includes(+maxVisible))
197
105
  ? renderCountOverlay(true)
198
106
  : renderOverlay(conditionalRender ? 3 : 4);
199
107
  return (React.createElement(Grid, { container: true },
200
- React.createElement(Grid, { item: true, xs: 4, md: 4, classes: { root: classNames(classes.border, classes.heightThree, classes.background, { [classes.gallery]: gallery }) }, onClick: () => openPreviewImage(conditionalRender ? 1 : 2), style: { background: `url(${getImageUrl(conditionalRender ? medias[1] : medias[2])})` } },
108
+ React.createElement(Grid, { item: true, xs: 4, md: 4, classes: { root: classNames(classes.border, classes.heightThree, classes.background, { [classes.gallery]: gallery }) }, onClick: () => openPreviewImage(conditionalRender ? 1 : 2), style: { background: `url(${getImageUrl(conditionalRender ? _medias[1] : _medias[2])})` } },
201
109
  renderOverlay(conditionalRender ? 1 : 2),
202
- renderTitle(medias[1])),
203
- React.createElement(Grid, { item: true, xs: 4, md: 4, classes: { root: classNames(classes.border, classes.heightThree, classes.background, { [classes.gallery]: gallery }) }, onClick: () => openPreviewImage(conditionalRender ? 2 : 3), style: { background: `url(${getImageUrl(conditionalRender ? medias[2] : medias[3])})` } },
110
+ renderTitle(_medias[1])),
111
+ React.createElement(Grid, { item: true, xs: 4, md: 4, classes: { root: classNames(classes.border, classes.heightThree, classes.background, { [classes.gallery]: gallery }) }, onClick: () => openPreviewImage(conditionalRender ? 2 : 3), style: { background: `url(${getImageUrl(conditionalRender ? _medias[2] : _medias[3])})` } },
204
112
  renderOverlay(conditionalRender ? 2 : 3),
205
- renderTitle(medias[2])),
206
- React.createElement(Grid, { item: true, xs: 4, md: 4, classes: { root: classNames(classes.border, classes.heightThree, classes.background, { [classes.gallery]: gallery }) }, onClick: () => openPreviewImage(conditionalRender ? 3 : 4), style: { background: `url(${getImageUrl(conditionalRender ? medias[3] : medias[4])})` } },
113
+ renderTitle(_medias[2])),
114
+ React.createElement(Grid, { item: true, xs: 4, md: 4, classes: { root: classNames(classes.border, classes.heightThree, classes.background, { [classes.gallery]: gallery }) }, onClick: () => openPreviewImage(conditionalRender ? 3 : 4), style: { background: `url(${getImageUrl(conditionalRender ? _medias[3] : _medias[4])})` } },
207
115
  overlay,
208
- renderTitle(medias[3]))));
116
+ renderTitle(_medias[3]))));
209
117
  };
210
118
  const renderOverlay = (id) => {
211
119
  if (!gallery) {
@@ -218,7 +126,7 @@ export default (props) => {
218
126
  ];
219
127
  };
220
128
  const renderCountOverlay = (more) => {
221
- const extra = medias.length - (maxVisible && maxVisible > 5 ? 5 : maxVisible);
129
+ const extra = _medias.length - (maxVisible && maxVisible > 5 ? 5 : maxVisible);
222
130
  return [
223
131
  more && React.createElement("div", { key: "count", className: classes.cover }),
224
132
  more && (React.createElement("div", { key: "count-sub", className: classes.coverText, style: { fontSize: '200%' } },
@@ -227,14 +135,16 @@ export default (props) => {
227
135
  extra)))
228
136
  ];
229
137
  };
230
- const imagesToShow = [...medias];
231
- if (maxVisible && medias.length > maxVisible) {
138
+ const imagesToShow = [..._medias];
139
+ if (maxVisible && _medias.length > maxVisible) {
232
140
  imagesToShow.length = maxVisible;
233
141
  }
234
- return (React.createElement(React.Fragment, null, medias.length > 0 && (React.createElement(Root, { className: classNames(classes.root, className) },
235
- adornment,
142
+ if (_medias.length === 0) {
143
+ return null;
144
+ }
145
+ return (React.createElement(Root, { className: classNames(classes.displayRoot, className) },
236
146
  [1, 3, 4].includes(imagesToShow.length) && renderOne(),
237
147
  imagesToShow.length >= 2 && imagesToShow.length != 4 && renderTwo(),
238
148
  imagesToShow.length >= 4 && renderThree(),
239
- preview !== -1 && React.createElement(PreviewImage, { onClose: handleClose, index: preview, images: medias })))));
149
+ preview !== -1 && React.createElement(Lightbox, { onClose: handleClose, index: preview, medias: _medias })));
240
150
  };
@@ -1,9 +1,10 @@
1
- export interface PreviewImageProps {
1
+ import { SCMediaType } from '@selfcommunity/types/src/types';
2
+ export interface LightboxProps {
2
3
  /**
3
4
  * Images objs
4
5
  * @default []
5
6
  */
6
- images: any[];
7
+ medias: SCMediaType[];
7
8
  /**
8
9
  * Obj index
9
10
  * @default null
@@ -24,4 +25,4 @@ export interface PreviewImageProps {
24
25
  */
25
26
  [p: string]: any;
26
27
  }
27
- export default function PreviewImage(props: PreviewImageProps): JSX.Element;
28
+ export default function Lightbox(props: LightboxProps): JSX.Element;
@@ -0,0 +1,34 @@
1
+ import { __rest } from "tslib";
2
+ import React, { useCallback } from 'react';
3
+ import { styled } from '@mui/material/styles';
4
+ import BaseLightbox from '../../../Lightbox';
5
+ import { PREFIX } from '../constants';
6
+ import { MEDIA_TYPE_DOCUMENT } from '../../../../constants/Media';
7
+ import { IconButton } from '@mui/material';
8
+ import { Link } from '@selfcommunity/react-core';
9
+ import Icon from '@mui/material/Icon';
10
+ const classes = {
11
+ root: `${PREFIX}-lightbox-root`
12
+ };
13
+ const Root = styled(BaseLightbox, {
14
+ name: PREFIX,
15
+ slot: 'LightboxRoot'
16
+ })(() => ({}));
17
+ export default function Lightbox(props) {
18
+ // PROPS
19
+ const { medias = [], index = 0, onClose, onIndexChange } = props, rest = __rest(props, ["medias", "index", "onClose", "onIndexChange"]);
20
+ const mediaToDataTypeMap = useCallback((media, index) => {
21
+ return { src: media.image, width: media.image_width, height: media.image_height, key: index };
22
+ }, []);
23
+ const toolbarRender = useCallback((props) => {
24
+ if (medias[props.index].type === MEDIA_TYPE_DOCUMENT) {
25
+ return React.createElement(IconButton, { component: Link, to: medias[props.index].url, target: "_blank", color: "inherit" },
26
+ React.createElement(Icon, null, "download"));
27
+ }
28
+ return React.createElement(React.Fragment, null);
29
+ }, [medias]);
30
+ /**
31
+ * Renders root object
32
+ */
33
+ return (React.createElement(Root, Object.assign({}, rest, { className: classes.root, images: medias.map(mediaToDataTypeMap), visible: index !== -1, onClose: onClose, index: index, onIndexChange: onIndexChange, toolbarRender: toolbarRender })));
34
+ }
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import { BoxProps } from '@mui/material';
3
+ import { SCMediaType } from '@selfcommunity/types/src/index';
4
+ export interface PreviewComponentProps extends Omit<BoxProps, 'value' | 'onChange'> {
5
+ onChange: (value: SCMediaType[]) => void;
6
+ value: SCMediaType[];
7
+ }
8
+ declare const PreviewComponent: React.ForwardRefExoticComponent<Pick<PreviewComponentProps, "p" | "slot" | "style" | "title" | "key" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "border" | "borderTop" | "borderRight" | "borderBottom" | "borderLeft" | "borderColor" | "borderRadius" | "display" | "displayPrint" | "overflow" | "textOverflow" | "visibility" | "whiteSpace" | "flexBasis" | "flexDirection" | "flexWrap" | "justifyContent" | "alignItems" | "alignContent" | "order" | "flex" | "flexGrow" | "flexShrink" | "alignSelf" | "justifyItems" | "justifySelf" | "gap" | "columnGap" | "rowGap" | "gridColumn" | "gridRow" | "gridAutoFlow" | "gridAutoColumns" | "gridAutoRows" | "gridTemplateColumns" | "gridTemplateRows" | "gridTemplateAreas" | "gridArea" | "bgcolor" | "zIndex" | "position" | "top" | "right" | "bottom" | "left" | "boxShadow" | "width" | "maxWidth" | "minWidth" | "height" | "maxHeight" | "minHeight" | "boxSizing" | "m" | "mt" | "mr" | "mb" | "ml" | "mx" | "my" | "pt" | "pr" | "pb" | "pl" | "px" | "py" | "margin" | "marginTop" | "marginRight" | "marginBottom" | "marginLeft" | "marginX" | "marginY" | "marginInline" | "marginInlineStart" | "marginInlineEnd" | "marginBlock" | "marginBlockStart" | "marginBlockEnd" | "padding" | "paddingTop" | "paddingRight" | "paddingBottom" | "paddingLeft" | "paddingX" | "paddingY" | "paddingInline" | "paddingInlineStart" | "paddingInlineEnd" | "paddingBlock" | "paddingBlockStart" | "paddingBlockEnd" | "typography" | "fontFamily" | "fontSize" | "fontStyle" | "fontWeight" | "letterSpacing" | "lineHeight" | "textAlign" | "textTransform" | "component" | "sx" | "classes" | "value"> & React.RefAttributes<unknown>>;
9
+ export default PreviewComponent;
@@ -0,0 +1,49 @@
1
+ import { __rest } from "tslib";
2
+ import React, { useCallback, useEffect, useMemo } from 'react';
3
+ import { Box, IconButton, Typography } from '@mui/material';
4
+ import { styled } from '@mui/material/styles';
5
+ import Icon from '@mui/material/Icon';
6
+ import classNames from 'classnames';
7
+ import { ReactSortable } from 'react-sortablejs';
8
+ import { PREFIX } from './constants';
9
+ import filter from './filter';
10
+ import { MEDIA_TYPE_DOCUMENT } from '../../../constants/Media';
11
+ const classes = {
12
+ previewRoot: `${PREFIX}-preview-root`,
13
+ media: `${PREFIX}-media`,
14
+ delete: `${PREFIX}-delete`,
15
+ title: `${PREFIX}-title`
16
+ };
17
+ const Root = styled(Box, {
18
+ name: PREFIX,
19
+ slot: 'PreviewRoot'
20
+ })(() => ({}));
21
+ const SORTABLE_ID = 'file_sort';
22
+ const PreviewComponent = React.forwardRef((props, ref) => {
23
+ // PROPS
24
+ const { className, onChange, value = [] } = props, rest = __rest(props, ["className", "onChange", "value"]);
25
+ // MEMO
26
+ const medias = useMemo(() => value.filter(filter), [value]);
27
+ // EFFECTS
28
+ useEffect(() => {
29
+ if (typeof document === undefined) {
30
+ return null;
31
+ }
32
+ const sortable = document.getElementById(SORTABLE_ID);
33
+ if (sortable) {
34
+ sortable.scrollLeft = sortable.scrollWidth;
35
+ }
36
+ }, [medias]);
37
+ // HANDLERS
38
+ const handleSort = useCallback((medias) => {
39
+ onChange && onChange([...value.filter((media) => medias.findIndex((m) => m.id === media.id) === -1), ...medias]);
40
+ }, [onChange]);
41
+ const handleDelete = useCallback((id) => () => onChange && onChange(value.filter((media) => media.id !== id)), [onChange, value]);
42
+ return React.createElement(Root, Object.assign({ ref: ref, className: classNames(className, classes.previewRoot) }, rest), medias.length > 0 && (React.createElement(ReactSortable, { id: SORTABLE_ID, list: medias, setList: handleSort }, medias.map((media) => (React.createElement(Box, { key: media.id, className: classes.media, sx: { backgroundImage: `url(${(media === null || media === void 0 ? void 0 : media.image_thumbnail) ? media.image_thumbnail.url : media.image})` } },
43
+ React.createElement(IconButton, { className: classes.delete, onClick: handleDelete(media.id), size: "small" },
44
+ React.createElement(Icon, null, "delete")),
45
+ media.title && React.createElement(Typography, { className: classes.title },
46
+ media.type === MEDIA_TYPE_DOCUMENT && React.createElement(Icon, null, "picture_as_pdf"),
47
+ media.title)))))));
48
+ });
49
+ export default PreviewComponent;
@@ -0,0 +1,12 @@
1
+ import { ReactElement } from 'react';
2
+ import { IconButtonProps } from '@mui/material';
3
+ import { SCMediaType } from '@selfcommunity/types';
4
+ export interface TriggerIconButtonProps extends IconButtonProps {
5
+ /**
6
+ * Callback triggered when a media is added
7
+ * @param media
8
+ */
9
+ onAdd?: (media: SCMediaType) => void;
10
+ }
11
+ declare const _default: ({ className, onAdd, ...rest }: TriggerIconButtonProps) => ReactElement;
12
+ export default _default;
@@ -0,0 +1,110 @@
1
+ import { __rest } from "tslib";
2
+ import React, { forwardRef, useCallback, useMemo, useState } from 'react';
3
+ import { CircularProgress, IconButton, List, ListItem, ListItemButton, Menu, MenuItem, SwipeableDrawer, useMediaQuery, useTheme, } from '@mui/material';
4
+ import Icon from '@mui/material/Icon';
5
+ import { PREFIX } from './constants';
6
+ import { styled } from '@mui/material/styles';
7
+ import classNames from 'classnames';
8
+ import { useSCContext } from '@selfcommunity/react-core';
9
+ import { FormattedMessage } from 'react-intl';
10
+ import MediaChunkUploader from '../../MediaChunkUploader';
11
+ import ChunkedUploady from '@rpldy/chunked-uploady';
12
+ import { Endpoints } from '@selfcommunity/api-services';
13
+ import asUploadButton from './asUploadButton';
14
+ import { useSnackbar } from 'notistack';
15
+ const classes = {
16
+ triggerRoot: `${PREFIX}-trigger-root`,
17
+ triggerDrawerRoot: `${PREFIX}-trigger-drawer-root`,
18
+ triggerMenuRoot: `${PREFIX}-trigger-menu-root`,
19
+ paper: `${PREFIX}-paper`,
20
+ item: `${PREFIX}-item`,
21
+ };
22
+ const Root = styled(IconButton, {
23
+ name: PREFIX,
24
+ slot: 'TriggerRoot'
25
+ })(() => ({}));
26
+ const SwipeableDrawerRoot = styled(SwipeableDrawer, {
27
+ name: PREFIX,
28
+ slot: 'TriggerDrawerRoot'
29
+ })(() => ({}));
30
+ const MenuRoot = styled(Menu, {
31
+ name: PREFIX,
32
+ slot: 'TriggerMenuRoot'
33
+ })(() => ({}));
34
+ const PhotoUploadListItemButton = asUploadButton(forwardRef((props, ref) => (React.createElement(ListItemButton, Object.assign({}, props, { "aria-label": "upload", ref: ref })))), { accept: 'image/*', capture: 'camera' });
35
+ const GalleryUploadListItemButton = asUploadButton(forwardRef((props, ref) => (React.createElement(ListItemButton, Object.assign({}, props, { "aria-label": "upload", ref: ref })))), { accept: 'image/*' });
36
+ const DocumentUploadListItemButton = asUploadButton(forwardRef((props, ref) => (React.createElement(ListItemButton, Object.assign({}, props, { "aria-label": "upload", ref: ref })))), { accept: 'application/pdf' });
37
+ const GalleryUploadMenuItem = asUploadButton(forwardRef((props, ref) => (React.createElement(MenuItem, Object.assign({}, props, { "aria-label": "upload", ref: ref })))), { accept: 'image/*' });
38
+ const DocumentUploadMenuItem = asUploadButton(forwardRef((props, ref) => (React.createElement(MenuItem, Object.assign({}, props, { "aria-label": "upload", ref: ref })))), { accept: 'application/pdf' });
39
+ export default (_a) => {
40
+ var { className, onAdd = null } = _a, rest = __rest(_a, ["className", "onAdd"]);
41
+ // STATE
42
+ const [anchorEl, setAnchorEl] = useState(null);
43
+ const [isUploading, setIsUploading] = useState(false);
44
+ // CONTEXT
45
+ const scContext = useSCContext();
46
+ // HOOKS
47
+ const theme = useTheme();
48
+ const isMobile = useMediaQuery(theme.breakpoints.down('md'));
49
+ const { enqueueSnackbar, closeSnackbar } = useSnackbar();
50
+ // HANDLERS
51
+ const handleOpen = useCallback((event) => {
52
+ setAnchorEl(event.currentTarget);
53
+ }, []);
54
+ const handleClose = useCallback(() => {
55
+ setAnchorEl(null);
56
+ }, []);
57
+ const handleFilterByMime = useCallback((file) => {
58
+ return file.type.startsWith('image/') || file.type === 'application/pdf';
59
+ }, []);
60
+ const handleSuccess = useCallback((media) => {
61
+ onAdd && onAdd(media);
62
+ }, [onAdd]);
63
+ const handleProgress = useCallback((chunks) => {
64
+ console.log(chunks);
65
+ setIsUploading(Object.keys(chunks).length > 0);
66
+ }, []);
67
+ const handleError = useCallback((chunk, error) => {
68
+ const _snackBar = enqueueSnackbar(`${chunk.name}: ${error}`, {
69
+ variant: 'error',
70
+ anchorOrigin: { horizontal: 'center', vertical: 'top' },
71
+ autoHideDuration: 2000,
72
+ SnackbarProps: {
73
+ onClick: () => {
74
+ closeSnackbar(_snackBar);
75
+ }
76
+ }
77
+ });
78
+ }, [enqueueSnackbar]);
79
+ const list = useMemo(() => {
80
+ if (isMobile) {
81
+ return [
82
+ React.createElement(ListItem, { className: classes.item, key: "photo" },
83
+ React.createElement(PhotoUploadListItemButton, { inputFieldName: "image" },
84
+ React.createElement(FormattedMessage, { id: "ui.composer.media.file.photo", defaultMessage: "ui.composer.media.file.photo" }))),
85
+ React.createElement(ListItem, { className: classes.item, key: "gallery" },
86
+ React.createElement(GalleryUploadListItemButton, { inputFieldName: "image" },
87
+ React.createElement(FormattedMessage, { id: "ui.composer.media.file.gallery", defaultMessage: "ui.composer.media.file.gallery" }))),
88
+ React.createElement(ListItem, { className: classes.item, key: "document" },
89
+ React.createElement(DocumentUploadListItemButton, { inputFieldName: "document" },
90
+ React.createElement(FormattedMessage, { id: "ui.composer.media.file.document", defaultMessage: "ui.composer.media.file.document" })))
91
+ ];
92
+ }
93
+ else {
94
+ return [
95
+ React.createElement(GalleryUploadMenuItem, { extraProps: { className: classes.item }, inputFieldName: "image", key: "gallery" },
96
+ React.createElement(FormattedMessage, { id: "ui.composer.media.file.gallery", defaultMessage: "ui.composer.media.file.gallery" })),
97
+ React.createElement(DocumentUploadMenuItem, { extraProps: { className: classes.item }, key: "document", inputFieldName: "document" },
98
+ React.createElement(FormattedMessage, { id: "ui.composer.media.file.document", defaultMessage: "ui.composer.media.file.document" }))
99
+ ];
100
+ }
101
+ }, [isMobile, handleFilterByMime, handleSuccess, handleProgress, handleError]);
102
+ return (React.createElement(ChunkedUploady, { destination: {
103
+ url: `${scContext.settings.portal}${Endpoints.ComposerChunkUploadMedia.url()}`,
104
+ method: Endpoints.ComposerChunkUploadMedia.method
105
+ }, fileFilter: handleFilterByMime, chunkSize: 204800, multiple: true },
106
+ React.createElement(MediaChunkUploader, { onSuccess: handleSuccess, onProgress: handleProgress, onError: handleError }),
107
+ React.createElement(Root, Object.assign({ className: classNames(className, classes.triggerRoot) }, rest, { "aria-label": "add media", disabled: isUploading, onClick: handleOpen }), isUploading ? React.createElement(CircularProgress, { size: 20 }) : React.createElement(Icon, null, "photo_file")),
108
+ isMobile ? (React.createElement(SwipeableDrawerRoot, { onClick: () => setAnchorEl(null), className: classes.triggerDrawerRoot, anchor: "bottom", open: Boolean(anchorEl), onClose: handleClose, onOpen: handleOpen, PaperProps: { className: classes.paper }, disableSwipeToOpen: true },
109
+ React.createElement(List, null, list))) : (React.createElement(MenuRoot, { onClick: () => setAnchorEl(null), className: classes.triggerMenuRoot, anchorEl: anchorEl, open: Boolean(anchorEl), onClose: handleClose, PaperProps: { className: classes.paper } }, list))));
110
+ };
@@ -0,0 +1,7 @@
1
+ import type { ComponentType } from "react";
2
+ declare type FileInputProps = {
3
+ capture?: string;
4
+ accept: string;
5
+ };
6
+ declare const asUploadButton: (Component: ComponentType<any>, InputProps: FileInputProps) => any;
7
+ export default asUploadButton;
@@ -0,0 +1,28 @@
1
+ import { __rest } from "tslib";
2
+ import React, { forwardRef, useCallback, useRef } from "react";
3
+ import { markAsUploadOptionsComponent, useUploadyContext } from "@rpldy/shared-ui";
4
+ const asUploadButton = (Component, InputProps) => {
5
+ const AsUploadButton = (props, ref) => {
6
+ const { showFileUpload, getInternalFileInput } = useUploadyContext();
7
+ const { id, className, text, children, extraProps, onClick } = props, uploadOptions = __rest(props, ["id", "className", "text", "children", "extraProps", "onClick"]);
8
+ //using ref so onButtonClick can stay memoized
9
+ const uploadOptionsRef = useRef();
10
+ uploadOptionsRef.current = uploadOptions;
11
+ const onButtonClick = useCallback((e) => {
12
+ const input = getInternalFileInput();
13
+ input.current.accept = InputProps.accept;
14
+ if (InputProps.capture) {
15
+ input.current.capture = InputProps.capture;
16
+ }
17
+ else {
18
+ input.current.removeAttribute('capture');
19
+ }
20
+ showFileUpload(uploadOptionsRef.current);
21
+ onClick === null || onClick === void 0 ? void 0 : onClick(e);
22
+ }, [getInternalFileInput, showFileUpload, uploadOptionsRef, onClick]);
23
+ return React.createElement(Component, Object.assign({ ref: ref, onClick: onButtonClick, id: id, className: className, children: children || text || "Upload" }, extraProps));
24
+ };
25
+ markAsUploadOptionsComponent(AsUploadButton);
26
+ return forwardRef(AsUploadButton);
27
+ };
28
+ export default asUploadButton;
@@ -0,0 +1 @@
1
+ export declare const PREFIX = "SCMediaFile";
@@ -0,0 +1 @@
1
+ export const PREFIX = 'SCMediaFile';
@@ -0,0 +1,3 @@
1
+ import { SCMediaType } from '@selfcommunity/types/src/types';
2
+ declare const _default: (media: SCMediaType) => boolean;
3
+ export default _default;
@@ -0,0 +1,2 @@
1
+ import { MEDIA_TYPE_DOCUMENT, MEDIA_TYPE_IMAGE } from '../../../constants/Media';
2
+ export default (media) => media.type === MEDIA_TYPE_IMAGE || media.type === MEDIA_TYPE_DOCUMENT;
@@ -0,0 +1,3 @@
1
+ import { SCMediaObjectType } from '../../../types/media';
2
+ declare const File: SCMediaObjectType;
3
+ export default File;
@@ -0,0 +1,13 @@
1
+ import DisplayComponent from './DisplayComponent';
2
+ import TriggerButton from './TriggerButton';
3
+ import PreviewComponent from './PreviewComponent';
4
+ import filter from './filter';
5
+ const File = {
6
+ name: 'file',
7
+ displayComponent: DisplayComponent,
8
+ triggerButton: TriggerButton,
9
+ layerComponent: null,
10
+ previewComponent: PreviewComponent,
11
+ filter
12
+ };
13
+ export default File;
@@ -0,0 +1,20 @@
1
+ import { ReactElement } from 'react';
2
+ import { BoxProps } from '@mui/material';
3
+ import { SCMediaType } from '@selfcommunity/types/src/types';
4
+ export interface DisplayComponentProps extends BoxProps {
5
+ /**
6
+ * Medias
7
+ */
8
+ medias: SCMediaType[];
9
+ /**
10
+ * Handle full width option
11
+ * @default false
12
+ */
13
+ fullWidth?: boolean;
14
+ /**
15
+ * Handles on media click
16
+ */
17
+ onMediaClick?: (any: any) => void;
18
+ }
19
+ declare const _default: (props: DisplayComponentProps) => ReactElement;
20
+ export default _default;