<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>