{"version":3,"file":"front.js","mappings":"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","sources":["webpack://suicidegirls/./frontend/legacy/front/carousel.js","webpack://suicidegirls/./frontend/legacy/front/index.js"],"sourcesContent":["import videojs from 'video.js';\n\nimport 'legacy/vendor/jquery.iosslider';\nimport { initVideo } from 'legacy/video/index.js';\n\nfunction initVSOTDButtons() {\n  $('#carousel-wrapper').on('click', '.video-play', function videoPlay(ev) {\n    ev.preventDefault();\n    const { videoId } = this.dataset;\n    const player = videojs(videoId);\n    player.currentTime(0);\n    player.on('ended', () => { player.initChildren(); });\n    player.play();\n  });\n}\n\nfunction pauseVSOTDVideos(excludeVideoId) {\n  $('#carousel-wrapper').find('video').not(`#${excludeVideoId}`).each(\n    function pauseVideo() {\n      const player = videojs(this.id);\n      if (!player.paused()) {\n        player.pause();\n      }\n    },\n  );\n}\n\nfunction getVideoIdFromSlider($slider) {\n  const $video = $slider.find('video');\n  return $video.length ? $video[0].id : null;\n}\n\nexport default {\n  init() {\n    const $carouselWrapper = $('#carousel-wrapper');\n    const hasTouch = 'ontouchstart' in window;\n    let currentPaginated = 2;\n    const cachedNodes = {};\n\n    initVSOTDButtons();\n\n    if ($('#carousel-wrapper').length > 0) {\n      $('#carousel-prev-front').add('#carousel-next-front').on('click', (e) => {\n        e.preventDefault();\n      });\n\n      $('#carousel-wrapper').iosSlider({\n        snapToChildren: true,\n        desktopClickDrag: true,\n        snapSlideCenter: true,\n        navPrevSelector: $('#carousel-prev-front'),\n        navNextSelector: $('#carousel-next-front'),\n        infiniteSlider: false,\n        startAtSlide: 2,\n\n        onSliderLoaded() {\n          $('#carousel-wrapper').addClass('loaded');\n        },\n        onSlideChange(args) {\n          $(args.sliderObject).children().removeClass('current');\n          const $currentSlider = $(args.currentSlideObject);\n          $currentSlider.addClass('current');\n          const excludeVideoId = getVideoIdFromSlider($currentSlider);\n          pauseVSOTDVideos(excludeVideoId);\n          $(args.sliderContainerObject)\n            .attr('data-slide', args.currentSlideNumber);\n        },\n        onSlideComplete(args) {\n          const $currentSlider = $(args.currentSlideObject);\n          const videoId = getVideoIdFromSlider($currentSlider);\n          if (videoId) {\n            const player = videojs(videoId);\n            if (player && player.paused() && player.played().length) {\n              player.play();\n            }\n          }\n\n          let currentSlidePos = 2;\n          const lastItem = $('#carousel-wrapper')\n            .children('ul').children('li').last();\n\n          const slides = args.data.numberOfSlides;\n\n          if (args.currentSlideNumber === slides) { // we're at the end.\n            currentPaginated += 1;\n            $('#carousel-wrapper').spinner();\n            $.ajax({\n              url: '/front_albums/',\n              data: {\n                partial: true,\n                before: lastItem.data('before'),\n                offset: lastItem.data('number') || 5,\n                count: lastItem.data('pageCount') || 5,\n              },\n              dataType: 'html',\n            }).done((data) => {\n              const lis = [];\n              cachedNodes[`page${currentPaginated - 1}`] = [];\n              for (let i = args.data.numberOfSlides; i > 2; i -= 1) {\n                // cache already loaded node for later use if necessary.\n                cachedNodes[`page${currentPaginated - 1}`]\n                  .push($('#carousel-wrapper').find('li').eq(0));\n                $('#carousel-wrapper').iosSlider('removeSlide', 1);\n              }\n\n              $(data).filter('li').each(function filterLi() {\n                currentSlidePos += 1;\n\n                $('#carousel-wrapper')\n                  .iosSlider('addSlide', this, currentSlidePos);\n\n                lis.push($(this));\n              });\n\n              SG.initImages($('#carousel-wrapper'));\n\n              $(data).find('.video-js').each(function eachVideo() {\n                initVideo(this);\n              });\n\n              $('#carousel-wrapper').clearSpinner();\n            });\n            // we're near the first slide, and we don't have any previous pages.\n          } else if (args.currentSlideNumber === 1 && currentPaginated !== 2) {\n            for (let i = args.data.numberOfSlides; i > 2; i -= 1) {\n              $('#carousel-wrapper').iosSlider('removeSlide', i);\n            }\n            for (\n              let i = 0;\n              i <= cachedNodes[`page${currentPaginated - 1}`].length;\n              i += 1\n            ) {\n              if (cachedNodes[`page${currentPaginated - 1}`][i]) {\n                $('#carousel-wrapper')\n                  .iosSlider(\n                    'addSlide',\n                    cachedNodes[`page${currentPaginated - 1}`][i][0],\n                    -1,\n                  );\n              }\n            }\n            currentPaginated -= 1;\n            $('#carousel-wrapper').clearSpinner();\n          }\n        },\n\n      }).data('iosslider');\n    }\n\n    $(window).on('scroll', () => {\n      // disallow scroll disruption - iOS interrupts all animations during page\n      // scroll, then fires the scroll event this binding ensures the slider\n      // won't get stuck between slides.\n      if (!hasTouch) return;\n      $carouselWrapper.data('iosslider').settings.autoSlideTransTimer = 300;\n      $carouselWrapper.iosSlider('goToSlide', $carouselWrapper.data('page'));\n      $carouselWrapper.data('iosslider').settings.autoSlideTransTimer = 750;\n    });\n  },\n};\n","import carousel from './carousel';\n\n(() => {\n  carousel.init();\n})();\n"],"names":["getVideoIdFromSlider","$slider","$video","find","length","id","$carouselWrapper","$","hasTouch","window","currentPaginated","cachedNodes","on","ev","preventDefault","videoId","this","dataset","player","videojs","currentTime","initChildren","play","add","e","iosSlider","snapToChildren","desktopClickDrag","snapSlideCenter","navPrevSelector","navNextSelector","infiniteSlider","startAtSlide","onSliderLoaded","addClass","onSlideChange","args","sliderObject","children","removeClass","$currentSlider","currentSlideObject","excludeVideoId","not","concat","each","paused","pause","pauseVSOTDVideos","sliderContainerObject","attr","currentSlideNumber","onSlideComplete","played","currentSlidePos","lastItem","last","slides","data","numberOfSlides","spinner","ajax","url","partial","before","offset","count","dataType","done","lis","i","push","eq","filter","SG","initImages","initVideo","clearSpinner","settings","autoSlideTransTimer","carousel"],"sourceRoot":""}