{"version":3,"sources":["assets/logo_tweezerman.svg","assets/photos/detect-background.png","assets/success.svg","assets/info_ico.svg","assets/link.svg","assets/info_gray.svg","assets/heart.svg","assets/photos/1.jpg","assets/photos/2.jpg","assets/photos/3.jpg","assets/photos/4.jpg","assets/photos/5.jpg","assets/photos/6.jpg","assets/photos/7.jpg","assets/photos/8.jpg","assets/close.svg","assets/video-play.svg","assets/video-pause.svg","assets/video-replay.svg","assets/video-volume-on.svg","assets/video-volume-off.svg","components/Header.js","components/main/Banner.js","components/Main.js","components/detection/WebcamComponent.js","components/detection/ImageMaskComponent.js","components/detection/FooterComponent.js","components/detection/SurveyComponent.js","components/detection/MediaComponent.js","components/Detection.js","components/customHooks/useWindowWidth.js","components/list/Results.js","components/list/SingleProduct.js","components/list/Recommended.js","components/List.js","components/product/Instructions.js","components/product/Summary.js","components/product/Tips.js","components/Product.js","components/NotFound.js","router/Routes.js","App.js","serviceWorker.js","index.js","assets/star-fill.svg","assets/star-outline.svg","assets/photos sync /^/.*/.jpg$"],"names":["module","exports","logo","require","Header","className","src","alt","Banner","banner","to","Main","useEffect","ReactGA","initialize","key","WebcamComponent","windowWidth","windowHeight","webcamRef","audio","screenshotFormat","videoConstraints","ref","background","ImageMaskComponent","surveyVisible","images","hasResponse","processStep","defaultOptions","loop","autoplay","animationData","rendererSettings","preserveAspectRatio","options","isStopped","isPaused","FooterComponent","isTakingPhoto","error","capture","retake","openSurvey","validResponse","type","onClick","success","SurveyComponent","surveyQuestion","answerQuestion","retakeSurvey","cx","hidden","questions","question","answers","map","answer","index","text","id","MediaComponent","Detection","props","useState","setValidResponse","setProcessStep","setIsTakingPhoto","setSurveyVisible","setAnswers","eyeShape","setShape","eyeSize","setSize","redirect","setRedirect","setSurveyQuestion","Array","fill","setImg","setError","setHasResponse","useRef","sessionStorage","setItem","history","push","width","document","getElementsByClassName","style","window","setTimeout","config","headers","fd","FormData","promises","forEach","img","canvas","getElementById","Promise","resolve","toBlob","blob","append","all","then","axios","post","TWEEZERMAN_URL","response","data","shape","size","catch","advanceProcessStep","allowCamera","cameraPermission","getItem","useCallback","counter","newImageArray","intervalID","setInterval","imageSrc","current","getScreenshot","number","context","getContext","baseImage","Image","onload","innerWidth","innerHeight","baseHeight","height","baseWidth","calculatedHeight","Math","min","calculatedWidth","sx","sy","test","navigator","userAgent","sWidth","sHeight","dWidth","dHeight","drawImage","ratioY","ratioX","drawCanvas","clearInterval","floor","back","length","modifyAnswerString","image","useWindowWidth","setWidth","handleResize","addEventListener","removeEventListener","info","link","Results","expertise","set","newsletter","setNewsletter","mail","setMail","mailError","setMailError","mailSent","setMailSent","linkCopied","setLinkCopied","recommendations","setRecommendations","translateSize","points","translateShape","translateExperience","populateRecommendations","a","async","recommendationsArray","requests","request","item","tag","get","YOTPO_URL","credentials","client_id","product_id","bottomline","average_score","total_review","filledStars","outlineStars","reviewString","repeat","recommendation","name","reviews","prize","price","reviewsCount","unshift","splice","products","filter","sets","recommended","indexOf","also_recommended","advanced_recommended","allSettled","max","value","dots","placeholder","onChange","e","target","spellCheck","visible","htmlFor","checked","selected","emailReciver","sendLatestUpdates","templateModel","answer1","answer2","answer3","result","experience","send","location","href","tempElement","createElement","setAttribute","position","left","body","appendChild","select","execCommand","removeChild","heart","starFill","starOutline","SingleProduct","product","isFirst","label","productError","setProductError","score","setScore","setReviews","border","star","description","parseInt","angle","tooltip","wide","rel","TWEEZERMAN_ADD_URL","Recommended","List","activeTab","setActiveTab","setExpertise","setSet","query","URLSearchParams","useLocation","search","passedPoints","sizeParam","shapeParam","answersParam","split","scrollTo","assignedSet","active","Instructions","steps","Summary","averageScore","totalReview","Tips","tip","backArrow","playButton","pauseButton","replayButton","volumeOnButton","volumeOffButton","baseUrl","videos","Product","match","params","showOverlay","setShowOverlay","progress","setProgress","progressWidth","setProgressWidth","borderRadius","setBorderRadius","videoMuted","setVideoMuted","video","progressBar","handleSwitchVolume","oldMuted","overlay","autoPlay","muted","onEnded","onPause","onPlay","onTimeUpdate","event","duration","currentTime","currentProgress","round","getBoundingClientRect","play","pause","element","currentTarget","progressPercentage","clientX","role","tabIndex","NotFound","Routes","exact","path","component","App","Boolean","hostname","ReactDOM","render","serviceWorker","ready","registration","unregister","webpackContext","req","webpackContextResolve","__webpack_require__","o","Error","code","keys","Object"],"mappings":"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","file":"static/js/main.42cfa301.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/logo_tweezerman.c462693c.svg\";","module.exports = __webpack_public_path__ + \"static/media/detect-background.ba4ea665.png\";","module.exports = __webpack_public_path__ + \"static/media/success.7fd0363c.svg\";","module.exports = __webpack_public_path__ + \"static/media/info_ico.6a6ec079.svg\";","module.exports = __webpack_public_path__ + \"static/media/link.565474ed.svg\";","module.exports = __webpack_public_path__ + \"static/media/info_gray.7378e182.svg\";","module.exports = __webpack_public_path__ + \"static/media/heart.41befad4.svg\";","module.exports = \"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/4QBMRXhpZgAATU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAARKADAAQAAAABAAAAXgAAAAD/7QA4UGhvdG9zaG9wIDMuMAA4QklNBAQAAAAAAAA4QklNBCUAAAAAABDUHYzZjwCyBOmACZjs+EJ+/8AAEQgAXgBEAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/bAEMAAQEBAQEBAgEBAgMCAgIDBAMDAwMEBQQEBAQEBQYFBQUFBQUGBgYGBgYGBgcHBwcHBwgICAgICQkJCQkJCQkJCf/bAEMBAQEBAgICBAICBAkGBQYJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCf/dAAQABf/aAAwDAQACEQMRAD8A/v4oor5A/bx/aK8c/sofsseKfj38PvDLeLL/AMPxRytZq5Xy4HkVJbkqAWkW3RjK0SlWcKVDLnITdlcEj6/r558f/tZfs1/DD7RH418baTbT2mfOt47hbi4j28ndBB5kowPVa/l4/aO/aj03xz8ENL+Jv7dP7RekfD/R/F1kl9pOn2l9Jc3N5ayjMctromkM0syN/CZgT2Zgc18FfC7/AIKH/Bbwxo178Lv2IPgj4/8AjN9vVo5dV8SyWfg/RpiRgkJ+8uChHPzTRsfx4wVaT1St6mvJFbs/td/Zi/bL+AP7Xtr4im+COrtez+FdRbTdTtbiJra5gl2h43aGTDiKZCHicgBhnuCB9S1/BN/wT9/aV/bl/Zk/bFvvjx45+B+l+APCHia90vw34gbTtRuLjQI7B3Oy4a5ka9cXloTuEhl2OjSqR9wD+9dWV1DoQVIyCOQRWlOd0TONh1FFFaEBRRRQB//Q/v4qteWdpqNnLp+oRJPBOjRyRyAMjowwyspyCCDgg9RVmigD+J34l/sD+Av2Kf2+raT4v+C7LUfAni+e+1SWfR42a/Gno8heO0lKmVfsMe2eW1j+d4Vk8o7gob9up/2Z/wBkX9ln4+fCD9ov4K+G9KHgnxiknhO9ukP22383Vtl1o+oK8zSDfJcRfZvOByRcKM4xX2n+3h+zTqX7SXwTa18D3B07xv4XuY9b8MagmA8Go2hEkagn+GXbsYH5TkbuBX4uaV8d/h2f2Jtd8TfEO2u/DHwZ8ZNcaX4m014JBf8Aw48YrMV822thulOmzagizQJGGNvMUZB5buI+L2fLJ6G6d0f0P/Gz4OeEPjr8I9b+Dni+BW0zWrRrUgKP3Rx+7kQdMxsFZfpjpXxn/wAE1fjD4n8Q/DrXv2bPilK0njT4PXw0C/d8lrizG4WFzk8sHjjaPd/EYi+fmrl/+CUP/BSHwb/wUP8A2TIvjIsU1hqXhrbpniCa5VYoHvbeBWnuIiDhYnOX2OFeP7rDgE0P+Ce/2j40/HH4yftr28LW2ieM9QtNC0RSCv2i00MSxPdEd/Mkk2ezRv61vdOSaIWzR+rlFFFbGYUUUUAf/9H+/iiiigDlPHfjjwp8M/BmqfELx1fRaZo2jW0l5eXU7BY4oYlLMzE+w/E8Dmv8z79qH9ob41/8FQ/2ptQ0268M/wDCJ2Gs6sbfVdG8L3Uoe6XT1e8tb2LzJGiuL97QouRFiR3JRQFfd/UT/wAFYvjRrPx9/b9+Gf8AwSi1yC40vwp42hsNQvNWhuNuWnlu9yiDaVlkSOzdYvMLRpLKshRmUAfjP/wVf/Yt8K/8Euv27fC3xE+FVm2gfDD4lwW3/CP3yzSf8SHxbpNuIGjFy7l4/t9qBIjs2TMGIxgmuTESdm10NqcV1P3W+KPjT4J2H7Bnwk/Yw/4JktHY23xkv00azkgH+k2tjEwm1u6v8fN9q6pdl/mO+Qg8Cv3h+Enww8KfBX4ZaF8J/A8PkaT4fsorK2U/eKxKAXc93c5d26sxJPJr/Nd+Cn7W/wAcvgX/AMFNNA/aA1fxAfsFrrEGo6hYRhLZLqDUxFb3PkW8ISLzZTFOJVjjy5k3kZANf6b9rcwXttHeWrb4pVDow7qwyD+Iq6E+b3iZxa0J6KKK6DMKKKKAP//S/v4ooooA/lC/4LaOvwc/4Kr/ALKP7RZJhgN5b2lxIB2tdWto2z6nydRkOO+K/pE/aU/Zg+AH7YPwlv8A4GftL+FbHxh4V1Io81hfISokjOUlidSskUqH7skbK65OCMmv57P+DpHwteW37PPwr+NOmIRceFvFM8fmD+Dz7Ca5iJPp59nFX9Kvwz8WW3j34b+H/HVlnyda020v48nJ23MKyjnvw1Yw+Jot7H8kv/Bdr/gmR+zp+yJ+xZ4L+OH7I/hSPw7qngLxHY2k98s1xc3stneB4bZZrq4klmdIr82zLuY7cnHU1/U9+zF8Y9M/aF/Z08D/ABy0hw8HizQ7HVMjs9xAruvHGVclT7ivDP8Agpj8BJf2m/2Bfiz8FLFQ1/q/hy8fTzjJW/tE+1WbL6EXEUZFfld/wbdfta+DfiL/AME9NL+F3ifWLSx1bwhq11p9pZ3U8cczWV1sv7UIjsGYIt15fA4K44GBQo2kDd0f0b0UUVsQFFFFAH//0/7+K4P4m/EXw58J/A2o+PvFTsLPTojIUjG6SVv4Io1/id2wqj1POBk13lfzMf8ABxL+0R8XfhlrHwE+Dvw41H+yNM8aeIJxrF0PvCGOaytkCE8Bh9rc59BjoTUzlZXHFXZ+WH/BYz4Y/tPftz/shfET9rzxV4g1HSfC3gXVdPktdOt55hYy7rpLGS1t4QwiYWiXDS3F0UJaYLEh+SRj/Uv/AMEgvibN8Xv+CZHwS8b3Th538K2VnMQefNsVNo+fctCSfesn/gpH8ANBvv8Agk78XvgJ4Fs1gtLHwHqMWnwRLjD2Nq08J92MkQZj1JySSTmvjL/g2h+Ig8df8EvtK0kSB18O+ItZsI1HISGW4+2RjPptucj2IrKCaepcn2P6AHRJEMcgDKwwQeQQexr/ADdvhR/wSw8M/G3/AIKg/Gn9hBvEj+CfFHhi91u68H35t0uLeRFuYtQht54yVk8l7G8i2tGwZDDnDYwP9Iuv45/+CoOm3/7GP/Bev4PftnaVG0WjeMbXTxq0iDC/6FJJpd/uI7mxuo5DntDk8BqdZbCgdT+wD/wUF/bX/wCCef7Vmnf8Ezv+Co7Nqek3yRxeG/FMsrXDRJI/l25F4wDXVi7fJumxPbN8sjMgIT+u+v5i/wDg6O0BdO/ZK+HvxW8MW4PinT/GdrpFnLHEJZjBqttcxSxrwTzIsRHbcBxzX9Af7MfirV/HX7Nnw98beICWv9Y8NaTfXJbqZrizikkJ99zGqg3ewS2ue40UUVoQf//U/v4r8Yv+C3f7NV78af2XYPif4d0j+2dV+HVxJqf2dI/MnNlIgW7aHALeZGqrKMcjYSOQK/Z2kIBGD0NTOCkrMadj+fL4O/8ABaX9jL4w/sF6zcfGrxhp+jeLrHw/caZqek38ggm1CdrcwJJaBh+9W6JBwmTEzMHAC5Pnv/BsB8EfiL8Gf2Gtabxs8T2utazDcWZgLmImGwt7eYoXVd2GjCMwGC6sO1frtqv/AATb/YJ1vxncfEDVfhJ4Zm1a7cyzTGwjCvITku0QAjLE8k7Mk9a+xtE0PRPDOkW3h/w3ZwafYWcaxW9tbRrFDFGowqJGgCqoHQAACojB31KbRqV+Qv8AwWO/YX+JP7aP7P8Apdx8CIbK48eeDL86hplvfyeTDdwzRtBdWpl6IZomKgsQvJ5Bwa/XqirlFNWZKdj+SjxJ+xh/wWn/AOCiepfDD4S/tfad4Z+HHwz8DeW+o6lHd/bNb1KSLanm/Zo2khW52IAjlxGr5lxz5df1feHPD+keEvD1h4V0CEW9hplvFaW0S9EhhQJGo9lVQK2aKIxsDYUUUVQj/9k=\"","module.exports = \"data:image/jpeg;base64,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\"","module.exports = \"data:image/jpeg;base64,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\"","module.exports = \"data:image/jpeg;base64,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\"","module.exports = \"data:image/jpeg;base64,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\"","module.exports = \"data:image/jpeg;base64,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\"","module.exports = \"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/4QBMRXhpZgAATU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAARKADAAQAAAABAAAAXgAAAAD/7QA4UGhvdG9zaG9wIDMuMAA4QklNBAQAAAAAAAA4QklNBCUAAAAAABDUHYzZjwCyBOmACZjs+EJ+/8AAEQgAXgBEAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/bAEMAAQEBAQEBAgEBAgMCAgIDBAMDAwMEBQQEBAQEBQYFBQUFBQUGBgYGBgYGBgcHBwcHBwgICAgICQkJCQkJCQkJCf/bAEMBAQEBAgICBAICBAkGBQYJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCf/dAAQABf/aAAwDAQACEQMRAD8A/v4ooooAKKKKAPOvEHxR8MeGPiFoHw01bzk1DxKl09k4TMJNoqvIjPnhipyoxzg/j6LXxP8Atv8Agu48UeCdD1LTLr7DfadqQeG4+cbA8bbiGj+ZTlV5HpXzJZfE/wDa78AaEt/pFy/iC0iGdzRrqMZAHeSIiYf8CYH1FfMY7iF4StKFam3Ho0r206n32U8GRzHCwq4WtGNTVOMna7u9V8raH650V+Nfhn/gp943g8a2ngzx54TtFa4fY0tvNNCygcnEUiyEnAOBv61+x1vPHdW6XMJykihlPsRkV6GV57hsZf6vK7W+jW54/EXCGPypx+uwspXs0007b7PzJqKKK9c+ZP/Q/v4ooooAKKKKAPDv2kPBsvjj4L67pNkhe9ht2urQqSHSeD50KkYIPBH0JFfnZY+EPFNt8AtP+PvgrXDcbo4VuYZQYZ4pmmW3kCzREZCyHPzLnbzk9/2DZVdSjjIPBBr8bdT03xN8JfF3xV+CUl07eFrqIax9mK7ms7G9yrahbD+IWdwoNzF3jZWU5XB+K4no8lWNfWzTjo7Wa1T81vc/UuA8SquHnhNLxlGVmr3i2oyS0unrFq1jC+NWg/ttWfg7U9G1jw3da7EYWZZI3tbzmP5wVlYiaNuPlbjB68Zr9Gv2QfiH4p+KP7PXh3xh4v0j+xbqWFoktzcLcs0MLGOKR2UYV5EUMyZbaxI3MOTS8F/tIeF5/htqurfFQx6PqvhjFrrVoW3qZWj3xyW5/wCWsN0n7yBh1UkHBVsZv7Euk+I9J+ANgviG1kskubq6uLKCbiRLOWUtDvB5BK/MB6EVpllKMcbGdOo5KUXe9rqzVr6LzWvW5ln2InUyqdOvQjTcKis1ezvF3tdu+ii7q6s0+qPrWiiivsT8yP/R/v4ooooAKKKKACvzy/bE8WeCvhN8ZPhh8RdflQSatdX/AIfu7UjP2vT7i0klmVh3WNo0c54zgd67T9rD9tHw5+zbqOjeA9F0qbxP4x8RsVsdLtmC7Uzjzp35KR5OBwScHoBmvxs/aG1r9oD42/tU+FdP+ILWVn4u8L29xd29mkEv2PSrPVIhCoCOd09zcbTlnb5AAAFB5+D4w4ioUqMqMNZprpdJp3V/u2P17w14IxWIxEcTW92lKMt3ZyVnF2Wrsm97W7O59Pfs7az4J8b/ALQ3hrw18TJ7e8aK2bT9P025ZTcLFZQpd6bLc7crOnlTSIgbkSL843YUfudXwz8KP2Bfgt8PPH2jfF7VoDqninQ1nFlckCGKA3QUSlYkOGJ2j5nLEHkYNfc1epwnl1fD4drERSk3fu9urPB8Rs8wmOxkZYKTlCMbaqyvdv3V2231fUKKKK+oPz8//9L+/iiisvWdb0Xw7p76t4gu4bG1i+/NcSLHGuemWYgD86TaSuyoxbdkaleKftA/HDwt+z58Mr74ieJyZDCBFaWqf6y6uX4ihjHUlm6+gya1U+OnwaeCW5/4SjTAkKl2LXMa/KoySMnnj0zX5M6nqOsft5/Hm0nsnceHbJnXToQcrbWIO2a+mxwLi6wUgU/MseX4yhPzee56qNJQwz5qktI21+f9dT7fhPhN4mu6uOThRp6ybuvkvX8r9bJ9l+wR8EfGPxS+I+s/tm/HgC61rVZmXT0blII1OFWIHokY+VccE88iqnhvTbD4q/8ABV3xJ4iSFHh8N2Nrp0jADDNawtMwb12yTRYz0Ir9dNK0rRfBPhiLSdKiW2sNMg2oi4AWONfw7Dmvyo/4JpWc3jPxz8Q/jbefM2talcyI/qs1y6pg+nlW8Z+hFfO18oVCWFwO8pS55Pu0rs+0wnEk8VDMc2tyxjTVOCW0VJ2SXyR+vFFFFfo5+JBRRRQB/9P+/OeeK2ge5nO1I1LMT2AGSa+LPCvww039o3xtJ8bPiaHvtGspZLbw9prsfs6RxsUkvGQEAySsCFbqEA5wcV9deKdGfxH4Z1DQI5TA17bSwCQdUMilQ34E5r4p8JWX7WOkfD+3+CWnaTZaNNYRLZx+IFlEyfZ148yODAxLt6FmODzsPSvn83adWCqwcoWbsle8tLJ/jvpf0PsOHItUKk6FSMKl0rtpWi73avrfZPl1t01F8S+BvCPxh+LcXw88B2MdhovhuRZtcv7TMbyzYylkjrjtzKew4r7B8H/D7wb4Bt5LbwjYJZrMcuVLMzfVnLMfpms34W/DXQfhR4Ot/COhbpBHmSeeQ5luJ3OZJZG7sx5r0StcrymFJuvUiud66LbyXovvd2cue5/UrJYWjN+yjort+93k/NvbsrLoeI/tI+I7nwt8DfE2qWBxctZSQQAdTLMPLQD8Wr5W/YltNE+BVzqf7NPiphZ+IbdoZ7US/KL22W3jQNC3Ryu1iwHPJ/utj6A/aH/4n2qeC/hyo3DWNbhlmUd4LIGeTPt8orjv24fCWl33wUu/iHbr9n8QeFZIL/Sr2P5ZoplmT5Qw5KuDgr0zg9q8vMIy+tTxkf8Al0lp30bl87NWPoMlnB4KnldTT6xJ6ro7qMH5q6kmuzutUfZFFZuj3Nze6Ra3l6nlzSwo8if3WZQSPwNaVfXJ3Vz86lGzswooopiP/9T+/iiiigAooooA+M/ip8QvCfgL9p/w5qPxKvV0vSotEuzZXM2RC13JKquhbGAwiHH1A7jNTUNX1f8Aal8bWWhaHayQfD3Rp47u8vZlaNtUuIjujgijYBhCrAM7MAW6AAYJ+wNZ8PaB4jgW18QWNvfxI29UuIklUMO4DggH3rQtbW2srdLSyjWGKMYVEAVVHoAOBXhSympKcoyl7kndq2r20bvtp220Pq4cQUoU6c6dN+1jHlTvotX7yVr82vV2T1sT0UUV7p8oFFFFAH//2Q==\"","module.exports = \"data:image/jpeg;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/close.40f064f2.svg\";","module.exports = __webpack_public_path__ + \"static/media/video-play.a69445e6.svg\";","module.exports = __webpack_public_path__ + \"static/media/video-pause.b1ab0df7.svg\";","module.exports = __webpack_public_path__ + \"static/media/video-replay.34886da3.svg\";","module.exports = __webpack_public_path__ + \"static/media/video-volume-on.d2af3413.svg\";","module.exports = __webpack_public_path__ + \"static/media/video-volume-off.68b01f7c.svg\";","import React from 'react';\r\n\r\nconst logo = require('../assets/logo_tweezerman.svg');\r\n// const chat = require('../assets/chat.svg');\r\n\r\nconst Header = () => {\r\n return (\r\n
\r\n
\r\n
\r\n {/*

Tweezerman

*/}\r\n \"\"\r\n \r\n

VIRTUAL PRODUCT EXPERIENCE

\r\n
\r\n {/*
\r\n \"\"\r\n

CHAT

\r\n
*/}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Header;\r\n","import React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport * as banner from '../../content/banner';\r\n\r\nconst Banner = () => {\r\n return (\r\n
\r\n
Lashes
\r\n

{banner.text}

\r\n ENTER →\r\n
\r\n );\r\n};\r\n\r\nexport default Banner;\r\n","import React, { Fragment, useEffect } from 'react';\r\n\r\nimport ReactGA from 'react-ga';\r\n\r\nimport Banner from './main/Banner';\r\n// import Gallery from './main/Gallery';\r\n// import Testimonials from './main/Testimonials';\r\n// import Companies from './main/Companies';\r\n\r\nconst Main = () => {\r\n useEffect(() => {\r\n ReactGA.initialize('UA-6101013-1');\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\nexport default Main;\r\n","import React, { Fragment } from 'react';\r\n\r\nimport PropTypes from 'prop-types';\r\n\r\nimport Webcam from 'react-webcam';\r\n\r\nconst WebcamComponent = ({\r\n windowWidth,\r\n windowHeight,\r\n webcamRef,\r\n}) => {\r\n const videoConstraints = {\r\n audio: false,\r\n };\r\n\r\n if (windowWidth > 768 || windowHeight > 768) {\r\n // videoConstraints.height = 758;\r\n // videoConstraints.width = 542;\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\nWebcamComponent.propTypes = {\r\n windowWidth: PropTypes.number.isRequired,\r\n windowHeight: PropTypes.number.isRequired,\r\n webcamRef: PropTypes.object.isRequired,\r\n};\r\n\r\nexport default WebcamComponent;\r\n","import React, { Fragment } from 'react';\r\n\r\nimport Lottie from 'react-lottie';\r\n\r\nimport PropTypes from 'prop-types';\r\n\r\nimport * as animationData from '../../content/loader.json';\r\n\r\nconst background = require('../../assets/photos/detect-background.png');\r\n\r\nconst ImageMaskComponent = ({\r\n surveyVisible,\r\n images,\r\n hasResponse,\r\n processStep,\r\n}) => {\r\n const defaultOptions = {\r\n loop: true,\r\n autoplay: true,\r\n animationData: animationData.default,\r\n rendererSettings: {\r\n preserveAspectRatio: 'xMidYMid slice',\r\n },\r\n };\r\n\r\n return (\r\n \r\n {\r\n processStep <= 4\r\n && (\r\n \r\n \"\"\r\n {/*
\r\n
\r\n
\r\n
*/}\r\n \r\n )\r\n }\r\n {\r\n surveyVisible && processStep > 4\r\n && (\r\n \r\n
\r\n
\r\n \"\"\r\n {\r\n (!hasResponse || processStep < 5)\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\nImageMaskComponent.propTypes = {\r\n surveyVisible: PropTypes.bool.isRequired,\r\n hasResponse: PropTypes.bool.isRequired,\r\n images: PropTypes.array.isRequired,\r\n processStep: PropTypes.number.isRequired,\r\n};\r\n\r\nexport default ImageMaskComponent;\r\n","import React, { Fragment } from 'react';\r\n\r\nimport PropTypes from 'prop-types';\r\n\r\nconst FooterComponent = ({\r\n isTakingPhoto,\r\n images,\r\n error,\r\n capture,\r\n retake,\r\n openSurvey,\r\n validResponse,\r\n}) => {\r\n return (\r\n \r\n
\r\n {\r\n ((!isTakingPhoto && images[4] === null && !error) || !validResponse)\r\n && (\r\n <>\r\n

Line up your eyes in the box

\r\n

Look directly into the camera for the best results

\r\n \r\n TAKE PHOTO\r\n \r\n \r\n )\r\n }\r\n {\r\n isTakingPhoto && !error\r\n && (\r\n

\r\n Your photo is being taken...\r\n {/* Taking your photo in 5 seconds... */}\r\n

\r\n )\r\n }\r\n {\r\n !isTakingPhoto && images[4] !== null && !error\r\n && (\r\n \r\n \r\n CONTINUE\r\n \r\n \r\n Retake\r\n \r\n \r\n )\r\n }\r\n {\r\n error && validResponse\r\n && (\r\n
\r\n

There has been a problem with your photo

\r\n \r\n Retake\r\n \r\n
\r\n )\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nFooterComponent.propTypes = {\r\n isTakingPhoto: PropTypes.bool.isRequired,\r\n images: PropTypes.array.isRequired,\r\n error: PropTypes.bool.isRequired,\r\n validResponse: PropTypes.bool.isRequired,\r\n capture: PropTypes.func.isRequired,\r\n retake: PropTypes.func.isRequired,\r\n openSurvey: PropTypes.func.isRequired,\r\n};\r\n\r\nexport default FooterComponent;\r\n","import React from 'react';\r\n\r\nimport PropTypes from 'prop-types';\r\n\r\nimport cx from 'classnames';\r\n\r\nimport { questions } from '../../content/survey';\r\n\r\nconst success = require('../../assets/success.svg');\r\n\r\nconst SurveyComponent = ({\r\n surveyQuestion,\r\n surveyVisible,\r\n answerQuestion,\r\n retakeSurvey,\r\n error,\r\n retake,\r\n hasResponse,\r\n}) => {\r\n return (\r\n
\r\n {\r\n surveyQuestion < 3\r\n && (\r\n
\r\n

{questions[surveyQuestion].question}

\r\n {\r\n questions[surveyQuestion].answers.map((answer, index) => (\r\n answerQuestion(index)}\r\n >\r\n {answer.text}\r\n \r\n ))\r\n }\r\n
\r\n )\r\n }\r\n {\r\n surveyVisible && surveyQuestion === 3 && !error && hasResponse\r\n && (\r\n
\r\n \"\"\r\n

Success! Continue with your analyzation process.

\r\n answerQuestion(0)}\r\n >\r\n CONTINUE\r\n \r\n retakeSurvey()}\r\n >\r\n Retake Quiz\r\n \r\n
\r\n )\r\n }\r\n {\r\n surveyVisible && surveyQuestion === 3 && error && hasResponse\r\n && (\r\n
\r\n

Oops. Something went wrong. Please, take your photo once again.

\r\n \r\n RETAKE\r\n \r\n
\r\n )\r\n }\r\n {\r\n surveyVisible && surveyQuestion === 3 && !hasResponse\r\n && (\r\n
\r\n

Please, wait a moment. We are still analyzing your photo.

\r\n
\r\n )\r\n }\r\n
\r\n );\r\n};\r\n\r\nSurveyComponent.propTypes = {\r\n surveyQuestion: PropTypes.number.isRequired,\r\n surveyVisible: PropTypes.bool.isRequired,\r\n answerQuestion: PropTypes.func.isRequired,\r\n retakeSurvey: PropTypes.func.isRequired,\r\n retake: PropTypes.func.isRequired,\r\n error: PropTypes.bool.isRequired,\r\n hasResponse: PropTypes.bool.isRequired,\r\n};\r\n\r\nexport default SurveyComponent;\r\n","import React, { Fragment } from 'react';\r\n\r\nimport PropTypes from 'prop-types';\r\n\r\nimport WebcamComponent from './WebcamComponent';\r\nimport ImageMaskComponent from './ImageMaskComponent';\r\nimport FooterComponent from './FooterComponent';\r\nimport SurveyComponent from './SurveyComponent';\r\n\r\nconst MediaComponent = ({\r\n windowWidth,\r\n windowHeight,\r\n images,\r\n webcamRef,\r\n surveyVisible,\r\n processStep,\r\n hasResponse,\r\n isTakingPhoto,\r\n error,\r\n capture,\r\n retake,\r\n openSurvey,\r\n surveyQuestion,\r\n answerQuestion,\r\n retakeSurvey,\r\n validResponse,\r\n}) => {\r\n return (\r\n \r\n
\r\n {\r\n processStep < 2\r\n && (\r\n \r\n )\r\n }\r\n {\r\n images[4] !== null\r\n && (\r\n \r\n )\r\n }\r\n {\r\n processStep < 2\r\n && (\r\n \r\n )\r\n }\r\n {\r\n !surveyVisible\r\n && (\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n {/*
\r\n

Left eye

\r\n \"left\r\n
\r\n
\r\n

Right eye

\r\n \"right\r\n
*/}\r\n
\r\n \r\n )\r\n }\r\n {\r\n processStep >= 2\r\n && (\r\n \r\n )\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nMediaComponent.propTypes = {\r\n windowWidth: PropTypes.number.isRequired,\r\n windowHeight: PropTypes.number.isRequired,\r\n processStep: PropTypes.number.isRequired,\r\n images: PropTypes.array.isRequired,\r\n webcamRef: PropTypes.object.isRequired,\r\n surveyVisible: PropTypes.bool.isRequired,\r\n hasResponse: PropTypes.bool.isRequired,\r\n isTakingPhoto: PropTypes.bool.isRequired,\r\n error: PropTypes.bool.isRequired,\r\n validResponse: PropTypes.bool.isRequired,\r\n capture: PropTypes.func.isRequired,\r\n retake: PropTypes.func.isRequired,\r\n openSurvey: PropTypes.func.isRequired,\r\n surveyQuestion: PropTypes.number.isRequired,\r\n answerQuestion: PropTypes.func.isRequired,\r\n retakeSurvey: PropTypes.func.isRequired,\r\n};\r\n\r\nexport default MediaComponent;\r\n","import React, {\r\n useState,\r\n useRef,\r\n useEffect,\r\n useCallback,\r\n Fragment,\r\n} from 'react';\r\n\r\nimport axios from 'axios';\r\n\r\nimport ReactGA from 'react-ga';\r\n\r\nimport PropTypes from 'prop-types';\r\n\r\nimport MediaComponent from './detection/MediaComponent';\r\n\r\nimport { TWEEZERMAN_URL } from './api/urls';\r\n\r\nconst Detection = (props) => {\r\n const photosToTake = 5;\r\n const processSteps = 6;\r\n const [validResponse, setValidResponse] = useState(false);\r\n const [processStep, setProcessStep] = useState(0);\r\n const [isTakingPhoto, setIsTakingPhoto] = useState(false);\r\n const [surveyVisible, setSurveyVisible] = useState(false);\r\n const [answers, setAnswers] = useState('');\r\n const [eyeShape, setShape] = useState(0);\r\n const [eyeSize, setSize] = useState(0);\r\n const [redirect, setRedirect] = useState(false);\r\n const [surveyQuestion, setSurveyQuestion] = useState(0);\r\n const [images, setImg] = useState(Array(photosToTake).fill(null));\r\n const [error, setError] = useState(false);\r\n const [hasResponse, setHasResponse] = useState(false);\r\n // const [intervalNumber, setIntervalNumber] = useState(0);\r\n\r\n const webcamRef = useRef(null);\r\n\r\n /* eslint-disable react-hooks/exhaustive-deps */\r\n\r\n useEffect(() => {\r\n ReactGA.initialize('UA-6101013-1');\r\n sessionStorage.setItem('cameraAllowed', 'false');\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (redirect && hasResponse) {\r\n props.history.push(`/products?shape=${eyeShape}&size=${eyeSize}&answers=${answers}`);\r\n }\r\n }, [redirect, hasResponse]);\r\n\r\n useEffect(() => {\r\n if (processStep !== 0) {\r\n const width = (processStep / processSteps) * 100;\r\n const progressBar = document.getElementsByClassName('detection-progress-bar')[0];\r\n progressBar.style.width = `${width}%`;\r\n }\r\n }, [processStep]);\r\n\r\n // useEffect(() => {\r\n // let seconds = 5;\r\n // const decrementSeconds = () => {\r\n // seconds -= 1;\r\n // if (seconds >= 1) {\r\n // document.getElementById('seconds-counter').innerHTML = seconds;\r\n // }\r\n // };\r\n // if (isTakingPhoto) {\r\n // setIntervalNumber(setInterval(decrementSeconds, 1000));\r\n // } else {\r\n // clearInterval(intervalNumber);\r\n // }\r\n // }, [isTakingPhoto]);\r\n\r\n const drawCanvas = (number, imageSrc) => {\r\n const canvas = document.getElementById(`canvas${number}`);\r\n const context = canvas.getContext('2d');\r\n const baseImage = new Image();\r\n baseImage.src = imageSrc;\r\n baseImage.onload = () => {\r\n const windowWidth = window.innerWidth;\r\n const windowHeight = window.innerHeight;\r\n\r\n const baseHeight = baseImage.height;\r\n const baseWidth = baseImage.width;\r\n\r\n const calculatedHeight = Math.min(baseHeight, windowHeight);\r\n const calculatedWidth = baseWidth;\r\n\r\n if ((windowWidth < 768 && windowWidth < windowHeight) || windowWidth > 768) {\r\n let sx = ((calculatedWidth / 2) - (calculatedHeight * 0.16));\r\n let sy = 0;\r\n if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|BB|PlayBook|IEMobile|Windows Phone|Kindle|Silk|Opera Mini/i.test(navigator.userAgent)) {\r\n sy = 200 - (0.16 * windowHeight);\r\n sx = ((calculatedWidth / 2) - 95);\r\n const sWidth = (calculatedHeight * 0.40);\r\n const sHeight = (calculatedHeight * 0.16);\r\n const dWidth = (windowHeight * 0.40);\r\n const dHeight = (windowHeight * 0.16);\r\n context.drawImage(baseImage, sx, sy, sWidth, sHeight, 0, 0, dWidth, dHeight);\r\n } else {\r\n const ratioY = (windowHeight - 200) / 758;\r\n const ratioX = (windowWidth - 90) / 542;\r\n if (ratioY < 1) {\r\n sy = 100;\r\n } else {\r\n sy = (200 / ratioY) - 30;\r\n }\r\n sx = ((calculatedWidth / 2) - 80);\r\n const sWidth = (calculatedHeight * 0.40) * (ratioX / 2);\r\n const sHeight = (calculatedHeight * 0.16);\r\n const dWidth = (windowHeight * 0.40) * (ratioX / 2);\r\n const dHeight = (windowHeight * 0.16);\r\n context.drawImage(baseImage, sx, sy, sWidth, sHeight, 0, 0, dWidth, dHeight);\r\n }\r\n } else {\r\n const sx = ((calculatedWidth / 2) - (calculatedWidth * 0.16));\r\n const sy = ((calculatedHeight / 2) - (calculatedWidth * 0.06));\r\n const sWidth = (calculatedWidth * 0.32);\r\n const sHeight = (calculatedWidth * 0.12);\r\n const dWidth = (windowWidth * 0.32);\r\n const dHeight = (windowWidth * 0.12);\r\n context.drawImage(baseImage, sx, sy, sWidth, sHeight, 0, 0, dWidth, dHeight);\r\n }\r\n };\r\n };\r\n\r\n useEffect(() => {\r\n if (images[4] !== null) {\r\n window.setTimeout(() => {\r\n setHasResponse(false);\r\n const config = {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n 'x-functions-key': 'aJl9C2yxhBmXVEphke2g55iEpjM8HzLqAE0oACHoDa3q5WoULmarBg==',\r\n },\r\n };\r\n const fd = new FormData();\r\n const promises = [];\r\n images.forEach((img, index) => {\r\n const canvas = document.getElementById(`canvas${index + 1}`);\r\n promises.push(new Promise((resolve) => {\r\n canvas.toBlob((blob) => {\r\n fd.append(`file-${index}`, blob, `image${index}.png`);\r\n resolve();\r\n });\r\n }));\r\n });\r\n Promise.all(promises).then(() => {\r\n axios.post(`${TWEEZERMAN_URL}/StartProcessing`, fd, config)\r\n .then((response) => {\r\n const { shape, size } = response.data;\r\n setShape(shape);\r\n setSize(size);\r\n setHasResponse(true);\r\n })\r\n .catch(() => {\r\n setError(true);\r\n setHasResponse(true);\r\n });\r\n });\r\n });\r\n }\r\n }, [images[4]]);\r\n\r\n const advanceProcessStep = () => {\r\n setProcessStep(processStep + 1);\r\n };\r\n\r\n useEffect(() => {\r\n if (surveyVisible && surveyQuestion === 3 && !error && hasResponse) {\r\n advanceProcessStep();\r\n }\r\n }, [surveyVisible, surveyQuestion, error, hasResponse]);\r\n\r\n const modifyAnswerString = (index) => {\r\n if (answers.length < 3) {\r\n setAnswers(`${answers}${index}`);\r\n }\r\n };\r\n\r\n const denyCamera = () => {\r\n window.history.back();\r\n };\r\n\r\n const allowCamera = () => {\r\n advanceProcessStep();\r\n sessionStorage.setItem('cameraAllowed', 'true');\r\n // navigator.getMedia = (navigator.getUserMedia\r\n // || navigator.webkitGetUserMedia\r\n // || navigator.mozGetUserMedia\r\n // || navigator.msGetUserMedia);\r\n\r\n // navigator.getMedia(\r\n // { video: true },\r\n // () => {\r\n // console.log(true)\r\n // // setPermission(true);\r\n // // advanceProcessStep();\r\n // }, () => {\r\n // console.log(false)\r\n // // setPermission(false);\r\n // },\r\n // );\r\n };\r\n\r\n useEffect(() => {\r\n if (processStep === 0) {\r\n const cameraPermission = sessionStorage.getItem('cameraAllowed');\r\n if (cameraPermission !== null && cameraPermission === 'true') {\r\n allowCamera();\r\n }\r\n }\r\n }, [processStep]);\r\n\r\n const capture = useCallback(() => {\r\n setError(false);\r\n setIsTakingPhoto(true);\r\n setSurveyQuestion(0);\r\n setAnswers('');\r\n setValidResponse(true);\r\n let counter = 0;\r\n const newImageArray = [...images];\r\n const intervalID = setInterval(() => {\r\n counter += 1;\r\n const imageSrc = webcamRef.current.getScreenshot();\r\n newImageArray[counter - 1] = imageSrc;\r\n setImg(newImageArray);\r\n drawCanvas(counter, imageSrc);\r\n if (counter >= photosToTake) {\r\n setIsTakingPhoto(false);\r\n window.clearInterval(intervalID);\r\n }\r\n }, 150);\r\n },\r\n [webcamRef]);\r\n\r\n const retake = () => {\r\n setImg(Array(photosToTake).fill(null));\r\n setProcessStep(0);\r\n sessionStorage.setItem('cameraAllowed', 'false');\r\n setSurveyVisible(false);\r\n setError(false);\r\n setValidResponse(false);\r\n };\r\n\r\n const openSurvey = () => {\r\n advanceProcessStep();\r\n setSurveyVisible(true);\r\n };\r\n\r\n const answerQuestion = (index) => {\r\n advanceProcessStep();\r\n modifyAnswerString(index);\r\n if (surveyQuestion < 3) {\r\n setSurveyQuestion(surveyQuestion + 1);\r\n } else {\r\n setRedirect(true);\r\n }\r\n };\r\n\r\n const retakeSurvey = () => {\r\n setProcessStep(processStep - 4);\r\n setAnswers('');\r\n setSurveyQuestion(0);\r\n };\r\n\r\n return (\r\n
\r\n {\r\n processStep !== 0\r\n && (\r\n \r\n )\r\n }\r\n {\r\n processStep === 0\r\n && (\r\n
\r\n
\r\n

Tweezerman wants access to your camera

\r\n \r\n \r\n
\r\n
\r\n )\r\n }\r\n {\r\n processStep !== 0\r\n && (\r\n \r\n \r\n {\r\n images.map((image, index) => (\r\n window.innerWidth) || (window.innerWidth > 768) ? window.innerHeight * 0.40 : window.innerWidth * 0.40}\r\n height={(window.innerHeight > window.innerWidth) || (window.innerWidth > 768) ? window.innerHeight * 0.16 : window.innerWidth * 0.16}\r\n />\r\n ))\r\n }\r\n \r\n )\r\n }\r\n
\r\n );\r\n};\r\n\r\nDetection.propTypes = {\r\n history: PropTypes.object.isRequired,\r\n};\r\n\r\nexport default Detection;\r\n","import { useState, useEffect } from 'react';\r\n\r\nconst useWindowWidth = () => {\r\n const [width, setWidth] = useState(window.innerWidth);\r\n\r\n useEffect(() => {\r\n const handleResize = () => setWidth(window.innerWidth);\r\n window.addEventListener('resize', handleResize);\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n };\r\n });\r\n\r\n return width;\r\n};\r\n\r\nexport default useWindowWidth;\r\n","import React, { Fragment, useState, useEffect, useCallback } from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nimport axios from \"axios\";\r\n\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport Slider from \"rc-slider\";\r\n\r\nimport cx from \"classnames\";\r\n\r\nimport { products } from \"../../content/products\";\r\nimport { sets } from \"../../content/sets\";\r\nimport { questions } from \"../../content/survey\";\r\nimport credentials from \"../api/credentials\";\r\n\r\nimport { TWEEZERMAN_URL, YOTPO_URL } from \"../api/urls\";\r\n\r\nconst info = require(\"../../assets/info_ico.svg\");\r\nconst link = require(\"../../assets/link.svg\");\r\n\r\nconst Results = ({\r\n shape,\r\n // setShape,\r\n size,\r\n // setSize,\r\n answers,\r\n expertise,\r\n set,\r\n}) => {\r\n const [newsletter, setNewsletter] = useState(false);\r\n const [mail, setMail] = useState(\"\");\r\n const [mailError, setMailError] = useState(false);\r\n const [mailSent, setMailSent] = useState(false);\r\n const [linkCopied, setLinkCopied] = useState(false);\r\n const [recommendations, setRecommendations] = useState([]);\r\n\r\n const copyLink = () => {\r\n const location = window.location.href;\r\n const tempElement = document.createElement(\"textarea\");\r\n tempElement.value = location;\r\n tempElement.setAttribute(\"readonly\", \"\");\r\n tempElement.style.position = \"absolute\";\r\n tempElement.style.left = \"-9999px\";\r\n document.body.appendChild(tempElement);\r\n tempElement.select();\r\n document.execCommand(\"copy\");\r\n document.body.removeChild(tempElement);\r\n setLinkCopied(true);\r\n setTimeout(() => setLinkCopied(false), 2000);\r\n };\r\n\r\n const translateSize = (points) => {\r\n switch (points) {\r\n case 0:\r\n return \"Small\";\r\n case 1:\r\n return \"Mid range\";\r\n default:\r\n return \"Large\";\r\n }\r\n };\r\n\r\n const translateShape = (points) => {\r\n switch (points) {\r\n case 0:\r\n return \"Almond\";\r\n case 1:\r\n return \"Almond\";\r\n case 2:\r\n return \"Round\";\r\n default:\r\n return \"Round\";\r\n }\r\n };\r\n\r\n const translateExperience = (points) => {\r\n switch (points) {\r\n case points >= 0 && points <= 2:\r\n return \"Beginner\";\r\n case points >= 3 && points <= 5:\r\n return \"Beginner - Average user\";\r\n case points >= 6 && points <= 10:\r\n return \"Average user\";\r\n case points >= 11 && points <= 14:\r\n return \"Average user - Expert\";\r\n default:\r\n return \"Expert\";\r\n }\r\n };\r\n\r\n const populateRecommendations = useCallback(async () => {\r\n const recommendationsArray = [];\r\n const requests = [];\r\n\r\n const request = async (item, tag) => {\r\n try {\r\n const response = await axios.get(\r\n `${YOTPO_URL}/${credentials.client_id}/products/${item.product_id}/reviews.json`\r\n );\r\n /* eslint-disable-next-line */\r\n const {\r\n average_score,\r\n total_review,\r\n } = response.data.response.bottomline;\r\n const filledStars = Math.floor(average_score);\r\n const outlineStars = 5 - filledStars;\r\n const reviewString = `${\"★\".repeat(filledStars)}${\"☆\".repeat(\r\n outlineStars\r\n )}`;\r\n const recommendation = {\r\n name: item.name,\r\n tag,\r\n img: `https://email-images-tweezerman.s3-us-west-1.amazonaws.com/${item.image}.jpg`,\r\n reviews: reviewString,\r\n link: `https://www.tweezerman.com/${item.id}.html`,\r\n prize: `${item.price}$`,\r\n /* eslint-disable-next-line */\r\n reviewsCount: `(${total_review} reviews)`,\r\n };\r\n\r\n switch (tag) {\r\n case \"RECOMMENDED\":\r\n recommendationsArray.unshift(recommendation);\r\n break;\r\n case \"ALSO RECOMMENDED FOR YOU\":\r\n recommendationsArray.splice(1, 0, recommendation);\r\n break;\r\n case \"ADVANCED RECOMMENDATION\":\r\n recommendationsArray.push(recommendation);\r\n break;\r\n default:\r\n break;\r\n }\r\n } catch (e) {\r\n setMailError(true);\r\n }\r\n };\r\n\r\n products\r\n .filter(\r\n (item) => sets[set - 1].recommended.indexOf(item.product_id) !== -1\r\n )\r\n .forEach((item) => {\r\n requests.push(request(item, \"RECOMMENDED\"));\r\n });\r\n products\r\n .filter(\r\n (item) => sets[set - 1].also_recommended.indexOf(item.product_id) !== -1\r\n )\r\n .forEach((item) => {\r\n requests.push(request(item, \"ALSO RECOMMENDED FOR YOU\"));\r\n });\r\n products\r\n .filter(\r\n (item) =>\r\n sets[set - 1].advanced_recommended.indexOf(item.product_id) !== -1\r\n )\r\n .forEach((item) => {\r\n requests.push(request(item, \"ADVANCED RECOMMENDATION\"));\r\n });\r\n\r\n await Promise.allSettled(requests);\r\n\r\n setRecommendations(recommendationsArray);\r\n }, [set]);\r\n\r\n const send = () => {\r\n const config = {\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"x-functions-key\":\r\n \"jXBrZIXHirjObWx5DLS8SIdBDHkTUx72I0N7ZPGSAySjVlysyEY43A==\",\r\n },\r\n };\r\n \r\n const data = {\r\n emailReciver: mail,\r\n sendLatestUpdates: newsletter,\r\n templateModel: {\r\n answer1: answers?.length > 0 && answers[0] && questions[0].answers[answers[0]].text,\r\n answer2: answers?.length > 1 && answers[1] && questions[1].answers[answers[1]].text,\r\n answer3: answers?.length > 2 && answers[2] && questions[2].answers[answers[2]].text,\r\n result: {\r\n experience: translateExperience(expertise),\r\n shape: translateShape(shape),\r\n size: translateSize(size),\r\n recommendations,\r\n },\r\n },\r\n };\r\n \r\n axios.post(`${TWEEZERMAN_URL}/SendEmail`, data, config);\r\n setMailSent(true);\r\n };\r\n\r\n const validate = () => {\r\n if (/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(mail) === false || mail === \"\") {\r\n setMailError(true);\r\n } else {\r\n setMailError(false);\r\n send();\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (set !== 0) {\r\n populateRecommendations();\r\n }\r\n }, [set, populateRecommendations]);\r\n\r\n return (\r\n
\r\n {linkCopied && (\r\n

Your link has been copied to clipboard

\r\n )}\r\n \r\n \r\n

