{"version":3,"sources":["static/compress/bg_desktop.mp4","static/compress/bg_mobile.mp4","static/Images/mobile/bg.png","static/Images/mobile/flake6.png","static/Images/mobile/flake5.png","static/Images/mobile/flake1.png","Services/domChangedEvent.js","Services/Base.js","stores/application.store.jsx","Services/GoogleAnalytics.js","Services/Agent.js","Services/Sharing.js","components/Header/Header.jsx","components/Footer/Footer.jsx","components/Welcome/Welcome.jsx","components/Loading/Loading.jsx","components/VideoVR/VideoVR.jsx","Services/Flakes.js","Services/Flakes2.js","Services/Flakes3.js","components/ShouldKnow/ShouldKnow.jsx","components/ShouldBuy/ShouldBuy.jsx","components/ShouldDo/ShouldDo.jsx","Services/Wheel.js","components/Home/Home.jsx","components/Landscape/LandscapeAlert.jsx","components/Article/Article.jsx","components/App.js","serviceWorker.js","index.js"],"names":["module","exports","window","last","Date","delay","stack","callback","now","i","length","support","el","document","documentElement","remain","decide","DOMNodeInserted","addEventListener","DOMSubtreeModified","onpropertychange","getElementsByTagName","lastlen","setTimeout","check","current","len","naive","test","event","fn","removeEventListener","dummy","createElement","appendChild","removeChild","onDomChange","newdelay","push","LocalHost","QADomain","PRODDomain","AppContext","createContext","Provider","AppProvider","children","useState","scroll","setScroll","inArticle","setInArticle","sessionStorage","getItem","hasLoadedSession","setSessionLoaded","loading","setLoading","loaded","setHasLoaded","useEffect","state","actions","toggleArticle","value","Environment","isLocalhost","Boolean","location","hostname","match","isQA","href","isTest","isSource","GA_Push","action","label","_category","data","Category","Action","Label","dataLayer","_log","GA_VPush","url","title","virtualPageURL","pathname","virtualPageTitle","console","log","mobile","navigator","userAgent","substr","faceUrlToShare","textToShare","openNegishut","getElementById","click","Header","open","setOpen","openShare","setOpenShare","pop","setPop","goToHomeRef","useRef","useContext","path","setPath","listenToPopstate","winPath","useReactPath","hash","split","scrollMachine","name","querySelector","siteTravel","where","handleShare","link","realLink","origin","textToShareArticle","encodeURIComponent","shareWhatsappArticle","shareFacebookArticle","className","onClick","to","ref","e","target","indexOf","goHome","classList","add","Footer","inLine","isAbsolute","style","Welcome","videoRefMobile","videoTest","videoRefDesktop","remove","width","height","playsInline","autoPlay","loop","muted","preload","src","videoMobile","type","videoDesk","Loading","load","setLoad","goup","setGoup","finishedLoadingFade","setFinishedLoadingFade","VideoVR","videoContainer","video","pause","currentTime","YitVideo","Constructor","containerAttrPrefix","dynamicPlayerType","flaotOnScroll","popularity","siteName","dcPath","nextVideo","autoEvents","adTagUrl","eventsCallback","display","id","yitvideo","ads","Waves","divId","maxWavePower","speed","numberOfNodes","backgroundColor","spaceBetweenNodes","dotNumber","dotGlobalSpeed","dotScale","endsOnThisSide","div","Error","cvs","position","top","left","offsetWidth","offsetHeight","ZERO_Y","Math","round","clientHeight","MAX_Y","MIN_Y","globalSpeed","scale","canvas","ctx","getContext","dot","Image","require","edge","w","h","resize","rand","min","max","random","sprites","drawImage","image","spr","setTransform","xr","yr","rotate","r","setDirection","countD","d","reverse","x","dx","abs","y","dy","count","DO","PI","dr","requestAnimationFrame","update","ihM","iwM","clearRect","complete","iw","ih","waves","randomIntFromInterval","floor","Wave","color","lineWidth","_wave","this","maxX","clientWidth","numNodes","nodes","wavePower","currentDirection","initWave","drawWave","beginPath","pointCount","moveTo","c","quadraticCurveTo","strokeStyle","stroke","setY","node","fillStyle","globalCompositeOperation","fillRect","forEach","addWave","animate","ShouldKnow","articles","article","sliderIndex","setSliderIndex","linkRef","settings","centerMode","slidesToShow","arrows","draggable","focusOnSelect","afterChange","index","vertical","changeIndex","err","waves2","waves3","touchstartX","touchendX","gesuredZone","changedTouches","screenX","screenY","handleGesure","querySelectorAll","map","a","key","desc","ShouldBuy","goggles","settingsSlick","infinite","centerPadding","ShouldDo","setIndex","cards","gener","format","ce","n","createEvent","initCustomEvent","dispatchEvent","nm","sp","ep","touch","touchstart","touches","pageX","pageY","touchmove","touchend","touchcancel","maybePreventPullToRefresh","lastTouchY","clientY","pageYOffset","passive","touchY","touchYDelta","preventDefault","isBusy","Home","dictionary","onhashchange","setItem","observer","IntersectionObserver","entries","entry","isIntersecting","root","threshhold","rootMargin","li","observe","listenToScrollEvent","direction","wheelDelta","detail","wheelDragDirection","body","overflowX","transform","LandscapeAlert","Article","props","slice","overflowY","error","message","textContent","articleId","data-spotim-module","data-post-id","App","exact","render","strict","params","ReactDOM","StrictMode","serviceWorker","ready","then","registration","unregister","catch"],"mappings":"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","file":"static/js/main.a765e1c2.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/bg_desktop.116f673e.mp4\";","module.exports = __webpack_public_path__ + \"static/media/bg_mobile.eaf29025.mp4\";","module.exports = __webpack_public_path__ + \"static/media/bg.7ee5ae28.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAADCAYAAABWKLW/AAAABHNCSVQICAgIfAhkiAAAADJJREFUCFsBJwDY/wFDvOaw/wH/P/4CCiEBQr3l0AH/ASD9AwkgAQAAAABAv+cgwEEZ4ERoDwBOAw6GAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAJCAYAAAAGuM1UAAAABHNCSVQICAgIfAhkiAAAAMNJREFUGFeNkM0NAVEUhc95SOywkYgm6GB+WIsKRAWmA3RAB0oYazMxOngl2BhbCjBHTPImsxBxVzf3fuf+HKIWk9PdE7US5RHsQrKiiQvT3md+7/FB6fgwyQ8gFvUBVS7ZV6O1zPy+LQVBmu8IrL7CrijZdDIcszzD6PwTrkSYM0zyGMTsH4GgLcM01z8whOerwdFnwwNE55dIwKUwzah8OkhvG4Lr7+7gSHGXTAeZ6zuXIgobEZbCVWRWmHbsvK8PewOcEU2pkDL5wQAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAFCAYAAABirU3bAAAABHNCSVQICAgIfAhkiAAAAFRJREFUCFtjZIAC5z3PAv4ycx5gBPEd9r8XYPr3/TwDA2MjI0iGgYEhnoGBwZGBgSGB0Xnvs///GRge/mNiCTjgKHaB0Wnv84R/TBwbDjgKfgBpBwD8WRp/gz9EoAAAAABJRU5ErkJggg==\"","(function (window) {\r\n var last = +new Date();\r\n var delay = 100; // default delay\r\n\r\n // Manage event queue\r\n var stack = [];\r\n\r\n function callback() {\r\n var now = +new Date();\r\n if (now - last > delay) {\r\n for (var i = 0; i < stack.length; i++) {\r\n stack[i]();\r\n }\r\n last = now;\r\n }\r\n }\r\n\r\n // Public interface\r\n var onDomChange = function (fn, newdelay) {\r\n if (newdelay) delay = newdelay;\r\n stack.push(fn);\r\n };\r\n\r\n // Naive approach for compatibility\r\n function naive() {\r\n\r\n var last = document.getElementsByTagName('*');\r\n var lastlen = last.length;\r\n var timer = setTimeout(function check() {\r\n\r\n // get current state of the document\r\n var current = document.getElementsByTagName('*');\r\n var len = current.length;\r\n\r\n // if the length is different\r\n // it's fairly obvious\r\n if (len != lastlen) {\r\n // just make sure the loop finishes early\r\n last = [];\r\n }\r\n\r\n // go check every element in order\r\n for (var i = 0; i < len; i++) {\r\n if (current[i] !== last[i]) {\r\n callback();\r\n last = current;\r\n lastlen = len;\r\n break;\r\n }\r\n }\r\n\r\n // over, and over, and over again\r\n setTimeout(check, delay);\r\n\r\n }, delay);\r\n }\r\n\r\n //\r\n // Check for mutation events support\r\n //\r\n\r\n var support = {};\r\n\r\n var el = document.documentElement;\r\n var remain = 3;\r\n\r\n // callback for the tests\r\n function decide() {\r\n if (support.DOMNodeInserted) {\r\n window.addEventListener(\"DOMContentLoaded\", function () {\r\n if (support.DOMSubtreeModified) { // for FF 3+, Chrome\r\n el.addEventListener('DOMSubtreeModified', callback, false);\r\n } else { // for FF 2, Safari, Opera 9.6+\r\n el.addEventListener('DOMNodeInserted', callback, false);\r\n el.addEventListener('DOMNodeRemoved', callback, false);\r\n }\r\n }, false);\r\n } else if (document.onpropertychange) { // for IE 5.5+\r\n document.onpropertychange = callback;\r\n } else { // fallback\r\n naive();\r\n }\r\n }\r\n\r\n // checks a particular event\r\n function test(event) {\r\n el.addEventListener(event, function fn() {\r\n support[event] = true;\r\n el.removeEventListener(event, fn, false);\r\n if (--remain === 0) decide();\r\n }, false);\r\n }\r\n\r\n // attach test events\r\n if (window.addEventListener) {\r\n test('DOMSubtreeModified');\r\n test('DOMNodeInserted');\r\n test('DOMNodeRemoved');\r\n } else {\r\n decide();\r\n }\r\n\r\n // do the dummy test\r\n var dummy = document.createElement(\"div\");\r\n el.appendChild(dummy);\r\n el.removeChild(dummy);\r\n\r\n // expose\r\n window.onDomChange = onDomChange;\r\n})(window);","const Environment = () => {\r\n var isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n window.location.hostname === '[::1]' ||\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n );\r\n\r\n var isQA = Boolean(\r\n window.location.href.match(\"source-qa\") ||\r\n window.location.href.match(\"qa.\")\r\n );\r\n\r\n var isSource = Boolean(\r\n window.location.href.match(\"source-\")\r\n );\r\n\r\n return {\r\n isLocalhost: isLocalhost,\r\n isQA: isQA,\r\n isTest: (isQA || isLocalhost),\r\n isSource: isSource\r\n };\r\n}\r\nconst switchURLapi = (LocalHost, QADomain, PRODDomain) => {\r\n if (Environment().isLocalhost) {\r\n return LocalHost;\r\n } else {\r\n if (Environment().isQA) {\r\n return QADomain;\r\n } else {\r\n if (Environment().isQA) {\r\n return QADomain;\r\n } else {\r\n return PRODDomain;\r\n }\r\n }\r\n }\r\n}\r\n\r\nconst apiURL = switchURLapi(\"https://localhost:44381/api/\",\r\n \"http://source-qa-a.ynet.co.il/mShort/generics/Leads/api/api/\",\r\n \"https://z.ynet.co.il/mShort/generics/Leads/api/api/\");\r\n\r\nexport {\r\n Environment,\r\n apiURL\r\n}","import React, { useState, createContext, useEffect } from 'react';\r\n\r\nconst AppContext = createContext();\r\nconst { Provider } = AppContext;\r\n\r\nconst AppProvider = ({ children }) => {\r\n const [scroll, setScroll] = useState(0);\r\n const [inArticle, setInArticle] = useState(false);\r\n const [hasLoadedSession, setSessionLoaded] = useState((sessionStorage.getItem(\"hasLoaded\") == \"true\"));\r\n const [loading, setLoading] = useState(false);\r\n const [loaded, setHasLoaded] = useState(false);\r\n\r\n useEffect(()=> {\r\n // console.log(loading);\r\n }, []);\r\n\r\n function toggleArticle() {\r\n setInArticle(inArticle => !inArticle)\r\n }\r\n const state = {\r\n scroll,\r\n inArticle,\r\n loading,\r\n loaded,\r\n hasLoadedSession\r\n };\r\n\r\n const actions = {\r\n setScroll,\r\n toggleArticle,\r\n setInArticle,\r\n setLoading,\r\n setHasLoaded,\r\n setSessionLoaded\r\n };\r\n\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n\r\n}\r\n\r\nexport {\r\n AppContext,\r\n AppProvider\r\n}\r\n","import { Environment } from \"./Base\";\r\n\r\nconst Category = \"\";\r\n\r\nconst GA_Push = (event = \"GA_Event\", action, label=\"\", _category) => {\r\n var data = {\r\n event,\r\n Category: _category ? _category : Category,\r\n Action: action,\r\n Label: label\r\n };\r\n if (window.dataLayer) {\r\n window.dataLayer.push(data);\r\n }\r\n _log(data);\r\n};\r\nconst GA_VPush = (url ,title ) => {\r\n var data = {\r\n event: \"virtualPageview\",\r\n virtualPageURL: url ? url : window.location.pathname,\r\n virtualPageTitle: title ? title : window.document.title\r\n };\r\n if (window.dataLayer) {\r\n window.dataLayer.push(data);\r\n }\r\n _log(data);\r\n};\r\n\r\nconst _log = data => (Environment().isLocalhost || Environment().isQA ? console.log(data) : null);\r\n\r\nexport { GA_Push, GA_VPush };\r\n","const mobile = () => {\r\n return /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|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|phone)|xda|xiino/i.test(navigator.userAgent)\r\n || /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(navigator.userAgent.substr(0, 4));\r\n}\r\nconst ios = () => {\r\n return window.navigator.userAgent.match(/iPhone/i);\r\n}\r\n\r\nconst isEmulated = () => {\r\n return (navigator.userAgent.match(/(android|ip(hone|ad|od))/i) && (!navigator.platform || !navigator.platform.match(/(win|mac)/i))) || navigator.userAgent.match(/(windows phone|iemobile|wpdesktop|blackberry)/i);\r\n}\r\n\r\nexport {\r\n isEmulated,\r\n mobile,\r\n ios\r\n}","import { GA_Push } from \"./GoogleAnalytics\";\r\nimport { mobile } from \"./Agent\";\r\n\r\nvar urlToShare = window.location.href;\r\nvar faceUrlToShare = `https://z.ynet.co.il/short/content/2020/VReality/?utm_source=${mobile() ? \"m.ynet.co.il\":\"ynet.co.il\"}&utm_medium=social&utm_campaign=facebook`\r\nvar textToShare = `בדיקת מציאות - ynet >> https://z.ynet.co.il/short/content/2020/VReality/?utm_source=${mobile() ? \"m.ynet.co.il\":\"ynet.co.il\"}&utm_medium=social&utm_campaign=`;\r\n\r\nconst shareFacebook = () => {\r\n GA_Push(\"Share_Events\", \"Share From Side Menu\" ,\"Facebook\" , \"Social\");\r\n window.open(\"http://www.facebook.com/share.php?u=\" + encodeURIComponent(faceUrlToShare), \"_blank\");\r\n};\r\n\r\nconst shareTwitter = () => {\r\n GA_Push(\"Share_Events\", \"Share From Side Menu\" , \"Twitter\", \"Social\");\r\n window.open(\"https://twitter.com/intent/tweet?text=\" + encodeURIComponent(textToShare + \"twitter\"), \"_blank\");\r\n \r\n};\r\n\r\nconst shareWhatsapp = () => {\r\n GA_Push(\"Share_Events\", \"Share From Side Menu\" , \"Whatsapp\", \"Social\");\r\n if (mobile()) {\r\n window.open(\"whatsapp://send?text=\" + encodeURIComponent(textToShare + \"whatsapp\"), \"_parent\");\r\n } else {\r\n window.open(\"https://web.whatsapp.com/send?phone=&text=\" + encodeURIComponent(textToShare + \"whatsapp\"), \"_blank\");\r\n }\r\n};\r\n\r\nconst openNegishut = () => {\r\n window.document.getElementById(\"INDmenu-btn\").click();\r\n GA_Push(\"Accessibility\", \"Open_Accessibility_Clicked\");\r\n};\r\n\r\n\r\n//Article Share\r\nconst shareFacebookArticle = (link) => {\r\n let realLink = window.location.origin + window.location.pathname + (window.location.pathname[window.location.pathname.length - 1] == \"/\" ? \"\" : \"/\");\r\n realLink += \"?utm_source=\" + (mobile() ? \"m.ynet.co.il\":\"ynet.co.il\") + \"&utm_medium=social&utm_campaign=facebook\" + window.location.hash;\r\n \r\n GA_Push(\"Share_Events\", \"Share From Side Menu\" ,\"Facebook\" , \"Social\");\r\n\r\n window.open(\"http://www.facebook.com/share.php?u=\" + encodeURIComponent(realLink), \"_blank\");\r\n};\r\nconst shareWhatsappArticle = (link) => {\r\n let realLink = window.location.origin + window.location.pathname + (window.location.pathname[window.location.pathname.length - 1] == \"/\" ? \"\" : \"/\");\r\n realLink += \"?utm_source=\" + (mobile() ? \"m.ynet.co.il\":\"ynet.co.il\") + \"&utm_medium=social&utm_campaign=whatsapp\" + window.location.hash;\r\n\r\n let textToShareArticle = \"בדיקת מציאות - ynet >> \" + realLink;\r\n\r\n GA_Push(\"Share_Events\", \"Share From Side Menu\" , \"Whatsapp\", \"Social\");\r\n if (mobile()) {\r\n window.open(\"whatsapp://send?text=\" + encodeURIComponent(textToShareArticle), \"_parent\");\r\n } else {\r\n window.open(\"https://web.whatsapp.com/send?phone=&text=\" + encodeURIComponent(realLink), \"_blank\");\r\n }\r\n};\r\n\r\nexport { shareFacebook, shareTwitter, shareWhatsapp, openNegishut, shareFacebookArticle, shareWhatsappArticle };\r\n","import React, { useState, useEffect, useContext } from \"react\";\r\nimport \"./Header.scss\";\r\nimport {\r\n shareFacebook,\r\n shareWhatsapp,\r\n openNegishut,\r\n shareWhatsappArticle,\r\n shareFacebookArticle,\r\n} from \"../../Services/Sharing\";\r\nimport { AppContext } from \"../../stores/application.store\";\r\nimport { mobile } from \"../../Services/Agent\";\r\nimport { Link, Redirect } from 'react-router-dom';\r\nimport { Environment } from \"../../Services/Base\";\r\nimport { useRef } from \"react\";\r\n\r\n\r\nconst Header = () => {\r\n let [open, setOpen] = useState(false);\r\n let [openShare, setOpenShare] = useState(false);\r\n let [pop, setPop] = useState(false);\r\n let goToHomeRef = useRef(null);\r\n\r\n // Application Store context\r\n let { scroll, setScroll } = useContext(AppContext)\r\n let { inArticle, toggleArticle, setInArticle } = useContext(AppContext)\r\n // let [isMobile , setIsMobile] = useState(mobile())\r\n\r\n let isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n window.location.hostname === '[::1]' ||\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n );\r\n\r\n let isQA = Boolean(\r\n window.location.href.match(\"source-qa\") ||\r\n window.location.href.match(\"qa.\")\r\n );\r\n\r\n // Custom hook that listen to the URL\r\n const useReactPath = () => {\r\n const [path, setPath] = useState(window.location.href);\r\n const listenToPopstate = () => {\r\n const winPath = window.location.href;\r\n setPath(winPath);\r\n };\r\n useEffect(() => {\r\n window.addEventListener(\"popstate\", listenToPopstate);\r\n return () => {\r\n window.removeEventListener(\"popstate\", listenToPopstate);\r\n };\r\n }, []);\r\n return path;\r\n };\r\n // Checks if in article algo\r\n const path = useReactPath();\r\n useEffect(() => {\r\n // console.log(/^[0-9]{7}$/.test(window.location.hash.split(\"/\")[1]))\r\n setInArticle(/^[0-9]{7}$/.test(window.location.hash.split(\"/\")[1]));\r\n }, [path]);\r\n\r\n\r\n useEffect(() => {\r\n let loaded = sessionStorage.getItem(\"hasLoaded\");\r\n let time = loaded ? 0 : 5500;\r\n setTimeout(() => {\r\n setPop(true);\r\n }, time);\r\n }, []);\r\n\r\n useEffect(() => {\r\n }, [scroll])\r\n\r\n const scrollMachine = (name) => {\r\n if (inArticle) {\r\n document.querySelector(\".back_home\").click()\r\n }\r\n setOpen(!open);\r\n const see = document.querySelector(\"#video_section\");\r\n const know = document.querySelector(\".should_know\");\r\n const buy = document.querySelector(\".should_buy\");\r\n const doSec = document.querySelector(\".should_do\");\r\n const settings = {\r\n behavior: \"smooth\",\r\n block: \"center\",\r\n inline: \"nearest\",\r\n };\r\n switch (name) {\r\n case \"see\":\r\n setScroll(scroll => scroll = 1)\r\n // see.scrollIntoView(settings);\r\n break;\r\n case \"know\":\r\n setScroll(scroll => scroll = 2)\r\n // know.scrollIntoView(settings);\r\n break;\r\n case \"buy\":\r\n setScroll(scroll => scroll = 3)\r\n // buy.scrollIntoView(settings);\r\n break;\r\n case \"do\":\r\n setScroll(scroll => scroll = 4)\r\n // doSec.scrollIntoView(settings);\r\n break;\r\n default:\r\n return;\r\n }\r\n };\r\n\r\n const siteTravel = (where) => {\r\n switch (where) {\r\n case \"up\":\r\n if (scroll > 0) {\r\n setScroll(scroll => scroll - 1)\r\n }\r\n break;\r\n case \"down\":\r\n if (scroll < 4) {\r\n setScroll(scroll => scroll + 1)\r\n }\r\n break;\r\n default:\r\n return;\r\n }\r\n };\r\n\r\n // return(\r\n // inArticle ?

ARTICLE

:

not

\r\n // )\r\n // useEffect(()=> {\r\n // Environment\r\n // } ,[])\r\n\r\n function goHome(e) {\r\n //window.history.back()\r\n setScroll(scroll > 0 ? (e.target.className.indexOf(\"homepage\") > -1 ? 0 : 2) : 0);\r\n toggleArticle()\r\n }\r\n\r\n function handleShare(name) {\r\n // console.log(\"name : \", name)\r\n if (name === \"wa\") {\r\n if (inArticle) {\r\n // console.log(\"in shareWhatsappArticle(window.location.href)\")\r\n shareWhatsappArticle(window.location.href)\r\n } else {\r\n shareWhatsapp()\r\n }\r\n } else {\r\n if (inArticle) {\r\n shareFacebookArticle(window.location.href)\r\n } else {\r\n shareFacebook()\r\n }\r\n }\r\n }\r\n\r\n function getHref() {\r\n if (isLocalhost) {\r\n return \"/\"\r\n }\r\n else if (isQA) {\r\n return \"http://source-qa-a.ynet.co.il/short/content/2020/VReality/#/\"\r\n } else {\r\n return \"https://z.ynet.co.il/short/content/2020/VReality/#/\"\r\n }\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
siteTravel(\"up\")}>\r\n \r\n
\r\n setOpen(!open)}\r\n >
\r\n
siteTravel(\"down\")}>\r\n \r\n
\r\n {/* goHome()}>\r\n
\r\n
חזרה לכתבות
\r\n
*/}\r\n goHome(e)}>\r\n
\r\n
חזרה לכתבות
\r\n \r\n
\r\n \r\n
{\r\n setScroll(0);\r\n if (inArticle) {\r\n goToHomeRef.current.classList.add(\"homepage\")\r\n goToHomeRef.current.click();\r\n }\r\n }} className={`jelly_appear ${pop && \"pop\"}`}>
\r\n
\r\n
\r\n setOpenShare(!openShare)}\r\n >
\r\n handleShare(\"\")}\r\n >\r\n handleShare(\"wa\")}\r\n >\r\n \r\n \r\n
\r\n
\r\n scrollMachine(\"see\")}\r\n >\r\n
\r\n
מה שכדאי לראות
\r\n
\r\n scrollMachine(\"know\")}\r\n >\r\n
\r\n
מה שכדאי לדעת
\r\n \r\n scrollMachine(\"buy\")}\r\n >\r\n
\r\n
מה שכדאי לקנות
\r\n \r\n scrollMachine(\"do\")}\r\n >\r\n
\r\n
מה שכדאי לעשות
\r\n \r\n
\r\n setOpenShare(!openShare)}\r\n >
\r\n handleShare(\"\")}\r\n >\r\n handleShare(\"wa\")}\r\n >\r\n \r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default Header;\r\n","import './Footer.scss'\r\nimport React from 'react'\r\n\r\nfunction Footer({isAbsolute}){\r\n //console.log(isAbsolute)\r\n let inLine = {}\r\n if(isAbsolute){\r\n inLine = {\r\n // position: \"absolute\",\r\n // bottom: \"0\",\r\n // right: \"0\",\r\n // left: \"0\"\r\n }\r\n }\r\n return(\r\n \r\n )\r\n}\r\n\r\nexport default Footer;\r\n","import React, { useContext } from \"react\";\r\nimport \"./Welcome.scss\";\r\nimport { mobile } from \"../../Services/Agent\";\r\nimport videoDesk from \"../../static/compress/bg_desktop.mp4\";\r\nimport videoMobile from \"../../static/compress/bg_mobile.mp4\";\r\nimport { AppContext } from \"../../stores/application.store\";\r\nimport Div100vh from 'react-div-100vh';\r\nimport { useRef } from \"react\";\r\nimport { useEffect } from \"react\";\r\nimport posterVideo from \"../../static/Images/mobile/bg.png\";\r\n// import canvidControl from \"canvid\";\r\n// import videoCanvas from 'video-canvas';\r\n\r\nexport default function Welcome() {\r\n // Application Store context\r\n let videoRefMobile = useRef(null);\r\n let videoTest = useRef(null);\r\n let videoRefDesktop = useRef(null);\r\n let { scroll, setScroll, loaded } = useContext(AppContext)\r\n const scrollToVideo = () => {\r\n // let videoSec = document.querySelector(\"#video_section\");\r\n // videoSec.scrollIntoView({\r\n // behavior: \"smooth\",\r\n // block: \"center\",\r\n // inline: \"nearest\",\r\n // });\r\n setScroll(scroll => scroll = 1)\r\n };\r\n\r\n\r\n\r\n useEffect(() => {\r\n if (!videoRefMobile || !videoRefDesktop) return;\r\n if (scroll != 0) {\r\n videoRefMobile.current.classList.add(\"autohider\");\r\n videoRefDesktop.current.classList.add(\"autohider\");\r\n } else {\r\n window.setTimeout(() => {\r\n try {\r\n videoRefMobile.current.classList.remove(\"autohider\");\r\n videoRefDesktop.current.classList.remove(\"autohider\");\r\n } catch (e) { }\r\n }, 250);\r\n\r\n }\r\n }, [scroll]);\r\n\r\n const isIpad = () => {\r\n var iDevices = [\r\n 'iPad Simulator',\r\n // 'iPhone Simulator',\r\n // 'iPod Simulator',\r\n 'iPad',\r\n 'MacIntel',\r\n // 'iPhone',\r\n // 'iPod'\r\n ];\r\n\r\n if (!!navigator.platform)\r\n while (iDevices.length)\r\n if (navigator.platform === iDevices.pop())\r\n return true;\r\n\r\n if (window.navigator.userAgent.match(/iPhone/i))\r\n return true;\r\n\r\n return false;\r\n }\r\n\r\n\r\n const setVideo = () => {\r\n if (isIpad())\r\n return \r\n \r\n {/* */}\r\n \r\n if (mobile())\r\n return \r\n \r\n {/* */}\r\n \r\n return \r\n \r\n {/* */}\r\n \r\n }\r\n\r\n /*\r\nbg_desktop_alon.mp4\r\nhttps://besttv227-hls-video-ynet.cdn.it.best-tv.com/0720/8e9763552e867baa7051f7f56e196365/master.m3u8\r\n\r\nbg_mobile_alon.mp4\r\nhttps://besttv227-hls-video-ynet.cdn.it.best-tv.com/0720/9d1421a72da81d344140f84c1bc1ccfe/master.m3u8\r\n\r\n\r\n */\r\n // useEffect(() => {\r\n // if (loaded) {\r\n // if (videoRefDesktop.current) {\r\n // window.videojs(videoRefDesktop.current);\r\n // window.setTimeout(() => {\r\n // window.document.querySelector(\"#\" + videoRefDesktop.current.id).play().then(d => console.log(d)).catch(e => console.log(e));\r\n // }, 150);\r\n // }\r\n // if (videoRefMobile.current) {\r\n // window.videojs(videoRefMobile.current);\r\n // window.setTimeout(() => {\r\n // window.document.querySelector(\"#\" + videoRefMobile.current.id).play().then(d => console.log(d)).catch(e => console.log(e));\r\n // }, 150);\r\n // }\r\n // }\r\n\r\n // }, [loaded]);\r\n\r\n\r\n // useEffect(() => {\r\n // var canvidControlCallback;\r\n // canvidControlCallback = canvidControl({\r\n // selector: '.video_wrapper',\r\n // videos: {\r\n // clip1: {\r\n // src: './static/sprites/desktop/0001.png', frames: 32, cols:6, fps: 30, loops: 99, onEnd: function () {\r\n // console.log('clip1 ended.');\r\n // }\r\n // },\r\n // },\r\n // width: window.screen.width,\r\n // height: window.screen.height,\r\n // loaded: function () {\r\n // canvidControlCallback.play('clip1');\r\n // // reverse playback\r\n // // canvidControl.play('clip1', true);\r\n // }\r\n // });\r\n // }, []);\r\n return (\r\n // \r\n
\r\n {/* {loaded && setVideo()} */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n

ברוכים הבאים למטריקס:

\r\n

צעדים ראשונים בעולמות ה-VR

\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\n
\r\n
\r\n //
\r\n );\r\n}\r\n","import React, {useState , useEffect} from 'react';\r\nimport \"./Loading.scss\";\r\n\r\nexport default function Loading() {\r\n let [load ,setLoad ] = useState(true)\r\n let [goup ,setGoup ] = useState(false)\r\n\r\n let [finishedLoadingFade ,setFinishedLoadingFade ] = useState(false)\r\n useEffect(() => {\r\n setTimeout(() => {\r\n setLoad(false)\r\n },3000)\r\n }, [])\r\n useEffect(() => {\r\n setTimeout(() => {\r\n setGoup(true)\r\n },5000)\r\n }, [])\r\n useEffect(() => {\r\n setTimeout(() => {\r\n setFinishedLoadingFade(true)\r\n },6000)\r\n }, [])\r\n\r\n return (\r\n
\r\n
\r\n {\r\n load ?
:\r\n
\r\n }\r\n {\r\n load ?
\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","import React, { useEffect, useRef, useContext } from \"react\";\r\nimport { AppContext } from \"../../stores/application.store\";\r\nimport \"./VideoVR.scss\";\r\n// import VignetteVideo from \"react-vignette/dist/VignetteVideo\";\r\n\r\n\r\nexport default function VideoVR() {\r\n let { scroll } = useContext(AppContext)\r\n const videoContainer = useRef(null);\r\n // const videoContainer= document.querySelector(\".videoContainer\")\r\n\r\n // useEffect(() => {\r\n // // try {\r\n // // window.YitVideo.InfrastructureInitialize();\r\n // // } catch (er) {\r\n // // }\r\n // // alert(window.innerHeight);\r\n // }, []);\r\n useEffect(() => {\r\n if (!videoContainer) return;\r\n let target = videoContainer.current;\r\n let video = target.querySelector(\"video\");\r\n if (!video) return;\r\n video.pause();\r\n video.currentTime = 0;\r\n // try {\r\n // initialize()\r\n // } catch (er) {\r\n // }\r\n }, [scroll]);\r\n\r\n // useEffect(() => {\r\n // setTimeout(() => {\r\n // let video = document.querySelector(\".video-js\")\r\n // console.log(\"video js \" , video)\r\n // video.addEventListener(\"click\" , () => {\r\n // if(video.classList.contains(\"vjs-playing\")){\r\n // console.log(\"@@@@@@@@@@@@\")\r\n // document.querySelector(\".video_text_wrapper\").style.display = \"none\"\r\n // document.querySelector(\".video-title\").style.display = \"none\"\r\n // }\r\n // })\r\n // },2000)\r\n // },[])\r\n\r\n const initialize = () => {\r\n if (!videoContainer) return;\r\n let target = videoContainer.current;\r\n let video = target.querySelector(\"video\");\r\n if (!video) return;\r\n video.pause();\r\n video.currentTime = 0;\r\n\r\n // try {\r\n // // window.YitVideo.InfrastructureReInitialize();\r\n // } catch (e) {\r\n // // try {\r\n // // window.YitVideo.InfrastructureInitialize();\r\n // // } catch (ee) { \r\n\r\n // // }\r\n // }\r\n }\r\n\r\n useEffect(() => {\r\n if (scroll != 1) return;\r\n if (videoContainer.current.querySelector(\"video\")) return;\r\n window.YitVideo.Constructor({\r\n containerAttrPrefix: \"yitvideo\",\r\n dynamicPlayerType: false, // youtube == true\r\n flaotOnScroll: false, // minimize the video\r\n popularity: true,\r\n siteName: \"ynet\",\r\n dcPath: \"\",\r\n nextVideo: false,\r\n autoEvents: true,\r\n adTagUrl: \"https://pubads.g.doubleclick.net/gampad/live/ads?iu=/6870/ynet/video_desktop/live&description_url=https%3A%2F%2Fwww.ynet.co.il%2Fhome%2F0%2C7340%2CL-8%2C00.html&tfcd=0&npa=0&sz=480x360%7C480x361%7C640x360%7C640x480&cust_params=Autoplay%3DTrue%26VideoPosition%3DPreroll&gdfp_req=1&output=vast&unviewed_position_start=1&env=vp&impl=s&correlator=\",\r\n eventsCallback: function (event, data) {\r\n switch (event) {\r\n case 'ready':\r\n console.log(event, data);\r\n break;\r\n case 'firstplay':\r\n window.document.querySelector(\".video_text_wrapper\").style.display = \"none\"\r\n window.document.querySelector(\".video-title\").style.display = \"none\"\r\n console.log(event, data);\r\n break;\r\n case 'play':\r\n window.document.querySelector(\".video_text_wrapper\").style.display = \"none\"\r\n window.document.querySelector(\".video-title\").style.display = \"none\"\r\n console.log(event, data);\r\n break;\r\n case 'pause':\r\n // document.querySelector(\".video-title\").style.display = \"block\"\r\n // document.querySelector(\".video_text_wrapper\").style.display = \"flex\"\r\n console.log(event, data);\r\n break;\r\n case 'progress':\r\n console.log(event, data);\r\n break;\r\n case 'contentplay':\r\n console.log(event, data);\r\n break;\r\n case 'ended':\r\n console.log(event, data);\r\n break;\r\n case 'ads-ad-started':\r\n console.log(event, data);\r\n break;\r\n }\r\n },\r\n });\r\n }, [scroll])\r\n\r\n return (\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
נתנו לאנשים לנסות VR בפעם הראשונה
\r\n
\r\n
\r\n
תוכן: הגר בוחבוט, בימוי: אסף קוזין,
\r\n
עריכה: גיא פוקס, צילום: ירון שרון,
\r\n
הפקה והשתתפות: מיכאלה חזני, גל פרייליך
\r\n
\r\n
\r\n
\r\n //
\r\n );\r\n}\r\n","export function Waves({\r\n divId,\r\n maxWavePower = 30,\r\n speed = 0.2,\r\n numberOfNodes = 6,\r\n backgroundColor = \"transparent\",\r\n // lineWidth: lineWidth = 2,\r\n spaceBetweenNodes = 274,\r\n dotNumber = 30,\r\n dotGlobalSpeed = 0.4,\r\n dotScale = 1,\r\n endsOnThisSide = \"right\",\r\n}) {\r\n const div = document.getElementById(divId);\r\n\r\n if (div == null) {\r\n throw new Error(`Could not find element: ${divId}`);\r\n }\r\n\r\n const cvs = document.createElement(\"canvas\");\r\n cvs.style.position = \"absolute\";\r\n cvs.style.top = 0;\r\n cvs.style.left = 0;\r\n // cvs.style.borderRadius = \"50px 0 0 50px\";\r\n cvs.width = div.offsetWidth;\r\n cvs.height = div.offsetHeight;\r\n div.appendChild(cvs);\r\n const UP = -1;\r\n const DOWN = 1;\r\n const ZERO_Y = Math.round(div.clientHeight / 2);\r\n const MAX_Y = ZERO_Y - maxWavePower;\r\n const MIN_Y = ZERO_Y + maxWavePower;\r\n\r\n new Sparkle({\r\n dotNumber,\r\n globalSpeed: dotGlobalSpeed,\r\n scale: dotScale,\r\n });\r\n\r\n const ctx = cvs.getContext(\"2d\");\r\n\r\n var waves = [];\r\n\r\n function getDirectionByY(y) {\r\n return y > ZERO_Y ? UP : DOWN;\r\n }\r\n\r\n function randomIntFromInterval(min, max) {\r\n // min and max included\r\n return Math.floor(Math.random() * (max - min + 1) + min);\r\n }\r\n\r\n function Wave(color, lineWidth) {\r\n var _wave = this;\r\n this.maxX = cvs.clientWidth;\r\n this.speed = speed;\r\n this.color = color;\r\n\r\n this.numNodes = numberOfNodes;\r\n\r\n //instatiate first node\r\n this.nodes = [{ x: 0, y: randomIntFromInterval(MIN_Y, MAX_Y) }];\r\n this.nodes[0].wavePower = Math.abs(ZERO_Y - this.nodes[0].y); //wavePower -> max size of node above/under ZERO_Y\r\n this.nodes[0].currentDirection = getDirectionByY(_wave.nodes[0].y);\r\n this.nodes[0].speed = this.speed * this.nodes[0].wavePower;\r\n\r\n //instatiates remaining nodes\r\n this.initWave = function () {\r\n for (let i = 1; i <= _wave.numNodes; i++) {\r\n // let x = _wave.maxX / _wave.numNodes * i;\r\n let x = i * spaceBetweenNodes;\r\n let y = randomIntFromInterval(MIN_Y, MAX_Y);\r\n let currentDirection = _wave.nodes[i - 1].currentDirection * -1;\r\n let wavePower = Math.abs(y - ZERO_Y);\r\n let speed = _wave.speed * wavePower;\r\n _wave.nodes.push({ x, y, speed, wavePower, currentDirection });\r\n }\r\n //console.log(_wave.nodes);\r\n };\r\n\r\n this.initWave();\r\n\r\n this.drawWave = function () {\r\n ctx.beginPath();\r\n var pointCount = _wave.nodes.length;\r\n ctx.moveTo(_wave.nodes[0].x, _wave.nodes[0].y);\r\n var i;\r\n for (i = 0; i < pointCount - 1; i++) {\r\n var c = (_wave.nodes[i].x + _wave.nodes[i + 1].x) / 2;\r\n var d = (_wave.nodes[i].y + _wave.nodes[i + 1].y) / 2;\r\n ctx.quadraticCurveTo(_wave.nodes[i].x, _wave.nodes[i].y, c, d);\r\n }\r\n ctx.strokeStyle = _wave.color;\r\n ctx.lineWidth = lineWidth;\r\n ctx.stroke();\r\n };\r\n\r\n this.update = function () {\r\n var pointCount = _wave.nodes.length;\r\n for (let i = 0; i < pointCount; i++) {\r\n _wave.nodes[i].y = _wave.setY(_wave.nodes[i]);\r\n }\r\n _wave.drawWave();\r\n };\r\n\r\n this.setY = function (node) {\r\n if (node.currentDirection == UP) {\r\n let y = node.y + _wave.speed * UP;\r\n if (y > ZERO_Y - node.wavePower) {\r\n return y;\r\n } else {\r\n node.currentDirection *= -1;\r\n return ZERO_Y - node.wavePower;\r\n }\r\n } else {\r\n //DOWN\r\n let y = node.y + _wave.speed * DOWN;\r\n if (y < ZERO_Y + node.wavePower) {\r\n return y;\r\n } else {\r\n node.currentDirection *= -1;\r\n return ZERO_Y + node.wavePower;\r\n }\r\n }\r\n };\r\n }\r\n\r\n function Sparkle({ dotNumber, globalSpeed, scale }) {\r\n const canvas = document.createElement(\"canvas\");\r\n const ctx = canvas.getContext(\"2d\");\r\n // const edges = {\r\n // left: \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAABkCAYAAAD0ZHJ6AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFWSURBVGhD7ZlBEsIgEASj//+zZqrkoIICsywLmb7ose2BQ+LtcXKQ3E5eX825vz4pLH5kCRPBkZgJjqpoWnCEpPnE1pJDzqCl5HUuySdWFYcWtJC87sQJtqJLQUZSEyd6K7oW7JHUxJ+0VlTBHC0VVZBFgiVqz6EKskiQRYIlal84qWCOltd17oItcsBVsFUOuAn2yAEXwV45MFyQkQMmL9FzsGIJc0ErsYTpxNZyIPz/JJTgSLFE98QecqC5oJdYolrQWyxRNfEsOfBXcKYc+Ck4Ww4UBSPIgaxgFDnwJRhJDrwJRpMDPy9JBNYRjDgv0MQsEmSRIIsEWSTIso5g6+OnF5qYZS3BiOdQE7N8CUabec2JI1XUJWEpCkaZee2JI1Rc/5LMrrh+wdlUCc6ceZ+JZ1Xc65LMqLhXQeBdcb+CwLPingWBV8V9CwKPinsXBGMrHscTSVCQkv56tqAAAAAASUVORK5CYII=\",\r\n // right: \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAABkCAYAAAD0ZHJ6AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFVSURBVGhD7dfbbsIwEEXRtP//z7RbwhKKcrE9F4/CWS/wuHWGtPCzBXr9e7+dFhboEYff92tZIQt6rQf3QM84uAZ6x8EtMCIO3/GQRK0Hc2BkHJ594uj1MB2YEYdnnjhrPQwHZsbhWSfOXg/PWXDFeii/oAKtuj6Dqz5/0ImtFGj1jKcY+k9yovy3maFAZEcOByIzcioQWZHTgciINAUiOtIc2ESFugU23qHugfCMDAlsPEJDAxtLaEogZiPTApvR0PTApjd0WSB6IpcG4i5yeSCuIksE4iyyTCCOIksFYh9ZLhCfkfrhblXyxGhn1omtFGilQCsFWinQqnygvm5ZKdCq/G8Sndiq1In354UW7HW0HvSQWJU48dl5oQXvXK0HLXjlbj3oz4zVshP3nBda8EjvetCCeyPrQQt+Gl0PWrCZWQ9aELPrQQta1sN3L2hdb9u27Q9VINPAek8bqwAAAABJRU5ErkJggg==\"\r\n // }\r\n\r\n let dot = new Image();\r\n dot.src = require(\"../static/Images/mobile/flake6.png\");\r\n let edge = document.createElement(\"img\");\r\n edge.style.position = \"absolute\";\r\n edge.style.height = div.offsetHeight + \"px\";\r\n\r\n dot.addEventListener(\r\n \"load\",\r\n function () {\r\n canvas.style.position = \"absolute\";\r\n canvas.style.top = 0;\r\n canvas.style.left = 0;\r\n div.appendChild(canvas);\r\n div.appendChild(edge);\r\n var w, h;\r\n function resize() {\r\n w = canvas.width = cvs.width = div.offsetWidth;\r\n h = canvas.height = cvs.height = div.offsetHeight;\r\n edge.style.height = div.offsetHeight + \"px\";\r\n if (endsOnThisSide == \"left\") {\r\n return edge.style.left - \"0px\";\r\n } else {\r\n return (edge.style.left = `${div.offsetWidth - 40}px`); // 40 = edge image width\r\n }\r\n }\r\n resize();\r\n window.addEventListener(\"resize\", resize);\r\n function rand(min, max) {\r\n return Math.random() * (max ? max - min : min) + (max ? min : 0);\r\n }\r\n\r\n function DO(count, callback) {\r\n while (count--) {\r\n callback(count);\r\n }\r\n }\r\n\r\n const sprites = [];\r\n DO(dotNumber, () => {\r\n sprites.push({\r\n x: rand(w),\r\n y: rand(h),\r\n xr: 0,\r\n yr: 0, // actual position of sprite\r\n r: rand(Math.PI * 2), // rotation\r\n scale: rand(0.5, 1),\r\n dx: rand(-0.5, 0.5),\r\n dy: rand(-0.5, 0.5), //dot speed\r\n dr: rand(-0.2, 0.2),\r\n countD: 0, // distance travelled in current direction\r\n reverse: 1, // currently back or forth\r\n d: rand(100, 150), // distance to travel in each direction\r\n });\r\n });\r\n\r\n function getOffset(el) {\r\n var _x = 0;\r\n var _y = 0;\r\n while (el && !isNaN(el.offsetLeft) && !isNaN(el.offsetTop)) {\r\n _x += el.offsetLeft - el.scrollLeft;\r\n _y += el.offsetTop - el.scrollTop;\r\n el = el.offsetParent;\r\n }\r\n return { top: _y, left: _x };\r\n }\r\n\r\n function drawImage(image, spr) {\r\n ctx.setTransform(\r\n spr.scale * scale,\r\n 0,\r\n 0,\r\n spr.scale * scale,\r\n spr.xr,\r\n spr.yr\r\n ); // sets scales and origin\r\n ctx.rotate(spr.r);\r\n ctx.drawImage(image, -image.width / 2, -image.height / 2);\r\n }\r\n\r\n function setDirection(spr) {\r\n if (spr.countD >= spr.d || spr.countD <= -spr.d) {\r\n spr.reverse *= -1;\r\n }\r\n spr.x +=\r\n spr.dx *\r\n (1 - Math.abs(spr.countD / spr.d)) *\r\n spr.reverse *\r\n globalSpeed;\r\n spr.y +=\r\n spr.dy *\r\n (1 - Math.abs(spr.countD / spr.d)) *\r\n spr.reverse *\r\n globalSpeed;\r\n spr.countD += spr.reverse;\r\n }\r\n function update() {\r\n var ihM, iwM;\r\n ctx.setTransform(1, 0, 0, 1, 0, 0);\r\n ctx.clearRect(0, 0, w, h);\r\n if (dot.complete) {\r\n var iw = dot.width;\r\n var ih = dot.height;\r\n for (var i = 0; i < sprites.length; i++) {\r\n var spr = sprites[i];\r\n setDirection(spr);\r\n spr.r += spr.dr;\r\n iwM = iw * spr.scale * 2 + w;\r\n ihM = ih * spr.scale * 2 + h;\r\n spr.xr = (((spr.x % iwM) + iwM) % iwM) - iw * spr.scale;\r\n spr.yr = (((spr.y % ihM) + ihM) % ihM) - ih * spr.scale;\r\n drawImage(dot, spr);\r\n }\r\n }\r\n requestAnimationFrame(update);\r\n }\r\n requestAnimationFrame(update);\r\n },\r\n false\r\n );\r\n }\r\n\r\n function update() {\r\n ctx.fillStyle = backgroundColor;\r\n ctx.globalCompositeOperation = \"source-over\";\r\n ctx.fillRect(0, 0, cvs.width, cvs.height);\r\n\r\n waves.forEach((w) => {\r\n w.update();\r\n });\r\n\r\n requestAnimationFrame(update);\r\n }\r\n\r\n return {\r\n addWave: function (color = \"#005792\", lineWidth = 2) {\r\n waves.push(new Wave(color, lineWidth));\r\n },\r\n animate: function () {\r\n update();\r\n },\r\n };\r\n}\r\n","export function Waves({\r\n divId,\r\n maxWavePower = 30,\r\n speed = 0.2,\r\n numberOfNodes = 6,\r\n backgroundColor = \"transparent\",\r\n // lineWidth: lineWidth = 2,\r\n spaceBetweenNodes = 274,\r\n dotNumber = 30,\r\n dotGlobalSpeed = 0.4,\r\n dotScale = 1,\r\n endsOnThisSide = \"right\",\r\n}) {\r\n const div = document.getElementById(divId);\r\n\r\n if (div == null) {\r\n throw new Error(`Could not find element: ${divId}`);\r\n }\r\n\r\n const cvs = document.createElement(\"canvas\");\r\n cvs.style.position = \"absolute\";\r\n cvs.style.top = 0;\r\n cvs.style.left = 0;\r\n // cvs.style.borderRadius = \"50px 0 0 50px\";\r\n cvs.width = div.offsetWidth;\r\n cvs.height = div.offsetHeight;\r\n div.appendChild(cvs);\r\n const UP = -1;\r\n const DOWN = 1;\r\n const ZERO_Y = Math.round(div.clientHeight / 2);\r\n const MAX_Y = ZERO_Y - maxWavePower;\r\n const MIN_Y = ZERO_Y + maxWavePower;\r\n\r\n new Sparkle({\r\n dotNumber,\r\n globalSpeed: dotGlobalSpeed,\r\n scale: dotScale,\r\n });\r\n\r\n const ctx = cvs.getContext(\"2d\");\r\n\r\n var waves = [];\r\n\r\n function getDirectionByY(y) {\r\n return y > ZERO_Y ? UP : DOWN;\r\n }\r\n\r\n function randomIntFromInterval(min, max) {\r\n // min and max included\r\n return Math.floor(Math.random() * (max - min + 1) + min);\r\n }\r\n\r\n function Wave(color, lineWidth) {\r\n var _wave = this;\r\n this.maxX = cvs.clientWidth;\r\n this.speed = speed;\r\n this.color = color;\r\n\r\n this.numNodes = numberOfNodes;\r\n\r\n //instatiate first node\r\n this.nodes = [{ x: 0, y: randomIntFromInterval(MIN_Y, MAX_Y) }];\r\n this.nodes[0].wavePower = Math.abs(ZERO_Y - this.nodes[0].y); //wavePower -> max size of node above/under ZERO_Y\r\n this.nodes[0].currentDirection = getDirectionByY(_wave.nodes[0].y);\r\n this.nodes[0].speed = this.speed * this.nodes[0].wavePower;\r\n\r\n //instatiates remaining nodes\r\n this.initWave = function () {\r\n for (let i = 1; i <= _wave.numNodes; i++) {\r\n // let x = _wave.maxX / _wave.numNodes * i;\r\n let x = i * spaceBetweenNodes;\r\n let y = randomIntFromInterval(MIN_Y, MAX_Y);\r\n let currentDirection = _wave.nodes[i - 1].currentDirection * -1;\r\n let wavePower = Math.abs(y - ZERO_Y);\r\n let speed = _wave.speed * wavePower;\r\n _wave.nodes.push({ x, y, speed, wavePower, currentDirection });\r\n }\r\n //console.log(_wave.nodes);\r\n };\r\n\r\n this.initWave();\r\n\r\n this.drawWave = function () {\r\n ctx.beginPath();\r\n var pointCount = _wave.nodes.length;\r\n ctx.moveTo(_wave.nodes[0].x, _wave.nodes[0].y);\r\n var i;\r\n for (i = 0; i < pointCount - 1; i++) {\r\n var c = (_wave.nodes[i].x + _wave.nodes[i + 1].x) / 2;\r\n var d = (_wave.nodes[i].y + _wave.nodes[i + 1].y) / 2;\r\n ctx.quadraticCurveTo(_wave.nodes[i].x, _wave.nodes[i].y, c, d);\r\n }\r\n ctx.strokeStyle = _wave.color;\r\n ctx.lineWidth = lineWidth;\r\n ctx.stroke();\r\n };\r\n\r\n this.update = function () {\r\n var pointCount = _wave.nodes.length;\r\n for (let i = 0; i < pointCount; i++) {\r\n _wave.nodes[i].y = _wave.setY(_wave.nodes[i]);\r\n }\r\n _wave.drawWave();\r\n };\r\n\r\n this.setY = function (node) {\r\n if (node.currentDirection == UP) {\r\n let y = node.y + _wave.speed * UP;\r\n if (y > ZERO_Y - node.wavePower) {\r\n return y;\r\n } else {\r\n node.currentDirection *= -1;\r\n return ZERO_Y - node.wavePower;\r\n }\r\n } else {\r\n //DOWN\r\n let y = node.y + _wave.speed * DOWN;\r\n if (y < ZERO_Y + node.wavePower) {\r\n return y;\r\n } else {\r\n node.currentDirection *= -1;\r\n return ZERO_Y + node.wavePower;\r\n }\r\n }\r\n };\r\n }\r\n\r\n function Sparkle({ dotNumber, globalSpeed, scale }) {\r\n const canvas = document.createElement(\"canvas\");\r\n const ctx = canvas.getContext(\"2d\");\r\n // const edges = {\r\n // left: \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAABkCAYAAAD0ZHJ6AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFWSURBVGhD7ZlBEsIgEASj//+zZqrkoIICsywLmb7ose2BQ+LtcXKQ3E5eX825vz4pLH5kCRPBkZgJjqpoWnCEpPnE1pJDzqCl5HUuySdWFYcWtJC87sQJtqJLQUZSEyd6K7oW7JHUxJ+0VlTBHC0VVZBFgiVqz6EKskiQRYIlal84qWCOltd17oItcsBVsFUOuAn2yAEXwV45MFyQkQMmL9FzsGIJc0ErsYTpxNZyIPz/JJTgSLFE98QecqC5oJdYolrQWyxRNfEsOfBXcKYc+Ck4Ww4UBSPIgaxgFDnwJRhJDrwJRpMDPy9JBNYRjDgv0MQsEmSRIIsEWSTIso5g6+OnF5qYZS3BiOdQE7N8CUabec2JI1XUJWEpCkaZee2JI1Rc/5LMrrh+wdlUCc6ceZ+JZ1Xc65LMqLhXQeBdcb+CwLPingWBV8V9CwKPinsXBGMrHscTSVCQkv56tqAAAAAASUVORK5CYII=\",\r\n // right: \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAABkCAYAAAD0ZHJ6AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFVSURBVGhD7dfbbsIwEEXRtP//z7RbwhKKcrE9F4/CWS/wuHWGtPCzBXr9e7+dFhboEYff92tZIQt6rQf3QM84uAZ6x8EtMCIO3/GQRK0Hc2BkHJ594uj1MB2YEYdnnjhrPQwHZsbhWSfOXg/PWXDFeii/oAKtuj6Dqz5/0ImtFGj1jKcY+k9yovy3maFAZEcOByIzcioQWZHTgciINAUiOtIc2ESFugU23qHugfCMDAlsPEJDAxtLaEogZiPTApvR0PTApjd0WSB6IpcG4i5yeSCuIksE4iyyTCCOIksFYh9ZLhCfkfrhblXyxGhn1omtFGilQCsFWinQqnygvm5ZKdCq/G8Sndiq1In354UW7HW0HvSQWJU48dl5oQXvXK0HLXjlbj3oz4zVshP3nBda8EjvetCCeyPrQQt+Gl0PWrCZWQ9aELPrQQta1sN3L2hdb9u27Q9VINPAek8bqwAAAABJRU5ErkJggg==\"\r\n // }\r\n\r\n let dot = new Image();\r\n dot.src = require(\"../static/Images/mobile/flake5.png\");\r\n let edge = document.createElement(\"img\");\r\n edge.style.position = \"absolute\";\r\n edge.style.height = div.offsetHeight + \"px\";\r\n\r\n dot.addEventListener(\r\n \"load\",\r\n function () {\r\n canvas.style.position = \"absolute\";\r\n canvas.style.top = 0;\r\n canvas.style.left = 0;\r\n div.appendChild(canvas);\r\n div.appendChild(edge);\r\n var w, h;\r\n function resize() {\r\n w = canvas.width = cvs.width = div.offsetWidth;\r\n h = canvas.height = cvs.height = div.offsetHeight;\r\n edge.style.height = div.offsetHeight + \"px\";\r\n if (endsOnThisSide == \"left\") {\r\n return edge.style.left - \"0px\";\r\n } else {\r\n return (edge.style.left = `${div.offsetWidth - 40}px`); // 40 = edge image width\r\n }\r\n }\r\n resize();\r\n window.addEventListener(\"resize\", resize);\r\n function rand(min, max) {\r\n return Math.random() * (max ? max - min : min) + (max ? min : 0);\r\n }\r\n\r\n function DO(count, callback) {\r\n while (count--) {\r\n callback(count);\r\n }\r\n }\r\n\r\n const sprites = [];\r\n DO(dotNumber, () => {\r\n sprites.push({\r\n x: rand(w),\r\n y: rand(h),\r\n xr: 0,\r\n yr: 0, // actual position of sprite\r\n r: rand(Math.PI * 2), // rotation\r\n scale: rand(0.5, 1),\r\n dx: rand(-0.5, 0.5),\r\n dy: rand(-0.5, 0.5), //dot speed\r\n dr: rand(-0.2, 0.2),\r\n countD: 0, // distance travelled in current direction\r\n reverse: 1, // currently back or forth\r\n d: rand(100, 150), // distance to travel in each direction\r\n });\r\n });\r\n\r\n function getOffset(el) {\r\n var _x = 0;\r\n var _y = 0;\r\n while (el && !isNaN(el.offsetLeft) && !isNaN(el.offsetTop)) {\r\n _x += el.offsetLeft - el.scrollLeft;\r\n _y += el.offsetTop - el.scrollTop;\r\n el = el.offsetParent;\r\n }\r\n return { top: _y, left: _x };\r\n }\r\n\r\n function drawImage(image, spr) {\r\n ctx.setTransform(\r\n spr.scale * scale,\r\n 0,\r\n 0,\r\n spr.scale * scale,\r\n spr.xr,\r\n spr.yr\r\n ); // sets scales and origin\r\n ctx.rotate(spr.r);\r\n ctx.drawImage(image, -image.width / 2, -image.height / 2);\r\n }\r\n\r\n function setDirection(spr) {\r\n if (spr.countD >= spr.d || spr.countD <= -spr.d) {\r\n spr.reverse *= -1;\r\n }\r\n spr.x +=\r\n spr.dx *\r\n (1 - Math.abs(spr.countD / spr.d)) *\r\n spr.reverse *\r\n globalSpeed;\r\n spr.y +=\r\n spr.dy *\r\n (1 - Math.abs(spr.countD / spr.d)) *\r\n spr.reverse *\r\n globalSpeed;\r\n spr.countD += spr.reverse;\r\n }\r\n function update() {\r\n var ihM, iwM;\r\n ctx.setTransform(1, 0, 0, 1, 0, 0);\r\n ctx.clearRect(0, 0, w, h);\r\n if (dot.complete) {\r\n var iw = dot.width;\r\n var ih = dot.height;\r\n for (var i = 0; i < sprites.length; i++) {\r\n var spr = sprites[i];\r\n setDirection(spr);\r\n spr.r += spr.dr;\r\n iwM = iw * spr.scale * 2 + w;\r\n ihM = ih * spr.scale * 2 + h;\r\n spr.xr = (((spr.x % iwM) + iwM) % iwM) - iw * spr.scale;\r\n spr.yr = (((spr.y % ihM) + ihM) % ihM) - ih * spr.scale;\r\n drawImage(dot, spr);\r\n }\r\n }\r\n requestAnimationFrame(update);\r\n }\r\n requestAnimationFrame(update);\r\n },\r\n false\r\n );\r\n }\r\n\r\n function update() {\r\n ctx.fillStyle = backgroundColor;\r\n ctx.globalCompositeOperation = \"source-over\";\r\n ctx.fillRect(0, 0, cvs.width, cvs.height);\r\n\r\n waves.forEach((w) => {\r\n w.update();\r\n });\r\n\r\n requestAnimationFrame(update);\r\n }\r\n\r\n return {\r\n addWave: function (color = \"#005792\", lineWidth = 2) {\r\n waves.push(new Wave(color, lineWidth));\r\n },\r\n animate: function () {\r\n update();\r\n },\r\n };\r\n}\r\n","export function Waves({\r\n divId,\r\n maxWavePower = 30,\r\n speed = 0.2,\r\n numberOfNodes = 6,\r\n backgroundColor = \"transparent\",\r\n // lineWidth: lineWidth = 2,\r\n spaceBetweenNodes = 274,\r\n dotNumber = 30,\r\n dotGlobalSpeed = 0.4,\r\n dotScale = 1,\r\n endsOnThisSide = \"right\",\r\n}) {\r\n const div = document.getElementById(divId);\r\n\r\n if (div == null) {\r\n throw new Error(`Could not find element: ${divId}`);\r\n }\r\n\r\n const cvs = document.createElement(\"canvas\");\r\n cvs.style.position = \"absolute\";\r\n cvs.style.top = 0;\r\n cvs.style.left = 0;\r\n // cvs.style.borderRadius = \"50px 0 0 50px\";\r\n cvs.width = div.offsetWidth;\r\n cvs.height = div.offsetHeight;\r\n div.appendChild(cvs);\r\n const UP = -1;\r\n const DOWN = 1;\r\n const ZERO_Y = Math.round(div.clientHeight / 2);\r\n const MAX_Y = ZERO_Y - maxWavePower;\r\n const MIN_Y = ZERO_Y + maxWavePower;\r\n\r\n new Sparkle({\r\n dotNumber,\r\n globalSpeed: dotGlobalSpeed,\r\n scale: dotScale,\r\n });\r\n\r\n const ctx = cvs.getContext(\"2d\");\r\n\r\n var waves = [];\r\n\r\n function getDirectionByY(y) {\r\n return y > ZERO_Y ? UP : DOWN;\r\n }\r\n\r\n function randomIntFromInterval(min, max) {\r\n // min and max included\r\n return Math.floor(Math.random() * (max - min + 1) + min);\r\n }\r\n\r\n function Wave(color, lineWidth) {\r\n var _wave = this;\r\n this.maxX = cvs.clientWidth;\r\n this.speed = speed;\r\n this.color = color;\r\n\r\n this.numNodes = numberOfNodes;\r\n\r\n //instatiate first node\r\n this.nodes = [{ x: 0, y: randomIntFromInterval(MIN_Y, MAX_Y) }];\r\n this.nodes[0].wavePower = Math.abs(ZERO_Y - this.nodes[0].y); //wavePower -> max size of node above/under ZERO_Y\r\n this.nodes[0].currentDirection = getDirectionByY(_wave.nodes[0].y);\r\n this.nodes[0].speed = this.speed * this.nodes[0].wavePower;\r\n\r\n //instatiates remaining nodes\r\n this.initWave = function () {\r\n for (let i = 1; i <= _wave.numNodes; i++) {\r\n // let x = _wave.maxX / _wave.numNodes * i;\r\n let x = i * spaceBetweenNodes;\r\n let y = randomIntFromInterval(MIN_Y, MAX_Y);\r\n let currentDirection = _wave.nodes[i - 1].currentDirection * -1;\r\n let wavePower = Math.abs(y - ZERO_Y);\r\n let speed = _wave.speed * wavePower;\r\n _wave.nodes.push({ x, y, speed, wavePower, currentDirection });\r\n }\r\n //console.log(_wave.nodes);\r\n };\r\n\r\n this.initWave();\r\n\r\n this.drawWave = function () {\r\n ctx.beginPath();\r\n var pointCount = _wave.nodes.length;\r\n ctx.moveTo(_wave.nodes[0].x, _wave.nodes[0].y);\r\n var i;\r\n for (i = 0; i < pointCount - 1; i++) {\r\n var c = (_wave.nodes[i].x + _wave.nodes[i + 1].x) / 2;\r\n var d = (_wave.nodes[i].y + _wave.nodes[i + 1].y) / 2;\r\n ctx.quadraticCurveTo(_wave.nodes[i].x, _wave.nodes[i].y, c, d);\r\n }\r\n ctx.strokeStyle = _wave.color;\r\n ctx.lineWidth = lineWidth;\r\n ctx.stroke();\r\n };\r\n\r\n this.update = function () {\r\n var pointCount = _wave.nodes.length;\r\n for (let i = 0; i < pointCount; i++) {\r\n _wave.nodes[i].y = _wave.setY(_wave.nodes[i]);\r\n }\r\n _wave.drawWave();\r\n };\r\n\r\n this.setY = function (node) {\r\n if (node.currentDirection == UP) {\r\n let y = node.y + _wave.speed * UP;\r\n if (y > ZERO_Y - node.wavePower) {\r\n return y;\r\n } else {\r\n node.currentDirection *= -1;\r\n return ZERO_Y - node.wavePower;\r\n }\r\n } else {\r\n //DOWN\r\n let y = node.y + _wave.speed * DOWN;\r\n if (y < ZERO_Y + node.wavePower) {\r\n return y;\r\n } else {\r\n node.currentDirection *= -1;\r\n return ZERO_Y + node.wavePower;\r\n }\r\n }\r\n };\r\n }\r\n\r\n function Sparkle({ dotNumber, globalSpeed, scale }) {\r\n const canvas = document.createElement(\"canvas\");\r\n const ctx = canvas.getContext(\"2d\");\r\n // const edges = {\r\n // left: \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAABkCAYAAAD0ZHJ6AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFWSURBVGhD7ZlBEsIgEASj//+zZqrkoIICsywLmb7ose2BQ+LtcXKQ3E5eX825vz4pLH5kCRPBkZgJjqpoWnCEpPnE1pJDzqCl5HUuySdWFYcWtJC87sQJtqJLQUZSEyd6K7oW7JHUxJ+0VlTBHC0VVZBFgiVqz6EKskiQRYIlal84qWCOltd17oItcsBVsFUOuAn2yAEXwV45MFyQkQMmL9FzsGIJc0ErsYTpxNZyIPz/JJTgSLFE98QecqC5oJdYolrQWyxRNfEsOfBXcKYc+Ck4Ww4UBSPIgaxgFDnwJRhJDrwJRpMDPy9JBNYRjDgv0MQsEmSRIIsEWSTIso5g6+OnF5qYZS3BiOdQE7N8CUabec2JI1XUJWEpCkaZee2JI1Rc/5LMrrh+wdlUCc6ceZ+JZ1Xc65LMqLhXQeBdcb+CwLPingWBV8V9CwKPinsXBGMrHscTSVCQkv56tqAAAAAASUVORK5CYII=\",\r\n // right: \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAABkCAYAAAD0ZHJ6AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFVSURBVGhD7dfbbsIwEEXRtP//z7RbwhKKcrE9F4/CWS/wuHWGtPCzBXr9e7+dFhboEYff92tZIQt6rQf3QM84uAZ6x8EtMCIO3/GQRK0Hc2BkHJ594uj1MB2YEYdnnjhrPQwHZsbhWSfOXg/PWXDFeii/oAKtuj6Dqz5/0ImtFGj1jKcY+k9yovy3maFAZEcOByIzcioQWZHTgciINAUiOtIc2ESFugU23qHugfCMDAlsPEJDAxtLaEogZiPTApvR0PTApjd0WSB6IpcG4i5yeSCuIksE4iyyTCCOIksFYh9ZLhCfkfrhblXyxGhn1omtFGilQCsFWinQqnygvm5ZKdCq/G8Sndiq1In354UW7HW0HvSQWJU48dl5oQXvXK0HLXjlbj3oz4zVshP3nBda8EjvetCCeyPrQQt+Gl0PWrCZWQ9aELPrQQta1sN3L2hdb9u27Q9VINPAek8bqwAAAABJRU5ErkJggg==\"\r\n // }\r\n\r\n let dot = new Image();\r\n dot.src = require(\"../static/Images/mobile/flake1.png\");\r\n let edge = document.createElement(\"img\");\r\n edge.style.position = \"absolute\";\r\n edge.style.height = div.offsetHeight + \"px\";\r\n\r\n dot.addEventListener(\r\n \"load\",\r\n function () {\r\n canvas.style.position = \"absolute\";\r\n canvas.style.top = 0;\r\n canvas.style.left = 0;\r\n div.appendChild(canvas);\r\n div.appendChild(edge);\r\n var w, h;\r\n function resize() {\r\n w = canvas.width = cvs.width = div.offsetWidth;\r\n h = canvas.height = cvs.height = div.offsetHeight;\r\n edge.style.height = div.offsetHeight + \"px\";\r\n if (endsOnThisSide == \"left\") {\r\n return edge.style.left - \"0px\";\r\n } else {\r\n return (edge.style.left = `${div.offsetWidth - 40}px`); // 40 = edge image width\r\n }\r\n }\r\n resize();\r\n window.addEventListener(\"resize\", resize);\r\n function rand(min, max) {\r\n return Math.random() * (max ? max - min : min) + (max ? min : 0);\r\n }\r\n\r\n function DO(count, callback) {\r\n while (count--) {\r\n callback(count);\r\n }\r\n }\r\n\r\n const sprites = [];\r\n DO(dotNumber, () => {\r\n sprites.push({\r\n x: rand(w),\r\n y: rand(h),\r\n xr: 0,\r\n yr: 0, // actual position of sprite\r\n r: rand(Math.PI * 2), // rotation\r\n scale: rand(0.5, 1),\r\n dx: rand(-0.5, 0.5),\r\n dy: rand(-0.5, 0.5), //dot speed\r\n dr: rand(-0.2, 0.2),\r\n countD: 0, // distance travelled in current direction\r\n reverse: 1, // currently back or forth\r\n d: rand(100, 150), // distance to travel in each direction\r\n });\r\n });\r\n\r\n function getOffset(el) {\r\n var _x = 0;\r\n var _y = 0;\r\n while (el && !isNaN(el.offsetLeft) && !isNaN(el.offsetTop)) {\r\n _x += el.offsetLeft - el.scrollLeft;\r\n _y += el.offsetTop - el.scrollTop;\r\n el = el.offsetParent;\r\n }\r\n return { top: _y, left: _x };\r\n }\r\n\r\n function drawImage(image, spr) {\r\n ctx.setTransform(\r\n spr.scale * scale,\r\n 0,\r\n 0,\r\n spr.scale * scale,\r\n spr.xr,\r\n spr.yr\r\n ); // sets scales and origin\r\n ctx.rotate(spr.r);\r\n ctx.drawImage(image, -image.width / 2, -image.height / 2);\r\n }\r\n\r\n function setDirection(spr) {\r\n if (spr.countD >= spr.d || spr.countD <= -spr.d) {\r\n spr.reverse *= -1;\r\n }\r\n spr.x +=\r\n spr.dx *\r\n (1 - Math.abs(spr.countD / spr.d)) *\r\n spr.reverse *\r\n globalSpeed;\r\n spr.y +=\r\n spr.dy *\r\n (1 - Math.abs(spr.countD / spr.d)) *\r\n spr.reverse *\r\n globalSpeed;\r\n spr.countD += spr.reverse;\r\n }\r\n function update() {\r\n var ihM, iwM;\r\n ctx.setTransform(1, 0, 0, 1, 0, 0);\r\n ctx.clearRect(0, 0, w, h);\r\n if (dot.complete) {\r\n var iw = dot.width;\r\n var ih = dot.height;\r\n for (var i = 0; i < sprites.length; i++) {\r\n var spr = sprites[i];\r\n setDirection(spr);\r\n spr.r += spr.dr;\r\n iwM = iw * spr.scale * 2 + w;\r\n ihM = ih * spr.scale * 2 + h;\r\n spr.xr = (((spr.x % iwM) + iwM) % iwM) - iw * spr.scale;\r\n spr.yr = (((spr.y % ihM) + ihM) % ihM) - ih * spr.scale;\r\n drawImage(dot, spr);\r\n }\r\n }\r\n requestAnimationFrame(update);\r\n }\r\n requestAnimationFrame(update);\r\n },\r\n false\r\n );\r\n }\r\n\r\n function update() {\r\n ctx.fillStyle = backgroundColor;\r\n ctx.globalCompositeOperation = \"source-over\";\r\n ctx.fillRect(0, 0, cvs.width, cvs.height);\r\n\r\n waves.forEach((w) => {\r\n w.update();\r\n });\r\n\r\n requestAnimationFrame(update);\r\n }\r\n\r\n return {\r\n addWave: function (color = \"#005792\", lineWidth = 2) {\r\n waves.push(new Wave(color, lineWidth));\r\n },\r\n animate: function () {\r\n update();\r\n },\r\n };\r\n}\r\n","import \"./ShouldKnow.scss\";\r\nimport React, { useEffect, useState, useContext } from \"react\";\r\nimport { Waves } from \"../../Services/Flakes\";\r\nimport { Waves as waves2 } from \"../../Services/Flakes2\";\r\nimport { Waves as waves3 } from \"../../Services/Flakes3\";\r\nimport articles from \"./ArticleAPI.json\";\r\nimport Slider from \"react-slick\";\r\nimport { mobile } from \"../../Services/Agent\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { AppContext } from \"../../stores/application.store\";\r\nimport Div100vh from 'react-div-100vh';\r\nimport { useRef } from \"react\";\r\n\r\nexport default function ShouldKnow() {\r\n const [article, setArticle] = useState(articles.articles);\r\n let [sliderIndex, setSliderIndex] = useState(0);\r\n // Application Store context\r\n let { inArticle, toggleArticle } = useContext(AppContext);\r\n //console.log(useContext(AppContext))\r\n\r\n let linkRef = useRef(null);\r\n\r\n\r\n useEffect(() => {\r\n //console.log(\"WTF \", inArticle)\r\n }, [inArticle])\r\n // Slick settings\r\n const settings = {\r\n className: \"center\",\r\n //old settings\r\n centerMode: true,\r\n // slidesToShow: 3,\r\n //old end\r\n // infinite: mobile() ? true : false,\r\n slidesToShow: mobile() ? 3 : 5,\r\n // centerMode: mobile() ? true : false,\r\n speed: mobile() ? 500 : 0,\r\n arrows: true,\r\n // initialSlide: 0,\r\n draggable: true,\r\n focusOnSelect: true,\r\n afterChange: (index) => {\r\n setSliderIndex(index);\r\n // console.log(index)\r\n },\r\n vertical: mobile() ? false : true,\r\n };\r\n\r\n const changeIndex = (type) => {\r\n if (type === \"+\") {\r\n sliderIndex < 4 && setSliderIndex(sliderIndex + 1)\r\n }\r\n else {\r\n sliderIndex > 0 && setSliderIndex(sliderIndex - 1)\r\n }\r\n }\r\n\r\n // Canvas initialization\r\n useEffect(() => {\r\n try {\r\n let mywaves = new Waves({\r\n divId: \"desktop\",\r\n numberOfNodes: 200,\r\n // spaceBetweenNodes: 100\r\n // speed: 0.4,\r\n // maxWavePower: 50,\r\n // backgroundColor: \"purple\",\r\n // lineWidth: 6,\r\n dotNumber: 250, // 30 is default\r\n dotGlobalSpeed: 0.8, // 0.4 is default\r\n endsOnThisSide: \"right\", // right is default\r\n });\r\n\r\n mywaves.animate();\r\n } catch (err) {\r\n // console.error(err.message);\r\n }\r\n\r\n //************** Mobile ***********\r\n\r\n try {\r\n let mywaves = new Waves({\r\n divId: \"mobile\",\r\n numberOfNodes: 80,\r\n // spaceBetweenNodes: 100\r\n // speed: 0.4,\r\n // maxWavePower: 9999999,\r\n // backgroundColor: \"purple\",\r\n // lineWidth: 6,\r\n dotNumber: 70, // 30 is default\r\n dotGlobalSpeed: 0.8, // 0.4 is default\r\n endsOnThisSide: \"right\", // right is default\r\n });\r\n\r\n mywaves.animate();\r\n } catch (err) {\r\n // console.error(err.message);\r\n }\r\n }, []);\r\n // Waves 2\r\n useEffect(() => {\r\n try {\r\n let mywaves = new waves2({\r\n divId: \"waves2\",\r\n numberOfNodes: 200,\r\n // spaceBetweenNodes: 100\r\n // speed: 0.4,\r\n // maxWavePower: 50,\r\n // backgroundColor: \"purple\",\r\n // lineWidth: 6,\r\n dotNumber: mobile() ? 30 : 250, // 30 is default\r\n dotGlobalSpeed: 0.8, // 0.4 is default\r\n endsOnThisSide: \"right\", // right is default\r\n });\r\n\r\n mywaves.animate();\r\n } catch (err) {\r\n // console.error(err.message);\r\n }\r\n }, []);\r\n // Waves 3\r\n useEffect(() => {\r\n try {\r\n let mywaves = new waves3({\r\n divId: \"waves3\",\r\n numberOfNodes: 200,\r\n // spaceBetweenNodes: 100\r\n // speed: 0.4,\r\n // maxWavePower: 50,\r\n // backgroundColor: \"purple\",\r\n // lineWidth: 6,\r\n dotNumber: 250, // 30 is default\r\n dotGlobalSpeed: 0.8, // 0.4 is default\r\n endsOnThisSide: \"right\", // right is default\r\n });\r\n\r\n mywaves.animate();\r\n } catch (err) {\r\n // console.error(err.message);\r\n }\r\n\r\n //************** Mobile ***********\r\n\r\n try {\r\n let mywaves = new Waves({\r\n divId: \"mobile\",\r\n numberOfNodes: 80,\r\n // spaceBetweenNodes: 100\r\n // speed: 0.4,\r\n // maxWavePower: 9999999,\r\n // backgroundColor: \"purple\",\r\n // lineWidth: 6,\r\n dotNumber: 70, // 30 is default\r\n dotGlobalSpeed: 0.8, // 0.4 is default\r\n endsOnThisSide: \"right\", // right is default\r\n });\r\n\r\n mywaves.animate();\r\n } catch (err) {\r\n // console.error(err.message);\r\n }\r\n }, []);\r\n\r\n //Listening To Touch events\r\n useEffect(() => {\r\n const prevBtn = document.querySelector(\".slick-prev\");\r\n const nextBtn = document.querySelector(\".slick-next\");\r\n // window.onscroll = function(e) {\r\n // // print \"false\" if direction is down and \"true\" if up\r\n // //console.log(this.oldScroll > this.scrollX);\r\n // this.oldScroll = this.scrollX;\r\n // }\r\n\r\n let touchstartX = 0;\r\n let touchstartY = 0;\r\n let touchendX = 0;\r\n let touchendY = 0;\r\n\r\n let gesuredZone = document.querySelector(\".sk_main\");\r\n\r\n gesuredZone.addEventListener(\r\n \"touchstart\",\r\n function (event) {\r\n touchstartX = event.changedTouches[0].screenX;\r\n touchstartY = event.changedTouches[0].screenY;\r\n },\r\n false\r\n );\r\n\r\n gesuredZone.addEventListener(\r\n \"touchend\",\r\n function (event) {\r\n touchendX = event.changedTouches[0].screenX;\r\n touchendY = event.changedTouches[0].screenY;\r\n handleGesure();\r\n },\r\n false\r\n );\r\n\r\n let imageArr = document.querySelectorAll(\".sk_image\");\r\n function handleGesure() {\r\n let swiped = \"swiped: \";\r\n if (touchendX < touchstartX) {\r\n // Swiped Left\r\n // The carusel moved Right\r\n // console.log(swiped + \"left!\");\r\n document.querySelector(\".slick-prev\").click();\r\n }\r\n if (touchendX > touchstartX) {\r\n // Swiped Right\r\n // The carusel moved left\r\n // console.log(swiped + \"right!\");\r\n document.querySelector(\".slick-next\").click();\r\n }\r\n }\r\n }, []);\r\n\r\n return (\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 {article.map((a, index) => (\r\n
\r\n
\r\n
\r\n ))}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n document.querySelector(\".slick-prev\").click()}\r\n onClick={() => changeIndex(\"\")}\r\n >\r\n \r\n
\r\n
linkRef.current.click()} className=\"image_title\">{article[sliderIndex].title}
\r\n
linkRef.current.click()} className=\"image_description\">\r\n {article[sliderIndex].desc}\r\n
\r\n toggleArticle()}\r\n >\r\n לקריאת הכתבה\r\n \r\n document.querySelector(\".slick-next\").click()}\r\n onClick={() => changeIndex(\"+\")}\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","import \"./ShouldBuy.scss\";\r\nimport React, { useEffect, useState, useRef , useContext} from \"react\";\r\nimport goggles from \"./Goggles.json\";\r\nimport Slider from \"react-slick\";\r\nimport { mobile } from \"../../Services/Agent\";\r\nimport { GA_VPush } from \"../../Services/GoogleAnalytics\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { AppContext } from \"../../stores/application.store\";\r\n\r\nexport default function ShouldBuy() {\r\n let { inArticle, toggleArticle } = useContext(AppContext);\r\n const [article, setArticle] = useState(goggles.goggles);\r\n let [sliderIndex, setSliderIndex] = useState(0);\r\n\r\n // Slick settings\r\n const settingsSlick = {\r\n className: \"center\",\r\n centerMode: true,\r\n infinite: true,\r\n centerPadding: mobile() ? \"60px\" : \"60px\",\r\n slidesToShow: mobile() ? 3 : 4,\r\n speed: mobile() ? 500 : 0,\r\n // lazyLoad: \"ondemend\",\r\n focusOnSelect: true,\r\n afterChange: (index) => {\r\n setSliderIndex(index);\r\n GA_VPush(window.location.origin + window.location.pathname + (window.location.pathname[window.location.pathname.length - 1] == \"/\" ? \"\" : \"/\") + \"reality-check/what-you-should-buy/\" + article[index].title , `בדיקת מציאות - מה שכדאי לקנות ${article[index].title}`)\r\n // console.log(sliderIndex);\r\n },\r\n };\r\n\r\n\r\n //Listening To Touch events\r\n useEffect(() => {\r\n const prevBtn = document.querySelector(\".slick-prev\");\r\n const nextBtn = document.querySelector(\".slick-next\");\r\n\r\n let touchstartX = 0;\r\n let touchstartY = 0;\r\n let touchendX = 0;\r\n let touchendY = 0;\r\n\r\n let gesuredZone = document.querySelector(\".sb_main\");\r\n\r\n gesuredZone.addEventListener(\r\n \"touchstart\",\r\n function (event) {\r\n touchstartX = event.changedTouches[0].screenX;\r\n touchstartY = event.changedTouches[0].screenY;\r\n },\r\n false\r\n );\r\n\r\n gesuredZone.addEventListener(\r\n \"touchend\",\r\n function (event) {\r\n touchendX = event.changedTouches[0].screenX;\r\n touchendY = event.changedTouches[0].screenY;\r\n handleGesure();\r\n },\r\n false\r\n );\r\n\r\n let imageArr = document.querySelectorAll(\".sb_image\");\r\n function handleGesure() {\r\n let swiped = \"swiped: \";\r\n if (touchendX < touchstartX) {\r\n // Swiped Left\r\n // The carusel moved Right\r\n document.querySelector(\".should_buy .slick-next\").click();\r\n }\r\n if (touchendX > touchstartX) {\r\n // Swiped Right\r\n // The carusel moved left\r\n document.querySelector(\".should_buy .slick-prev\").click();\r\n }\r\n }\r\n\r\n // ipad air (landscape)\r\n // 768 - width\r\n // 1024 - height\r\n // ipad pro (landscape)\r\n // 1024 - width\r\n // 1366 - height \r\n // alert(window.screen.width);\r\n // alert(window.screen.height);\r\n\r\n }, []);\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
מה שכדאי לקנות
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{article[sliderIndex].title}
\r\n
\r\n {article[sliderIndex].desc}\r\n
\r\n toggleArticle()}\r\n >\r\n למדריך המלא\r\n \r\n
\r\n
\r\n
\r\n \r\n {article.map((a, index) => (\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","import React,{useState,useEffect} from \"react\";\r\nimport \"./ShouldDo.scss\";\r\nimport {cards} from \"./CardList.json\" \r\nimport Footer from \"../Footer/Footer\";\r\nimport { GA_Push } from \"../../Services/GoogleAnalytics\";\r\n\r\nexport default function ShouldDo() {\r\n let [index, setIndex] = useState(1)\r\n\r\n const changeIndex = (type) => {\r\n if(type === \"+\"){\r\n index < 3 && setIndex(index + 1)\r\n }\r\n else{\r\n index > 1 && setIndex(index - 1)\r\n }\r\n }\r\n\r\n function handleAnalitics(name){\r\n GA_Push(\"navigation_events\" , `Download ${name}` ,\"\",\"navigation\")\r\n }\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
מה שכדאי לעשות
\r\n
\r\n
\r\n {\r\n cards.map((c, index) => (\r\n
\r\n
\r\n
{c.gener}
\r\n
{c.title}
\r\n
{c.desc}
\r\n
{c.format}
\r\n handleAnalitics(c.title)} className=\"card_btn\">להורדה\r\n
\r\n ))\r\n }\r\n
\r\n
\r\n
changeIndex(\"+\")}>
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
changeIndex(\"\")}>
\r\n
\r\n
\r\n
\r\n
\r\n )\r\n}\r\n","((d) => {\r\n const ce = (e, n) => {\r\n let a = document.createEvent(\"CustomEvent\");\r\n a.initCustomEvent(n, true, true, e.target);\r\n e.target.dispatchEvent(a);\r\n a = null;\r\n return false;\r\n };\r\n let nm = true;\r\n let sp = {\r\n x: 0,\r\n y: 0,\r\n };\r\n let ep = {\r\n x: 0,\r\n y: 0,\r\n };\r\n const touch = {\r\n touchstart: (e) => {\r\n sp = {\r\n x: e.touches[0].pageX,\r\n y: e.touches[0].pageY,\r\n };\r\n },\r\n touchmove: (e) => {\r\n nm = false;\r\n ep = {\r\n x: e.touches[0].pageX,\r\n y: e.touches[0].pageY,\r\n };\r\n },\r\n touchend: (e) => {\r\n if (nm) {\r\n ce(e, \"fc\");\r\n } else {\r\n const x = ep.x - sp.x;\r\n const xr = Math.abs(x);\r\n const y = ep.y - sp.y;\r\n const yr = Math.abs(y);\r\n if (Math.max(xr, yr) > 20) {\r\n ce(e, xr > yr ? (x < 0 ? \"swl\" : \"swr\") : y < 0 ? \"swu\" : \"swd\");\r\n }\r\n }\r\n nm = true;\r\n },\r\n touchcancel: (e) => {\r\n nm = false;\r\n },\r\n };\r\n for (const a in touch) {\r\n d.addEventListener(a, touch[a], false);\r\n }\r\n})(document);\r\n\r\nconst wheelHandler = (e) => {\r\n return typeof e.wheelDelta !== \"undefined\"\r\n ? e.wheelDelta < 0\r\n : !(e.detail < 0);\r\n};\r\n\r\nconst wheelDragDirection = (event) => {\r\n let direction = \"down\";\r\n switch (event.type) {\r\n case \"DOMMouseScroll\":\r\n case \"mousewheel\":\r\n direction = wheelHandler(event) ? \"down\" : \"up\";\r\n break;\r\n case \"swu\":\r\n direction = \"down\";\r\n break;\r\n case \"swd\":\r\n direction = \"up\";\r\n break;\r\n }\r\n return direction;\r\n};\r\n\r\nwindow.addEventListener(\"load\", function () {\r\n const preventPullToRefreshCheckbox = true;\r\n const preventOverscrollGlowCheckbox = false;\r\n const preventScrollCheckbox = false;\r\n\r\n let maybePreventPullToRefresh = false;\r\n let lastTouchY = 0;\r\n const touchstartHandler = function (e) {\r\n if (e.touches.length != 1) return;\r\n lastTouchY = e.touches[0].clientY;\r\n // Pull-to-refresh will only trigger if the scroll begins when the\r\n // document's Y offset is zero.\r\n maybePreventPullToRefresh =\r\n preventPullToRefreshCheckbox && window.pageYOffset == 0;\r\n };\r\n\r\n const touchmoveHandler = function (e) {\r\n const touchY = e.touches[0].clientY;\r\n const touchYDelta = touchY - lastTouchY;\r\n lastTouchY = touchY;\r\n\r\n if (maybePreventPullToRefresh) {\r\n // To suppress pull-to-refresh it is sufficient to preventDefault the\r\n // first overscrolling touchmove.\r\n maybePreventPullToRefresh = false;\r\n if (touchYDelta > 0) {\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n if (preventScrollCheckbox) {\r\n e.preventDefault();\r\n return;\r\n }\r\n\r\n if (preventOverscrollGlowCheckbox) {\r\n if (window.pageYOffset == 0 && touchYDelta > 0) {\r\n e.preventDefault();\r\n }\r\n }\r\n };\r\n\r\n window.document.addEventListener(\"touchstart\", touchstartHandler, {\r\n passive: false,\r\n });\r\n window.document.addEventListener(\"touchmove\", touchmoveHandler, {\r\n passive: false,\r\n });\r\n});\r\n\r\nexport { wheelHandler, wheelDragDirection };\r\n","import React, { useState, useEffect, useContext } from \"react\";\r\nimport Welcome from \"../Welcome/Welcome\";\r\nimport Loading from \"../Loading/Loading\";\r\nimport VideoVR from \"../VideoVR/VideoVR\";\r\nimport ShouldKnow from \"../ShouldKnow/ShouldKnow\";\r\nimport ShouldBuy from \"../ShouldBuy/ShouldBuy\";\r\nimport ShouldDo from \"../ShouldDo/ShouldDo\";\r\nimport { wheelHandler, wheelDragDirection } from \"../../Services/Wheel\";\r\nimport \"./Home.scss\";\r\nimport { AppContext } from \"../../stores/application.store\";\r\nimport { GA_VPush } from \"../../Services/GoogleAnalytics\";\r\n\r\nvar isBusy = false;\r\n\r\nexport default function Home() {\r\n // let [hasLoaded, setHasLoaded] = useState(false);\r\n const [isScrollBusy, setScrollState] = useState(false);\r\n // Pages state\r\n let [sec1, setSec1] = useState(false);\r\n let [sec2, setSec2] = useState(false);\r\n let [sec3, setSec3] = useState(false);\r\n let [sec4, setSec4] = useState(false);\r\n let [sec5, setSec5] = useState(false);\r\n\r\n let dictionary = {\r\n \"sec-1\": false,\r\n \"sec-2\": false,\r\n \"sec-3\": false,\r\n \"sec-4\": false,\r\n \"sec-5\": false,\r\n }\r\n\r\n // Application Store context\r\n let { scroll, setScroll, inArticle, setInArticle, loading, setLoading, setHasLoaded, loaded, hasLoadedSession, setSessionLoaded } = useContext(AppContext)\r\n\r\n // Fix the bug that happend when going back from article via url back button\r\n window.onhashchange = function () {\r\n setScroll(scroll > 0 ? 2 : 0);\r\n }\r\n // Session storage part\r\n useEffect(() => {\r\n if (hasLoadedSession) {\r\n setHasLoaded(true);\r\n setLoading(false);\r\n return;\r\n }\r\n setLoading(true);\r\n setTimeout(() => {\r\n setHasLoaded(true);\r\n }, 6000);\r\n setTimeout(() => {\r\n setLoading(false);\r\n }, 7000);\r\n sessionStorage.setItem(\"hasLoaded\", true);\r\n }, []);\r\n\r\n // useEffect(() => {\r\n // console.log(loading);\r\n // // console.log(window.history)\r\n // // alert(window.screen.width);\r\n // }, [loading])\r\n\r\n\r\n useEffect(() => {\r\n if(!loaded) return;\r\n // console.log(\"a\");\r\n //Sets the Observer options\r\n const options = {\r\n root: null, // The view port\r\n threshhold: 0, // 0 ~ 1\r\n rootMargin: \"-100px\", // like margin in css\r\n };\r\n const observer = new IntersectionObserver(function (entries, observer) {\r\n entries.forEach((entry) => {\r\n if (!entry.isIntersecting) return;\r\n // Do the action on intersect section\r\n let currentSec = entry.target.classList[entry.target.classList.length - 1]\r\n switch (currentSec) {\r\n case \"sec-1\":\r\n if (dictionary[`sec-1`]) break;\r\n GA_VPush(window.location.origin + window.location.pathname + (window.location.pathname[window.location.pathname.length - 1] == \"/\" ? \"\" : \"/\") + \"reality-check/\", \"בדיקת מציאות\")\r\n dictionary[`sec-1`] = true;\r\n break;\r\n case \"sec-2\":\r\n if (dictionary[`sec-2`]) return;\r\n GA_VPush(window.location.origin + window.location.pathname + (window.location.pathname[window.location.pathname.length - 1] == \"/\" ? \"\" : \"/\") + \"reality-check/what-you-should-see\", \"בדיקת מציאות - מה שכדאי לראות\")\r\n dictionary[`sec-2`] = true;\r\n break;\r\n case \"sec-3\":\r\n if (dictionary[`sec-3`]) return;\r\n GA_VPush(window.location.origin + window.location.pathname + (window.location.pathname[window.location.pathname.length - 1] == \"/\" ? \"\" : \"/\") + \"reality-check/what-you-should-know\", \"בדיקת מציאות - מה שכדאי לדעת\")\r\n dictionary[`sec-3`] = true;\r\n break;\r\n case \"sec-4\":\r\n if (dictionary[`sec-4`]) return;\r\n GA_VPush(window.location.origin + window.location.pathname + (window.location.pathname[window.location.pathname.length - 1] == \"/\" ? \"\" : \"/\") + \"reality-check/what-you-should-buy\", \"בדיקת מציאות - מה שכדאי לקנות\")\r\n dictionary[`sec-4`] = true;\r\n break;\r\n case \"sec-5\":\r\n if (dictionary[`sec-5`]) return;\r\n GA_VPush(window.location.origin + window.location.pathname + (window.location.pathname[window.location.pathname.length - 1] == \"/\" ? \"\" : \"/\") + \"reality-check/what-you-should-do\", \"בדיקת מציאות - מה שכדאי לעשות\")\r\n dictionary[`sec-5`] = true;\r\n break;\r\n default:\r\n return;\r\n }\r\n\r\n });\r\n }, options);\r\n const wantedNodes = document.querySelectorAll(\".watch\");\r\n wantedNodes.forEach((li) => {\r\n observer.observe(li);\r\n });\r\n }, [loaded]);\r\n\r\n\r\n //Attaching the EventListener\r\n useEffect(() => {\r\n window.addEventListener(\"mousewheel\", (event) => listenToScrollEvent(event));\r\n window.addEventListener(\"DOMMouseScroll\", (event) => listenToScrollEvent(event));\r\n window.addEventListener(\"swu\", (event) => listenToScrollEvent(event));\r\n window.addEventListener(\"swd\", (event) => listenToScrollEvent(event));\r\n }, []);\r\n\r\n\r\n const listenToScrollEvent = (event) => {\r\n if (isBusy) return;\r\n isBusy = true;\r\n\r\n if (wheelDragDirection(event) == \"down\") {\r\n // scroll++;\r\n if (scroll <= 5) {\r\n document.querySelector(\".down\").click()\r\n }\r\n } else {\r\n // scroll--;\r\n if (scroll <= 0) {\r\n document.querySelector(\".up\").click()\r\n }\r\n\r\n }\r\n\r\n scroll = scroll < 0 ? 0 : scroll;\r\n scroll = scroll >= 5 ? 4 : scroll;\r\n\r\n // setScroll(scroll => scroll = scroll);\r\n window.setTimeout(() => {\r\n isBusy = false\r\n }, 250)\r\n }\r\n useEffect(() => {\r\n document.body.style.overflowX = \"hidden\"\r\n }, [])\r\n\r\n // useEffect(() => {\r\n // console.log(\"loaded\", loaded);\r\n // }, [loaded]);\r\n\r\n return (\r\n
\r\n
\r\n {loading && }\r\n {(loaded && <>\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport \"./LandscapeAlert.scss\";\r\n\r\nconst LandscapeAlert = () => (\r\n
\r\n
\r\n
\r\n
\r\n לחווית הגלישה הטובה ביותר יש להשאיר את המכשיר במצב Portrait\r\n
\r\n
\r\n
\r\n
\r\n);\r\n\r\nexport { LandscapeAlert };\r\n","import React, { useEffect } from 'react'\r\nimport './Article.scss'\r\nimport Footer from '../Footer/Footer'\r\nimport { VignetteArticle } from 'react-vignette';\r\nimport { Waves } from \"../../Services/Flakes\";\r\nimport { Waves as waves2 } from \"../../Services/Flakes2\";\r\nimport { Waves as waves3 } from \"../../Services/Flakes3\";\r\nimport { mobile } from \"../../Services/Agent\";\r\nimport { GA_VPush } from '../../Services/GoogleAnalytics';\r\nimport \"../../Services/domChangedEvent\";\r\n\r\nexport default function Article(props) {\r\n // The prop id\r\n let id = (props.match.url).slice(1, props.match.url.length)\r\n let height = document.body.clientHeight;\r\n\r\n useEffect(() => {\r\n document.body.style.overflowY = \"scroll\"\r\n document.body.style.overflowX = \"hidden\"\r\n //document.body.style.overflow = \"scroll\"\r\n\r\n // Analitics - Virtual page push\r\n // setTimeout(()=> {\r\n // GA_VPush(window.location.origin + window.location.pathname + (window.location.pathname[window.location.pathname.length - 1] == \"/\" ? \"\" : \"/\") + \"reality-check/article/\" + id , document.querySelector(\"#artiheader h1\").textContent)\r\n // // console.log(`/reality-check/article/${id}` , document.querySelector(\"#artiheader h1\").textContent)\r\n // } , 1500)\r\n }, [])\r\n\r\n // Canvas inisialize\r\n useEffect(() => {\r\n try {\r\n let mywaves = new Waves({\r\n divId: \"waves\",\r\n numberOfNodes: 200,\r\n dotNumber: mobile() ? 30 : 250, // 30 is default\r\n dotGlobalSpeed: 0.8, // 0.4 is default\r\n endsOnThisSide: \"right\", // right is default\r\n });\r\n\r\n mywaves.animate();\r\n } catch (err) {\r\n console.error(err.message);\r\n }\r\n try {\r\n let mywaves = new waves2({\r\n divId: \"waves2\",\r\n numberOfNodes: 200,\r\n dotNumber: mobile() ? 30 : 250, // 30 is default\r\n dotGlobalSpeed: 0.8, // 0.4 is default\r\n endsOnThisSide: \"right\", // right is default\r\n });\r\n\r\n mywaves.animate();\r\n } catch (err) {\r\n console.error(err.message);\r\n }\r\n try {\r\n let mywaves = new waves3({\r\n divId: \"waves3\",\r\n numberOfNodes: 200,\r\n dotNumber: mobile() ? 30 : 250, // 30 is default\r\n dotGlobalSpeed: 0.8, // 0.4 is default\r\n endsOnThisSide: \"right\", // right is default\r\n });\r\n\r\n mywaves.animate();\r\n } catch (err) {\r\n // console.error(err.message);\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n window.onDomChange(() => {\r\n if (window.document.querySelector(\"#artiheader h1\")) {\r\n if (window.document.querySelector(\"#artiheader h1\").className.indexOf(\"initpv\") > -1) return;\r\n window.document.querySelector(\"#artiheader h1\").classList.add(\"initpv\");\r\n GA_VPush(window.location.origin + window.location.pathname + (window.location.pathname[window.location.pathname.length - 1] == \"/\" ? \"\" : \"/\") + \"reality-check/article/\" + id, window.document.querySelector(\"#artiheader h1\").textContent)\r\n }\r\n });\r\n }, [])\r\n return (\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\n}\r\n","import React, { useState, useEffect, useContext } from \"react\";\r\nimport { AppContext } from \"../stores/application.store\";\r\nimport Header from './Header/Header';\r\nimport Footer from './Footer/Footer';\r\nimport { HashRouter as Router, Route, Switch } from 'react-router-dom'\r\nimport Home from './Home/Home';\r\nimport { LandscapeAlert } from \"./Landscape/LandscapeAlert\";\r\nimport Article from './Article/Article';\r\n\r\nfunction App() {\r\n let { scroll, setScroll } = useContext(AppContext);\r\n\r\n return (\r\n <>\r\n \r\n {/* */}\r\n \r\n
\r\n {\r\n return ;\r\n }} />\r\n {\r\n if (/^[0-9]{7}$/.test(match.params.id))\r\n return
;\r\n else\r\n return ;\r\n }} />\r\n {/*