let event = props.event || null; if (!state) { State.init({ index: 0 }); } if (!event) { // TODO: return default image return <img src="" alt="Event!" />; } const mode = props.mode || 'banner'; const imagesWithCid = (event.images || []) .filter((image) => { return image.url && image.url.cid; }) .filter((image) => { return image.url.cid.length > 0; }); const displayImages = imagesWithCid.filter((image) => { return image.type === mode; }); const onTick = () => { if (displayImages.length > 1) { State.update((state) => { state.index = (state.index + 1) % displayImages.length; }); } props.__engine.onTick(1, onTick); }; props.__engine.onTick(1, onTick); return ( <div style={{ width: '100%', height: '100%', display: 'flex', justifyContent: 'center', alignItems: 'center', maxWidth: '100%', overflow: 'hidden', userSelect: 'none', }} > {displayImages.map((image) => { // const image = displayImages[(i + state.index) % displayImages.length]; return ( <img src={`https://ipfs.near.social/ipfs/${image.url.cid}`} key={image.cid} alt={image.url.cid} style={{ width: '100%', height: '100%', maxWidth: '100%', boxSizing: 'border-box', objectFit: 'cover', transform: `translateX(-${ (state.index * 100) / displayImages.length }%)`, transition: 'transform 0.5s', }} /> ); })} </div> );