JSFiddle - React, Tailwind, and code Playground

HTML

<meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0' name='viewport' />

CSS

img {
 position : 'absolute';
 width : 200px;
 height : 200px;
}

JavaScript

function add_swipe_controls (init) {
 void function (init) {
  var target_obj = init.target, initial_x, initial_y, current_x, current_y, swipe_in_effect = false
  target_obj.addEventListener ('touchstart' , swipe_start_event)
  target_obj.addEventListener ('touchmove' , swipe_event)
  target_obj.addEventListener ('touchend' , function (evt) {alert (8); if (swipe_in_effect == false) return; swipe_end_event (evt)})
  target_obj.addEventListener ('touchleave' , function (evt) {if (swipe_in_effect == false) return; swipe_end_event (evt)})
  target_obj.addEventListener ('touchcancel', function (evt) {if (swipe_in_effect == false) return; swipe_end (evt)})
  function swipe_end (evt) {
   if (swipe_in_effect == false) return
   swipe_in_effect = false
   if (typeof init.end_effect != "undefined") init.end_effect (evt)
  }
  function swipe_start_event (evt) {
   if ((typeof init.start_condition != "undefined") && (init.start_condition (evt) == false)) return
   if (evt.touches.length != 1) return
   var xy = getXY(evt.touches[0], target_obj); initial_x = xy[0]; initial_y = xy[1]
   current_x = initial_x; current_y = initial_y
   if (swipe_in_effect == true) return
   swipe_in_effect = true
   if (typeof init.start_effect != "undefined") init.start_effect (evt)
  }
  function swipe_event (evt) {
   if ((evt.touches.length != 1) || ((typeof init.continue_condition != "undefined") && (init.continue_condition(evt) === false))) {swipe_end (evt); return}
   var xy = getXY(evt.touches[0], target_obj); current_x = xy[0]; current_y = xy[1]
         alert (26 + " " + xy)
  }
  function swipe_end_event (evt) {
   if ((typeof init.continue_condition != "undefined") && (init.continue_condition(evt) === false)) {swipe_end (evt); return}
         alert (current_x + " " + initial_x)
   if (current_x < initial_x) {
    if (typeof init.swipe_left != "undefined") init.swipe_left (evt)
   } else {
    if ((current_x > initial_x) && (typeof init.swipe_right != "undefined")) init.swipe_right...