62 lines
		
	
	
		
			No EOL
		
	
	
		
			1.3 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			No EOL
		
	
	
		
			1.3 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <div class="non-autoplay-gifv" style="width: {width}px; height: {height}px;"
 | |
|      on:mouseover="onMouseOver(event)"
 | |
|      ref:node
 | |
| >
 | |
|   {#if playing}
 | |
|     <AutoplayVideo
 | |
|       className={class}
 | |
|       ariaLabel={label}
 | |
|       {poster}
 | |
|       {src}
 | |
|       {width}
 | |
|       {height}
 | |
|       />
 | |
|   {:else}
 | |
|     <LazyImage
 | |
|       alt={label || ''}
 | |
|       title={label || ''}
 | |
|       src={staticSrc}
 | |
|       fallback={oneTransparentPixel}
 | |
|       {width}
 | |
|       {height}
 | |
|       background="var(--loading-bg)"
 | |
|       className={class}
 | |
|     />
 | |
|   {/if}
 | |
|   <PlayVideoIcon className={playing ? 'hidden' : ''}/>
 | |
| </div>
 | |
| <style>
 | |
|   .non-autoplay-gifv {
 | |
|     cursor: zoom-in;
 | |
|     position: relative;
 | |
|   }
 | |
|   :global(.non-autoplay-gifv .play-video-icon) {
 | |
|     transition: opacity 0.2s linear;
 | |
|   }
 | |
| </style>
 | |
| <script>
 | |
|   import { mouseover } from '../_utils/events'
 | |
|   import PlayVideoIcon from './PlayVideoIcon.html'
 | |
|   import { ONE_TRANSPARENT_PIXEL } from '../_static/media'
 | |
|   import LazyImage from './LazyImage.html'
 | |
|   import AutoplayVideo from './AutoplayVideo.html'
 | |
| 
 | |
|   export default {
 | |
|     methods: {
 | |
|       onMouseOver (mouseOver) {
 | |
|         this.set({ playing: mouseOver })
 | |
|       }
 | |
|     },
 | |
|     events: {
 | |
|       mouseover
 | |
|     },
 | |
|     data: () => ({
 | |
|       oneTransparentPixel: ONE_TRANSPARENT_PIXEL
 | |
|     }),
 | |
|     components: {
 | |
|       PlayVideoIcon,
 | |
|       LazyImage,
 | |
|       AutoplayVideo
 | |
|     }
 | |
|   }
 | |
| </script> |