| 
									
										
										
										
											2018-01-21 12:34:35 -08:00
										 |  |  | <div class="status-media {{sensitive ? 'status-media-is-sensitive' : ''}}" | 
					
						
							|  |  |  |      style="grid-template-columns: repeat(auto-fit, minmax({{minMediaWidth}}px, 1fr));" > | 
					
						
							| 
									
										
										
										
											2018-01-20 15:37:40 -08:00
										 |  |  |   {{#each mediaAttachments as media}} | 
					
						
							| 
									
										
										
										
											2018-01-20 16:18:28 -08:00
										 |  |  |   <div class="status-media-container {{hasNoNativeWidthHeight(media) ? 'no-native-width-height' : ''}}"> | 
					
						
							| 
									
										
										
										
											2018-01-20 15:37:40 -08:00
										 |  |  |     {{#if media.type === 'video'}} | 
					
						
							| 
									
										
										
										
											2018-01-20 19:19:24 -08:00
										 |  |  |     <button type="button" | 
					
						
							|  |  |  |             class="play-video-button" | 
					
						
							| 
									
										
										
										
											2018-01-21 10:53:15 -08:00
										 |  |  |             aria-label="Play video: {{media.description || ''}}" | 
					
						
							| 
									
										
										
										
											2018-01-21 10:32:18 -08:00
										 |  |  |             on:click="onClickPlayVideoButton(media, getSmallWidth(media), getSmallHeight(media), media.description)"> | 
					
						
							| 
									
										
										
										
											2018-01-20 19:19:24 -08:00
										 |  |  |       <div class="svg-wrapper"> | 
					
						
							|  |  |  |         <svg> | 
					
						
							|  |  |  |           <use xlink:href="#fa-play-circle" /> | 
					
						
							|  |  |  |         </svg> | 
					
						
							|  |  |  |       </div> | 
					
						
							| 
									
										
										
										
											2018-01-21 10:32:18 -08:00
										 |  |  |       <img alt="{{media.description || ''}}" | 
					
						
							| 
									
										
										
										
											2018-01-20 20:47:18 -08:00
										 |  |  |            src="{{media.preview_url}}" | 
					
						
							| 
									
										
										
										
											2018-01-20 19:19:24 -08:00
										 |  |  |            width="{{getSmallWidth(media)}}" | 
					
						
							|  |  |  |            height="{{getSmallHeight(media)}}" /> | 
					
						
							|  |  |  |     </button> | 
					
						
							| 
									
										
										
										
											2018-01-20 16:18:28 -08:00
										 |  |  |     {{elseif media.type === 'gifv'}} | 
					
						
							|  |  |  |     <video | 
					
						
							| 
									
										
										
										
											2018-01-21 10:32:18 -08:00
										 |  |  |            aria-label="Animated GIF: {{media.description || ''}}" | 
					
						
							| 
									
										
										
										
											2018-01-20 16:18:28 -08:00
										 |  |  |            poster="{{media.preview_url}}" | 
					
						
							|  |  |  |            src="{{media.url}}" | 
					
						
							|  |  |  |            width="{{getSmallWidth(media)}}" | 
					
						
							|  |  |  |            height="{{getSmallHeight(media)}}" | 
					
						
							|  |  |  |            autoplay | 
					
						
							|  |  |  |            muted | 
					
						
							|  |  |  |            loop | 
					
						
							|  |  |  |            playsinline | 
					
						
							|  |  |  |     /> | 
					
						
							| 
									
										
										
										
											2018-01-20 15:37:40 -08:00
										 |  |  |     {{else}} | 
					
						
							| 
									
										
										
										
											2018-01-21 10:32:18 -08:00
										 |  |  |       <img alt="{{media.description || ''}}" | 
					
						
							|  |  |  |            src="{{media.preview_url}}" | 
					
						
							| 
									
										
										
										
											2018-01-20 15:37:40 -08:00
										 |  |  |            width="{{getSmallWidth(media)}}" | 
					
						
							|  |  |  |            height="{{getSmallHeight(media)}}"/> | 
					
						
							|  |  |  |     {{/if}} | 
					
						
							|  |  |  |   </div> | 
					
						
							|  |  |  |   {{/each}} | 
					
						
							|  |  |  | </div> | 
					
						
							|  |  |  | <style> | 
					
						
							|  |  |  |   .status-media { | 
					
						
							|  |  |  |     grid-area: status-media; | 
					
						
							|  |  |  |     display: grid; | 
					
						
							|  |  |  |     align-items: center; | 
					
						
							|  |  |  |     justify-content: center; | 
					
						
							|  |  |  |     justify-items: center; | 
					
						
							|  |  |  |     grid-column-gap: 10px; | 
					
						
							|  |  |  |     grid-row-gap: 10px; | 
					
						
							| 
									
										
										
										
											2018-01-21 12:34:35 -08:00
										 |  |  |     margin: 10px 0; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .status-media.status-media-is-sensitive { | 
					
						
							|  |  |  |     margin: 0; | 
					
						
							| 
									
										
										
										
											2018-01-20 15:37:40 -08:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .status-media-container { | 
					
						
							|  |  |  |     overflow: hidden; | 
					
						
							|  |  |  |     width: 100%; | 
					
						
							|  |  |  |     height: 100%; | 
					
						
							|  |  |  |     display: flex; | 
					
						
							|  |  |  |     justify-content: center; | 
					
						
							|  |  |  |     align-items: center; | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2018-01-20 16:18:28 -08:00
										 |  |  |   .no-native-width-height img, .no-native-width-height video { | 
					
						
							| 
									
										
										
										
											2018-01-20 15:37:40 -08:00
										 |  |  |     background-color: var(--mask-bg); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   .status-media { | 
					
						
							|  |  |  |     max-width: calc(100vw - 40px); | 
					
						
							|  |  |  |     overflow: hidden; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .status-media video, .status-media img { | 
					
						
							|  |  |  |     max-width: calc(100vw - 40px); | 
					
						
							|  |  |  |     object-fit: cover; | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2018-01-20 19:19:24 -08:00
										 |  |  |   .play-video-button { | 
					
						
							|  |  |  |     margin: 0; | 
					
						
							|  |  |  |     padding: 0; | 
					
						
							|  |  |  |     position: relative; | 
					
						
							|  |  |  |     border-radius: 0; | 
					
						
							|  |  |  |     border: none; | 
					
						
							|  |  |  |     background: none; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   .play-video-button .svg-wrapper { | 
					
						
							|  |  |  |     position: absolute; | 
					
						
							|  |  |  |     top: 0; | 
					
						
							|  |  |  |     left: 0; | 
					
						
							|  |  |  |     right: 0; | 
					
						
							|  |  |  |     bottom: 0; | 
					
						
							|  |  |  |     display: flex; | 
					
						
							|  |  |  |     align-items: center; | 
					
						
							|  |  |  |     justify-content: center; | 
					
						
							|  |  |  |     z-index: 40; | 
					
						
							|  |  |  |     pointer-events: none; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   .play-video-button svg { | 
					
						
							|  |  |  |     width: 72px; | 
					
						
							|  |  |  |     height: 72px; | 
					
						
							|  |  |  |     fill: var(--mask-svg-fill); | 
					
						
							|  |  |  |     border-radius: 100%; | 
					
						
							|  |  |  |     background: var(--mask-opaque-bg); | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2018-01-20 15:37:40 -08:00
										 |  |  | </style> | 
					
						
							|  |  |  | <script> | 
					
						
							|  |  |  |   const DEFAULT_MEDIA_WIDTH = 300 | 
					
						
							|  |  |  |   const DEFAULT_MEDIA_HEIGHT = 200 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-20 20:20:33 -08:00
										 |  |  |   import { showVideoDialog } from '../_utils/showVideoDialog' | 
					
						
							| 
									
										
										
										
											2018-01-20 19:19:24 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-20 15:37:40 -08:00
										 |  |  |   export default { | 
					
						
							|  |  |  |     helpers: { | 
					
						
							|  |  |  |       getSmallWidth: media => media.meta && media.meta.small && typeof media.meta.small.width === 'number' ?  media.meta.small.width : DEFAULT_MEDIA_WIDTH, | 
					
						
							|  |  |  |       getSmallHeight: media => media.meta && media.meta.small && typeof media.meta.small.height === 'number' ?  media.meta.small.height : DEFAULT_MEDIA_HEIGHT, | 
					
						
							|  |  |  |       hasNoNativeWidthHeight: media => !(media && media.meta && media.meta.small && typeof media.meta.small.width === 'number' && typeof media.meta.small.height === 'number'), | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     computed: { | 
					
						
							|  |  |  |       minMediaWidth: (mediaAttachments) => Math.min.apply(Math, mediaAttachments.map(media => media.meta && media.meta.small && typeof media.meta.small.width === 'number' ?  media.meta.small.width : DEFAULT_MEDIA_WIDTH)) | 
					
						
							| 
									
										
										
										
											2018-01-20 19:19:24 -08:00
										 |  |  |     }, | 
					
						
							|  |  |  |     methods: { | 
					
						
							| 
									
										
										
										
											2018-01-21 10:32:18 -08:00
										 |  |  |       async onClickPlayVideoButton(media, width, height, description) { | 
					
						
							|  |  |  |         showVideoDialog(media.preview_url, media.url, width, height, description) | 
					
						
							| 
									
										
										
										
											2018-01-20 19:19:24 -08:00
										 |  |  |       } | 
					
						
							| 
									
										
										
										
											2018-01-20 15:37:40 -08:00
										 |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | </script> |