@selfcommunity/react-ui 0.7.0-alpha.335 → 0.7.0-alpha.337

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 (316) hide show
  1. package/lib/cjs/components/BottomNavigation/BottomNavigation.js +8 -11
  2. package/lib/cjs/components/Composer/Attributes/Attributes.d.ts +22 -0
  3. package/lib/cjs/components/Composer/Attributes/Attributes.js +41 -0
  4. package/lib/cjs/components/Composer/Attributes/index.d.ts +3 -0
  5. package/lib/cjs/components/Composer/{Poll → Attributes}/index.js +2 -2
  6. package/lib/cjs/components/Composer/Composer.d.ts +61 -84
  7. package/lib/cjs/components/Composer/Composer.js +265 -441
  8. package/lib/cjs/components/Composer/Content/ContentDiscussion/ContentDiscussion.d.ts +32 -0
  9. package/lib/cjs/components/Composer/Content/ContentDiscussion/ContentDiscussion.js +53 -0
  10. package/lib/cjs/components/Composer/Content/ContentDiscussion/index.d.ts +3 -0
  11. package/lib/cjs/components/Composer/Content/ContentDiscussion/index.js +5 -0
  12. package/lib/cjs/components/Composer/Content/ContentPoll/ContentPoll.d.ts +26 -0
  13. package/lib/cjs/components/Composer/Content/ContentPoll/ContentPoll.js +129 -0
  14. package/lib/cjs/components/Composer/Content/ContentPoll/index.d.ts +3 -0
  15. package/lib/cjs/components/Composer/Content/ContentPoll/index.js +5 -0
  16. package/lib/cjs/components/Composer/Content/ContentPost/ContentPost.d.ts +32 -0
  17. package/lib/cjs/components/Composer/Content/ContentPost/ContentPost.js +51 -0
  18. package/lib/cjs/components/Composer/Content/ContentPost/index.d.ts +3 -0
  19. package/lib/cjs/components/Composer/Content/ContentPost/index.js +5 -0
  20. package/lib/cjs/components/Composer/Layer/AudienceLayer/AudienceLayer.d.ts +11 -0
  21. package/lib/cjs/components/Composer/Layer/AudienceLayer/AudienceLayer.js +74 -0
  22. package/lib/cjs/components/Composer/Layer/AudienceLayer/index.d.ts +3 -0
  23. package/lib/cjs/components/Composer/Layer/AudienceLayer/index.js +5 -0
  24. package/lib/cjs/components/Composer/Layer/CategoryLayer/CategoryLayer.d.ts +9 -0
  25. package/lib/cjs/components/Composer/Layer/CategoryLayer/CategoryLayer.js +41 -0
  26. package/lib/cjs/components/Composer/Layer/CategoryLayer/index.d.ts +3 -0
  27. package/lib/cjs/components/Composer/Layer/CategoryLayer/index.js +5 -0
  28. package/lib/cjs/components/Composer/Layer/CloseLayer/CloseLayer.d.ts +7 -0
  29. package/lib/cjs/components/Composer/Layer/CloseLayer/CloseLayer.js +41 -0
  30. package/lib/cjs/components/Composer/Layer/CloseLayer/index.d.ts +3 -0
  31. package/lib/cjs/components/Composer/{Audience → Layer/CloseLayer}/index.js +2 -2
  32. package/lib/cjs/components/Composer/Layer/LocationLayer/LocationLayer.d.ts +9 -0
  33. package/lib/cjs/components/Composer/Layer/LocationLayer/LocationLayer.js +41 -0
  34. package/lib/cjs/components/Composer/Layer/LocationLayer/index.d.ts +3 -0
  35. package/lib/cjs/components/Composer/Layer/LocationLayer/index.js +5 -0
  36. package/lib/cjs/components/Composer/Skeleton.d.ts +0 -4
  37. package/lib/cjs/components/Composer/Skeleton.js +10 -72
  38. package/lib/cjs/components/Composer/TypeSwitchButtonGroup/TypeSwitchButtonGroup.d.ts +6 -0
  39. package/lib/cjs/components/Composer/TypeSwitchButtonGroup/TypeSwitchButtonGroup.js +47 -0
  40. package/lib/cjs/components/Composer/TypeSwitchButtonGroup/index.d.ts +3 -0
  41. package/lib/cjs/components/Composer/TypeSwitchButtonGroup/index.js +5 -0
  42. package/lib/cjs/components/Composer/constants.d.ts +1 -0
  43. package/lib/cjs/components/Composer/constants.js +4 -0
  44. package/lib/cjs/components/Composer/index.d.ts +2 -3
  45. package/lib/cjs/components/Composer/index.js +1 -6
  46. package/lib/cjs/components/ComposerIconButton/ComposerIconButton.d.ts +2 -1
  47. package/lib/cjs/components/ComposerIconButton/ComposerIconButton.js +8 -8
  48. package/lib/cjs/components/Editor/Editor.js +14 -5
  49. package/lib/cjs/components/Feed/prefetchedData.d.ts +2 -368
  50. package/lib/cjs/components/Feed/prefetchedData.js +17 -16
  51. package/lib/cjs/components/FeedObject/Actions/Share/Share.js +2 -2
  52. package/lib/cjs/components/FeedObject/FeedObject.d.ts +2 -2
  53. package/lib/cjs/components/FeedObject/FeedObject.js +5 -5
  54. package/lib/cjs/components/FeedObjectMediaPreview/FeedObjectMediaPreview.d.ts +38 -0
  55. package/lib/cjs/components/FeedObjectMediaPreview/FeedObjectMediaPreview.js +66 -0
  56. package/lib/cjs/components/FeedObjectMediaPreview/index.d.ts +3 -0
  57. package/lib/cjs/components/FeedObjectMediaPreview/index.js +5 -0
  58. package/lib/cjs/components/InlineComposerWidget/InlineComposerWidget.d.ts +25 -33
  59. package/lib/cjs/components/InlineComposerWidget/InlineComposerWidget.js +34 -67
  60. package/lib/cjs/components/InlineComposerWidget/Skeleton.d.ts +4 -5
  61. package/lib/cjs/components/InlineComposerWidget/Skeleton.js +17 -37
  62. package/lib/cjs/components/InlineComposerWidget/constants.d.ts +1 -0
  63. package/lib/cjs/components/InlineComposerWidget/constants.js +4 -0
  64. package/lib/cjs/components/LocationAutocomplete/LocationAutocomplete.d.ts +2 -2
  65. package/lib/cjs/components/LocationAutocomplete/LocationAutocomplete.js +4 -2
  66. package/lib/cjs/components/NavigationMenuIconButton/NavigationMenuIconButton.d.ts +1 -1
  67. package/lib/cjs/components/NavigationToolbarMobile/NavigationToolbarMobile.d.ts +0 -5
  68. package/lib/cjs/components/NavigationToolbarMobile/NavigationToolbarMobile.js +19 -30
  69. package/lib/cjs/components/NavigationToolbarMobile/Skeleton.js +5 -6
  70. package/lib/cjs/components/NavigationToolbarMobile/constants.d.ts +1 -0
  71. package/lib/cjs/components/NavigationToolbarMobile/constants.js +4 -0
  72. package/lib/cjs/constants/Composer.d.ts +2 -0
  73. package/lib/cjs/constants/Composer.js +4 -2
  74. package/lib/cjs/index.d.ts +12 -12
  75. package/lib/cjs/index.js +14 -17
  76. package/lib/cjs/shared/Lightbox/Lightbox.js +2 -2
  77. package/lib/{esm/shared/Media/Image/PreviewComponent.d.ts → cjs/shared/Media/File/DisplayComponent.d.ts} +1 -11
  78. package/lib/cjs/shared/Media/{Image/PreviewComponent.js → File/DisplayComponent.js} +55 -145
  79. package/lib/{esm/shared/Media/Image/PreviewImage → cjs/shared/Media/File/Lightbox}/index.d.ts +4 -3
  80. package/lib/cjs/shared/Media/File/Lightbox/index.js +37 -0
  81. package/lib/cjs/shared/Media/File/PreviewComponent.d.ts +9 -0
  82. package/lib/cjs/shared/Media/File/PreviewComponent.js +51 -0
  83. package/lib/cjs/shared/Media/File/TriggerButton.d.ts +12 -0
  84. package/lib/cjs/shared/Media/File/TriggerButton.js +112 -0
  85. package/lib/cjs/shared/Media/File/asUploadButton.d.ts +7 -0
  86. package/lib/cjs/shared/Media/File/asUploadButton.js +30 -0
  87. package/lib/cjs/shared/Media/File/constants.d.ts +1 -0
  88. package/lib/cjs/shared/Media/File/constants.js +4 -0
  89. package/lib/cjs/shared/Media/File/filter.d.ts +3 -0
  90. package/lib/cjs/shared/Media/File/filter.js +4 -0
  91. package/lib/cjs/shared/Media/File/index.d.ts +3 -0
  92. package/lib/cjs/shared/Media/File/index.js +16 -0
  93. package/lib/cjs/shared/Media/Link/DisplayComponent.d.ts +20 -0
  94. package/lib/cjs/shared/Media/Link/DisplayComponent.js +69 -0
  95. package/lib/cjs/shared/Media/Link/LayerComponent.d.ts +9 -0
  96. package/lib/cjs/shared/Media/Link/LayerComponent.js +46 -0
  97. package/lib/cjs/shared/Media/Link/PreviewComponent.d.ts +7 -21
  98. package/lib/cjs/shared/Media/Link/PreviewComponent.js +28 -56
  99. package/lib/cjs/shared/Media/Link/TriggerButton.d.ts +4 -0
  100. package/lib/cjs/shared/Media/Link/TriggerButton.js +21 -0
  101. package/lib/cjs/shared/Media/Link/UrlTextField/index.js +1 -2
  102. package/lib/cjs/shared/Media/Link/constants.d.ts +1 -0
  103. package/lib/cjs/shared/Media/Link/constants.js +4 -0
  104. package/lib/cjs/shared/Media/Link/filter.d.ts +3 -0
  105. package/lib/cjs/shared/Media/Link/filter.js +4 -0
  106. package/lib/cjs/shared/Media/Link/index.js +9 -8
  107. package/lib/cjs/shared/Media/Share/DisplayComponent.d.ts +11 -0
  108. package/lib/cjs/shared/Media/Share/DisplayComponent.js +31 -0
  109. package/lib/cjs/shared/Media/Share/constants.d.ts +1 -0
  110. package/lib/cjs/shared/Media/Share/constants.js +4 -0
  111. package/lib/cjs/shared/Media/Share/filter.d.ts +3 -0
  112. package/lib/cjs/shared/Media/Share/filter.js +4 -0
  113. package/lib/cjs/shared/Media/Share/index.js +7 -7
  114. package/lib/cjs/shared/Media/index.d.ts +2 -4
  115. package/lib/cjs/shared/Media/index.js +3 -7
  116. package/lib/cjs/types/composer.d.ts +15 -0
  117. package/lib/cjs/types/composer.js +2 -0
  118. package/lib/cjs/types/media.d.ts +9 -5
  119. package/lib/esm/components/BottomNavigation/BottomNavigation.js +8 -11
  120. package/lib/esm/components/Composer/Attributes/Attributes.d.ts +22 -0
  121. package/lib/esm/components/Composer/Attributes/Attributes.js +38 -0
  122. package/lib/esm/components/Composer/Attributes/index.d.ts +3 -0
  123. package/lib/esm/components/Composer/Attributes/index.js +2 -0
  124. package/lib/esm/components/Composer/Composer.d.ts +61 -84
  125. package/lib/esm/components/Composer/Composer.js +262 -437
  126. package/lib/esm/components/Composer/Content/ContentDiscussion/ContentDiscussion.d.ts +32 -0
  127. package/lib/esm/components/Composer/Content/ContentDiscussion/ContentDiscussion.js +50 -0
  128. package/lib/esm/components/Composer/Content/ContentDiscussion/index.d.ts +3 -0
  129. package/lib/esm/components/Composer/Content/ContentDiscussion/index.js +2 -0
  130. package/lib/esm/components/Composer/Content/ContentPoll/ContentPoll.d.ts +26 -0
  131. package/lib/esm/components/Composer/Content/ContentPoll/ContentPoll.js +127 -0
  132. package/lib/esm/components/Composer/Content/ContentPoll/index.d.ts +3 -0
  133. package/lib/esm/components/Composer/Content/ContentPoll/index.js +2 -0
  134. package/lib/esm/components/Composer/Content/ContentPost/ContentPost.d.ts +32 -0
  135. package/lib/esm/components/Composer/Content/ContentPost/ContentPost.js +49 -0
  136. package/lib/esm/components/Composer/Content/ContentPost/index.d.ts +3 -0
  137. package/lib/esm/components/Composer/Content/ContentPost/index.js +2 -0
  138. package/lib/esm/components/Composer/Layer/AudienceLayer/AudienceLayer.d.ts +11 -0
  139. package/lib/esm/components/Composer/Layer/AudienceLayer/AudienceLayer.js +72 -0
  140. package/lib/esm/components/Composer/Layer/AudienceLayer/index.d.ts +3 -0
  141. package/lib/esm/components/Composer/Layer/AudienceLayer/index.js +2 -0
  142. package/lib/esm/components/Composer/Layer/CategoryLayer/CategoryLayer.d.ts +9 -0
  143. package/lib/esm/components/Composer/Layer/CategoryLayer/CategoryLayer.js +39 -0
  144. package/lib/esm/components/Composer/Layer/CategoryLayer/index.d.ts +3 -0
  145. package/lib/esm/components/Composer/Layer/CategoryLayer/index.js +2 -0
  146. package/lib/esm/components/Composer/Layer/CloseLayer/CloseLayer.d.ts +7 -0
  147. package/lib/esm/components/Composer/Layer/CloseLayer/CloseLayer.js +39 -0
  148. package/lib/esm/components/Composer/Layer/CloseLayer/index.d.ts +3 -0
  149. package/lib/esm/components/Composer/Layer/CloseLayer/index.js +2 -0
  150. package/lib/esm/components/Composer/Layer/LocationLayer/LocationLayer.d.ts +9 -0
  151. package/lib/esm/components/Composer/Layer/LocationLayer/LocationLayer.js +39 -0
  152. package/lib/esm/components/Composer/Layer/LocationLayer/index.d.ts +3 -0
  153. package/lib/esm/components/Composer/Layer/LocationLayer/index.js +2 -0
  154. package/lib/esm/components/Composer/Skeleton.d.ts +0 -4
  155. package/lib/esm/components/Composer/Skeleton.js +6 -68
  156. package/lib/esm/components/Composer/TypeSwitchButtonGroup/TypeSwitchButtonGroup.d.ts +6 -0
  157. package/lib/esm/components/Composer/TypeSwitchButtonGroup/TypeSwitchButtonGroup.js +44 -0
  158. package/lib/esm/components/Composer/TypeSwitchButtonGroup/index.d.ts +3 -0
  159. package/lib/esm/components/Composer/TypeSwitchButtonGroup/index.js +2 -0
  160. package/lib/esm/components/Composer/constants.d.ts +1 -0
  161. package/lib/esm/components/Composer/constants.js +1 -0
  162. package/lib/esm/components/Composer/index.d.ts +2 -3
  163. package/lib/esm/components/Composer/index.js +1 -3
  164. package/lib/esm/components/ComposerIconButton/ComposerIconButton.d.ts +2 -1
  165. package/lib/esm/components/ComposerIconButton/ComposerIconButton.js +8 -8
  166. package/lib/esm/components/Editor/Editor.js +16 -7
  167. package/lib/esm/components/Feed/Feed.js +4 -4
  168. package/lib/esm/components/Feed/prefetchedData.d.ts +2 -368
  169. package/lib/esm/components/Feed/prefetchedData.js +17 -16
  170. package/lib/esm/components/FeedObject/Actions/Share/Share.js +4 -4
  171. package/lib/esm/components/FeedObject/FeedObject.d.ts +2 -2
  172. package/lib/esm/components/FeedObject/FeedObject.js +8 -8
  173. package/lib/esm/components/FeedObjectMediaPreview/FeedObjectMediaPreview.d.ts +38 -0
  174. package/lib/esm/components/FeedObjectMediaPreview/FeedObjectMediaPreview.js +64 -0
  175. package/lib/esm/components/FeedObjectMediaPreview/index.d.ts +3 -0
  176. package/lib/esm/components/FeedObjectMediaPreview/index.js +2 -0
  177. package/lib/esm/components/InlineComposerWidget/InlineComposerWidget.d.ts +25 -33
  178. package/lib/esm/components/InlineComposerWidget/InlineComposerWidget.js +31 -64
  179. package/lib/esm/components/InlineComposerWidget/Skeleton.d.ts +4 -5
  180. package/lib/esm/components/InlineComposerWidget/Skeleton.js +15 -35
  181. package/lib/esm/components/InlineComposerWidget/constants.d.ts +1 -0
  182. package/lib/esm/components/InlineComposerWidget/constants.js +1 -0
  183. package/lib/esm/components/LocationAutocomplete/LocationAutocomplete.d.ts +2 -2
  184. package/lib/esm/components/LocationAutocomplete/LocationAutocomplete.js +4 -2
  185. package/lib/esm/components/NavigationMenuIconButton/NavigationMenuIconButton.d.ts +1 -1
  186. package/lib/esm/components/NavigationMenuIconButton/NavigationMenuIconButton.js +1 -1
  187. package/lib/esm/components/NavigationToolbarMobile/NavigationToolbarMobile.d.ts +0 -5
  188. package/lib/esm/components/NavigationToolbarMobile/NavigationToolbarMobile.js +12 -23
  189. package/lib/esm/components/NavigationToolbarMobile/Skeleton.js +3 -4
  190. package/lib/esm/components/NavigationToolbarMobile/constants.d.ts +1 -0
  191. package/lib/esm/components/NavigationToolbarMobile/constants.js +1 -0
  192. package/lib/esm/constants/Composer.d.ts +2 -0
  193. package/lib/esm/constants/Composer.js +3 -1
  194. package/lib/esm/index.d.ts +12 -12
  195. package/lib/esm/index.js +33 -33
  196. package/lib/esm/shared/Lightbox/Lightbox.js +2 -2
  197. package/lib/{cjs/shared/Media/Image/PreviewComponent.d.ts → esm/shared/Media/File/DisplayComponent.d.ts} +1 -11
  198. package/lib/esm/shared/Media/{Image/PreviewComponent.js → File/DisplayComponent.js} +50 -140
  199. package/lib/{cjs/shared/Media/Image/PreviewImage → esm/shared/Media/File/Lightbox}/index.d.ts +4 -3
  200. package/lib/esm/shared/Media/File/Lightbox/index.js +34 -0
  201. package/lib/esm/shared/Media/File/PreviewComponent.d.ts +9 -0
  202. package/lib/esm/shared/Media/File/PreviewComponent.js +49 -0
  203. package/lib/esm/shared/Media/File/TriggerButton.d.ts +12 -0
  204. package/lib/esm/shared/Media/File/TriggerButton.js +110 -0
  205. package/lib/esm/shared/Media/File/asUploadButton.d.ts +7 -0
  206. package/lib/esm/shared/Media/File/asUploadButton.js +28 -0
  207. package/lib/esm/shared/Media/File/constants.d.ts +1 -0
  208. package/lib/esm/shared/Media/File/constants.js +1 -0
  209. package/lib/esm/shared/Media/File/filter.d.ts +3 -0
  210. package/lib/esm/shared/Media/File/filter.js +2 -0
  211. package/lib/esm/shared/Media/File/index.d.ts +3 -0
  212. package/lib/esm/shared/Media/File/index.js +13 -0
  213. package/lib/esm/shared/Media/Link/DisplayComponent.d.ts +20 -0
  214. package/lib/esm/shared/Media/Link/DisplayComponent.js +67 -0
  215. package/lib/esm/shared/Media/Link/LayerComponent.d.ts +9 -0
  216. package/lib/esm/shared/Media/Link/LayerComponent.js +44 -0
  217. package/lib/esm/shared/Media/Link/PreviewComponent.d.ts +7 -21
  218. package/lib/esm/shared/Media/Link/PreviewComponent.js +27 -54
  219. package/lib/esm/shared/Media/Link/TriggerButton.d.ts +4 -0
  220. package/lib/esm/shared/Media/Link/TriggerButton.js +19 -0
  221. package/lib/esm/shared/Media/Link/UrlTextField/index.js +2 -3
  222. package/lib/esm/shared/Media/Link/constants.d.ts +1 -0
  223. package/lib/esm/shared/Media/Link/constants.js +1 -0
  224. package/lib/esm/shared/Media/Link/filter.d.ts +3 -0
  225. package/lib/esm/shared/Media/Link/filter.js +2 -0
  226. package/lib/esm/shared/Media/Link/index.js +9 -8
  227. package/lib/esm/shared/Media/Share/DisplayComponent.d.ts +11 -0
  228. package/lib/esm/shared/Media/Share/DisplayComponent.js +29 -0
  229. package/lib/esm/shared/Media/Share/constants.d.ts +1 -0
  230. package/lib/esm/shared/Media/Share/constants.js +1 -0
  231. package/lib/esm/shared/Media/Share/filter.d.ts +3 -0
  232. package/lib/esm/shared/Media/Share/filter.js +2 -0
  233. package/lib/esm/shared/Media/Share/index.js +7 -7
  234. package/lib/esm/shared/Media/index.d.ts +2 -4
  235. package/lib/esm/shared/Media/index.js +2 -4
  236. package/lib/esm/types/composer.d.ts +15 -0
  237. package/lib/esm/types/composer.js +1 -0
  238. package/lib/esm/types/media.d.ts +9 -5
  239. package/lib/umd/react-ui.js +1 -1
  240. package/package.json +7 -7
  241. package/lib/cjs/components/Composer/Audience/Audience.d.ts +0 -71
  242. package/lib/cjs/components/Composer/Audience/Audience.js +0 -69
  243. package/lib/cjs/components/Composer/Audience/index.d.ts +0 -3
  244. package/lib/cjs/components/Composer/Poll/Poll.d.ts +0 -31
  245. package/lib/cjs/components/Composer/Poll/Poll.js +0 -151
  246. package/lib/cjs/components/Composer/Poll/index.d.ts +0 -3
  247. package/lib/cjs/shared/Media/Document/EditButton.d.ts +0 -2
  248. package/lib/cjs/shared/Media/Document/EditButton.js +0 -10
  249. package/lib/cjs/shared/Media/Document/EditComponent.d.ts +0 -3
  250. package/lib/cjs/shared/Media/Document/EditComponent.js +0 -103
  251. package/lib/cjs/shared/Media/Document/PreviewComponent.d.ts +0 -3
  252. package/lib/cjs/shared/Media/Document/PreviewComponent.js +0 -43
  253. package/lib/cjs/shared/Media/Document/index.d.ts +0 -3
  254. package/lib/cjs/shared/Media/Document/index.js +0 -16
  255. package/lib/cjs/shared/Media/Image/EditButton.d.ts +0 -2
  256. package/lib/cjs/shared/Media/Image/EditButton.js +0 -10
  257. package/lib/cjs/shared/Media/Image/EditComponent.d.ts +0 -3
  258. package/lib/cjs/shared/Media/Image/EditComponent.js +0 -102
  259. package/lib/cjs/shared/Media/Image/PreviewImage/index.js +0 -41
  260. package/lib/cjs/shared/Media/Image/index.d.ts +0 -3
  261. package/lib/cjs/shared/Media/Image/index.js +0 -16
  262. package/lib/cjs/shared/Media/Link/EditButton.d.ts +0 -2
  263. package/lib/cjs/shared/Media/Link/EditButton.js +0 -10
  264. package/lib/cjs/shared/Media/Link/EditComponent.d.ts +0 -3
  265. package/lib/cjs/shared/Media/Link/EditComponent.js +0 -46
  266. package/lib/cjs/shared/Media/Share/PreviewComponent.d.ts +0 -7
  267. package/lib/cjs/shared/Media/Share/PreviewComponent.js +0 -32
  268. package/lib/cjs/shared/Media/Video/EditButton.d.ts +0 -2
  269. package/lib/cjs/shared/Media/Video/EditButton.js +0 -10
  270. package/lib/cjs/shared/Media/Video/EditComponent.d.ts +0 -3
  271. package/lib/cjs/shared/Media/Video/EditComponent.js +0 -89
  272. package/lib/cjs/shared/Media/Video/PreviewComponent.d.ts +0 -19
  273. package/lib/cjs/shared/Media/Video/PreviewComponent.js +0 -37
  274. package/lib/cjs/shared/Media/Video/index.d.ts +0 -3
  275. package/lib/cjs/shared/Media/Video/index.js +0 -16
  276. package/lib/cjs/shared/MediasPreview/index.d.ts +0 -18
  277. package/lib/cjs/shared/MediasPreview/index.js +0 -44
  278. package/lib/esm/components/Composer/Audience/Audience.d.ts +0 -71
  279. package/lib/esm/components/Composer/Audience/Audience.js +0 -66
  280. package/lib/esm/components/Composer/Audience/index.d.ts +0 -3
  281. package/lib/esm/components/Composer/Audience/index.js +0 -2
  282. package/lib/esm/components/Composer/Poll/Poll.d.ts +0 -31
  283. package/lib/esm/components/Composer/Poll/Poll.js +0 -149
  284. package/lib/esm/components/Composer/Poll/index.d.ts +0 -3
  285. package/lib/esm/components/Composer/Poll/index.js +0 -2
  286. package/lib/esm/shared/Media/Document/EditButton.d.ts +0 -2
  287. package/lib/esm/shared/Media/Document/EditButton.js +0 -7
  288. package/lib/esm/shared/Media/Document/EditComponent.d.ts +0 -3
  289. package/lib/esm/shared/Media/Document/EditComponent.js +0 -101
  290. package/lib/esm/shared/Media/Document/PreviewComponent.d.ts +0 -3
  291. package/lib/esm/shared/Media/Document/PreviewComponent.js +0 -41
  292. package/lib/esm/shared/Media/Document/index.d.ts +0 -3
  293. package/lib/esm/shared/Media/Document/index.js +0 -13
  294. package/lib/esm/shared/Media/Image/EditButton.d.ts +0 -2
  295. package/lib/esm/shared/Media/Image/EditButton.js +0 -7
  296. package/lib/esm/shared/Media/Image/EditComponent.d.ts +0 -3
  297. package/lib/esm/shared/Media/Image/EditComponent.js +0 -100
  298. package/lib/esm/shared/Media/Image/PreviewImage/index.js +0 -38
  299. package/lib/esm/shared/Media/Image/index.d.ts +0 -3
  300. package/lib/esm/shared/Media/Image/index.js +0 -13
  301. package/lib/esm/shared/Media/Link/EditButton.d.ts +0 -2
  302. package/lib/esm/shared/Media/Link/EditButton.js +0 -7
  303. package/lib/esm/shared/Media/Link/EditComponent.d.ts +0 -3
  304. package/lib/esm/shared/Media/Link/EditComponent.js +0 -43
  305. package/lib/esm/shared/Media/Share/PreviewComponent.d.ts +0 -7
  306. package/lib/esm/shared/Media/Share/PreviewComponent.js +0 -29
  307. package/lib/esm/shared/Media/Video/EditButton.d.ts +0 -2
  308. package/lib/esm/shared/Media/Video/EditButton.js +0 -7
  309. package/lib/esm/shared/Media/Video/EditComponent.d.ts +0 -3
  310. package/lib/esm/shared/Media/Video/EditComponent.js +0 -87
  311. package/lib/esm/shared/Media/Video/PreviewComponent.d.ts +0 -19
  312. package/lib/esm/shared/Media/Video/PreviewComponent.js +0 -34
  313. package/lib/esm/shared/Media/Video/index.d.ts +0 -3
  314. package/lib/esm/shared/Media/Video/index.js +0 -13
  315. package/lib/esm/shared/MediasPreview/index.d.ts +0 -18
  316. package/lib/esm/shared/MediasPreview/index.js +0 -42