Start over

\r\n \r\n
\r\n

Your results

\r\n
\r\n

Shape

\r\n
\r\n \"\"\r\n
\r\n Eye shape relates to the inner and outer corners of the eye when\r\n your eye is wide open.\r\n
\r\n
\r\n
\r\n \r\n
\r\n setShape(e)}\r\n dots\r\n />\r\n
\r\n
\r\n

Size

\r\n
\r\n \"\"\r\n
\r\n Eye size relates to the portion of the iris that is visible.\r\n
\r\n
\r\n
\r\n \r\n
\r\n setSize(e)}\r\n dots\r\n />\r\n
\r\n
\r\n
\r\n {mailSent ? (\r\n

your email has been sent

\r\n ) : (\r\n

email yourself your results

\r\n )}\r\n {!mailSent && (\r\n \r\n setMail(e.target.value)}\r\n spellCheck={false}\r\n />\r\n \r\n Email seems to be invalid\r\n \r\n \r\n setNewsletter(!newsletter)}\r\n checked={newsletter}\r\n />\r\n
\r\n \r\n
\r\n \r\n Yes, please send me the latest Tweezerman updates.\r\n \r\n \r\n \r\n
\r\n )}\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nResults.propTypes = {\r\n shape: PropTypes.any.isRequired,\r\n // setShape: PropTypes.any.isRequired,\r\n size: PropTypes.any.isRequired,\r\n // setSize: PropTypes.any.isRequired,\r\n answers: PropTypes.any.isRequired,\r\n expertise: PropTypes.any.isRequired,\r\n set: PropTypes.any.isRequired,\r\n};\r\n\r\nexport default Results;\r\n","import React, { Fragment, useEffect, useState } from 'react';\r\n\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport axios from 'axios';\r\n\r\nimport PropTypes from 'prop-types';\r\n\r\nimport Slider from 'rc-slider';\r\n\r\nimport cx from 'classnames';\r\n\r\nimport credentials from '../api/credentials';\r\n\r\nimport { YOTPO_URL, TWEEZERMAN_ADD_URL } from '../api/urls';\r\n\r\nconst info = require('../../assets/info_gray.svg');\r\nconst heart = require('../../assets/heart.svg');\r\nconst starFill = require('../../assets/star-fill.svg');\r\nconst starOutline = require('../../assets/star-outline.svg');\r\n\r\nconst SingleProduct = ({ product, isFirst, label }) => {\r\n const [productError, setProductError] = useState(null);\r\n const [score, setScore] = useState(null);\r\n const [reviews, setReviews] = useState(null);\r\n\r\n const getProductData = (id) => axios.get(`${YOTPO_URL}/${credentials.client_id}/products/${id}/reviews.json`)\r\n .then((response) => {\r\n /* eslint-disable-next-line */\r\n const {average_score, total_review} = response.data.response.bottomline;\r\n setScore(average_score);\r\n setReviews(total_review);\r\n setProductError(false);\r\n })\r\n .catch(() => {\r\n setProductError(true);\r\n });\r\n\r\n useEffect(() => {\r\n getProductData(product.product_id);\r\n }, [product]);\r\n\r\n return (\r\n
\r\n
\r\n {\r\n isFirst\r\n && (\r\n \"\"\r\n )\r\n }\r\n { label }\r\n
\r\n
\r\n \"\"\r\n
\r\n
{product.name}
\r\n

{`$ ${product.price}`}

\r\n
\r\n {\r\n productError === false\r\n && (\r\n \r\n {\r\n [...Array(Math.floor(score))].map((star, index) => (\r\n \r\n ))\r\n }\r\n {\r\n [...Array(5 - Math.floor(score))].map((star, index) => (\r\n \r\n ))\r\n }\r\n

({reviews} reviews)

\r\n
\r\n )\r\n }\r\n {\r\n productError === true\r\n && (\r\n

No reviews available

\r\n )\r\n }\r\n {\r\n productError === null\r\n && (\r\n

Loading reviews...

\r\n )\r\n }\r\n
\r\n
\r\n
\r\n

{product.description}

\r\n
\r\n
\r\n

Angle

\r\n
\r\n \"\"\r\n
\r\n Angle measures curvature of your lash line\r\n
\r\n
\r\n {/* \"\" */}\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n

Opening

\r\n
\r\n \"\"\r\n
\r\n {product.tooltip}\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n Add to cart\r\n \r\n Watch it work\r\n
\r\n );\r\n};\r\n\r\nSingleProduct.propTypes = {\r\n product: PropTypes.object.isRequired,\r\n isFirst: PropTypes.bool.isRequired,\r\n label: PropTypes.string.isRequired,\r\n};\r\n\r\nexport default SingleProduct;\r\n","import React, { Fragment } from 'react';\r\n\r\nimport PropTypes from 'prop-types';\r\n\r\nimport SingleProduct from './SingleProduct';\r\n\r\nimport { products } from '../../content/products';\r\nimport { sets } from '../../content/sets';\r\n\r\nconst Recommended = ({ set }) => {\r\n return (\r\n
\r\n
\r\n {\r\n set !== 0\r\n && (\r\n \r\n {\r\n products.filter((item) => sets[set - 1].recommended.indexOf(item.product_id) !== -1).map((product, index) => (\r\n \r\n ))\r\n }\r\n {\r\n products.filter((item) => sets[set - 1].also_recommended.indexOf(item.product_id) !== -1).map((product, index) => (\r\n \r\n ))\r\n }\r\n {\r\n products.filter((item) => sets[set - 1].advanced_recommended.indexOf(item.product_id) !== -1).map((product, index) => (\r\n \r\n ))\r\n }\r\n \r\n )\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nRecommended.propTypes = {\r\n set: PropTypes.number.isRequired,\r\n};\r\n\r\nexport default Recommended;\r\n","import React, { useState, useEffect } from 'react';\r\n\r\nimport { useLocation } from 'react-router-dom';\r\n\r\nimport ReactGA from 'react-ga';\r\n\r\nimport PropTypes from 'prop-types';\r\n\r\nimport cx from 'classnames';\r\n\r\nimport useWindowWidth from './customHooks/useWindowWidth';\r\nimport { questions } from '../content/survey.json';\r\n\r\nimport Results from './list/Results';\r\nimport Recommended from './list/Recommended';\r\n\r\nconst List = (props) => {\r\n const [activeTab, setActiveTab] = useState(0);\r\n const [size, setSize] = useState(0);\r\n const [shape, setShape] = useState(0);\r\n const [expertise, setExpertise] = useState(0);\r\n const [answers, setAnswers] = useState('');\r\n const [set, setSet] = useState(0);\r\n\r\n const windowWidth = useWindowWidth();\r\n\r\n const useQuery = () => {\r\n return new URLSearchParams(useLocation().search);\r\n };\r\n\r\n const query = useQuery();\r\n\r\n const decodePoints = (passedPoints) => {\r\n if (passedPoints <= 2) {\r\n setExpertise(0);\r\n } else if (passedPoints <= 5) {\r\n setExpertise(1);\r\n } else if (passedPoints <= 10) {\r\n setExpertise(2);\r\n } else if (passedPoints <= 14) {\r\n setExpertise(3);\r\n } else {\r\n setExpertise(4);\r\n }\r\n };\r\n\r\n /* eslint-disable react-hooks/exhaustive-deps */\r\n\r\n useEffect(() => {\r\n ReactGA.initialize('UA-6101013-1');\r\n }, []);\r\n\r\n useEffect(() => {\r\n const sizeParam = parseInt(query.get('size'), 10) ?? 0;\r\n const shapeParam = parseInt(query.get('shape'), 10) ?? 0;\r\n const answersParam = query.get('answers') ?? '000';\r\n\r\n let points = 0;\r\n\r\n /* eslint-disable no-unused-expressions */\r\n // (sizeParam !== null && shapeParam !== null && answersParam !== null) || props.history.push('/products?shape=0&size=0&answers=000');\r\n // (query.get('size') !== '' && query.get('shape') !== '' && query.get('answers') !== '') || props.history.push('/products?shape=0&size=0&answers=000');\r\n // (typeof sizeParam !== 'undefined' && typeof shapeParam !== 'undefined' && typeof answersParam !== 'undefined') || props.history.push('/products?shape=0&size=0&answers=000');\r\n\r\n answersParam.split('').forEach((answer, index) => {\r\n points += questions[index].answers[answer].points;\r\n });\r\n\r\n if (sizeParam !== null && sizeParam < 3) setSize(sizeParam);\r\n if (shapeParam !== null && shapeParam < 4) setShape(shapeParam);\r\n if (points !== null && points < 16) decodePoints(points);\r\n setAnswers(answersParam);\r\n }, []);\r\n\r\n useEffect(() => {\r\n window.scrollTo(0, 0);\r\n }, []);\r\n\r\n useEffect(() => {\r\n let assignedSet = 1;\r\n if ((shape / 2) >= 1) { assignedSet += 5; }\r\n assignedSet += expertise;\r\n setSet(assignedSet);\r\n }, [shape, expertise]);\r\n\r\n return (\r\n
\r\n
\r\n \r\n {\r\n (activeTab === 0 || windowWidth > 640)\r\n && (\r\n \r\n )\r\n }\r\n {\r\n (activeTab === 1 || windowWidth > 640)\r\n && (\r\n \r\n )\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nList.propTypes = {\r\n history: PropTypes.object.isRequired,\r\n};\r\n\r\nexport default List;\r\n","import React from 'react';\r\n\r\nimport PropTypes from 'prop-types';\r\n\r\nconst Instructions = ({ product }) => {\r\n return (\r\n
\r\n

Instructions

\r\n {\r\n product.steps.map((item, index) => (\r\n

\r\n {index + 1}\r\n {item}\r\n

\r\n ))\r\n }\r\n
\r\n );\r\n};\r\n\r\nInstructions.propTypes = {\r\n product: PropTypes.object.isRequired,\r\n};\r\n\r\nexport default Instructions;\r\n","import React, { Fragment, useEffect, useState } from 'react';\r\n\r\nimport axios from 'axios';\r\n\r\nimport PropTypes from 'prop-types';\r\n\r\nimport credentials from '../api/credentials';\r\n\r\nimport { YOTPO_URL, TWEEZERMAN_ADD_URL } from '../api/urls';\r\n\r\nconst starFill = require('../../assets/star-fill.svg');\r\nconst starOutline = require('../../assets/star-outline.svg');\r\n\r\nconst Summary = ({ product }) => {\r\n const [productError, setProductError] = useState(null);\r\n const [score, setScore] = useState(null);\r\n const [reviews, setReviews] = useState(null);\r\n\r\n const getProductData = (id) => axios.get(`${YOTPO_URL}/${credentials.client_id}/products/${id}/reviews.json`)\r\n .then((response) => {\r\n const { average_score: averageScore, total_review: totalReview } = response.data.response.bottomline;\r\n setScore(averageScore);\r\n setReviews(totalReview);\r\n setProductError(false);\r\n })\r\n .catch(() => {\r\n setProductError(true);\r\n });\r\n\r\n useEffect(() => {\r\n getProductData(product.product_id);\r\n }, [product]);\r\n return (\r\n
\r\n
\r\n \"\"\r\n {/*
*/}\r\n
\r\n
{product.name}
\r\n

{`$ ${product.price}`}

\r\n
\r\n {\r\n productError === false\r\n && (\r\n \r\n {\r\n [...Array(Math.floor(score))].map((star, index) => (\r\n \r\n ))\r\n }\r\n {\r\n [...Array(5 - Math.floor(score))].map((star, index) => (\r\n \r\n ))\r\n }\r\n

({reviews} reviews)

\r\n
\r\n )\r\n }\r\n {\r\n productError === true\r\n && (\r\n

No reviews available

\r\n )\r\n }\r\n {\r\n productError === null\r\n && (\r\n

Loading reviews...

\r\n )\r\n }\r\n
\r\n
\r\n
\r\n

{product.description}

\r\n \r\n Add to cart\r\n \r\n
\r\n );\r\n};\r\n\r\nSummary.propTypes = {\r\n product: PropTypes.object.isRequired,\r\n};\r\n\r\nexport default Summary;\r\n","import React from 'react';\r\n\r\nimport PropTypes from 'prop-types';\r\n\r\nconst Tips = ({ product }) => {\r\n return (\r\n
\r\n

Tips

\r\n
    \r\n
  • {product.tip}
  • \r\n
\r\n
\r\n );\r\n};\r\n\r\nTips.propTypes = {\r\n product: PropTypes.object.isRequired,\r\n};\r\n\r\nexport default Tips;\r\n","import React, { useEffect, useState, useRef } from 'react';\r\n\r\nimport ReactGA from 'react-ga';\r\n\r\nimport PropTypes from 'prop-types';\r\n\r\nimport cx from 'classnames';\r\n\r\nimport Instructions from './product/Instructions';\r\nimport Summary from './product/Summary';\r\nimport Tips from './product/Tips';\r\n\r\nimport { products } from '../content/products';\r\n\r\nconst backArrow = require('../assets/close.svg');\r\nconst playButton = require('../assets/video-play.svg');\r\nconst pauseButton = require('../assets/video-pause.svg');\r\nconst replayButton = require('../assets/video-replay.svg');\r\nconst volumeOnButton = require('../assets/video-volume-on.svg');\r\nconst volumeOffButton = require('../assets/video-volume-off.svg');\r\n\r\nconst baseUrl = 'https://dkrhxev2dwm7y.cloudfront.net';\r\nconst videos = {\r\n 'rose-gold-classic-curler': `${baseUrl}/videos/rose-gold-classic-curler.mp4`,\r\n 'promaster-lash-curler': `${baseUrl}/videos/promaster-lash-curler.mp4`,\r\n 'procurl-lash-curler': `${baseUrl}/videos/promaster-lash-curler.mp4`,\r\n 'onyx-great-grip-eyelash-curler': `${baseUrl}/videos/onyx-great-grip-eyelash-curler.mp4`,\r\n 'every-lash-curler': `${baseUrl}/videos/every-lash-curler.mp4`,\r\n 'curl-60-lash-curler': `${baseUrl}/videos/curl-60-lash-curler.mp4`,\r\n 'curl-38-lash-curler': `${baseUrl}/videos/curl-38-lash-curler.mp4`,\r\n 'classic-lash-curler': `${baseUrl}/videos/classic-lash-curler.mp4`,\r\n};\r\n\r\nconst Product = ({ match }) => {\r\n const { params: { id } } = match;\r\n const product = products.filter((item) => item.id === id)[0];\r\n const [showOverlay, setShowOverlay] = useState(false);\r\n const [progress, setProgress] = useState(0);\r\n const [progressWidth, setProgressWidth] = useState(0);\r\n const [borderRadius, setBorderRadius] = useState(0);\r\n const [videoMuted, setVideoMuted] = useState(true);\r\n const video = useRef(null);\r\n const progressBar = useRef(null);\r\n\r\n useEffect(() => {\r\n ReactGA.initialize('UA-6101013-1');\r\n }, []);\r\n\r\n useEffect(() => {\r\n window.scrollTo(0, 0);\r\n }, []);\r\n\r\n const navigateBack = () => {\r\n window.history.back();\r\n };\r\n\r\n const handleShowOverlay = () => {\r\n setShowOverlay(true);\r\n };\r\n\r\n const handleVideoEnd = () => {\r\n setBorderRadius(15);\r\n setShowOverlay(true);\r\n };\r\n\r\n const handleHideOverlay = () => {\r\n setShowOverlay(false);\r\n setBorderRadius(0);\r\n };\r\n\r\n const handleOnTimeUpdate = (event) => {\r\n const { duration = 1, currentTime = 0 } = event.target;\r\n const currentProgress = currentTime / duration;\r\n setProgress(currentProgress * 100);\r\n if (progressBar?.current) {\r\n setProgressWidth(Math.round(currentProgress * progressBar?.current?.getBoundingClientRect().width - 12));\r\n }\r\n if (currentTime === duration) {\r\n setBorderRadius(15);\r\n }\r\n };\r\n\r\n const handlePlay = () => {\r\n if (video?.current) {\r\n video.current.play();\r\n }\r\n };\r\n\r\n const handlePause = () => {\r\n if (video?.current) {\r\n video.current.pause();\r\n }\r\n };\r\n\r\n const handleReplay = () => {\r\n if (video?.current) {\r\n video.current.pause();\r\n video.current.currentTime = 0;\r\n video.current.play();\r\n }\r\n };\r\n\r\n const handleProgressChange = (event) => {\r\n const element = event.currentTarget.getBoundingClientRect();\r\n const offsetX = event.clientX - element.left;\r\n const progressPercentage = (offsetX / element.width);\r\n if (video?.current) {\r\n video.current.pause();\r\n video.current.currentTime = video.current.duration * progressPercentage;\r\n video.current.play();\r\n }\r\n };\r\n\r\n const handleSwitchVolume = () => {\r\n setVideoMuted((oldMuted) => !oldMuted);\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n

\r\n {product.name}\r\n {' '}\r\n Instructions\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
\r\n );\r\n};\r\n\r\nProduct.propTypes = {\r\n match: PropTypes.object.isRequired,\r\n};\r\n\r\nexport default Product;\r\n","import React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nconst NotFound = () => {\r\n return (\r\n
\r\n

OOPS!

\r\n

We can't find the page you are looking for.

\r\n Visit homepage\r\n
\r\n );\r\n};\r\n\r\nexport default NotFound;\r\n","import React from 'react';\r\nimport { BrowserRouter as Router, Switch, Route } from 'react-router-dom';\r\n\r\n// import ReactGA from 'react-ga';\r\n\r\nimport Main from '../components/Main';\r\nimport Detection from '../components/Detection';\r\nimport List from '../components/List';\r\nimport Product from '../components/Product';\r\nimport NotFound from '../components/NotFound';\r\n\r\n// ReactGA.initialize('UA-6101013-1');\r\n// ReactGA.pageview(window.location.pathname + window.location.search);\r\n\r\nconst Routes = () => {\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\nexport default Routes;\r\n","import React, { Fragment } from 'react';\r\n\r\nimport Header from './components/Header';\r\n\r\nimport Routes from './router/Routes';\r\n\r\nconst App = () => {\r\n return (\r\n \r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nexport default App;\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\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\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\n\r\nimport 'rc-slider/assets/index.css';\r\nimport './styles/index.scss';\r\n\r\nimport App from './App';\r\n\r\nimport * as serviceWorker from './serviceWorker';\r\n\r\nReactDOM.render(, document.getElementById('root'));\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n","module.exports = __webpack_public_path__ + \"static/media/star-fill.185e2de7.svg\";","module.exports = __webpack_public_path__ + \"static/media/star-outline.ebc97e9f.svg\";","var map = {\n\t\"./1.jpg\": 197,\n\t\"./2.jpg\": 198,\n\t\"./3.jpg\": 199,\n\t\"./4.jpg\": 200,\n\t\"./5.jpg\": 201,\n\t\"./6.jpg\": 202,\n\t\"./7.jpg\": 203,\n\t\"./8.jpg\": 204\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 96;"],"sourceRoot":""}