| 
									
										
										
										
											2018-01-21 12:34:35 -08:00
										 |  |  | <div class="status-media {{sensitive ? 'status-media-is-sensitive' : ''}}" | 
					
						
							| 
									
										
										
										
											2018-02-01 18:29:29 -08:00
										 |  |  |      style="grid-template-columns: repeat(auto-fit, minmax({{maxMediaWidth}}px, 1fr));" > | 
					
						
							| 
									
										
										
										
											2018-01-20 15:37:40 -08:00
										 |  |  |   {{#each mediaAttachments as media}} | 
					
						
							|  |  |  |     {{#if media.type === 'video'}} | 
					
						
							| 
									
										
										
										
											2018-02-04 15:59:42 -08:00
										 |  |  |       <button type="button" | 
					
						
							|  |  |  |               class="play-video-button" | 
					
						
							|  |  |  |               aria-label="Play video: {{media.description || ''}}" | 
					
						
							|  |  |  |               on:click="onClickPlayVideoButton(media, getOriginalWidth(media), getOriginalHeight(media))"> | 
					
						
							|  |  |  |         <div class="svg-wrapper"> | 
					
						
							|  |  |  |           <svg> | 
					
						
							|  |  |  |             <use xlink:href="#fa-play-circle" /> | 
					
						
							|  |  |  |           </svg> | 
					
						
							|  |  |  |         </div> | 
					
						
							|  |  |  |         <img alt="{{media.description || ''}}" | 
					
						
							|  |  |  |              src="{{media.preview_url}}" | 
					
						
							|  |  |  |              width="{{getSmallWidth(media)}}" | 
					
						
							|  |  |  |              height="{{getSmallHeight(media)}}" | 
					
						
							|  |  |  |              class="{{hasNoNativeWidthHeight(media) ? 'no-native-width-height' : ''}}" | 
					
						
							| 
									
										
										
										
											2018-02-01 18:48:59 -08:00
										 |  |  |         /> | 
					
						
							| 
									
										
										
										
											2018-02-04 15:59:42 -08:00
										 |  |  |       </button> | 
					
						
							| 
									
										
										
										
											2018-01-20 15:37:40 -08:00
										 |  |  |     {{else}} | 
					
						
							| 
									
										
										
										
											2018-02-04 15:59:42 -08:00
										 |  |  |       <button type="button" | 
					
						
							|  |  |  |             class="show-image-button" | 
					
						
							|  |  |  |             aria-label="Show image: {{media.description || ''}}" | 
					
						
							|  |  |  |             on:click="onClickShowImageButton(media, getOriginalWidth(media), getOriginalHeight(media))"> | 
					
						
							|  |  |  |       {{#if media.type === 'gifv' && $autoplayGifs}} | 
					
						
							|  |  |  |         <video | 
					
						
							|  |  |  |           class="{{hasNoNativeWidthHeight(media) ? 'no-native-width-height' : ''}}" | 
					
						
							|  |  |  |           aria-label="Animated GIF: {{media.description || ''}}" | 
					
						
							|  |  |  |           poster="{{media.preview_url}}" | 
					
						
							|  |  |  |           src="{{media.url}}" | 
					
						
							|  |  |  |           width="{{getSmallWidth(media)}}" | 
					
						
							|  |  |  |           height="{{getSmallHeight(media)}}" | 
					
						
							|  |  |  |           autoplay | 
					
						
							|  |  |  |           muted | 
					
						
							|  |  |  |           loop | 
					
						
							|  |  |  |           playsinline | 
					
						
							|  |  |  |         /> | 
					
						
							|  |  |  |       {{elseif media.type === 'gifv' && !$autoplayGifs}} | 
					
						
							|  |  |  |         <NonAutoplayGifv | 
					
						
							|  |  |  |           class="{{hasNoNativeWidthHeight(media) ? 'no-native-width-height' : ''}}" | 
					
						
							|  |  |  |           label="Animated GIF: {{media.description || ''}}" | 
					
						
							|  |  |  |           poster="{{media.preview_url}}" | 
					
						
							|  |  |  |           src="{{media.url}}" | 
					
						
							|  |  |  |           staticSrc="{{media.preview_url}}" | 
					
						
							|  |  |  |           width="{{getSmallWidth(media)}}" | 
					
						
							|  |  |  |           height="{{getSmallHeight(media)}}" | 
					
						
							|  |  |  |         /> | 
					
						
							|  |  |  |       {{else}} | 
					
						
							|  |  |  |         <img class="{{!imageLoaded ? 'image-loading' : ''}} {{imageError ? 'image-error' : ''}} {{hasNoNativeWidthHeight(media) ? 'no-native-width-height' : ''}}" | 
					
						
							|  |  |  |              on:imgLoad="set({imageLoaded: true})" | 
					
						
							|  |  |  |              on:imgLoadError="set({imageError: true})" | 
					
						
							|  |  |  |              alt="{{media.description || ''}}" | 
					
						
							|  |  |  |              src="{{media.preview_url}}" | 
					
						
							|  |  |  |              width="{{getSmallWidth(media)}}" | 
					
						
							|  |  |  |              height="{{getSmallHeight(media)}}"/> | 
					
						
							|  |  |  |       {{/if}} | 
					
						
							|  |  |  |     </button> | 
					
						
							| 
									
										
										
										
											2018-01-20 15:37:40 -08:00
										 |  |  |     {{/if}} | 
					
						
							|  |  |  |   {{/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
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2018-02-01 18:29:29 -08:00
										 |  |  |   .no-native-width-height { | 
					
						
							| 
									
										
										
										
											2018-01-20 15:37:40 -08:00
										 |  |  |     background-color: var(--mask-bg); | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2018-01-22 21:47:29 -08:00
										 |  |  |   .status-media img.image-loading, .status-media img.image-error { | 
					
						
							|  |  |  |     background: var(--loading-bg); | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2018-01-20 15:37:40 -08:00
										 |  |  |   .status-media { | 
					
						
							|  |  |  |     overflow: hidden; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   .status-media video, .status-media img { | 
					
						
							|  |  |  |     object-fit: cover; | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2018-01-30 22:40:40 -08:00
										 |  |  |   .status-media, .status-media video, .status-media img { | 
					
						
							|  |  |  |     max-width: calc(100vw - 40px); | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2018-01-20 19:19:24 -08:00
										 |  |  |   .play-video-button { | 
					
						
							|  |  |  |     margin: 0; | 
					
						
							|  |  |  |     padding: 0; | 
					
						
							|  |  |  |     border-radius: 0; | 
					
						
							|  |  |  |     border: none; | 
					
						
							|  |  |  |     background: none; | 
					
						
							| 
									
										
										
										
											2018-02-04 15:59:42 -08:00
										 |  |  |     position: relative; | 
					
						
							| 
									
										
										
										
											2018-01-20 19:19:24 -08:00
										 |  |  |   } | 
					
						
							|  |  |  |   .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-02-04 15:59:42 -08:00
										 |  |  |   .show-image-button { | 
					
						
							|  |  |  |     margin: 0; | 
					
						
							|  |  |  |     padding: 0; | 
					
						
							|  |  |  |     border-radius: 0; | 
					
						
							|  |  |  |     border: none; | 
					
						
							|  |  |  |     background: none; | 
					
						
							|  |  |  |     cursor: zoom-in; | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2018-01-30 22:40:40 -08:00
										 |  |  |   @media (max-width: 767px) { | 
					
						
							|  |  |  |     .status-media, .status-media video, .status-media img { | 
					
						
							|  |  |  |       max-width: calc(100vw - 20px); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2018-01-20 15:37:40 -08:00
										 |  |  | </style> | 
					
						
							|  |  |  | <script> | 
					
						
							|  |  |  |   const DEFAULT_MEDIA_WIDTH = 300 | 
					
						
							|  |  |  |   const DEFAULT_MEDIA_HEIGHT = 200 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-27 16:35:44 -08:00
										 |  |  |   import { imgLoad, imgLoadError } from '../../_utils/events' | 
					
						
							|  |  |  |   import { showVideoDialog } from '../../_utils/showVideoDialog' | 
					
						
							| 
									
										
										
										
											2018-02-04 15:59:42 -08:00
										 |  |  |   import { showImageDialog } from '../../_utils/showImageDialog' | 
					
						
							| 
									
										
										
										
											2018-02-01 18:48:59 -08:00
										 |  |  |   import NonAutoplayGifv from '../NonAutoplayGifv.html' | 
					
						
							| 
									
										
										
										
											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, | 
					
						
							| 
									
										
										
										
											2018-02-04 15:59:42 -08:00
										 |  |  |       getOriginalWidth: media => media.meta && media.meta.original && typeof media.meta.original.width === 'number' ?  media.meta.original.width : DEFAULT_MEDIA_WIDTH, | 
					
						
							|  |  |  |       getOriginalHeight: media => media.meta && media.meta.original && typeof media.meta.original.height === 'number' ?  media.meta.original.height : DEFAULT_MEDIA_HEIGHT, | 
					
						
							| 
									
										
										
										
											2018-01-20 15:37:40 -08:00
										 |  |  |       hasNoNativeWidthHeight: media => !(media && media.meta && media.meta.small && typeof media.meta.small.width === 'number' && typeof media.meta.small.height === 'number'), | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     computed: { | 
					
						
							| 
									
										
										
										
											2018-02-01 18:29:29 -08:00
										 |  |  |       maxMediaWidth: (mediaAttachments) => Math.max.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-02-04 15:59:42 -08:00
										 |  |  |       onClickPlayVideoButton(media, width, height) { | 
					
						
							|  |  |  |         showVideoDialog(media.preview_url, media.url, width, height, media.description) | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |       onClickShowImageButton(media, width, height) { | 
					
						
							|  |  |  |         showImageDialog(media.preview_url, media.url, media.type, width, height, media.description) | 
					
						
							| 
									
										
										
										
											2018-01-20 19:19:24 -08:00
										 |  |  |       } | 
					
						
							| 
									
										
										
										
											2018-01-22 21:47:29 -08:00
										 |  |  |     }, | 
					
						
							|  |  |  |     events: { | 
					
						
							|  |  |  |       imgLoad, | 
					
						
							|  |  |  |       imgLoadError | 
					
						
							| 
									
										
										
										
											2018-02-01 18:48:59 -08:00
										 |  |  |     }, | 
					
						
							|  |  |  |     components: { | 
					
						
							|  |  |  |       NonAutoplayGifv | 
					
						
							| 
									
										
										
										
											2018-01-20 15:37:40 -08:00
										 |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | </script> |