@@ -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;
@@ -0,0 +1,67 @@
1
+ import { __rest } from "tslib";
2
+ import React, { useMemo } from 'react';
3
+ import { styled } from '@mui/material/styles';
4
+ import LazyLoad from 'react-lazyload';
5
+ import { MEDIA_TYPE_VIDEO } from '../../../constants/Media';
6
+ import AutoPlayer from '../../AutoPlayer';
7
+ import Box from '@mui/material/Box';
8
+ import { DEFAULT_PRELOAD_OFFSET_VIEWPORT } from '../../../constants/LazyLoad';
9
+ import Skeleton from '@mui/material/Skeleton';
10
+ import classNames from 'classnames';
11
+ import { PREFIX } from './constants';
12
+ import filter from './filter';
13
+ const classes = {
14
+ displayRoot: `${PREFIX}-display-root`,
15
+ displayLink: `${PREFIX}-link`,
16
+ displayVideo: `${PREFIX}-video`,
17
+ thumbnail: `${PREFIX}-thumbnail`,
18
+ thumbnailFullWidth: `${PREFIX}-thumbnail`,
19
+ image: `${PREFIX}-image`,
20
+ snippet: `${PREFIX}-snippet`,
21
+ snippetTitle: `${PREFIX}-snippet-title`,
22
+ snippetDescription: `${PREFIX}-snippet-description`
23
+ };
24
+ const Root = styled(Box, {
25
+ name: PREFIX,
26
+ slot: 'DisplayRoot'
27
+ })(({ theme }) => ({}));
28
+ export default (props) => {
29
+ // PROPS
30
+ const { className = '', medias, fullWidth = false, onMediaClick = null } = props, rest = __rest(props, ["className", "medias", "fullWidth", "onMediaClick"]);
31
+ // HANDLERS
32
+ const handleLinkClick = (link) => {
33
+ onMediaClick && onMediaClick(link);
34
+ };
35
+ // MEMO
36
+ const _medias = useMemo(() => medias.filter(filter), [medias]);
37
+ // RENDER
38
+ /**
39
+ * Renders link display
40
+ * @param (link)
41
+ * @param(key)
42
+ */
43
+ const renderPreview = (link, key) => {
44
+ const domain = new URL(link.embed.metadata.url).hostname.replace('www.', '');
45
+ return (React.createElement(Box, { className: classes.displayLink, key: key },
46
+ link.embed.metadata.images && link.embed.metadata.images.length > 0 && (React.createElement(React.Fragment, null, fullWidth ? (React.createElement(Box, { className: classNames(classes.thumbnailFullWidth, classes.image), style: { background: `url(${link.image})`, paddingBottom: `${100 / link.image_width / link.image_height}%` } })) : (React.createElement(Box, { className: classNames(classes.thumbnail, classes.image), style: { background: `url(${link.image})` } })))),
47
+ React.createElement(Box, { className: classes.snippet },
48
+ React.createElement("b", { className: classes.snippetTitle }, link.embed.metadata.title),
49
+ React.createElement("br", null),
50
+ React.createElement("p", { className: classes.snippetDescription }, link.embed.metadata.description),
51
+ React.createElement("a", { href: link.embed.metadata.url, target: '_blank', onClick: () => handleLinkClick(link) }, domain)),
52
+ React.createElement("div", { style: { clear: 'both' } })));
53
+ };
54
+ /**
55
+ * Renders component
56
+ */
57
+ if (_medias.length === 0) {
58
+ return null;
59
+ }
60
+ return (React.createElement(Root, Object.assign({ className: classNames(className, classes.displayRoot) }, rest), _medias.map((l, i) => {
61
+ if (l.embed.metadata && l.embed.metadata.type === MEDIA_TYPE_VIDEO) {
62
+ return (React.createElement(LazyLoad, { className: classes.displayVideo, placeholder: React.createElement(Skeleton, { variant: "rectangular", height: 360, width: '100%' }), key: i, once: true, offset: DEFAULT_PRELOAD_OFFSET_VIEWPORT },
63
+ React.createElement(AutoPlayer, { url: l.url, width: '100%', key: i, onVideoWatch: () => handleLinkClick(l) })));
64
+ }
65
+ return React.createElement(React.Fragment, { key: i }, renderPreview(l, i));
66
+ })));
67
+ };
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import { BoxProps } from '@mui/material';
3
+ import { SCMediaType } from '@selfcommunity/types/src/index';
4
+ import { ComposerLayerProps } from '../../../types/composer';
5
+ export interface LayerComponentProps extends Omit<BoxProps, 'defaultValue'>, ComposerLayerProps {
6
+ defaultValue: SCMediaType[];
7
+ }
8
+ declare const LayerComponent: React.ForwardRefExoticComponent<Pick<LayerComponentProps, "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" | "onClose" | "onSave"> & React.RefAttributes<unknown>>;
9
+ export default LayerComponent;
@@ -0,0 +1,44 @@
1
+ import { __rest } from "tslib";
2
+ import React, { useCallback, useState } from 'react';
3
+ import { FormattedMessage } from 'react-intl';
4
+ import { Box, Button, DialogTitle, IconButton, Typography } from '@mui/material';
5
+ import { styled } from '@mui/material/styles';
6
+ import Icon from '@mui/material/Icon';
7
+ import DialogContent from '@mui/material/DialogContent';
8
+ import classNames from 'classnames';
9
+ import { PREFIX } from './constants';
10
+ import PreviewComponent from './PreviewComponent';
11
+ import UrlTextField from './UrlTextField';
12
+ const classes = {
13
+ layerRoot: `${PREFIX}-layer-root`,
14
+ title: `${PREFIX}-layer-title`,
15
+ content: `${PREFIX}-layer-content`,
16
+ media: `${PREFIX}-media`,
17
+ delete: `${PREFIX}-delete`
18
+ };
19
+ const Root = styled(Box, {
20
+ name: PREFIX,
21
+ slot: 'LayerRoot'
22
+ })(() => ({}));
23
+ const LayerComponent = React.forwardRef((props, ref) => {
24
+ // PROPS
25
+ const { className, onClose, onSave, defaultValue = [] } = props, rest = __rest(props, ["className", "onClose", "onSave", "defaultValue"]);
26
+ // STATE
27
+ const [value, setValue] = useState(defaultValue);
28
+ // HANDLERS
29
+ const handleSave = useCallback(() => onSave(value), [value]);
30
+ const handleAdd = useCallback((media) => setValue([...value, media]), [value]);
31
+ const handleChange = useCallback((medias) => setValue(medias), []);
32
+ return React.createElement(Root, Object.assign({ ref: ref, className: classNames(className, classes.layerRoot) }, rest),
33
+ React.createElement(DialogTitle, { className: classes.title },
34
+ React.createElement(IconButton, { onClick: onClose },
35
+ React.createElement(Icon, null, "arrow_back")),
36
+ React.createElement(Typography, null,
37
+ React.createElement(FormattedMessage, { id: "ui.composer.media.link.layer.title", defaultMessage: "ui.composer.media.link.layer.title" })),
38
+ React.createElement(Button, { size: "small", color: "secondary", variant: "contained", onClick: handleSave },
39
+ React.createElement(FormattedMessage, { id: "ui.composer.layer.save", defaultMessage: "ui.composer.layer.save" }))),
40
+ React.createElement(DialogContent, { className: classes.content },
41
+ React.createElement(UrlTextField, { id: "page", name: "page", label: React.createElement(FormattedMessage, { id: "ui.composer.media.link.add.label", defaultMessage: "ui.composer.media.link.add.label" }), fullWidth: true, variant: "outlined", placeholder: "https://", onSuccess: handleAdd }),
42
+ React.createElement(PreviewComponent, { onChange: handleChange, value: value })));
43
+ });
44
+ export default LayerComponent;
@@ -1,23 +1,9 @@
1
1
  import React from 'react';
