| 
									
										
										
										
											2018-02-04 19:56:06 -08:00
										 |  |  | {{#if media.type === 'video'}} | 
					
						
							|  |  |  |   <button type="button" | 
					
						
							|  |  |  |           class="play-video-button" | 
					
						
							|  |  |  |           aria-label="Play video: {{media.description || ''}}" | 
					
						
							| 
									
										
										
										
											2018-03-15 08:59:30 -07:00
										 |  |  |           delegate-key="{{delegateKey}}" | 
					
						
							| 
									
										
										
										
											2018-03-09 23:30:17 -08:00
										 |  |  |           style="width: {{inlineWidth}}px; height: {{inlineHeight}}px;" | 
					
						
							|  |  |  |   > | 
					
						
							| 
									
										
										
										
											2018-03-10 11:28:30 -08:00
										 |  |  |     <PlayVideoIcon /> | 
					
						
							| 
									
										
										
										
											2018-03-13 23:07:30 -07:00
										 |  |  |     <LazyImage | 
					
						
							|  |  |  |       alt="{{media.description}}" | 
					
						
							|  |  |  |       src="{{media.preview_url}}" | 
					
						
							|  |  |  |       fallback="{{oneTransparentPixel}}" | 
					
						
							|  |  |  |       width="{{inlineWidth}}" | 
					
						
							|  |  |  |       height="{{inlineHeight}}" | 
					
						
							|  |  |  |       background="var(--loading-bg)" | 
					
						
							|  |  |  |       className="{{noNativeWidthHeight ? 'no-native-width-height' : ''}}" | 
					
						
							| 
									
										
										
										
											2018-02-04 19:56:06 -08:00
										 |  |  |     /> | 
					
						
							|  |  |  |   </button> | 
					
						
							|  |  |  | {{else}} | 
					
						
							|  |  |  |   <button type="button" | 
					
						
							|  |  |  |           class="show-image-button" | 
					
						
							|  |  |  |           aria-label="Show image: {{media.description || ''}}" | 
					
						
							| 
									
										
										
										
											2018-03-15 08:59:30 -07:00
										 |  |  |           delegate-key="{{delegateKey}}" | 
					
						
							| 
									
										
										
										
											2018-02-04 19:56:06 -08:00
										 |  |  |           on:mouseover="set({mouseover: event})" | 
					
						
							| 
									
										
										
										
											2018-03-09 23:30:17 -08:00
										 |  |  |           style="width: {{inlineWidth}}px; height: {{inlineHeight}}px;" | 
					
						
							| 
									
										
										
										
											2018-02-04 19:56:06 -08:00
										 |  |  |   > | 
					
						
							|  |  |  |   {{#if media.type === 'gifv' && $autoplayGifs}} | 
					
						
							| 
									
										
										
										
											2018-03-31 10:45:11 -07:00
										 |  |  |     <AutoplayVideo | 
					
						
							|  |  |  |       className="{{noNativeWidthHeight ? 'no-native-width-height' : ''}}" | 
					
						
							|  |  |  |       ariaLabel="Animated GIF: {{media.description || ''}}" | 
					
						
							| 
									
										
										
										
											2018-02-04 19:56:06 -08:00
										 |  |  |       poster="{{media.preview_url}}" | 
					
						
							|  |  |  |       src="{{media.url}}" | 
					
						
							|  |  |  |       width="{{inlineWidth}}" | 
					
						
							|  |  |  |       height="{{inlineHeight}}" | 
					
						
							|  |  |  |     /> | 
					
						
							|  |  |  |   {{elseif media.type === 'gifv' && !$autoplayGifs}} | 
					
						
							|  |  |  |     <NonAutoplayGifv | 
					
						
							|  |  |  |       class="{{noNativeWidthHeight ? 'no-native-width-height' : ''}}" | 
					
						
							|  |  |  |       label="Animated GIF: {{media.description || ''}}" | 
					
						
							|  |  |  |       poster="{{media.preview_url}}" | 
					
						
							|  |  |  |       src="{{media.url}}" | 
					
						
							|  |  |  |       staticSrc="{{media.preview_url}}" | 
					
						
							|  |  |  |       width="{{inlineWidth}}" | 
					
						
							|  |  |  |       height="{{inlineHeight}}" | 
					
						
							|  |  |  |       playing="{{mouseover}}" | 
					
						
							|  |  |  |     /> | 
					
						
							|  |  |  |   {{else}} | 
					
						
							| 
									
										
										
										
											2018-03-13 23:07:30 -07:00
										 |  |  |     <LazyImage | 
					
						
							|  |  |  |       alt="{{media.description}}" | 
					
						
							|  |  |  |       src="{{media.preview_url}}" | 
					
						
							|  |  |  |       fallback="{{oneTransparentPixel}}" | 
					
						
							|  |  |  |       width="{{inlineWidth}}" | 
					
						
							|  |  |  |       height="{{inlineHeight}}" | 
					
						
							|  |  |  |       background="var(--loading-bg)" | 
					
						
							|  |  |  |       className="{{noNativeWidthHeight ? 'no-native-width-height' : ''}}" | 
					
						
							| 
									
										
										
										
											2018-02-04 19:56:06 -08:00
										 |  |  |     /> | 
					
						
							|  |  |  |   {{/if}} | 
					
						
							|  |  |  | </button> | 
					
						
							|  |  |  | {{/if}} | 
					
						
							| 
									
										
										
										
											2018-01-20 15:37:40 -08:00
										 |  |  | <style> | 
					
						
							| 
									
										
										
										
											2018-02-04 19:56:06 -08:00
										 |  |  |   :global(.status-media video, .status-media img) { | 
					
						
							| 
									
										
										
										
											2018-01-20 15:37:40 -08:00
										 |  |  |     object-fit: cover; | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2018-03-13 23:07:30 -07:00
										 |  |  |   :global(.no-native-width-height) { | 
					
						
							| 
									
										
										
										
											2018-02-04 19:56:06 -08:00
										 |  |  |     background-color: var(--mask-bg); | 
					
						
							| 
									
										
										
										
											2018-01-30 22:40:40 -08:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											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
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											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-02-04 19:56:06 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-13 23:07:30 -07:00
										 |  |  |   :global(.status-media video, .status-media img, .status-media .lazy-image, | 
					
						
							|  |  |  |           .status-media .show-image-button, .status-media .non-autoplay-gifv, | 
					
						
							|  |  |  |           .status-media .play-video-button) { | 
					
						
							| 
									
										
										
										
											2018-02-04 19:56:06 -08:00
										 |  |  |     max-width: calc(100vw - 40px); | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2018-01-30 22:40:40 -08:00
										 |  |  |   @media (max-width: 767px) { | 
					
						
							| 
									
										
										
										
											2018-03-13 23:07:30 -07:00
										 |  |  |     :global(.status-media video, .status-media img, .status-media .lazy-image, | 
					
						
							|  |  |  |             .status-media .show-image-button, .status-media .non-autoplay-gifv, | 
					
						
							|  |  |  |             .status-media .play-video-button) { | 
					
						
							| 
									
										
										
										
											2018-01-30 22:40:40 -08:00
										 |  |  |       max-width: calc(100vw - 20px); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2018-01-20 15:37:40 -08:00
										 |  |  | </style> | 
					
						
							|  |  |  | <script> | 
					
						
							| 
									
										
										
										
											2018-02-04 19:56:06 -08:00
										 |  |  |   import { DEFAULT_MEDIA_WIDTH, DEFAULT_MEDIA_HEIGHT } from '../../_static/media' | 
					
						
							| 
									
										
										
										
											2018-02-14 22:02:54 -08:00
										 |  |  |   import { importDialogs } from '../../_utils/asyncModules' | 
					
						
							| 
									
										
										
										
											2018-02-04 16:34:54 -08:00
										 |  |  |   import { mouseover } from '../../_utils/events' | 
					
						
							| 
									
										
										
										
											2018-02-01 18:48:59 -08:00
										 |  |  |   import NonAutoplayGifv from '../NonAutoplayGifv.html' | 
					
						
							| 
									
										
										
										
											2018-03-10 11:28:30 -08:00
										 |  |  |   import PlayVideoIcon from '../PlayVideoIcon.html' | 
					
						
							| 
									
										
										
										
											2018-03-09 23:30:17 -08:00
										 |  |  |   import { ONE_TRANSPARENT_PIXEL } from '../../_static/media' | 
					
						
							| 
									
										
										
										
											2018-03-13 17:14:57 -07:00
										 |  |  |   import { store } from '../../_store/store' | 
					
						
							| 
									
										
										
										
											2018-03-13 23:07:30 -07:00
										 |  |  |   import LazyImage from '../LazyImage.html' | 
					
						
							| 
									
										
										
										
											2018-03-31 10:45:11 -07:00
										 |  |  |   import AutoplayVideo from '../AutoplayVideo.html' | 
					
						
							| 
									
										
										
										
											2018-03-15 08:59:30 -07:00
										 |  |  |   import { registerClickDelegate, unregisterClickDelegate } from '../../_utils/delegate' | 
					
						
							| 
									
										
										
										
											2018-01-20 19:19:24 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-20 15:37:40 -08:00
										 |  |  |   export default { | 
					
						
							| 
									
										
										
										
											2018-03-15 08:59:30 -07:00
										 |  |  |     oncreate() { | 
					
						
							|  |  |  |       registerClickDelegate(this.get('delegateKey'), () => { | 
					
						
							|  |  |  |         if (this.get('media').type === 'video') { | 
					
						
							|  |  |  |           this.onClickPlayVideoButton() | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |           this.onClickShowImageButton() | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       }) | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     ondestroy() { | 
					
						
							|  |  |  |       unregisterClickDelegate(this.get('delegateKey')) | 
					
						
							|  |  |  |     }, | 
					
						
							| 
									
										
										
										
											2018-01-20 15:37:40 -08:00
										 |  |  |     computed: { | 
					
						
							| 
									
										
										
										
											2018-02-04 19:56:06 -08:00
										 |  |  |       // width/height to show inline | 
					
						
							|  |  |  |       inlineWidth: smallWidth => smallWidth || DEFAULT_MEDIA_WIDTH, | 
					
						
							|  |  |  |       inlineHeight: smallHeight => smallHeight || DEFAULT_MEDIA_HEIGHT, | 
					
						
							|  |  |  |       // width/height to show in a modal | 
					
						
							|  |  |  |       modalWidth: (originalWidth, inlineWidth) => originalWidth || inlineWidth, | 
					
						
							|  |  |  |       modalHeight: (originalHeight, inlineHeight) => originalHeight || inlineHeight, | 
					
						
							|  |  |  |       meta: media => media.meta, | 
					
						
							|  |  |  |       small: meta => meta && meta.small, | 
					
						
							|  |  |  |       original: meta => meta && meta.original, | 
					
						
							|  |  |  |       smallWidth: small => small && small.width, | 
					
						
							|  |  |  |       smallHeight: small => small && small.height, | 
					
						
							|  |  |  |       originalWidth: original => original && original.width, | 
					
						
							|  |  |  |       originalHeight: original => original && original.height, | 
					
						
							| 
									
										
										
										
											2018-03-15 08:59:30 -07:00
										 |  |  |       noNativeWidthHeight: (smallWidth, smallHeight) => typeof smallWidth !== 'number' || typeof smallHeight !== 'number', | 
					
						
							|  |  |  |       delegateKey: (media) => `media-${media.id}` | 
					
						
							| 
									
										
										
										
											2018-01-20 19:19:24 -08:00
										 |  |  |     }, | 
					
						
							|  |  |  |     methods: { | 
					
						
							| 
									
										
										
										
											2018-02-14 22:02:54 -08:00
										 |  |  |       async onClickPlayVideoButton() { | 
					
						
							| 
									
										
										
										
											2018-02-04 19:56:06 -08:00
										 |  |  |         let media = this.get('media') | 
					
						
							|  |  |  |         let width = this.get('modalWidth') | 
					
						
							|  |  |  |         let height = this.get('modalHeight') | 
					
						
							| 
									
										
										
										
											2018-02-14 22:02:54 -08:00
										 |  |  |         let dialogs = await importDialogs() | 
					
						
							|  |  |  |         dialogs.showVideoDialog(media.preview_url, media.url, width, height, media.description) | 
					
						
							| 
									
										
										
										
											2018-02-04 15:59:42 -08:00
										 |  |  |       }, | 
					
						
							| 
									
										
										
										
											2018-02-14 22:02:54 -08:00
										 |  |  |       async onClickShowImageButton() { | 
					
						
							| 
									
										
										
										
											2018-02-04 19:56:06 -08:00
										 |  |  |         let media = this.get('media') | 
					
						
							|  |  |  |         let width = this.get('modalWidth') | 
					
						
							|  |  |  |         let height = this.get('modalHeight') | 
					
						
							| 
									
										
										
										
											2018-02-14 22:02:54 -08:00
										 |  |  |         let dialogs = await importDialogs() | 
					
						
							|  |  |  |         dialogs.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
										 |  |  |     }, | 
					
						
							| 
									
										
										
										
											2018-02-11 22:59:33 -08:00
										 |  |  |     data: () => ({ | 
					
						
							| 
									
										
										
										
											2018-03-09 23:30:17 -08:00
										 |  |  |       oneTransparentPixel: ONE_TRANSPARENT_PIXEL | 
					
						
							| 
									
										
										
										
											2018-02-11 22:59:33 -08:00
										 |  |  |     }), | 
					
						
							| 
									
										
										
										
											2018-03-13 17:14:57 -07:00
										 |  |  |     store: () => store, | 
					
						
							| 
									
										
										
										
											2018-01-22 21:47:29 -08:00
										 |  |  |     events: { | 
					
						
							| 
									
										
										
										
											2018-02-04 16:34:54 -08:00
										 |  |  |       mouseover | 
					
						
							| 
									
										
										
										
											2018-02-01 18:48:59 -08:00
										 |  |  |     }, | 
					
						
							|  |  |  |     components: { | 
					
						
							| 
									
										
										
										
											2018-03-10 11:28:30 -08:00
										 |  |  |       NonAutoplayGifv, | 
					
						
							| 
									
										
										
										
											2018-03-13 23:07:30 -07:00
										 |  |  |       PlayVideoIcon, | 
					
						
							| 
									
										
										
										
											2018-03-31 10:45:11 -07:00
										 |  |  |       LazyImage, | 
					
						
							|  |  |  |       AutoplayVideo | 
					
						
							| 
									
										
										
										
											2018-01-20 15:37:40 -08:00
										 |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | </script> |