| 
									
										
										
										
											2018-05-01 17:05:36 -07:00
										 |  |  | {#if type === 'video'} | 
					
						
							| 
									
										
										
										
											2018-02-04 19:56:06 -08:00
										 |  |  |   <button type="button" | 
					
						
							|  |  |  |           class="play-video-button" | 
					
						
							| 
									
										
										
										
											2018-05-01 17:05:36 -07:00
										 |  |  |           aria-label="Play video: {description}" | 
					
						
							|  |  |  |           delegate-key={delegateKey} | 
					
						
							|  |  |  |           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 | 
					
						
							| 
									
										
										
										
											2018-05-01 17:05:36 -07:00
										 |  |  |       alt={description} | 
					
						
							|  |  |  |       title={description} | 
					
						
							|  |  |  |       src={previewUrl} | 
					
						
							|  |  |  |       fallback={oneTransparentPixel} | 
					
						
							|  |  |  |       width={inlineWidth} | 
					
						
							|  |  |  |       height={inlineHeight} | 
					
						
							| 
									
										
										
										
											2018-03-13 23:07:30 -07:00
										 |  |  |       background="var(--loading-bg)" | 
					
						
							| 
									
										
										
										
											2018-05-01 17:05:36 -07:00
										 |  |  |       className={noNativeWidthHeight ? 'no-native-width-height' : ''} | 
					
						
							| 
									
										
										
										
											2018-02-04 19:56:06 -08:00
										 |  |  |     /> | 
					
						
							|  |  |  |   </button> | 
					
						
							| 
									
										
										
										
											2018-05-01 17:05:36 -07:00
										 |  |  | {:else} | 
					
						
							| 
									
										
										
										
											2018-02-04 19:56:06 -08:00
										 |  |  |   <button type="button" | 
					
						
							|  |  |  |           class="show-image-button" | 
					
						
							| 
									
										
										
										
											2018-05-01 17:05:36 -07:00
										 |  |  |           aria-label="Show image: {description}" | 
					
						
							|  |  |  |           title={description} | 
					
						
							|  |  |  |           delegate-key={delegateKey} | 
					
						
							| 
									
										
										
										
											2018-02-04 19:56:06 -08:00
										 |  |  |           on:mouseover="set({mouseover: event})" | 
					
						
							| 
									
										
										
										
											2018-05-01 17:05:36 -07:00
										 |  |  |           style="width: {inlineWidth}px; height: {inlineHeight}px;" | 
					
						
							| 
									
										
										
										
											2018-02-04 19:56:06 -08:00
										 |  |  |   > | 
					
						
							| 
									
										
										
										
											2018-05-01 17:05:36 -07:00
										 |  |  |   {#if type === 'gifv' && $autoplayGifs} | 
					
						
							| 
									
										
										
										
											2018-03-31 10:45:11 -07:00
										 |  |  |     <AutoplayVideo | 
					
						
							| 
									
										
										
										
											2018-05-01 17:05:36 -07:00
										 |  |  |       className={noNativeWidthHeight ? 'no-native-width-height' : ''} | 
					
						
							|  |  |  |       ariaLabel="Animated GIF: {description}" | 
					
						
							|  |  |  |       poster={previewUrl} | 
					
						
							|  |  |  |       src={url} | 
					
						
							|  |  |  |       width={inlineWidth} | 
					
						
							|  |  |  |       height={inlineHeight} | 
					
						
							| 
									
										
										
										
											2018-02-04 19:56:06 -08:00
										 |  |  |     /> | 
					
						
							| 
									
										
										
										
											2018-05-01 17:05:36 -07:00
										 |  |  |   {:elseif type === 'gifv' && !$autoplayGifs} | 
					
						
							| 
									
										
										
										
											2018-02-04 19:56:06 -08:00
										 |  |  |     <NonAutoplayGifv | 
					
						
							| 
									
										
										
										
											2018-05-01 17:05:36 -07:00
										 |  |  |       class={noNativeWidthHeight ? 'no-native-width-height' : ''} | 
					
						
							|  |  |  |       label="Animated GIF: {description}" | 
					
						
							|  |  |  |       poster={previewUrl} | 
					
						
							|  |  |  |       src={url} | 
					
						
							|  |  |  |       staticSrc={previewUrl} | 
					
						
							|  |  |  |       width={inlineWidth} | 
					
						
							|  |  |  |       height={inlineHeight} | 
					
						
							|  |  |  |       playing={mouseover} | 
					
						
							| 
									
										
										
										
											2018-02-04 19:56:06 -08:00
										 |  |  |     /> | 
					
						
							| 
									
										
										
										
											2018-05-01 17:05:36 -07:00
										 |  |  |   {:else} | 
					
						
							| 
									
										
										
										
											2018-03-13 23:07:30 -07:00
										 |  |  |     <LazyImage | 
					
						
							| 
									
										
										
										
											2018-05-01 17:05:36 -07:00
										 |  |  |       alt={description} | 
					
						
							|  |  |  |       title={description} | 
					
						
							|  |  |  |       src={previewUrl} | 
					
						
							|  |  |  |       fallback={oneTransparentPixel} | 
					
						
							|  |  |  |       width={inlineWidth} | 
					
						
							|  |  |  |       height={inlineHeight} | 
					
						
							| 
									
										
										
										
											2018-03-13 23:07:30 -07:00
										 |  |  |       background="var(--loading-bg)" | 
					
						
							| 
									
										
										
										
											2018-05-01 17:05:36 -07:00
										 |  |  |       className={noNativeWidthHeight ? 'no-native-width-height' : ''} | 
					
						
							| 
									
										
										
										
											2018-02-04 19:56:06 -08:00
										 |  |  |     /> | 
					
						
							| 
									
										
										
										
											2018-05-01 17:05:36 -07:00
										 |  |  |   {/if} | 
					
						
							| 
									
										
										
										
											2018-02-04 19:56:06 -08:00
										 |  |  | </button> | 
					
						
							| 
									
										
										
										
											2018-05-01 17:05:36 -07:00
										 |  |  | {/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-04-19 21:38:01 -07:00
										 |  |  |   import { DEFAULT_MEDIA_WIDTH, DEFAULT_MEDIA_HEIGHT, ONE_TRANSPARENT_PIXEL } from '../../_static/media' | 
					
						
							| 
									
										
										
										
											2018-04-21 09:56:53 -07:00
										 |  |  |   import { importShowVideoDialog, importShowImageDialog } from '../dialog/asyncDialogs' | 
					
						
							| 
									
										
										
										
											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-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-04-17 21:47:30 -07:00
										 |  |  |   import { registerClickDelegate } from '../../_utils/delegate' | 
					
						
							| 
									
										
										
										
											2018-01-20 19:19:24 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-20 15:37:40 -08:00
										 |  |  |   export default { | 
					
						
							| 
									
										
										
										
											2018-04-19 21:38:01 -07:00
										 |  |  |     oncreate () { | 
					
						
							| 
									
										
										
										
											2018-04-19 09:37:05 -07:00
										 |  |  |       let { delegateKey } = this.get() | 
					
						
							|  |  |  |       registerClickDelegate(this, delegateKey, () => { | 
					
						
							| 
									
										
										
										
											2018-04-20 10:36:20 -07:00
										 |  |  |         let { type } = this.get() | 
					
						
							|  |  |  |         if (type === 'video') { | 
					
						
							| 
									
										
										
										
											2018-03-15 08:59:30 -07:00
										 |  |  |           this.onClickPlayVideoButton() | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |           this.onClickShowImageButton() | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       }) | 
					
						
							|  |  |  |     }, | 
					
						
							| 
									
										
										
										
											2018-01-20 15:37:40 -08:00
										 |  |  |     computed: { | 
					
						
							| 
									
										
										
										
											2018-02-04 19:56:06 -08:00
										 |  |  |       // width/height to show inline | 
					
						
							| 
									
										
										
										
											2018-05-01 17:05:36 -07:00
										 |  |  |       inlineWidth: ({ smallWidth }) => smallWidth || DEFAULT_MEDIA_WIDTH, | 
					
						
							|  |  |  |       inlineHeight: ({ smallHeight }) => smallHeight || DEFAULT_MEDIA_HEIGHT, | 
					
						
							| 
									
										
										
										
											2018-02-04 19:56:06 -08:00
										 |  |  |       // width/height to show in a modal | 
					
						
							| 
									
										
										
										
											2018-05-01 17:05:36 -07:00
										 |  |  |       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, | 
					
						
							|  |  |  |       noNativeWidthHeight: ({ smallWidth, smallHeight }) => typeof smallWidth !== 'number' || typeof smallHeight !== 'number', | 
					
						
							|  |  |  |       delegateKey: ({ media, uuid }) => `media-${uuid}-${media.id}`, | 
					
						
							|  |  |  |       description: ({ media }) => media.description || '', | 
					
						
							|  |  |  |       previewUrl: ({ media }) => media.preview_url, | 
					
						
							|  |  |  |       url: ({ media }) => media.url, | 
					
						
							|  |  |  |       type: ({ media }) => media.type | 
					
						
							| 
									
										
										
										
											2018-01-20 19:19:24 -08:00
										 |  |  |     }, | 
					
						
							|  |  |  |     methods: { | 
					
						
							| 
									
										
										
										
											2018-04-19 21:38:01 -07:00
										 |  |  |       async onClickPlayVideoButton () { | 
					
						
							| 
									
										
										
										
											2018-04-20 10:36:20 -07:00
										 |  |  |         let { previewUrl, url, modalWidth, modalHeight, description } = this.get() | 
					
						
							| 
									
										
										
										
											2018-04-21 09:56:53 -07:00
										 |  |  |         let showVideoDialog = await importShowVideoDialog() | 
					
						
							|  |  |  |         showVideoDialog(previewUrl, url, | 
					
						
							| 
									
										
										
										
											2018-04-20 10:36:20 -07:00
										 |  |  |           modalWidth, modalHeight, description) | 
					
						
							| 
									
										
										
										
											2018-02-04 15:59:42 -08:00
										 |  |  |       }, | 
					
						
							| 
									
										
										
										
											2018-04-19 21:38:01 -07:00
										 |  |  |       async onClickShowImageButton () { | 
					
						
							| 
									
										
										
										
											2018-04-20 10:36:20 -07:00
										 |  |  |         let { previewUrl, url, modalWidth, modalHeight, description, type } = this.get() | 
					
						
							| 
									
										
										
										
											2018-04-21 09:56:53 -07:00
										 |  |  |         let showImageDialog = await importShowImageDialog() | 
					
						
							|  |  |  |         showImageDialog(previewUrl, url, type, | 
					
						
							| 
									
										
										
										
											2018-04-20 10:36:20 -07:00
										 |  |  |           modalWidth, modalHeight, 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-04-29 22:13:41 -07:00
										 |  |  |       oneTransparentPixel: ONE_TRANSPARENT_PIXEL, | 
					
						
							|  |  |  |       mouseover: void 0 | 
					
						
							| 
									
										
										
										
											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> |