{"version":3,"file":"292.a1cc5e3c11b8d38369a7.js","mappings":"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","sources":["webpack:///./Scripts/Haki/Utils/scroll.js","webpack:///./Scripts/Haki/Components/ImageSlider/Components/Indicator/Bar.js","webpack:///./Scripts/Haki/Components/ImageSlider/Components/Indicator/Chevron.js","webpack:///./Scripts/Haki/Components/ImageSlider/Components/Indicator/Controls.js","webpack:///./Scripts/Haki/Components/ImageSlider/Components/Indicator.js","webpack:///./Scripts/Haki/Components/ImageSlider/Components/Images.js","webpack:///./Scripts/Haki/Components/ImageSlider/ImageSlider.js","webpack:///./Scripts/Haki/Utils/css.utils.js","webpack:///./Scripts/Haki/Hooks/useElementSize.js"],"sourcesContent":["export const isScrolledIntoView = (element) => {\n  let docViewTop = window.scrollTop();\n  let docViewBottom = docViewTop + window.innerHeight;\n\n  let elemTop = element.offsetTop;\n  let elemBottom = elemTop + element.innerHeight;\n  \n  return elemBottom <= docViewBottom && elemTop >= docViewTop;\n};\n\nexport const isEndOfList = (direction, current, length) =>\n(direction < 0 && current === 1) || (direction > 0 && current === length);\n\nlet debounceTimer;\n\nexport const debounce = (callback, time) => {\n  window.clearTimeout(debounceTimer);\n  debounceTimer = window.setTimeout(callback, time);\n};\n","import React from 'react';\n\nconst Bar = () => (\n  <div className=\"indicator__track\">\n    <div className=\"indicator__track__bar\"></div>\n  </div>\n);\n\nexport default Bar;\n","import React from 'react';\n\nconst Chevron = ({ direction, isEnabled, onClick }) => {\n  const dir = direction === 'left' ? -1 : 1;\n  const enabled = isEnabled ? 'En' : 'Dis';\n  const handleClick = () => onClick && onClick(dir);\n\n  return (\n    <div\n      className={`chevron chevron--${direction} chevron--is${enabled}abled`}\n      onClick={handleClick}\n    >\n      <svg\n        width=\"8\"\n        height=\"13\"\n        viewBox=\"0 0 8 13\"\n        fill=\"none\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"M1 12.5L7 6.5L1 0.5\"\n          stroke=\"#01435C\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n        />\n      </svg>\n    </div>\n  );\n};\n\nexport default Chevron;\n","import React from 'react';\nimport Chevron from './Chevron';\n\nconst Controls = ({ currentSlide, imagesAmount, handleSlide }) => {\n  const handleChevronClick = (dir) => handleSlide(dir);\n\n  const indicatorText = `${currentSlide} / ${imagesAmount}`;\n\n  const isLeftEnabled = currentSlide !== 1;\n  const isRightEnabled = currentSlide !== imagesAmount;\n\n  return (\n    <div className=\"indicator__text\">\n      <Chevron\n        direction=\"left\"\n        onClick={handleChevronClick}\n        isEnabled={isLeftEnabled}\n      />\n      <span className=\"text\">{indicatorText}</span>\n      <Chevron\n        direction=\"right\"\n        onClick={handleChevronClick}\n        isEnabled={isRightEnabled}\n      />\n    </div>\n  );\n};\n\nexport default Controls;\n","import React from 'react';\nimport { isEndOfList } from '../../../Utils/scroll';\nimport Bar from './Indicator/Bar';\nimport Controls from './Indicator/Controls';\n\nconst Indicator = ({ currentSlide, imagesLength, handleSlide }) => {\n  const onSlide = (direction) =>\n    !isEndOfList(direction, currentSlide, imagesLength) &&\n    handleSlide(direction);\n\n  return (\n    <div className=\"indicator\">\n      <Bar />\n      <Controls\n        currentSlide={currentSlide}\n        imagesAmount={imagesLength}\n        handleSlide={onSlide}\n      />\n    </div>\n  );\n};\n\nexport default Indicator;\n","import React, { useEffect, useRef, forwardRef } from 'react';\nimport { debounce, isEndOfList } from '../../../Utils/scroll';\n\nconst Images = forwardRef(({ images, currentSlide, handleSlide }, ref) => {\n  const wheelTimeout = useRef();\n\n  const imagesLength = images.length;\n\n  useEffect(() => {\n    const cancelWheel = (e) => wheelTimeout.current && e.preventDefault();\n    document.body.addEventListener('wheel', cancelWheel, { passive: false });\n\n    return () => document.body.removeEventListener('wheel', cancelWheel);\n  }, []);\n\n  const preventDefault = () => {\n    clearTimeout(wheelTimeout.current);\n    wheelTimeout.current = setTimeout(() => {\n      wheelTimeout.current = false;\n    }, 250);\n  };\n\n  const scroll = (deltaY) => {\n    const direction = Math.sign(deltaY);\n    if (deltaY === 0 || isEndOfList(direction, currentSlide, imagesLength))\n      return;\n\n    handleSlide(direction);\n  };\n\n  const handleWheel = ({ deltaY }) => {\n    preventDefault();\n    debounce(() => scroll(deltaY), 100);\n  };\n\n  let deltaX = 0;\n  let startX = 0;\n\n  const handleTouchStart = (e) => {\n    if (e.touches.length > 1) return;\n\n    const { clientX } = e.touches[0];\n    startX = clientX;\n  };\n\n  const handleTouchMove = (e) => {\n    const { clientX } = e.touches[0];\n    deltaX = startX - clientX;\n    debounce(() => scroll(deltaX), 100);\n  };\n\n  const handleTouchEnd = (e) => {\n    const { touches } = e;\n  };\n\n  const getImages = (() =>\n    images.map(({ src }, k) => <img itemProp=\"image\" width=\"680\" src={src} key={k} id={k} />))();\n\n  return (\n    <div\n      ref={ref}\n      className=\"image-slider\"\n      onWheel={handleWheel}\n      onTouchMove={handleTouchMove}\n      onTouchStart={handleTouchStart}\n      onTouchEnd={handleTouchEnd}\n    >\n      {getImages}\n    </div>\n  );\n});\n\nexport default Images;\n","import React, { useState, useEffect, useRef } from 'react';\nimport Indicator from './Components/Indicator';\nimport { setCSSProperty } from '../../Utils/css.utils';\nimport { useElementSize } from '../../Hooks/useElementSize.js';\nimport Images from './Components/Images';\n\nconst ImageSlider = ({ images }) => {\n  if (!images || images.length < 1) return null;\n\n  const barWidth = 100 / images.length;\n  const sliderContainerClass = '.image-slider-container';\n  const sliderContainer = document.querySelector(sliderContainerClass);\n  const imageSlider = document.querySelector('.image-slider');\n\n  const [currentSlide, setCurrentSlide] = useState(1);\n\n  const setCSSPropertySlider = (prop, val) =>\n    setCSSProperty(sliderContainerClass, prop, val);\n\n  const sliderRef = useRef();\n  let sliderWidth = useElementSize(sliderRef);\n\n  useEffect(() => setCSSPropertySlider('bar-width', `${barWidth}%`));\n\n  useEffect(() => {\n    if (!(sliderContainer || imageSlider)) return;\n\n    const slide = currentSlide - 1;\n    setCSSPropertySlider('bar-left', `${slide * barWidth}%`);\n\n    imageSlider.scrollTo({\n      left: slide * sliderWidth,\n      behavior: 'smooth',\n    });\n  }, [currentSlide]);\n\n  const handleSlide = (slide) => setCurrentSlide(currentSlide + slide);\n\n  return (\n    <div className=\"image-slider-container\">\n      <Images\n        ref={sliderRef}\n        images={images}\n        currentSlide={currentSlide}\n        handleSlide={handleSlide}\n      />\n      <Indicator\n        currentSlide={currentSlide}\n        imagesLength={images.length}\n        handleSlide={handleSlide}\n      />\n    </div>\n  );\n};\n\nexport default ImageSlider;\n","export const setCSSProperty = (element, prop, val) =>\n  document.querySelector(element).style.setProperty(`--${prop}`, val);\n","import { useState, useEffect } from 'react';\n\nexport const useElementSize = (elementRef) => {\n  const [elementWidth, setElementWidth] = useState(0);\n\n  useEffect(() => {\n    if (!elementRef) return;\n    if (!elementRef.current) return;\n\n    setElementWidth(elementRef.current.clientWidth);\n\n    const handleResize = () => \n      setElementWidth(elementRef.current.clientWidth);\n    \n\n    window.addEventListener('resize', handleResize);\n    handleResize();\n\n    return () => window.removeEventListener('resize', handleResize);\n  }, [elementRef]);\n\n  return elementWidth;\n};\n"],"names":["isEndOfList","direction","current","length","debounceTimer","debounce","callback","time","window","clearTimeout","setTimeout","Bar","React","className","Chevron","isEnabled","onClick","dir","enabled","handleClick","width","height","viewBox","fill","xmlns","d","stroke","strokeLinecap","strokeLinejoin","Controls","currentSlide","imagesAmount","handleSlide","handleChevronClick","indicatorText","isLeftEnabled","isRightEnabled","Indicator","imagesLength","forwardRef","images","ref","wheelTimeout","useRef","useEffect","cancelWheel","e","preventDefault","document","body","addEventListener","passive","removeEventListener","scroll","deltaY","Math","sign","deltaX","startX","getImages","map","src","k","itemProp","key","id","onWheel","handleWheel","onTouchMove","clientX","touches","onTouchStart","onTouchEnd","ImageSlider","barWidth","sliderContainerClass","sliderContainer","querySelector","imageSlider","setCurrentSlide","useState","setCSSPropertySlider","prop","val","setCSSProperty","element","style","setProperty","sliderRef","sliderWidth","elementRef","elementWidth","setElementWidth","clientWidth","handleResize","useElementSize","slide","scrollTo","left","behavior","Images"],"sourceRoot":""}