/** * Interactive behavior for duplicate reports. */ import { $, $$ } from './utils/dom'; function setupDupeReports() { const [ onion, slider ] = $$('.onion-skin__image, .onion-skin__slider'); const swipe = $('.swipe__image'); if (swipe) setupSwipe(swipe); if (onion) setupOnionSkin(onion, slider); } function setupSwipe(swipe) { const [ clip, divider ] = $$('#clip rect, #divider', swipe); const { width } = swipe.viewBox.baseVal; function moveDivider({ clientX }) { // Move center to cursor const rect = swipe.getBoundingClientRect(); const newX = (clientX - rect.left) * (width / rect.width); divider.setAttribute('x', newX); clip.setAttribute('width', newX); } swipe.addEventListener('mousemove', moveDivider); } function setupOnionSkin(onion, slider) { const target = $('#target', onion); function setOpacity() { target.setAttribute('opacity', slider.value); } setOpacity(); slider.addEventListener('input', setOpacity); } export { setupDupeReports };