2
- export interface LinkPreviewProps {
3
- /**
4
- * Medias
5
- */
6
- medias: any[];
7
- /**
8
- * Handle full width option
9
- * @default false
10
- */
11
- fullWidth?: boolean;
12
- /**
13
- * Component adornments
14
- * @default null
15
- */
16
- adornment?: React.ReactNode;
17
- /**
18
- * Handles on media click
19
- */
20
- onMediaClick?: (any: any) => void;
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[];
21
7
  }
22
- declare const _default: (props: LinkPreviewProps) => JSX.Element;
23
- export default _default;
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;
@@ -1,62 +1,35 @@
1
- import React from 'react';
1
+ import { __rest } from "tslib";
2
+ import React, { useCallback, useMemo } from 'react';
3
+ import { Box, IconButton } from '@mui/material';
2
4
  import { styled } from '@mui/material/styles';
3
- import LazyLoad from 'react-lazyload';
4
- import { MEDIA_TYPE_VIDEO } from '../../../constants/Media';
5
- import AutoPlayer from '../../AutoPlayer';
6
- import Box from '@mui/material/Box';
7
- import { DEFAULT_PRELOAD_OFFSET_VIEWPORT } from '../../../constants/LazyLoad';
8
- import Skeleton from '@mui/material/Skeleton';
5
+ import Icon from '@mui/material/Icon';
9
6
  import classNames from 'classnames';
