{"version":3,"file":"slider-dots.js","mappings":"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","sources":["webpack://waves/webpack/bootstrap","webpack://waves/webpack/runtime/compat get default export","webpack://waves/webpack/runtime/define property getters","webpack://waves/webpack/runtime/hasOwnProperty shorthand","webpack://waves/external var \"ReactDOM\"","webpack://waves/external var \"React\"","webpack://waves/./src/projects/galleries/slider-dots/slider-dots-run.ts","webpack://waves/./src/domain/common.ts","webpack://waves/./src/projects/galleries/slider-dots/slider-dots.tsx","webpack://waves/./src/projects/galleries/slider-dots/index.tsx"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","const __WEBPACK_NAMESPACE_OBJECT__ = ReactDOM;","const __WEBPACK_NAMESPACE_OBJECT__ = React;","export const RunSliderDots = (el :HTMLElement,autoScroll: number | null| undefined) => {\r\n //const animDuration = 600;\r\n //console.log('elSlider el: ',el);\r\n // const id = el.getAttribute(\"id\");\r\n el.addEventListener('touchstart', handleTouchStart, false);\r\n el.addEventListener('mousedown', handleTouchMouseStart, false);\r\n el.addEventListener('mouseup', handleTouchMouseEnd, false);\r\n el.addEventListener('touchmove', handleTouchMove, false);\r\n el.addEventListener('touchend', handleTouchEnd, false);\r\n\r\n //console.log(`RunSliderDots.el: ${id}`, el);\r\n\r\n const slider = el;\r\n const dots: any = slider.querySelector(\".dots\");\r\n const sliderImgs: any = slider.querySelectorAll(\".img\");\r\n\r\n let currImg = 0;\r\n let prevImg = sliderImgs.length - 1;\r\n\r\n // Creates dots and add listeners to them\r\n for (let i = 0; i < sliderImgs.length; ++i) {\r\n const dot = document.createElement(\"div\");\r\n dot.classList.add(\"dot\");\r\n dots.appendChild(dot);\r\n dot.addEventListener(\"click\", dotClick.bind(null, i), false);\r\n }\r\n const allDots = dots.querySelectorAll(\".dot\") as HTMLElement[];\r\n allDots[0].classList.add(\"active-dot\");\r\n\r\n sliderImgs[0].style.left = \"0\";\r\n let refreshIntervalId: NodeJS.Timer;\r\n if(autoScroll)\r\n refreshIntervalId = setInterval(runAutoScroll, autoScroll);\r\n function runAutoScroll( )\r\n {\r\n const allDots = dots.querySelectorAll(\".dot\") as HTMLElement[];\r\n for (let i = 0; i < allDots.length; ++i) {\r\n const dot = allDots[i];\r\n if((i+1) === allDots.length) {\r\n //allDots[0].click();\r\n dotAutoScroll(0);\r\n return false;\r\n }\r\n else if(dot.classList.contains(\"active-dot\")){\r\n //allDots[i+1].click();\r\n dotAutoScroll(i+1);\r\n return false;\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Animates images\r\n * @param {number} [nextImg] - index of next image to show\r\n * @param {boolean} [right = false] - animate to right\r\n */\r\n function animateSlider(nextImg: number, right: boolean) {\r\n //console.log(`nextImg:${nextImg}, right:${right}`);\r\n if(nextImg === 0 || nextImg > sliderImgs.length)\r\n return;\r\n curDotNumber = nextImg;\r\n if (!nextImg)\r\n nextImg = currImg + 1 < sliderImgs.length ? currImg + 2 : 1;\r\n\r\n --nextImg;\r\n sliderImgs[prevImg].style.animationName = \"\";\r\n\r\n //console.log(`nextImg:${nextImg}`);\r\n if (!right) {\r\n sliderImgs[nextImg].style.animationName = \"leftNext\";\r\n sliderImgs[currImg].style.animationName = \"leftCurr\";\r\n } else {\r\n sliderImgs[nextImg].style.animationName = \"rightNext\";\r\n sliderImgs[currImg].style.animationName = \"rightCurr\";\r\n }\r\n\r\n prevImg = currImg;\r\n currImg = nextImg;\r\n\r\n const currDot = allDots[currImg];\r\n currDot.classList.add(\"active-dot\");\r\n const prevDot = allDots[prevImg];\r\n prevDot.classList.remove(\"active-dot\");\r\n }\r\n function removeLeftFromStyle(){\r\n if (sliderImgs[0].style.left === \"0px\") {\r\n sliderImgs[0].style.left = null;\r\n }\r\n }\r\n function dotAutoScroll(num: number) {\r\n //console.log('dotAutoScroll: aasas',num);\r\n removeLeftFromStyle();\r\n\r\n if (num === currImg)\r\n return false;\r\n\r\n if (num > currImg)\r\n animateSlider(num + 1, false);\r\n else\r\n animateSlider(num + 1, true);\r\n\r\n }\r\n /**\r\n * Decides if animate to left or right and highlights clicked dot\r\n * @param {number} num - index of clicked dot\r\n */\r\n function dotClick(num: number) {\r\n //console.log('dotClick: aasas',num);\r\n clearInterval(refreshIntervalId);\r\n removeLeftFromStyle();\r\n\r\n if (num === currImg)\r\n return false;\r\n\r\n if (num > currImg)\r\n animateSlider(num + 1, false);\r\n else\r\n animateSlider(num + 1, true);\r\n\r\n }\r\n\r\n\r\n var xDown: any = null;\r\n var yDown: any = null;\r\n\r\n var xDownEnd: any = null;\r\n var yDownEnd: any = null;\r\n\r\n var curDotNumber: number = 1;\r\n\r\n function getTouches(evt: any) {\r\n return evt.touches || // browser API\r\n evt.originalEvent.touches; // jQuery\r\n }\r\n\r\n function handleTouchStart(evt: any) {\r\n //evt.preventDefault();\r\n //console.log('handleTouchStart');\r\n const firstTouch = getTouches(evt)[0];\r\n xDown = firstTouch.clientX;\r\n yDown = firstTouch.clientY;\r\n };\r\n\r\n function handleTouchMouseStart(evt: any) {\r\n evt.preventDefault();\r\n //console.log('handleTouchMouseStart',evt);\r\n xDown = evt.clientX;\r\n yDown = evt.clientY;\r\n };\r\n\r\n function handleTouchMouseEnd(evt: any) {\r\n evt.preventDefault();\r\n //console.log('handleTouchMouseEnd',evt);\r\n if (xDown < evt.clientX) {\r\n //console.log('mouse swap right');\r\n if(curDotNumber > 1) {\r\n clearInterval(refreshIntervalId);\r\n removeLeftFromStyle();\r\n animateSlider(curDotNumber - 1, true);\r\n }\r\n\r\n }\r\n if (xDown > evt.clientX) {\r\n //console.log(`mouse swap left curDotNumber:${curDotNumber}`,sliderImgs.length);\r\n if(curDotNumber < sliderImgs.length) {\r\n clearInterval(refreshIntervalId);\r\n removeLeftFromStyle();\r\n animateSlider(curDotNumber + 1, false);\r\n }\r\n }\r\n //xDown = 0;\r\n //yDown = 0;\r\n };\r\n\r\n function handleTouchMove(evt: any) {\r\n //console.log('handleTouchMove');\r\n if (!xDown || !yDown) {\r\n return;\r\n }\r\n\r\n xDownEnd = evt.touches[0].clientX;\r\n yDownEnd = evt.touches[0].clientY;\r\n };\r\n function handleTouchEnd(evt: any) {\r\n //console.log(`handleTouchEnd xDown:${xDown} / xDownEnd:${xDownEnd}, yDown:${yDown} / yDownEnd:${yDownEnd}`);\r\n if (!xDownEnd || !yDownEnd) {\r\n return;\r\n }\r\n\r\n // const xDiff = xDown - xDownEnd;\r\n // const yDiff = yDown - yDownEnd;\r\n\r\n if (Math.abs(xDown) > Math.abs(xDownEnd)) {/*most significant*/\r\n\r\n /* left swipe */\r\n //console.log('left swipe',curDotNumber);\r\n if(curDotNumber < sliderImgs.length) {\r\n clearInterval(refreshIntervalId);\r\n removeLeftFromStyle();\r\n animateSlider(curDotNumber + 1, false);\r\n }\r\n\r\n } else {\r\n /* right swipe */\r\n //console.log('right swipe');\r\n if(curDotNumber > 1) {\r\n clearInterval(refreshIntervalId);\r\n removeLeftFromStyle();\r\n animateSlider(curDotNumber - 1, true);\r\n }\r\n }\r\n xDownEnd = null;\r\n yDownEnd = null;\r\n }\r\n}","/**\r\n * get JSON from HTML element on the page\r\n */\r\nimport React, {useEffect, useState} from \"react\";\r\n\r\n\r\nexport const getJSONFromHtml = ($el: HTMLElement|null) => {\r\n if(!$el || !$el.textContent) return null;\r\n\r\n let json = null;\r\n\r\n try{\r\n json = JSON.parse($el.textContent);\r\n }\r\n catch(ex){}\r\n\r\n return json;\r\n};\r\n\r\n/**\r\n * get setting fromHTML\r\n *
...
\r\n */\r\nexport const getSettingFromHtml = (id: string) => {\r\n const $div = document.querySelector(`#${ id }`);\r\n if(!$div || !$div.textContent) return '';\r\n return $div.textContent.trim();\r\n};\r\n\r\n/**\r\n * helper: get GUID\r\n */\r\nconst guidHelper = () => {\r\n return Math.floor((1 + Math.random()) * 0x10000)\r\n .toString(16)\r\n .substring(1);\r\n};\r\n\r\n/**\r\n * get GUID\r\n */\r\nexport const guid = () => {\r\n return guidHelper() + guidHelper() + '-' + guidHelper() + '-' + guidHelper() + '-' + guidHelper() + '-' + guidHelper() + guidHelper() + guidHelper();\r\n};\r\n\r\n/**\r\n * timeout in milliseconds\r\n */\r\nexport const timeout = (ms: number) => {\r\n return new Promise(resolve => setTimeout(resolve, ms));\r\n};\r\n\r\n/**\r\n * get page node GUID from meta tag printed in HTML\r\n *
67633544-c1c1-4096-a3cc-880a96fe4713
\r\n */\r\nexport const getPageNodeGUID = () => {\r\n const $div = document.querySelector('#nodeguid');\r\n if(!$div || !$div.textContent) return '';\r\n return $div.textContent.trim();\r\n};\r\n\r\n/**\r\n * get img CDN domain\r\n */\r\nexport const getImgCDNDomain = () => {\r\n const $box = document.getElementById('img-cdn-domain');\r\n const domain = $box?.textContent || '';\r\n return domain.trim().toLowerCase();\r\n};\r\n\r\ndeclare const window: any;\r\nexport const isMobile = () => {\r\n let check = false;\r\n\r\n // eslint-disable-next-line\r\n (function(a){if(/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0,4))) check = true;})( navigator.userAgent||navigator.vendor||window.opera);\r\n return check;\r\n};\r\nexport const isTablet_NOTWORK = () => {\r\n const userAgent = navigator.userAgent.toLowerCase();\r\n const isTablet = /(ipad|tablet|(android(?!.*mobile))|(windows(?!.*phone)(.*touch))|kindle|playbook|silk|(puffin(?!.*(IP|AP|WP))))/.test(userAgent);\r\n return isTablet;\r\n};\r\nexport const isTablet = () => {\r\n const isTouchDevice = 'ontouchstart' in window || navigator.maxTouchPoints > 0;\r\n if (isTouchDevice && !isMobile()) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n};\r\n\r\nexport const stopAllYouTubeVideos = () => {\r\n // eslint-disable-next-line\r\n document.querySelectorAll('iframe').forEach(v => { v.src = v.src;});\r\n const cnt = document.querySelectorAll('iframe')?.length;\r\n if(cnt > 0){\r\n window.setTimeout(() => {\r\n window.history.go(cnt-1);\r\n }, 200);\r\n }\r\n //window.history.go(-1);\r\n}\r\n\r\n\r\nexport const getHashByPrefix = (toFind:string, indexToFind:number = 0) => {\r\n let result = \"\";\r\n const _hash = window.location.hash.substring(1);\r\n if(!_hash || _hash === '')\r\n return result;\r\n var a = decodeURIComponent(_hash).split(\"|\"),\r\n i;\r\n\r\n for (i = 0; i < a.length; i++) {\r\n\r\n if(i < indexToFind)\r\n continue;\r\n\r\n if(a[i].startsWith(toFind) || toFind === ''){\r\n result = a[i];\r\n return result;\r\n }\r\n }\r\n\r\n return result;\r\n};\r\n\r\nexport const getParents = (elem: any) => {\r\n\r\n // Set up a parent array\r\n var parents = [];\r\n\r\n // Push each parent element to the array\r\n for ( ; elem && elem !== document; elem = elem.parentNode ) {\r\n parents.push(elem);\r\n }\r\n\r\n // Return our parent array\r\n return parents;\r\n\r\n};\r\nexport const isChildOfElementById = (elem: any, parentId: string) => {\r\n\r\n let res = false;\r\n // Push each parent element to the array\r\n for ( ; elem && elem !== document; elem = elem.parentNode ) {\r\n if(elem.id && elem.id === parentId)\r\n res = true;\r\n }\r\n\r\n // Return our parent array\r\n return res;\r\n\r\n};\r\n//Hook for dynamic window size\r\nexport const useWindowSize = () => {\r\n\r\n // Initialize state with undefined width/height so server and client renders match\r\n // Learn more here: https://joshwcomeau.com/react/the-perils-of-rehydration/\r\n const [windowSize, setWindowSize] = useState({\r\n width: undefined,\r\n height: undefined,\r\n });\r\n useEffect(() => {\r\n // Handler to call on window resize\r\n function handleResize() {\r\n // Set window width/height to state\r\n setWindowSize({\r\n width: window.innerWidth,\r\n height: window.innerHeight,\r\n });\r\n }\r\n // Add event listener\r\n window.addEventListener(\"resize\", handleResize);\r\n // Call handler right away so state gets updated with initial window size\r\n handleResize();\r\n // Remove event listener on cleanup\r\n return () => window.removeEventListener(\"resize\", handleResize);\r\n }, []); // Empty array ensures that effect is only run on mount\r\n\r\n return windowSize;\r\n\r\n};\r\n//Hook for detect if HTML element is overflow\r\nexport const useIsOverflow = (ref : any) => {\r\n const [isOverflow, setIsOverflow] = React.useState(false);\r\n\r\n React.useLayoutEffect(() => {\r\n const { current } = ref;\r\n\r\n const trigger = () => {\r\n const hasOverflow = current.scrollWidth > current.clientWidth;\r\n\r\n setIsOverflow(hasOverflow);\r\n\r\n //if (callback) callback(hasOverflow);\r\n };\r\n\r\n if (current) {\r\n trigger();\r\n }\r\n }, [ ref]);\r\n\r\n return isOverflow;\r\n};\r\n\r\nexport const openWindowPopup = (url: string, title: string, width: number, height: number) => {\r\n const left = (window.screen.width / 2) - (width / 2);\r\n const top = (window.screen.height / 2) - (height / 2);\r\n return window.open(\r\n url,\r\n title,\r\n `toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=${ width }, height=${ height }, top=${ top }, left=${ left }`\r\n );\r\n};","import React, { useEffect , useRef, useLayoutEffect } from \"react\";\r\nimport {RunSliderDots} from \"./slider-dots-run\";\r\nimport {ISliderDots} from \"./interfaces\";\r\nimport {isMobile} from \"../../../domain/common\";\r\n\r\n\r\ninterface ISliderDotsProps {\r\n sliderDots:ISliderDots [],\r\n cnt:number,\r\n dataHeight:number | null,\r\n dataHeightIphone: number | null,\r\n dataBG:string| null,\r\n autoScroll: number | null | undefined\r\n}\r\n/**\r\n * the entry point\r\n */\r\nconst SliderDots = (props?: ISliderDotsProps) => {\r\n\r\n const ImageCDNDomain = (document.getElementById('img-cdn-domain')?.textContent || '')?.trim().toLowerCase()\r\n const dataHeight = props?.dataHeight != null ? props?.dataHeight : 500;\r\n const dataHeightIphone = props?.dataHeightIphone != null ? props?.dataHeightIphone : 200;\r\n const dataBG = props?.dataBG != null ? props?.dataBG : '#FFFFFF';\r\n\r\n /*Calc styles*/\r\n const isWhiteBG = (dataBG === '#FFFFFF');\r\n let dataHeightCalc = isMobile() ? dataHeightIphone : dataHeight;\r\n\r\n const firstDetect = useRef(true);\r\n useLayoutEffect(() => {\r\n const elSlider = document.getElementById(\"slider-dot-\" + props?.cnt);\r\n const elSliderContent = document.getElementById(\"slider-dot-content-\" + props?.cnt);\r\n if (firstDetect.current) {\r\n\r\n if(elSlider && elSliderContent){\r\n //console.log('elSliderContent: ',elSliderContent);\r\n RunSliderDots(elSlider,props?.autoScroll);\r\n firstDetect.current = false;\r\n }\r\n return;\r\n }\r\n\r\n })\r\n\r\n\r\n useEffect(() => {\r\n }, []);\r\n\r\n\r\n\r\n\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n {\r\n props?.sliderDots && props?.sliderDots.map((item, i) => {\r\n // const bgImage = \"url(\\\"\"+ImageCDNDomain+item.imgpath + \"?max-h=\"+150+\"&max-w=800\"+\"\\\")\";\r\n let bgImage = `url(${ ImageCDNDomain }${ item.imgpath }?max-h=150&max-w=800)`;\r\n if(isMobile() && item.imgmobile) {\r\n //console.log('decodeURIComponent(item.imgpath): ',decodeURIComponent(item.imgmobile));\r\n\r\n bgImage = `url(${ImageCDNDomain}${decodeURIComponent(item.imgmobile)}`;\r\n }\r\n\r\n return (\r\n
\r\n
\r\n {item.text_1 &&
\r\n
\r\n
\r\n
\r\n }\r\n
\r\n )\r\n\r\n })\r\n }\r\n\r\n
\r\n
\r\n
\r\n \r\n )\r\n\r\n\r\n};\r\n\r\nexport default SliderDots;\r\n","import { ISliderDots } from './interfaces';\r\nimport ReactDOM from 'react-dom';\r\nimport React from 'react';\r\nimport SliderDots from './slider-dots';\r\n\r\nconst handleSliderDots = () => {\r\n const $sliderDots = document.querySelectorAll(\"[slider-dots]\");\r\n //console.log('handleSliderDots $sliderDots: ',$sliderDots);\r\n if (!$sliderDots) return;\r\n\r\n\r\n let cnt = 1;\r\n var decodeHTML = function (html:any) {\r\n var txt = document.createElement('textarea');\r\n txt.innerHTML = html;\r\n return txt.value;\r\n };\r\n\r\n $sliderDots.forEach($sliderDot => {\r\n\r\n if(!$sliderDot || !$sliderDot.textContent)\r\n return;\r\n let sliderDotSources;\r\n try{\r\n sliderDotSources= JSON.parse(decodeHTML($sliderDot.innerHTML)) as ISliderDots[];\r\n }\r\n catch(ex){\r\n console.log('try parse $sliderDots: ',ex);\r\n }\r\n if(!sliderDotSources)\r\n return;\r\n\r\n /*Attributed start*/\r\n const dataHeight = $sliderDot.getAttribute(\"data-height\");\r\n let dataHeightNum:number | null = null;\r\n if(dataHeight && dataHeight !== '')\r\n dataHeightNum = parseInt(dataHeight);\r\n\r\n const dataHeightIphone = $sliderDot.getAttribute(\"data-height-iphone\");\r\n let dataHeightIphoneNum:number | null = null;\r\n if(dataHeightIphone && dataHeightIphone !== '')\r\n dataHeightIphoneNum = parseInt(dataHeightIphone);\r\n\r\n const dataBG = $sliderDot.getAttribute(\"data-bg\");\r\n let autoScroll = null;\r\n if($sliderDot.hasAttribute(\"auto-scroll\")){\r\n const autoScrollAttr = $sliderDot.getAttribute(\"auto-scroll\");\r\n if(autoScrollAttr)\r\n autoScroll = parseInt(autoScrollAttr);\r\n else\r\n autoScroll = 5000;\r\n\r\n }\r\n /*Attributed end*/\r\n\r\n const $sliderDotPlaceholder = document.createElement('div');\r\n const elId = cnt++;\r\n $sliderDotPlaceholder.setAttribute(\"id\", 'slider-dot-' + elId.toString());\r\n $sliderDot.after($sliderDotPlaceholder);\r\n\r\n ReactDOM.render(\r\n \r\n \r\n ,\r\n $sliderDotPlaceholder\r\n );\r\n });\r\n\r\n}\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n handleSliderDots();\r\n});\r\n"],"names":["__webpack_require__","module","getter","__esModule","d","a","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","ReactDOM","React","isMobile","check","navigator","userAgent","vendor","window","opera","test","substr","props","ImageCDNDomain","document","getElementById","textContent","trim","toLowerCase","dataHeight","dataHeightIphone","dataBG","isWhiteBG","dataHeightCalc","firstDetect","useRef","useLayoutEffect","elSlider","cnt","elSliderContent","current","el","autoScroll","addEventListener","evt","firstTouch","touches","originalEvent","getTouches","xDown","clientX","yDown","clientY","preventDefault","curDotNumber","clearInterval","refreshIntervalId","removeLeftFromStyle","animateSlider","sliderImgs","length","xDownEnd","yDownEnd","Math","abs","slider","dots","querySelector","querySelectorAll","currImg","prevImg","i","dot","createElement","classList","add","appendChild","dotClick","bind","allDots","nextImg","right","style","animationName","remove","left","dotAutoScroll","num","setInterval","contains","RunSliderDots","useEffect","id","className","height","background","padding","sliderDots","map","item","bgImage","imgpath","imgmobile","decodeURIComponent","text_1","dangerouslySetInnerHTML","__html","text_2","$sliderDots","forEach","$sliderDot","sliderDotSources","JSON","parse","html","innerHTML","txt","value","ex","console","log","getAttribute","dataHeightNum","parseInt","dataHeightIphoneNum","hasAttribute","autoScrollAttr","$sliderDotPlaceholder","elId","setAttribute","toString","after","handleSliderDots"],"sourceRoot":""}