10
- const PREFIX = 'SCPreviewMediaLink';
7
+ import { ReactSortable } from 'react-sortablejs';
8
+ import DisplayComponent from './DisplayComponent';
9
+ import { PREFIX } from './constants';
10
+ import filter from './filter';
11
11
  const classes = {
12
- previewLink: `${PREFIX}-preview-link`,
13
- previewVideo: `${PREFIX}-preview-video`,
14
- thumbnail: `${PREFIX}-thumbnail`,
15
- thumbnailFullWidth: `${PREFIX}-thumbnail`,
16
- image: `${PREFIX}-image`,
17
- snippet: `${PREFIX}-snippet`,
18
- snippetTitle: `${PREFIX}-snippet-title`,
19
- snippetDescription: `${PREFIX}-snippet-description`
12
+ previewRoot: `${PREFIX}-preview-root`,
13
+ media: `${PREFIX}-media`,
14
+ delete: `${PREFIX}-delete`
20
15
  };
21
16
  const Root = styled(Box, {
22
17
  name: PREFIX,
23
- slot: 'Root',
24
- overridesResolver: (props, styles) => styles.root
25
- })(({ theme }) => ({}));
26
- export default (props) => {
18
+ slot: 'PreviewRoot'
19
+ })(() => ({}));
20
+ const PreviewComponent = React.forwardRef((props, ref) => {
27
21
  // PROPS
28
- const { medias, fullWidth = false, adornment = null, onMediaClick = null } = props;
22
+ const { className, onChange, value = [] } = props, rest = __rest(props, ["className", "onChange", "value"]);
23
+ // MEMO
24
+ const medias = useMemo(() => value.filter(filter), [value]);
29
25
  // HANDLERS
30
- const handleLinkClick = (link) => {
31
- onMediaClick && onMediaClick(link);
32
- };
33
- // RENDER
34
- /**
35
- * Renders link preview
36
- * @param (link)
37
- * @param(key)
38
- */
39
- const renderPreview = (link, key) => {
40
- const domain = new URL(link.embed.metadata.url).hostname.replace('www.', '');
41
- return (React.createElement(Box, { className: classes.previewLink, key: key },
42
- link.embed.metadata.images && link.embed.metadata.images.length > 0 && (React.createElement(React.Fragment, null, fullWidth ? (React.createElement(Box, { className: classNames(classes.thumbnailFullWidth, classes.image), style: { background: `url(${link.image})`, paddingBottom: `${100 / link.image_width / link.image_height}%` } })) : (React.createElement(Box, { className: classNames(classes.thumbnail, classes.image), style: { background: `url(${link.image})` } })))),
43
- React.createElement(Box, { className: classes.snippet },
44
- React.createElement("b", { className: classes.snippetTitle }, link.embed.metadata.title),
45
- React.createElement("br", null),
46
- React.createElement("p", { className: classes.snippetDescription }, link.embed.metadata.description),
47
- React.createElement("a", { href: link.embed.metadata.url, target: '_blank', onClick: () => handleLinkClick(link) }, domain)),
48
- React.createElement("div", { style: { clear: 'both' } })));
49
- };
50
- /**
51
- * Renders component
52
- */
53
- return (React.createElement(React.Fragment, null, medias.length > 0 && (React.createElement(Root, null,
54
- adornment,
55
- medias.map((l, i) => {
56
- if (l.embed.metadata && l.embed.metadata.type === MEDIA_TYPE_VIDEO) {
57
- return (React.createElement(LazyLoad, { className: classes.previewVideo, placeholder: React.createElement(Skeleton, { variant: "rectangular", height: 360, width: '100%' }), key: i, once: true, offset: DEFAULT_PRELOAD_OFFSET_VIEWPORT },
58
- React.createElement(AutoPlayer, { url: l.url, width: '100%', key: i, onVideoWatch: () => handleLinkClick(l) })));
59
- }
60
- return React.createElement(React.Fragment, { key: i }, renderPreview(l, i));
61
- })))));
62
- };
26
+ const handleSort = useCallback((medias) => {
27
+ onChange && onChange([...value.filter((media) => medias.findIndex((m) => m.id === media.id) === -1), ...medias]);
28
+ }, [onChange]);
29
+ const handleDelete = useCallback((id) => () => onChange && onChange(value.filter((media) => media.id !== id)), [onChange, value]);
30
+ return React.createElement(Root, Object.assign({ ref: ref, className: classNames(className, classes.previewRoot) }, rest), medias.length > 0 && (React.createElement(ReactSortable, { list: medias, setList: handleSort }, medias.map((media) => (React.createElement(Box, { key: media.id, className: classes.media },
31
+ React.createElement(DisplayComponent, { medias: [media] }),
32
+ React.createElement(IconButton, { className: classes.delete, onClick: handleDelete(media.id), size: "small" },
33
+ React.createElement(Icon, null, "delete"))))))));
34
+ });
35
+ export default PreviewComponent;
@@ -0,0 +1,4 @@
1
+ import { ReactElement } from 'react';
2
+ import { IconButtonProps } from '@mui/material';
3
+ declare const _default: ({ className, ...rest }: IconButtonProps) => ReactElement;
4
+ export default _default;