{"version":3,"sources":["assets lazy /^/.//.*$/ groupOptions: {} namespace object","assets/svg/varilux-g9/icons/fill.svg","types/experience.type.ts","constants/language-code.constants.ts","types/prescription-product-varilux.type.ts","store/slices/app.slice.ts","constants/theme.constants.ts","constants/translations.contants.ts","constants/variluxG9/need-explorer-choices.ts","store/slices/variluxG9.slice.ts","store/store.ts","constants/routes.constant.ts","utils/context/indexedDBContext.tsx","pages/varilux-g9/components/ProgressBar.tsx","utils/hooks/useIndexedDB.ts","utils/hooks/useBEM.ts","components/ui/Alert.tsx","components/ui/RouterLink.tsx","components/ui/Icon.tsx","components/ui/svg-icon/svg-icon-list.ts","components/ui/svg-icon/icons/stacked-group.ts","components/ui/svg-icon/SvgIcon.tsx","components/Modal.tsx","constants/settings.constants.ts","constants/endpoints.ts","utils/hooks/useTranslation.ts","pages/varilux-g9/components/LanguageSetting.tsx","pages/varilux-g9/components/VarNavbarHeader.tsx","components/ui/Button.tsx","constants/variluxG9/variluxSteps.ts","constants/prescription.constants.ts","types/prescription-add-segmentation-varilux.type.ts","utils/hooks/useVariluxDisableButton.ts","constants/variluxG9/varilux-products-matrix.ts","types/prescription-eye-condition-varilux.type.ts","interface/varilux-product-card.interface.ts","utils/hooks/useVariluxMatrix.ts","pages/varilux-g9/components/VarNavbarBottom.tsx","pages/varilux-g9/components/VarNavbar.tsx","pages/varilux-g9/components/ConclusionVarilux.tsx","constants/variluxG9/varilux-categories.ts","utils/varilux-products.ts","pages/varilux-g9/components/demonstrations-varilux/ProductCardVarilux.tsx","components/ui/Spinner.tsx","components/Loading.tsx","pages/varilux-g9/components/demonstrations-varilux/ProductCardVariluxModalContent.tsx","pages/varilux-g9/components/demonstrations-varilux/ProductCardVariluxModal.tsx","utils/Utils.ts","constants/variluxG9/varilux-demo-categories.ts","utils/varilux-g9-videos.ts","constants/variluxG9/prescription-options.ts","pages/varilux-g9/components/DemonstrationsVarilux.tsx","pages/varilux-g9/components/IntroVarilux.tsx","components/ui/Champ.tsx","components/ui/Dialogue.tsx","pages/varilux-g9/components/NeedExplorerVarilux.tsx","pages/varilux-g9/components/PrescriptionVarilux2.tsx","pages/varilux-g9/components/VariluxContainer.tsx","utils/hooks/useVariluxBackground.ts","components/ui/loadingAssets.tsx","pages/varilux-g9/components/DownloadVariluxAssets.tsx","pages/varilux-g9/Varilux.tsx","App.tsx","serviceWorkerRegistration.ts","reportWebVitals.ts","index.tsx","assets/png/logo-white.png","assets/images/demonstrations/icons/Union.png","assets/svg/varilux-g9/icons/refresh.svg","assets/png/variluxG9-bg-4.webp","assets/png/variluxG9-bg-2.webp","assets/png/variluxG9-bg-3.webp","assets/images/demonstrations/01.webp","assets/images/demonstrations/02.webp","assets/images/demonstrations/03.webp","assets/images/demonstrations/04.webp","assets/images/demonstrations/05.webp","assets/svg/varilux-g9/icons/control-1.svg","assets/svg/varilux-g9/icons/control-2.svg","assets/svg/varilux-g9/icons/control-3.svg","assets/svg/varilux-g9/icons/control-4.svg","assets/svg/varilux-g9/icons/control-5.svg","assets/svg/varilux-g9/icons/control-1-white.svg","assets/svg/varilux-g9/icons/control-2-white.svg","assets/svg/varilux-g9/icons/control-3-white.svg","assets/svg/varilux-g9/icons/control-4-white.svg","assets/svg/varilux-g9/icons/control-5-white.svg"],"names":["map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","id","all","slice","keys","Object","module","exports","ExperienceType","languageCode","anBA","country","translation","caIS","grDA","saLU","veZU","baBA","barBAR","guGU","jaJA","trTR","niNI","crCR","enUK","doDO","multipleLanguage","esBO","language","ecEC","svSV","gtGT","hnHN","paPA","pePE","PrescriptionProductTypeVarilux","initialState","g9CountryLanguages","g9Languages","dataStructureVersion","loading","show","experience","VARILUX","theme","main","dark","bubbleMain","bubbleSub","subLanguage","regions","region_language_change_region","region_filter","language_lang__back_","home_hom_whats_new","home_hommemat","home_home_disc_essilor","home_hom_lp_builder","home_hom_start","home_hom_start_from","home_hom_id","home_hm_qr_code","masterlicense_patientlist","globalInformation","storeName","phone","address","email","license","nickname","globalAlert","message","isModalOpen","appSlice","createSlice","name","reducers","state","action","payload","changeTheme","showGlobalAlert","setLanguage","setSubLanguage","setToken","token","saveRegions","setTranslationRegion","translationRegion","setTranslationCountry","translationCountry","setTranslationCountryLanguage","translationCountryLanguage","setTranslations","key","sorted","store","storeKey","hasOwnProperty","push","sort","firstSort","secondSort","toLowerCase","i","translations","setTranslation","setG9CountryLanguages","setG9Languages","saveGlobalInformation","selectedLanguage","updateDataStructureVersion","resetData","undefined","setIsModalOpen","getApp","app","variluxChoices","label","selected","gtmId","view","needExplorerChoices","prescriptionVarilux","productSelected","NONE","values","sphere","od","os","addition","sphereMean","ametropia","additionSegmentation","categoryPercentages","lensCategorySelected","showDownloadPopup","prescriptionVideoPlay","variluxgG9Slice","changeView","selectChoice","newChoices","choice","savePrescription","convertValuesToNumber","value","isPositive","number","length","add","selectProduct","setEyeCondition","setAddSegmentation","setCategoryPercentages","setLensCategorySelected","setShowDownloadPopup","setPrescriptionVideoPlay","getVariluxG9","variluxG9","configureStore","reducer","preloadedState","serialisedState","localStorage","getItem","JSON","parse","console","warn","loadFromLocalStorage","middleware","getDefaultMiddleware","immutableCheck","serializableCheck","routes","home","path","IndexedDBContext","React","IndexedDBProvider","iViewStep","db","children","database","get","table","getRequest","transaction","objectStore","resolved","reject","onsuccess","ev","target","result","onerror","err","update","data","request","put","insert","Provider","useIndexedDB","tables","tableIndexes","userStore","options","unique","connect","upgradeCallBack","res","rej","DBOpenRequest","window","indexedDB","open","addEventListener","createTables","forEach","t","objectStoreNames","contains","indx","indexNames","createIndex","createObjectStore","keyPath","getAll","condition","tx","openCursor","cursor","continue","oncomplete","indexes","finalData","remove","delete","queryByDateRange","indexField","dateRange","range","index","from","to","IDBKeyRange","bound","lowerBound","upperBound","results","error","useBEM","blockName","modifiers","modifier","Array","isArray","m","join","trim","elementName","Alert","buttons","onButtonSelect","portal","document","getElementById","B","E","ReactDOM","createPortal","className","b","onClick","RouterLink","route","click","history","useHistory","preventDefault","href","Icon","type","extension","background","customStyle","position","useState","image","setImage","folders","svg","png","gif","onClickHandler","mounting","useRef","useEffect","current","imgName","ext","img","default","catch","log","loadImage","style","backgroundImage","backgroundPosition","backgroundSize","src","alt","SvgIcons","gps","accountCircle","close","arrowRight","arrowLeft","minus","check","qrcode","stackedGroup","SvgIcon","color","width","height","circle","backgroundColor","borderColor","bordered","html","withViewBox","padding","mods","modfiers","focusable","viewBox","d","ReactHtmlParser","Modal","onClose","hideCloseButton","closeModalOnOutsideClick","rightHeaderDetail","radius","transparent","noPadding","closeButtonColor","isWithBanner","withBanner","useSelector","dispatch","useDispatch","actions","bannerElement","visible","display","onCloseHandler","classes","mofifierClass","borderRadius","settings","environment","dev","version","apiUrl","GA","demoAssetsUrl","newAssetsUrl","siteAssets","signalRUrl","azureApiUrl","azureApiCodes","uat","prod","apiURL","withVersion","apiUrlWithVersion","ENDPOINTS","activateLicense","account","lensThickness","eprom","region","emats","whatsnew","tutorial","products","productCombi","masterLicenseData","orders","order","frametraces","countryCode","shopId","frametrace","useTranslation","fallback","lang","getTranslations","params","onSuccess","onError","axios","headers","Authorization","getTranslations2","promise","resp","status","responseData","sortCountries","entries","a","aa","toLocaleLowerCase","bb","sorter","generateIconImage","countryName","replace","LanguageSetting","setSelectedLanguage","showModal","setShowModal","searchText","setSearchText","dataList","setDataList","location","setLocation","continent","setContinent","useContext","setItem","strings","stringify","handleLocation","loc","engCountryCode","enCountryLanguageCode","getLangfromDB","englishTranslation","handleSelectLanguage","contenent","countryLanguageCode","countryTranslationData","substring","toUpperCase","onChange","placeholder","continents","item","countries","includes","SearchIcon","charAt","VarNavbarHeader","supported","setSupported","installed","setInstalled","handler","removeEventListener","logo","reload","RefreshIcon","Button","text","disabled","icon","outlined","active","iconPosition","weight","outlineType","textSize","themed","soon","icontype","sunBack","finalClass","variluxSteps","PRESCRIPTION_RULES_VARILUX","increment","min","max","validation","required","requiredSign","cylinder","axis","suffix","PrescriptionAddSegmentationType","ProgressBar","multiplier","setMultiplier","useVariluxDisableButton","needExplorerHasSelectedValue","every","sphereMax","sphereMin","additionMax","additionMin","disableNext","currentView","disableButtonNav","disabledView","needExplorer","prescription","demonstrations","conclusion","varilux_matrix","none","low_myope","low_add","extended","stabilized","panoramic","instant","sharp","mid_add","high_add","high_myope","emmetropic","low_hyperope","high_hyperope","standard_progressive_lens","varilux_comfort","varilux_x_series","varilux_physio_30","PrescriptionEyeConditionType","VariluxPreviewType","useVariluxMatrix","getAmetropia","LOW_MYOPE","HIGH_MYOPE","EMMETROPIC","LOW_HYPEROPE","HIGH_HYPEROPE","getAddSegmentation","n","HIGH_ADD","MID_ADD","LOW_ADD","getCategoryPercentages","product","category","VarNavbarBottom","activeStep","v","step","VarNavbar","ConclusionVarilux","endExperience","setEndExperience","variluxCategories","EXTENDED","INSTANT","PANORAMIC","SHARP","STABILIZED","variluxProducts","Image1","title","isRecommended","isExclusive","previewItems","VIDEO","list","source","video","Image2","Image3","Image4","Image5","ProductCardVarilux","setShowDemo","setPreviewItem","setPreviewItemIndex","setActiveIndex","setActive","playVideo","setPlayVideo","onMouseEnter","onMouseLeave","autoPlay","loop","playsInline","muted","Spinner","fill","Loading","textOnly","ProductCardVariluxModalContent","isDownloading","handlControlClick","IMAGE","Icon_1_white","Icon_1","Icon_fill","marginTop","Icon_2_white","Icon_2","Icon_3_white","Icon_3","Icon_4_white","Icon_4","Icon_5_white","Icon_5","ProductCardVariluxModal","props","showDemo","Utils","isObject","object","cloneObject","obj","str","downloadAsset","progressCallback","XMLHttpRequest","responseType","evt","lengthComputable","percentComplete","loaded","total","toFixed","Number","onload","this","response","blobData","URL","createObjectURL","send","downloadAssetBase64","callback","reader","FileReader","readAsDataURL","onloadend","generateRandomNumbers","count","Math","random","getThemeVariables","getDateTimeDifference","start","end","getTime","timediff","Date","toISOString","isNullUndefined","lensDemoURL","deepEqual","object1","object2","keys1","keys2","val1","val2","areObjects","varluxDemoCategories","PANOROMIC","newAssetsURL","url","variluxG9Videos","directory","CATEGORY","videos","prescriptionOptions","videoIndex","DemonstrationsVarilux","setIsDownloading","iVariluxProducts","setIVariluxProducts","previewItem","previewItemIndex","activeIndex","loadedCount","nextButtonContainerRef","scrollIntoView","behavior","setPreviewAssets","filterVideoByCategoryPercentage","filteredItem","filterVideoByCategory","getVideoIndex","percentage","demoCategory","getDemoCategory","getPreviewAssets","getVideoIndexByCategory","leftAsset","rightAsset","leftTitle","find","asset","VARILUX_CATEGORY","DEMO_CATEGORY","flag","setTimeout","handlDownloadAsset","resutls","categoryItem","isAlreadyPreloaded","base64","itemData","prescriptionOption","initialSlide","infinite","centerMode","slidesToShow","slidesToScroll","variableWidth","responsive","breakpoint","ref","IntroVarilux","Champ","Dialogue","flexColumn","NeedExplorerVarilux","PrescriptionVarilux2","showSkip","setShowSkip","setAsset","videoRef","prescriptionVideo","mounted","downloadPrescriptionAsset","onPlay","option","VariluxContainer","viewPage","useVariluxBackground","intro","backgroundStyle","LoadingAssets","use","progress","setProgress","loadingText","newList","DownloadVariluxAssets","preloadComplete","setPreloadComplete","doneCount","setDoneCount","downloadAssets","prev","percent","floor","downloadPercentage","Varilux","installPWA","setInstallPWA","background1","background2","background3","useLayoutEffect","closeDownloadPopup","fetchG9Translation","fetch","json","translationData","sortedCountryLanguages","localeCompare","languages","prompt","App","setTheme","setGlobalAlert","subscribe","getState","oldTheme","loadingPrevValue","setDB","dbRef","indexDB","watchAppTheme","axiosInterceptors","connectIndexDB","initializeGoogleAnalytics","appStore","throttle","interceptors","currentTheme","clearTimeout","saveToLocalStorage","exact","component","isLocalhost","Boolean","hostname","match","registerValidSW","swUrl","config","navigator","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","onUpdate","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","render","StrictMode","process","origin","contentType","indexOf","ready","unregister","checkValidServiceWorker","serviceWorkerRegistration","waiting","postMessage"],"mappings":"2FAAA,IAAIA,EAAM,CACT,0BAA2B,CAC1B,IACA,GAED,8BAA+B,CAC9B,IACA,GAED,2BAA4B,CAC3B,IACA,KAED,oBAAqB,CACpB,IACA,KAED,gBAAiB,CAChB,IACA,KAED,kCAAmC,CAClC,IAED,kCAAmC,CAClC,IAED,kCAAmC,CAClC,IAED,kCAAmC,CAClC,IAED,kCAAmC,CAClC,IAED,0CAA2C,CAC1C,IAED,8CAA+C,CAC9C,IACA,KAED,8CAA+C,CAC9C,IACA,KAED,8CAA+C,CAC9C,IACA,KAED,8CAA+C,CAC9C,IACA,KAED,8CAA+C,CAC9C,IACA,KAED,yCAA0C,CACzC,IACA,KAED,4CAA6C,CAC5C,IACA,KAED,6CAA8C,CAC7C,IACA,KAED,uBAAwB,CACvB,IAED,iCAAkC,CACjC,IACA,GAED,4BAA6B,CAC5B,IAED,4BAA6B,CAC5B,IAED,4BAA6B,CAC5B,IAED,iCAAkC,CACjC,IACA,KAED,kDAAmD,CAClD,IACA,GAED,iBAAkB,CACjB,IACA,GAED,wBAAyB,CACxB,IACA,GAED,wBAAyB,CACxB,IACA,IAED,wBAAyB,CACxB,IACA,IAED,oBAAqB,CACpB,IACA,IAED,kCAAmC,CAClC,IACA,IAED,mCAAoC,CACnC,IACA,IAED,0BAA2B,CAC1B,IACA,IAED,2BAA4B,CAC3B,IACA,IAED,6BAA8B,CAC7B,IACA,IAED,eAAgB,CACf,IACA,IAED,wBAAyB,CACxB,IACA,IAED,8BAA+B,CAC9B,IACA,IAED,wBAAyB,CACxB,IACA,IAED,yBAA0B,CACzB,IACA,IAED,0BAA2B,CAC1B,IACA,IAED,mBAAoB,CACnB,IACA,IAED,gBAAiB,CAChB,IACA,IAED,gCAAiC,CAChC,IACA,IAED,sBAAuB,CACtB,IACA,IAED,kBAAmB,CAClB,IACA,IAED,sBAAuB,CACtB,IACA,IAED,oBAAqB,CACpB,IACA,IAED,qBAAsB,CACrB,IACA,IAED,oBAAqB,CACpB,IACA,IAED,qBAAsB,CACrB,IACA,IAED,oBAAqB,CACpB,IACA,IAED,oBAAqB,CACpB,IACA,IAED,qBAAsB,CACrB,IACA,IAED,mBAAoB,CACnB,IACA,IAED,mBAAoB,CACnB,IACA,IAED,oBAAqB,CACpB,IACA,IAED,oBAAqB,CACpB,IACA,IAED,0BAA2B,CAC1B,IACA,IAED,yBAA0B,CACzB,IACA,IAED,yBAA0B,CACzB,IACA,IAED,8BAA+B,CAC9B,IACA,IAED,sCAAuC,CACtC,IACA,IAED,uCAAwC,CACvC,IACA,IAED,iCAAkC,CACjC,IACA,IAED,kBAAmB,CAClB,IACA,IAED,kBAAmB,CAClB,IACA,IAED,wBAAyB,CACxB,IACA,IAED,2BAA4B,CAC3B,IACA,IAED,uBAAwB,CACvB,IACA,IAED,8BAA+B,CAC9B,IACA,IAED,wBAAyB,CACxB,IACA,IAED,qBAAsB,CACrB,IACA,IAED,sBAAuB,CACtB,IACA,IAED,6BAA8B,CAC7B,IACA,IAED,yBAA0B,CACzB,IACA,IAED,oBAAqB,CACpB,IACA,IAED,uBAAwB,CACvB,IACA,IAED,oBAAqB,CACpB,IACA,IAED,oBAAqB,CACpB,IACA,IAED,2BAA4B,CAC3B,IACA,IAED,qBAAsB,CACrB,IACA,IAED,iBAAkB,CACjB,IACA,IAED,oBAAqB,CACpB,IACA,IAED,sBAAuB,CACtB,IACA,IAED,qBAAsB,CACrB,IACA,IAED,+BAAgC,CAC/B,IACA,IAED,2BAA4B,CAC3B,IACA,IAED,6BAA8B,CAC7B,IACA,IAED,uBAAwB,CACvB,IACA,IAED,6BAA8B,CAC7B,IACA,IAED,qBAAsB,CACrB,IACA,IAED,kBAAmB,CAClB,IACA,IAED,oBAAqB,CACpB,IACA,IAED,oBAAqB,CACpB,IACA,IAED,0BAA2B,CAC1B,IACA,IAED,oBAAqB,CACpB,IACA,IAED,0BAA2B,CAC1B,IACA,IAED,sBAAuB,CACtB,IACA,IAED,kBAAmB,CAClB,IACA,IAED,wBAAyB,CACxB,IACA,IAED,uBAAwB,CACvB,IACA,IAED,iBAAkB,CACjB,IACA,IAED,yBAA0B,CACzB,IACA,IAED,6BAA8B,CAC7B,IACA,IAED,yBAA0B,CACzB,IACA,IAED,oBAAqB,CACpB,IACA,IAED,+BAAgC,CAC/B,IACA,IAED,oBAAqB,CACpB,IACA,IAED,wBAAyB,CACxB,IACA,IAED,yBAA0B,CACzB,IACA,IAED,4BAA6B,CAC5B,IACA,IAED,wBAAyB,CACxB,IACA,IAED,uBAAwB,CACvB,IACA,IAED,mBAAoB,CACnB,IACA,IAED,qBAAsB,CACrB,IACA,IAED,oBAAqB,CACpB,IACA,IAED,gBAAiB,CAChB,IACA,KAED,oBAAqB,CACpB,IACA,KAED,qBAAsB,CACrB,IACA,KAED,mBAAoB,CACnB,IACA,KAED,iBAAkB,CACjB,IACA,KAED,oBAAqB,CACpB,IACA,KAED,oBAAqB,CACpB,IACA,KAED,iBAAkB,CACjB,IACA,KAED,mBAAoB,CACnB,IACA,KAED,mBAAoB,CACnB,IACA,KAED,oBAAqB,CACpB,IACA,KAED,kBAAmB,CAClB,IACA,KAED,gBAAiB,CAChB,IACA,KAED,yBAA0B,CACzB,IACA,KAED,oBAAqB,CACpB,IACA,KAED,qBAAsB,CACrB,IACA,KAED,iBAAkB,CACjB,IACA,KAED,sBAAuB,CACtB,IACA,KAED,mBAAoB,CACnB,IACA,KAED,0BAA2B,CAC1B,IACA,KAED,sBAAuB,CACtB,IACA,KAED,0BAA2B,CAC1B,IACA,KAED,sBAAuB,CACtB,IACA,KAED,iBAAkB,CACjB,IACA,KAED,qBAAsB,CACrB,IACA,KAED,oBAAqB,CACpB,IACA,KAED,iBAAkB,CACjB,IACA,KAED,uBAAwB,CACvB,IACA,KAED,yBAA0B,CACzB,IACA,KAED,mBAAoB,CACnB,IACA,KAED,kBAAmB,CAClB,IACA,KAED,sBAAuB,CACtB,IACA,KAED,iBAAkB,CACjB,IACA,KAED,6BAA8B,CAC7B,IACA,KAED,4BAA6B,CAC5B,IACA,KAED,8BAA+B,CAC9B,IACA,KAED,iBAAkB,CACjB,IACA,KAED,oBAAqB,CACpB,IACA,KAED,mBAAoB,CACnB,IACA,KAED,kBAAmB,CAClB,IACA,KAED,oBAAqB,CACpB,IACA,KAED,kBAAmB,CAClB,IACA,KAED,mBAAoB,CACnB,IACA,KAED,mBAAoB,CACnB,IACA,KAED,mBAAoB,CACnB,IACA,KAED,sBAAuB,CACtB,IACA,KAED,sBAAuB,CACtB,IACA,KAED,oBAAqB,CACpB,IACA,KAED,uCAAwC,CACvC,IACA,KAED,mCAAoC,CACnC,IACA,KAED,6BAA8B,CAC7B,IACA,KAED,8BAA+B,CAC9B,IACA,KAED,4BAA6B,CAC5B,IACA,KAED,wBAAyB,CACxB,IACA,KAED,wBAAyB,CACxB,IACA,KAED,2BAA4B,CAC3B,IACA,KAED,iBAAkB,CACjB,IACA,KAED,0BAA2B,CAC1B,IACA,KAED,qBAAsB,CACrB,IACA,KAED,iCAAkC,CACjC,IACA,KAED,6BAA8B,CAC7B,IACA,KAED,iBAAkB,CACjB,IACA,KAED,qBAAsB,CACrB,IACA,KAED,iBAAkB,CACjB,IACA,KAED,sBAAuB,CACtB,IACA,KAED,qBAAsB,CACrB,IACA,KAED,qBAAsB,CACrB,IACA,KAED,0BAA2B,CAC1B,IACA,KAED,mBAAoB,CACnB,IACA,KAED,gBAAiB,CAChB,IACA,KAED,+BAAgC,CAC/B,IACA,KAED,mBAAoB,CACnB,IACA,KAED,yBAA0B,CACzB,IACA,KAED,oBAAqB,CACpB,IACA,KAED,oBAAqB,CACpB,IACA,KAED,sBAAuB,CACtB,IACA,KAED,0BAA2B,CAC1B,IACA,KAED,wBAAyB,CACxB,IACA,KAED,uBAAwB,CACvB,IACA,KAED,sBAAuB,CACtB,IACA,KAED,iBAAkB,CACjB,IACA,KAED,mBAAoB,CACnB,IACA,KAED,mBAAoB,CACnB,IACA,KAED,oCAAqC,CACpC,IACA,KAED,mCAAoC,CACnC,IACA,KAED,+BAAgC,CAC/B,IACA,KAED,yCAA0C,CACzC,IACA,KAED,gCAAiC,CAChC,IACA,KAED,oCAAqC,CACpC,IACA,KAED,uBAAwB,CACvB,IACA,KAED,yBAA0B,CACzB,IACA,KAED,mBAAoB,CACnB,IACA,KAED,iBAAkB,CACjB,IACA,KAED,wBAAyB,CACxB,IACA,KAED,kBAAmB,CAClB,IACA,KAED,8BAA+B,CAC9B,IACA,KAED,iBAAkB,CACjB,IACA,KAED,8BAA+B,CAC9B,IACA,KAED,wBAAyB,CACxB,IACA,KAED,wBAAyB,CACxB,IACA,KAED,+BAAgC,CAC/B,IACA,KAED,6BAA8B,CAC7B,IACA,KAED,uBAAwB,CACvB,IACA,KAED,iBAAkB,CACjB,IACA,KAED,mBAAoB,CACnB,IACA,KAED,qBAAsB,CACrB,IACA,KAED,yBAA0B,CACzB,IACA,KAED,qBAAsB,CACrB,IACA,KAED,+BAAgC,CAC/B,IACA,KAED,8BAA+B,CAC9B,IACA,KAED,6BAA8B,CAC7B,IACA,KAED,yBAA0B,CACzB,IACA,KAED,sBAAuB,CACtB,IACA,KAED,kBAAmB,CAClB,IACA,KAED,gCAAiC,CAChC,IACA,KAED,kCAAmC,CAClC,IACA,KAED,4BAA6B,CAC5B,IACA,KAED,6BAA8B,CAC7B,IACA,KAED,yBAA0B,CACzB,IACA,KAED,oBAAqB,CACpB,IACA,KAED,kBAAmB,CAClB,IACA,KAED,sBAAuB,CACtB,IACA,KAED,yBAA0B,CACzB,IACA,KAED,mBAAoB,CACnB,IACA,KAED,8BAA+B,CAC9B,IACA,KAED,0BAA2B,CAC1B,IACA,KAED,yBAA0B,CACzB,IACA,KAED,wBAAyB,CACxB,IACA,KAED,oBAAqB,CACpB,IACA,KAED,wBAAyB,CACxB,IACA,KAED,oCAAqC,CACpC,IACA,KAED,sCAAuC,CACtC,IACA,KAED,sCAAuC,CACtC,IACA,KAED,yCAA0C,CACzC,IACA,KAED,qCAAsC,CACrC,IACA,KAED,+BAAgC,CAC/B,IACA,KAED,8BAA+B,CAC9B,IACA,KAED,wBAAyB,CACxB,IACA,KAED,oBAAqB,CACpB,IACA,KAED,mBAAoB,CACnB,IACA,KAED,wBAAyB,CACxB,IACA,KAED,yBAA0B,CACzB,IACA,KAED,sBAAuB,CACtB,IACA,KAED,wBAAyB,CACxB,IACA,KAED,kBAAmB,CAClB,IACA,KAED,gCAAiC,CAChC,IACA,KAED,4BAA6B,CAC5B,IACA,KAED,yBAA0B,CACzB,IACA,KAED,qBAAsB,CACrB,IACA,KAED,mBAAoB,CACnB,IACA,KAED,yBAA0B,CACzB,IACA,KAED,2BAA4B,CAC3B,IACA,KAED,qBAAsB,CACrB,IACA,KAED,yBAA0B,CACzB,IACA,KAED,wBAAyB,CACxB,IACA,KAED,kBAAmB,CAClB,IACA,KAED,sBAAuB,CACtB,IACA,KAED,qBAAsB,CACrB,IACA,KAED,qBAAsB,CACrB,IACA,KAED,mBAAoB,CACnB,IACA,KAED,6BAA8B,CAC7B,IACA,KAED,yBAA0B,CACzB,IACA,KAED,wBAAyB,CACxB,IACA,KAED,kBAAmB,CAClB,IACA,KAED,iBAAkB,CACjB,IACA,KAED,0BAA2B,CAC1B,IACA,KAED,2BAA4B,CAC3B,IACA,KAED,uBAAwB,CACvB,IACA,KAED,qBAAsB,CACrB,IACA,KAED,oBAAqB,CACpB,IACA,KAED,iBAAkB,CACjB,IACA,KAED,mBAAoB,CACnB,IACA,KAED,wBAAyB,CACxB,IACA,KAED,8CAA+C,CAC9C,IACA,KAED,yCAA0C,CACzC,IACA,KAED,gDAAiD,CAChD,IACA,KAED,2CAA4C,CAC3C,IACA,KAED,6CAA8C,CAC7C,IACA,KAED,wCAAyC,CACxC,IACA,KAED,6CAA8C,CAC7C,IACA,KAED,wCAAyC,CACxC,IACA,KAED,4CAA6C,CAC5C,IACA,KAED,uCAAwC,CACvC,IACA,KAED,8CAA+C,CAC9C,IACA,KAED,yCAA0C,CACzC,IACA,KAED,6CAA8C,CAC7C,IACA,KAED,wCAAyC,CACxC,IACA,KAED,6CAA8C,CAC7C,IACA,KAED,wCAAyC,CACxC,IACA,KAED,qBAAsB,CACrB,IACA,KAED,+BAAgC,CAC/B,IACA,KAED,2BAA4B,CAC3B,IACA,KAED,kBAAmB,CAClB,IACA,KAED,gCAAiC,CAChC,IACA,KAED,mBAAoB,CACnB,IACA,KAED,gBAAiB,CAChB,IACA,KAED,2BAA4B,C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","file":"static/js/main.25325a69.chunk.js","sourcesContent":["var map = {\n\t\"./fonts/Akhand-Bold.otf\": [\n\t\t175,\n\t\t4\n\t],\n\t\"./fonts/AkhandSoft-Bold.otf\": [\n\t\t176,\n\t\t5\n\t],\n\t\"./gif/eye-reader-ava.gif\": [\n\t\t177,\n\t\t317\n\t],\n\t\"./gif/eye-sun.gif\": [\n\t\t178,\n\t\t318\n\t],\n\t\"./gif/eye.gif\": [\n\t\t179,\n\t\t319\n\t],\n\t\"./images/demonstrations/01.webp\": [\n\t\t39\n\t],\n\t\"./images/demonstrations/02.webp\": [\n\t\t40\n\t],\n\t\"./images/demonstrations/03.webp\": [\n\t\t41\n\t],\n\t\"./images/demonstrations/04.webp\": [\n\t\t42\n\t],\n\t\"./images/demonstrations/05.webp\": [\n\t\t43\n\t],\n\t\"./images/demonstrations/icons/Union.png\": [\n\t\t34\n\t],\n\t\"./images/demonstrations/icons/control-1.png\": [\n\t\t180,\n\t\t320\n\t],\n\t\"./images/demonstrations/icons/control-2.png\": [\n\t\t181,\n\t\t321\n\t],\n\t\"./images/demonstrations/icons/control-3.png\": [\n\t\t182,\n\t\t322\n\t],\n\t\"./images/demonstrations/icons/control-4.png\": [\n\t\t183,\n\t\t323\n\t],\n\t\"./images/demonstrations/icons/control-5.png\": [\n\t\t184,\n\t\t324\n\t],\n\t\"./images/demonstrations/icons/fill.png\": [\n\t\t185,\n\t\t325\n\t],\n\t\"./images/demonstrations/icons/zoom-in.png\": [\n\t\t186,\n\t\t326\n\t],\n\t\"./images/demonstrations/icons/zoom-out.png\": [\n\t\t187,\n\t\t327\n\t],\n\t\"./png/logo-white.png\": [\n\t\t33\n\t],\n\t\"./png/varilux-download-bg.webp\": [\n\t\t188,\n\t\t6\n\t],\n\t\"./png/variluxG9-bg-2.webp\": [\n\t\t37\n\t],\n\t\"./png/variluxG9-bg-3.webp\": [\n\t\t38\n\t],\n\t\"./png/variluxG9-bg-4.webp\": [\n\t\t36\n\t],\n\t\"./png/variluxG9-logo-final.png\": [\n\t\t189,\n\t\t328\n\t],\n\t\"./svg/60_Essilor_Picto_Contrast_sensitivity.svg\": [\n\t\t190,\n\t\t7\n\t],\n\t\"./svg/Bike.svg\": [\n\t\t191,\n\t\t8\n\t],\n\t\"./svg/Delivery_01.svg\": [\n\t\t192,\n\t\t9\n\t],\n\t\"./svg/Delivery_02.svg\": [\n\t\t193,\n\t\t10\n\t],\n\t\"./svg/Delivery_03.svg\": [\n\t\t194,\n\t\t11\n\t],\n\t\"./svg/Driving.svg\": [\n\t\t195,\n\t\t12\n\t],\n\t\"./svg/LensConsultation_Blue.svg\": [\n\t\t196,\n\t\t13\n\t],\n\t\"./svg/LensConsultation_White.svg\": [\n\t\t197,\n\t\t14\n\t],\n\t\"./svg/Measures_Blue.svg\": [\n\t\t198,\n\t\t15\n\t],\n\t\"./svg/Measures_White.svg\": [\n\t\t199,\n\t\t16\n\t],\n\t\"./svg/OutdoorActivites.svg\": [\n\t\t200,\n\t\t17\n\t],\n\t\"./svg/UV.svg\": [\n\t\t201,\n\t\t18\n\t],\n\t\"./svg/acute-ruler.svg\": [\n\t\t202,\n\t\t19\n\t],\n\t\"./svg/add-on-plus-white.svg\": [\n\t\t203,\n\t\t20\n\t],\n\t\"./svg/add-on-plus.svg\": [\n\t\t204,\n\t\t21\n\t],\n\t\"./svg/adjust-white.svg\": [\n\t\t205,\n\t\t22\n\t],\n\t\"./svg/adjust-white1.svg\": [\n\t\t206,\n\t\t23\n\t],\n\t\"./svg/adjust.svg\": [\n\t\t207,\n\t\t24\n\t],\n\t\"./svg/age.svg\": [\n\t\t208,\n\t\t25\n\t],\n\t\"./svg/antigua_and_barbuda.svg\": [\n\t\t209,\n\t\t26\n\t],\n\t\"./svg/argentina.svg\": [\n\t\t210,\n\t\t27\n\t],\n\t\"./svg/aruba.svg\": [\n\t\t211,\n\t\t28\n\t],\n\t\"./svg/australia.svg\": [\n\t\t212,\n\t\t29\n\t],\n\t\"./svg/austria.svg\": [\n\t\t213,\n\t\t30\n\t],\n\t\"./svg/ava-lens.svg\": [\n\t\t214,\n\t\t31\n\t],\n\t\"./svg/bahamas.svg\": [\n\t\t215,\n\t\t32\n\t],\n\t\"./svg/barbados.svg\": [\n\t\t216,\n\t\t33\n\t],\n\t\"./svg/belgium.svg\": [\n\t\t217,\n\t\t34\n\t],\n\t\"./svg/bolivia.svg\": [\n\t\t218,\n\t\t35\n\t],\n\t\"./svg/bulgaria.svg\": [\n\t\t219,\n\t\t36\n\t],\n\t\"./svg/camera.svg\": [\n\t\t220,\n\t\t37\n\t],\n\t\"./svg/canada.svg\": [\n\t\t221,\n\t\t38\n\t],\n\t\"./svg/catalan.svg\": [\n\t\t222,\n\t\t39\n\t],\n\t\"./svg/catalog.svg\": [\n\t\t223,\n\t\t40\n\t],\n\t\"./svg/cayman_island.svg\": [\n\t\t224,\n\t\t41\n\t],\n\t\"./svg/check-circle.svg\": [\n\t\t225,\n\t\t42\n\t],\n\t\"./svg/check-square.svg\": [\n\t\t226,\n\t\t43\n\t],\n\t\"./svg/check-with-circle.svg\": [\n\t\t227,\n\t\t44\n\t],\n\t\"./svg/check-without-circle-blue.svg\": [\n\t\t228,\n\t\t45\n\t],\n\t\"./svg/check-without-circle-white.svg\": [\n\t\t229,\n\t\t46\n\t],\n\t\"./svg/check-without-circle.svg\": [\n\t\t230,\n\t\t47\n\t],\n\t\"./svg/check.svg\": [\n\t\t231,\n\t\t48\n\t],\n\t\"./svg/china.svg\": [\n\t\t232,\n\t\t49\n\t],\n\t\"./svg/clear-lense.svg\": [\n\t\t233,\n\t\t50\n\t],\n\t\"./svg/close-gray-sun.svg\": [\n\t\t234,\n\t\t51\n\t],\n\t\"./svg/close-gray.svg\": [\n\t\t235,\n\t\t52\n\t],\n\t\"./svg/close-white-modal.svg\": [\n\t\t236,\n\t\t53\n\t],\n\t\"./svg/close-white.svg\": [\n\t\t237,\n\t\t54\n\t],\n\t\"./svg/colombia.svg\": [\n\t\t238,\n\t\t55\n\t],\n\t\"./svg/computer2.svg\": [\n\t\t239,\n\t\t56\n\t],\n\t\"./svg/correct-lens-sun.svg\": [\n\t\t240,\n\t\t57\n\t],\n\t\"./svg/correct-lens.svg\": [\n\t\t241,\n\t\t58\n\t],\n\t\"./svg/correct.svg\": [\n\t\t242,\n\t\t59\n\t],\n\t\"./svg/costa_rica.svg\": [\n\t\t243,\n\t\t60\n\t],\n\t\"./svg/croatia.svg\": [\n\t\t244,\n\t\t61\n\t],\n\t\"./svg/curacao.svg\": [\n\t\t245,\n\t\t62\n\t],\n\t\"./svg/czech_republic.svg\": [\n\t\t246,\n\t\t63\n\t],\n\t\"./svg/delivery.svg\": [\n\t\t247,\n\t\t64\n\t],\n\t\"./svg/demo.svg\": [\n\t\t248,\n\t\t65\n\t],\n\t\"./svg/denmark.svg\": [\n\t\t249,\n\t\t66\n\t],\n\t\"./svg/discovery.svg\": [\n\t\t250,\n\t\t67\n\t],\n\t\"./svg/document.svg\": [\n\t\t251,\n\t\t68\n\t],\n\t\"./svg/dominican_republic.svg\": [\n\t\t252,\n\t\t69\n\t],\n\t\"./svg/down-arrow-sun.svg\": [\n\t\t253,\n\t\t70\n\t],\n\t\"./svg/down-arrow-white.svg\": [\n\t\t254,\n\t\t71\n\t],\n\t\"./svg/down-arrow.svg\": [\n\t\t255,\n\t\t72\n\t],\n\t\"./svg/download-varilux.svg\": [\n\t\t256,\n\t\t73\n\t],\n\t\"./svg/download.svg\": [\n\t\t257,\n\t\t74\n\t],\n\t\"./svg/drive.svg\": [\n\t\t258,\n\t\t75\n\t],\n\t\"./svg/dropbox.svg\": [\n\t\t259,\n\t\t76\n\t],\n\t\"./svg/durable.svg\": [\n\t\t260,\n\t\t77\n\t],\n\t\"./svg/easy-to-clean.svg\": [\n\t\t261,\n\t\t78\n\t],\n\t\"./svg/ecuador.svg\": [\n\t\t262,\n\t\t79\n\t],\n\t\"./svg/education-sun.svg\": [\n\t\t263,\n\t\t80\n\t],\n\t\"./svg/education.svg\": [\n\t\t264,\n\t\t81\n\t],\n\t\"./svg/egypt.svg\": [\n\t\t265,\n\t\t82\n\t],\n\t\"./svg/el_salvador.svg\": [\n\t\t266,\n\t\t83\n\t],\n\t\"./svg/eliminates.svg\": [\n\t\t267,\n\t\t84\n\t],\n\t\"./svg/emat.svg\": [\n\t\t268,\n\t\t85\n\t],\n\t\"./svg/empty-circle.svg\": [\n\t\t269,\n\t\t86\n\t],\n\t\"./svg/enhance-lens-sun.svg\": [\n\t\t270,\n\t\t87\n\t],\n\t\"./svg/enhance-lens.svg\": [\n\t\t271,\n\t\t88\n\t],\n\t\"./svg/enhance.svg\": [\n\t\t272,\n\t\t89\n\t],\n\t\"./svg/essilor-logo-white.svg\": [\n\t\t273,\n\t\t90\n\t],\n\t\"./svg/estonia.svg\": [\n\t\t274,\n\t\t91\n\t],\n\t\"./svg/exclamation.svg\": [\n\t\t275,\n\t\t92\n\t],\n\t\"./svg/expand-white.svg\": [\n\t\t276,\n\t\t93\n\t],\n\t\"./svg/experiences-sun.svg\": [\n\t\t277,\n\t\t94\n\t],\n\t\"./svg/experiences.svg\": [\n\t\t278,\n\t\t95\n\t],\n\t\"./svg/export-sun.svg\": [\n\t\t279,\n\t\t96\n\t],\n\t\"./svg/export.svg\": [\n\t\t280,\n\t\t97\n\t],\n\t\"./svg/eye-blue.svg\": [\n\t\t281,\n\t\t98\n\t],\n\t\"./svg/eye-sun.svg\": [\n\t\t282,\n\t\t99\n\t],\n\t\"./svg/eye.svg\": [\n\t\t283,\n\t\t100\n\t],\n\t\"./svg/eyeIcon.svg\": [\n\t\t284,\n\t\t101\n\t],\n\t\"./svg/eyeglass.svg\": [\n\t\t285,\n\t\t102\n\t],\n\t\"./svg/eyezen.svg\": [\n\t\t286,\n\t\t103\n\t],\n\t\"./svg/faIR.svg\": [\n\t\t287,\n\t\t104\n\t],\n\t\"./svg/finland.svg\": [\n\t\t288,\n\t\t105\n\t],\n\t\"./svg/finnish.svg\": [\n\t\t289,\n\t\t106\n\t],\n\t\"./svg/flip.svg\": [\n\t\t290,\n\t\t107\n\t],\n\t\"./svg/france.svg\": [\n\t\t291,\n\t\t108\n\t],\n\t\"./svg/gender.svg\": [\n\t\t292,\n\t\t109\n\t],\n\t\"./svg/germany.svg\": [\n\t\t293,\n\t\t110\n\t],\n\t\"./svg/globe.svg\": [\n\t\t294,\n\t\t111\n\t],\n\t\"./svg/gps.svg\": [\n\t\t295,\n\t\t112\n\t],\n\t\"./svg/greater-than.svg\": [\n\t\t296,\n\t\t113\n\t],\n\t\"./svg/grenada.svg\": [\n\t\t297,\n\t\t114\n\t],\n\t\"./svg/grid-sun.svg\": [\n\t\t298,\n\t\t115\n\t],\n\t\"./svg/grid.svg\": [\n\t\t299,\n\t\t116\n\t],\n\t\"./svg/guatemala.svg\": [\n\t\t300,\n\t\t117\n\t],\n\t\"./svg/guyana.svg\": [\n\t\t301,\n\t\t118\n\t],\n\t\"./svg/hamburger-new.svg\": [\n\t\t302,\n\t\t119\n\t],\n\t\"./svg/hamburger.svg\": [\n\t\t303,\n\t\t120\n\t],\n\t\"./svg/harmful-light.svg\": [\n\t\t304,\n\t\t121\n\t],\n\t\"./svg/home-blue.svg\": [\n\t\t305,\n\t\t122\n\t],\n\t\"./svg/home.svg\": [\n\t\t306,\n\t\t123\n\t],\n\t\"./svg/honduras.svg\": [\n\t\t307,\n\t\t124\n\t],\n\t\"./svg/hungary.svg\": [\n\t\t308,\n\t\t125\n\t],\n\t\"./svg/idID.svg\": [\n\t\t309,\n\t\t126\n\t],\n\t\"./svg/import-sun.svg\": [\n\t\t310,\n\t\t127\n\t],\n\t\"./svg/import-white.svg\": [\n\t\t311,\n\t\t128\n\t],\n\t\"./svg/import.svg\": [\n\t\t312,\n\t\t129\n\t],\n\t\"./svg/india.svg\": [\n\t\t313,\n\t\t130\n\t],\n\t\"./svg/indonesia.svg\": [\n\t\t314,\n\t\t131\n\t],\n\t\"./svg/info.svg\": [\n\t\t315,\n\t\t132\n\t],\n\t\"./svg/information-blue.svg\": [\n\t\t316,\n\t\t133\n\t],\n\t\"./svg/information-sun.svg\": [\n\t\t317,\n\t\t134\n\t],\n\t\"./svg/information-white.svg\": [\n\t\t318,\n\t\t135\n\t],\n\t\"./svg/iran.svg\": [\n\t\t319,\n\t\t136\n\t],\n\t\"./svg/ireland.svg\": [\n\t\t320,\n\t\t137\n\t],\n\t\"./svg/israel.svg\": [\n\t\t321,\n\t\t138\n\t],\n\t\"./svg/italy.svg\": [\n\t\t322,\n\t\t139\n\t],\n\t\"./svg/jamaica.svg\": [\n\t\t323,\n\t\t140\n\t],\n\t\"./svg/kenya.svg\": [\n\t\t324,\n\t\t141\n\t],\n\t\"./svg/kuwait.svg\": [\n\t\t325,\n\t\t142\n\t],\n\t\"./svg/laptop.svg\": [\n\t\t326,\n\t\t143\n\t],\n\t\"./svg/latvia.svg\": [\n\t\t327,\n\t\t144\n\t],\n\t\"./svg/lc-pair-1.svg\": [\n\t\t328,\n\t\t145\n\t],\n\t\"./svg/lc-pair-2.svg\": [\n\t\t329,\n\t\t146\n\t],\n\t\"./svg/lebanon.svg\": [\n\t\t330,\n\t\t147\n\t],\n\t\"./svg/left-arrow-circle-gray-sun.svg\": [\n\t\t331,\n\t\t148\n\t],\n\t\"./svg/left-arrow-circle-gray.svg\": [\n\t\t332,\n\t\t149\n\t],\n\t\"./svg/left-arrow-white.svg\": [\n\t\t333,\n\t\t150\n\t],\n\t\"./svg/lens-consultation.svg\": [\n\t\t334,\n\t\t151\n\t],\n\t\"./svg/lens-pair-1-sun.svg\": [\n\t\t335,\n\t\t152\n\t],\n\t\"./svg/lens-pair-1.svg\": [\n\t\t336,\n\t\t153\n\t],\n\t\"./svg/lens-pair-2.svg\": [\n\t\t337,\n\t\t154\n\t],\n\t\"./svg/lens-thickness.svg\": [\n\t\t338,\n\t\t155\n\t],\n\t\"./svg/lens.svg\": [\n\t\t339,\n\t\t156\n\t],\n\t\"./svg/lensMenuBlack.svg\": [\n\t\t340,\n\t\t157\n\t],\n\t\"./svg/lessThan.svg\": [\n\t\t341,\n\t\t158\n\t],\n\t\"./svg/lifestyle-advice-sun.svg\": [\n\t\t342,\n\t\t159\n\t],\n\t\"./svg/lifestyle-advice.svg\": [\n\t\t343,\n\t\t160\n\t],\n\t\"./svg/logo.svg\": [\n\t\t344,\n\t\t161\n\t],\n\t\"./svg/mail-sun.svg\": [\n\t\t345,\n\t\t162\n\t],\n\t\"./svg/mail.svg\": [\n\t\t346,\n\t\t163\n\t],\n\t\"./svg/main pain.svg\": [\n\t\t347,\n\t\t164\n\t],\n\t\"./svg/malaysia.svg\": [\n\t\t348,\n\t\t165\n\t],\n\t\"./svg/measures.svg\": [\n\t\t349,\n\t\t166\n\t],\n\t\"./svg/menuEducation.svg\": [\n\t\t350,\n\t\t167\n\t],\n\t\"./svg/mexico.svg\": [\n\t\t351,\n\t\t168\n\t],\n\t\"./svg/mic.svg\": [\n\t\t352,\n\t\t169\n\t],\n\t\"./svg/minus-circle-small.svg\": [\n\t\t353,\n\t\t170\n\t],\n\t\"./svg/mobile.svg\": [\n\t\t354,\n\t\t171\n\t],\n\t\"./svg/monitor-blue.svg\": [\n\t\t355,\n\t\t172\n\t],\n\t\"./svg/monitor.svg\": [\n\t\t356,\n\t\t173\n\t],\n\t\"./svg/morocco.svg\": [\n\t\t357,\n\t\t174\n\t],\n\t\"./svg/mostSpend.svg\": [\n\t\t358,\n\t\t175\n\t],\n\t\"./svg/need-explorer.svg\": [\n\t\t359,\n\t\t176\n\t],\n\t\"./svg/netherlands.svg\": [\n\t\t360,\n\t\t177\n\t],\n\t\"./svg/next-arrow.svg\": [\n\t\t361,\n\t\t178\n\t],\n\t\"./svg/nicaragua.svg\": [\n\t\t362,\n\t\t179\n\t],\n\t\"./svg/nlNL.svg\": [\n\t\t363,\n\t\t180\n\t],\n\t\"./svg/norway.svg\": [\n\t\t364,\n\t\t181\n\t],\n\t\"./svg/panama.svg\": [\n\t\t365,\n\t\t182\n\t],\n\t\"./svg/pencil-circle-gray-gray.svg\": [\n\t\t366,\n\t\t183\n\t],\n\t\"./svg/pencil-circle-gray-sun.svg\": [\n\t\t367,\n\t\t184\n\t],\n\t\"./svg/pencil-circle-gray.svg\": [\n\t\t368,\n\t\t185\n\t],\n\t\"./svg/pencil-sun-lens-consultation.svg\": [\n\t\t369,\n\t\t186\n\t],\n\t\"./svg/pencil-sun-measures.svg\": [\n\t\t370,\n\t\t187\n\t],\n\t\"./svg/pencil-sun-prescription.svg\": [\n\t\t371,\n\t\t188\n\t],\n\t\"./svg/pencil-sun.svg\": [\n\t\t372,\n\t\t189\n\t],\n\t\"./svg/pencil-white.svg\": [\n\t\t373,\n\t\t190\n\t],\n\t\"./svg/pencil.svg\": [\n\t\t374,\n\t\t191\n\t],\n\t\"./svg/peru.svg\": [\n\t\t375,\n\t\t192\n\t],\n\t\"./svg/philippines.svg\": [\n\t\t376,\n\t\t193\n\t],\n\t\"./svg/phone.svg\": [\n\t\t377,\n\t\t194\n\t],\n\t\"./svg/photochromic-lens.svg\": [\n\t\t378,\n\t\t195\n\t],\n\t\"./svg/play.svg\": [\n\t\t379,\n\t\t196\n\t],\n\t\"./svg/plus-circle-small.svg\": [\n\t\t380,\n\t\t197\n\t],\n\t\"./svg/plus-circle.svg\": [\n\t\t381,\n\t\t198\n\t],\n\t\"./svg/plus-orange.svg\": [\n\t\t382,\n\t\t199\n\t],\n\t\"./svg/plus-white-outline.svg\": [\n\t\t383,\n\t\t200\n\t],\n\t\"./svg/plus-white-white.svg\": [\n\t\t384,\n\t\t201\n\t],\n\t\"./svg/plus-white.svg\": [\n\t\t385,\n\t\t202\n\t],\n\t\"./svg/plus.svg\": [\n\t\t386,\n\t\t203\n\t],\n\t\"./svg/poland.svg\": [\n\t\t387,\n\t\t204\n\t],\n\t\"./svg/portugal.svg\": [\n\t\t388,\n\t\t205\n\t],\n\t\"./svg/practice-sun.svg\": [\n\t\t389,\n\t\t206\n\t],\n\t\"./svg/practice.svg\": [\n\t\t390,\n\t\t207\n\t],\n\t\"./svg/prescription-minus.svg\": [\n\t\t391,\n\t\t208\n\t],\n\t\"./svg/prescription-plus.svg\": [\n\t\t392,\n\t\t209\n\t],\n\t\"./svg/prescription-sun.svg\": [\n\t\t393,\n\t\t210\n\t],\n\t\"./svg/prescription.svg\": [\n\t\t394,\n\t\t211\n\t],\n\t\"./svg/print-sun.svg\": [\n\t\t395,\n\t\t212\n\t],\n\t\"./svg/print.svg\": [\n\t\t396,\n\t\t213\n\t],\n\t\"./svg/progress-circle-sun.svg\": [\n\t\t397,\n\t\t214\n\t],\n\t\"./svg/progress-circle-white.svg\": [\n\t\t398,\n\t\t215\n\t],\n\t\"./svg/progress-circle.svg\": [\n\t\t399,\n\t\t216\n\t],\n\t\"./svg/protect-lens-sun.svg\": [\n\t\t400,\n\t\t217\n\t],\n\t\"./svg/protect-lens.svg\": [\n\t\t401,\n\t\t218\n\t],\n\t\"./svg/protect.svg\": [\n\t\t402,\n\t\t219\n\t],\n\t\"./svg/qatar.svg\": [\n\t\t403,\n\t\t220\n\t],\n\t\"./svg/qrcode-ca.svg\": [\n\t\t404,\n\t\t221\n\t],\n\t\"./svg/qrcode-white.svg\": [\n\t\t405,\n\t\t222\n\t],\n\t\"./svg/qrcode.svg\": [\n\t\t406,\n\t\t223\n\t],\n\t\"./svg/question-mark-sun.svg\": [\n\t\t407,\n\t\t224\n\t],\n\t\"./svg/question-mark.svg\": [\n\t\t408,\n\t\t225\n\t],\n\t\"./svg/reduce-glare.svg\": [\n\t\t409,\n\t\t226\n\t],\n\t\"./svg/refresh-new.svg\": [\n\t\t410,\n\t\t227\n\t],\n\t\"./svg/refresh.svg\": [\n\t\t411,\n\t\t228\n\t],\n\t\"./svg/remove-dirt.svg\": [\n\t\t412,\n\t\t229\n\t],\n\t\"./svg/right-arrow-circle-blue.svg\": [\n\t\t413,\n\t\t230\n\t],\n\t\"./svg/right-arrow-circle-orange.svg\": [\n\t\t414,\n\t\t231\n\t],\n\t\"./svg/right-arrow-circle-purple.svg\": [\n\t\t415,\n\t\t232\n\t],\n\t\"./svg/right-arrow-circle-white-sun.svg\": [\n\t\t416,\n\t\t233\n\t],\n\t\"./svg/right-arrow-circle-white.svg\": [\n\t\t417,\n\t\t234\n\t],\n\t\"./svg/right-arrow-circle.svg\": [\n\t\t418,\n\t\t235\n\t],\n\t\"./svg/right-arrow-white.svg\": [\n\t\t419,\n\t\t236\n\t],\n\t\"./svg/right-arrow.svg\": [\n\t\t420,\n\t\t237\n\t],\n\t\"./svg/romania.svg\": [\n\t\t421,\n\t\t238\n\t],\n\t\"./svg/russia.svg\": [\n\t\t422,\n\t\t239\n\t],\n\t\"./svg/saint_lucia.svg\": [\n\t\t423,\n\t\t240\n\t],\n\t\"./svg/saudi_arabia.svg\": [\n\t\t424,\n\t\t241\n\t],\n\t\"./svg/saved-sun.svg\": [\n\t\t425,\n\t\t242\n\t],\n\t\"./svg/saved-white.svg\": [\n\t\t426,\n\t\t243\n\t],\n\t\"./svg/saved.svg\": [\n\t\t427,\n\t\t244\n\t],\n\t\"./svg/secondpair-lens-sun.svg\": [\n\t\t428,\n\t\t245\n\t],\n\t\"./svg/secondpair-lens.svg\": [\n\t\t429,\n\t\t246\n\t],\n\t\"./svg/see-more-sun.svg\": [\n\t\t430,\n\t\t247\n\t],\n\t\"./svg/see-more.svg\": [\n\t\t431,\n\t\t248\n\t],\n\t\"./svg/serbia.svg\": [\n\t\t432,\n\t\t249\n\t],\n\t\"./svg/settings-sun.svg\": [\n\t\t433,\n\t\t250\n\t],\n\t\"./svg/settings-white.svg\": [\n\t\t434,\n\t\t251\n\t],\n\t\"./svg/settings.svg\": [\n\t\t435,\n\t\t252\n\t],\n\t\"./svg/sharp-vision.svg\": [\n\t\t436,\n\t\t253\n\t],\n\t\"./svg/sharpvision.svg\": [\n\t\t437,\n\t\t254\n\t],\n\t\"./svg/shine.svg\": [\n\t\t438,\n\t\t255\n\t],\n\t\"./svg/singapore.svg\": [\n\t\t439,\n\t\t256\n\t],\n\t\"./svg/slovakia.svg\": [\n\t\t440,\n\t\t257\n\t],\n\t\"./svg/slovenia.svg\": [\n\t\t441,\n\t\t258\n\t],\n\t\"./svg/smooth.svg\": [\n\t\t442,\n\t\t259\n\t],\n\t\"./svg/smoothTransition.svg\": [\n\t\t443,\n\t\t260\n\t],\n\t\"./svg/south_africa.svg\": [\n\t\t444,\n\t\t261\n\t],\n\t\"./svg/south_korea.svg\": [\n\t\t445,\n\t\t262\n\t],\n\t\"./svg/spain.svg\": [\n\t\t446,\n\t\t263\n\t],\n\t\"./svg/srSR.svg\": [\n\t\t447,\n\t\t264\n\t],\n\t\"./svg/stacked-group.svg\": [\n\t\t448,\n\t\t265\n\t],\n\t\"./svg/stacked-group2.svg\": [\n\t\t449,\n\t\t266\n\t],\n\t\"./svg/stop-black.svg\": [\n\t\t450,\n\t\t267\n\t],\n\t\"./svg/sun-high.svg\": [\n\t\t451,\n\t\t268\n\t],\n\t\"./svg/sun-low.svg\": [\n\t\t452,\n\t\t269\n\t],\n\t\"./svg/svSV.svg\": [\n\t\t453,\n\t\t270\n\t],\n\t\"./svg/sweden.svg\": [\n\t\t454,\n\t\t271\n\t],\n\t\"./svg/switzerland.svg\": [\n\t\t455,\n\t\t272\n\t],\n\t\"./svg/temp/Varilux_Stairs_Comfort3-Line.svg\": [\n\t\t456,\n\t\t273\n\t],\n\t\"./svg/temp/Varilux_Stairs_Comfort3.svg\": [\n\t\t457,\n\t\t274\n\t],\n\t\"./svg/temp/Varilux_Stairs_ComfortMax-Line.svg\": [\n\t\t458,\n\t\t275\n\t],\n\t\"./svg/temp/Varilux_Stairs_ComfortMax.svg\": [\n\t\t459,\n\t\t276\n\t],\n\t\"./svg/temp/Varilux_Stairs_Eseries-Line.svg\": [\n\t\t460,\n\t\t277\n\t],\n\t\"./svg/temp/Varilux_Stairs_Eseries.svg\": [\n\t\t461,\n\t\t278\n\t],\n\t\"./svg/temp/Varilux_Stairs_Liberty-Line.svg\": [\n\t\t462,\n\t\t279\n\t],\n\t\"./svg/temp/Varilux_Stairs_Liberty.svg\": [\n\t\t463,\n\t\t280\n\t],\n\t\"./svg/temp/Varilux_Stairs_Physio-Line.svg\": [\n\t\t464,\n\t\t281\n\t],\n\t\"./svg/temp/Varilux_Stairs_Physio.svg\": [\n\t\t465,\n\t\t282\n\t],\n\t\"./svg/temp/Varilux_Stairs_STANDARD-Line.svg\": [\n\t\t466,\n\t\t283\n\t],\n\t\"./svg/temp/Varilux_Stairs_STANDARD.svg\": [\n\t\t467,\n\t\t284\n\t],\n\t\"./svg/temp/Varilux_Stairs_Sseries-Line.svg\": [\n\t\t468,\n\t\t285\n\t],\n\t\"./svg/temp/Varilux_Stairs_Sseries.svg\": [\n\t\t469,\n\t\t286\n\t],\n\t\"./svg/temp/Varilux_Stairs_Xseries-Line.svg\": [\n\t\t470,\n\t\t287\n\t],\n\t\"./svg/temp/Varilux_Stairs_Xseries.svg\": [\n\t\t471,\n\t\t288\n\t],\n\t\"./svg/thailand.svg\": [\n\t\t472,\n\t\t289\n\t],\n\t\"./svg/thickness-lens-sun.svg\": [\n\t\t473,\n\t\t290\n\t],\n\t\"./svg/thickness-lens.svg\": [\n\t\t474,\n\t\t291\n\t],\n\t\"./svg/trash.svg\": [\n\t\t475,\n\t\t292\n\t],\n\t\"./svg/trinidad_and_tobago.svg\": [\n\t\t476,\n\t\t293\n\t],\n\t\"./svg/turkey.svg\": [\n\t\t477,\n\t\t294\n\t],\n\t\"./svg/uae.svg\": [\n\t\t478,\n\t\t295\n\t],\n\t\"./svg/united_kingdom.svg\": [\n\t\t479,\n\t\t296\n\t],\n\t\"./svg/united_states_of_america.svg\": [\n\t\t480,\n\t\t297\n\t],\n\t\"./svg/usa.svg\": [\n\t\t481,\n\t\t298\n\t],\n\t\"./svg/user.svg\": [\n\t\t482,\n\t\t299\n\t],\n\t\"./svg/varilux-download.svg\": [\n\t\t483,\n\t\t300\n\t],\n\t\"./svg/varilux-g9/icons/control-1-white.svg\": [\n\t\t49\n\t],\n\t\"./svg/varilux-g9/icons/control-1.svg\": [\n\t\t44\n\t],\n\t\"./svg/varilux-g9/icons/control-2-white.svg\": [\n\t\t50\n\t],\n\t\"./svg/varilux-g9/icons/control-2.svg\": [\n\t\t45\n\t],\n\t\"./svg/varilux-g9/icons/control-3-white.svg\": [\n\t\t51\n\t],\n\t\"./svg/varilux-g9/icons/control-3.svg\": [\n\t\t46\n\t],\n\t\"./svg/varilux-g9/icons/control-4-white.svg\": [\n\t\t52\n\t],\n\t\"./svg/varilux-g9/icons/control-4.svg\": [\n\t\t47\n\t],\n\t\"./svg/varilux-g9/icons/control-5-white.svg\": [\n\t\t53\n\t],\n\t\"./svg/varilux-g9/icons/control-5.svg\": [\n\t\t48\n\t],\n\t\"./svg/varilux-g9/icons/fill-white.svg\": [\n\t\t484,\n\t\t301\n\t],\n\t\"./svg/varilux-g9/icons/fill.svg\": [\n\t\t16\n\t],\n\t\"./svg/varilux-g9/icons/play-video.svg\": [\n\t\t485,\n\t\t302\n\t],\n\t\"./svg/varilux-g9/icons/refresh.svg\": [\n\t\t35\n\t],\n\t\"./svg/varilux.svg\": [\n\t\t486,\n\t\t303\n\t],\n\t\"./svg/venezuela.svg\": [\n\t\t487,\n\t\t304\n\t],\n\t\"./svg/vietnam.svg\": [\n\t\t488,\n\t\t305\n\t],\n\t\"./svg/vision.svg\": [\n\t\t489,\n\t\t306\n\t],\n\t\"./svg/visionComfort.svg\": [\n\t\t490,\n\t\t307\n\t],\n\t\"./svg/visit-advice.svg\": [\n\t\t491,\n\t\t308\n\t],\n\t\"./svg/vtoqrcode.svg\": [\n\t\t492,\n\t\t309\n\t],\n\t\"./svg/warning.svg\": [\n\t\t493,\n\t\t310\n\t],\n\t\"./svg/watch.svg\": [\n\t\t494,\n\t\t311\n\t],\n\t\"./svg/wearing-advice-sun.svg\": [\n\t\t495,\n\t\t312\n\t],\n\t\"./svg/wearing-advice.svg\": [\n\t\t496,\n\t\t313\n\t],\n\t\"./svg/widefield.svg\": [\n\t\t497,\n\t\t314\n\t],\n\t\"./svg/x-small.svg\": [\n\t\t498,\n\t\t315\n\t],\n\t\"./svg/x.svg\": [\n\t\t499,\n\t\t316\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 116;\nmodule.exports = webpackAsyncContext;","export default __webpack_public_path__ + \"static/media/fill.f007ed9a.svg\";","enum ExperienceType {\n VARILUX = 'varilux'\n}\n\nexport default ExperienceType;","const multipleLanguages = [\"enCA\",\"caCA\", \"chCH\", \"beBE\", \"arBA\", \"cuCA\"];\nconst elacES = [\"doDO\",\"ecEC\",\"svSV\",\"gtGT\",\"hnHN\",\"paPA\",\"pePE\", \"niNI\", \"crCR\", \"veZU\" ];\nconst elacEN = [\"baBA\",\"barBAR\",\"guGU\",\"jaJA\",\"trTR\", \"enUK\", \"anBA\", \"caIS\", \"grDA\", \"saLU\"];\nconst languageCode = {\n anBA:{\n code: \"anBA\",\n country: \"antigua and barbuda\",\n translation: {}\n },\n caIS:{\n code: \"caIS\",\n country: \"cayman islands\",\n translation: {}\n },\n grDA:{\n code: \"grDA\",\n country: \"grenada\",\n translation: {}\n },\n saLU:{\n code: \"saLU\",\n country: \"saint lucia\",\n translation: {}\n },\n veZU:{\n code: \"veZU\",\n country: \"venezuela\",\n translation: {}\n },\n baBA:{\n code: \"baBA\",\n country: \"Bahamas\",\n translation: {}\n },\n barBAR:{\n code: \"barBAR\",\n country: \"Barbados\",\n translation: {}\n },\n guGU:{\n code: \"guGU\",\n country: \"Guyana\",\n translation: {}\n },\n jaJA:{\n code: \"jaJA\",\n country: \"Jamaica\",\n translation: {}\n },\n trTR:{\n code: \"trTR\",\n country: \"Trinidad and Tobago\",\n translation: {}\n },\n niNI:{\n code: \"niNI\",\n country: \"Nicaragua\",\n translation: {}\n },\n crCR:{\n code: \"crCR\",\n country: \"Costa Rica\",\n translation: {}\n },\n enUK:{\n code: \"enUK\",\n country: \"united kingdom\",\n translation: {}\n },\n doDO:{\n code: \"doDO\",\n country: \"dominican republic\",\n multipleLanguage: {\n esBO: {\n code: \"esBO\",\n language: \"Spanish\"\n },\n },\n translation: {}\n },\n ecEC:{\n code: \"ecEC\",\n country: \"ecuador\",\n multipleLanguage: {\n esBO: {\n code: \"esBO\",\n language: \"Spanish\"\n },\n },\n translation: {}\n },\n svSV:{\n code: \"svSV\",\n country: \"el salvador\",\n multipleLanguage: {\n esBO: {\n code: \"esBO\",\n language: \"Spanish\"\n },\n },\n translation: {}\n },\n gtGT:{\n code: \"gtGT\",\n country: \"guatemala\",\n multipleLanguage: {\n esBO: {\n code: \"esBO\",\n language: \"Spanish\"\n },\n },\n translation: {}\n },\n hnHN:{\n code: \"hnHN\",\n country: \"honduras\",\n multipleLanguage: {\n esBO: {\n code: \"esBO\",\n language: \"Spanish\"\n },\n },\n translation: {}\n },\n paPA:{\n code: \"paPA\",\n country: \"panama\",\n translation: {}\n },\n pePE:{\n code: \"pePE\",\n country: \"peru\",\n multipleLanguage: {\n esBO: {\n code: \"esBO\",\n language: \"Spanish\"\n },\n },\n translation: {}\n },\n // caCA:{\n // code: \"caCA\",\n // country: \"canada\",\n // multipleLanguage: {\n // enUS: {\n // code: \"enUS\",\n // language: \"English\"\n // },\n // frFR: {\n // code: \"frFR\",\n // language: \"French\"\n // }\n // },\n // translation: {}\n // },\n // chCH : {\n // code: \"chCH\",\n // country: \"switzerland\",\n // multipleLanguage: {\n // frFR: {\n // code: \"frFR\",\n // language: \"French\"\n // },\n // deDE: {\n // code: \"deDE\",\n // language: \"German\"\n // }\n // },\n // translation: {}\n // },\n // beBE: {\n // code: \"beBE\",\n // country: \"belgium\",\n // multipleLanguage: {\n // deDE: {\n // code: \"deDE\",\n // language: \"German\"\n // },\n // frFR: {\n // code: \"frFR\",\n // language: \"French\"\n // },\n // itIT: {\n // code: \"itIT\",\n // language: \"Italy\"\n // },\n \n // },\n // translation: {}\n // }\n}\n\nexport {\n languageCode,\n multipleLanguages,\n elacES,\n elacEN\n}\n\n","enum PrescriptionProductTypeVarilux {\n NONE = 'none',\n STANDARD_PROGRESSIVE_LENS = 'standard_progressive_lens',\n VARILUX_COMFORT = 'varilux_comfort',\n VARILUX_X_SERIES = 'varilux_x_series',\n VARILUX_PHYSIO_30 = 'varilux_physio_30'\n\n}\n\nexport default PrescriptionProductTypeVarilux;","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { KIDS_THEMES } from '../../constants/theme.constants';\nimport {TRANSLATIONS_DEFAULT} from '../../constants/translations.contants';\nimport iGlobalInformation from '../../interface/global-information';\nimport iTheme from '../../interface/theme.interface';\nimport iTranslation from '../../interface/translation.interface';\nimport iAppStore from '../interface/app-store.interface';\nimport iRootState from '../interface/root-state.interface';\nimport { languageCode } from '../../constants/language-code.constants';\nimport iRegion from '../../interface/region.interface';\nimport iCountry from '../../interface/country.interface';\nimport ExperienceType from '../../types/experience.type';\nimport iG9CountryLanguages from '../../interface/g9-country-languages.interface';\nimport iG9Languages from '../../interface/g9-languages.interface';\n\nconst initialState: iAppStore = {\n g9CountryLanguages: [],\n g9Languages: [],\n dataStructureVersion:0,\n loading: {\n show: false\n },\n experience: ExperienceType.VARILUX,\n theme: KIDS_THEMES[1],\n language: 'EN',\n subLanguage: '',\n regions: [],\n translation: TRANSLATIONS_DEFAULT.enUS,\n\n globalInformation: {\n storeName: '',\n phone: '',\n address: '',\n email: '',\n license: '',\n nickname: ''\n },\n globalAlert: {\n show: false,\n message: ''\n },\n isModalOpen:false\n}\n\nconst appSlice = createSlice({\n name: 'app',\n initialState,\n reducers: {\n loading: (state, action: PayloadAction) => {\n if(typeof action.payload === 'boolean'){\n return {\n ...state,\n loading: {\n show: action.payload,\n }\n }\n }\n\n return {\n ...state,\n loading: action.payload\n }\n\n },\n changeTheme: (state, action: PayloadAction) => ({...state, theme: action.payload }),\n showGlobalAlert: (state, action: PayloadAction<{\n show: boolean,\n message?: string,\n action?: () => void\n }>) => ({...state, globalAlert: action.payload }), \n setLanguage: (state, action: PayloadAction) => ({ ...state, language: action.payload }),\n setSubLanguage: (state, action: PayloadAction) => ({ ...state, subLanguage: action.payload }),\n setToken: (state, action: PayloadAction) => ({ ...state, token: action.payload }),\n saveRegions: (state, action: PayloadAction) => ({ ...state, regions: action.payload }),\n setTranslationRegion: (state, action: PayloadAction) => ({ ...state, translationRegion: action.payload }),\n setTranslationCountry: (state, action: PayloadAction) => ({ ...state, translationCountry: action.payload }),\n setTranslationCountryLanguage: (state, action: PayloadAction<{\n country: string,\n languageCode: string\n } | undefined >) => ({ ...state, translationCountryLanguage: action.payload }), \n // setTranslations: (state, action: PayloadAction<{[key: string]: iTranslation}>) => ({ ...state, translations: action.payload }),\n setTranslations: (state, action: PayloadAction<{[key: string]: iTranslation}>) => {\n let o = action.payload;\n let sorted:any = {},\n key:any, store:any = [],\n storeKey:any = [];\n o = {\n ...action.payload,\n ...languageCode\n }\n\n\n for (key in o) {\n if (o.hasOwnProperty(key)) {\n store.push(o[key]);\n storeKey.push(key);\n }\n }\n store.sort( function( firstSort:any, secondSort:any ) {\n firstSort = firstSort.country.toLowerCase();\n secondSort= secondSort.country.toLowerCase();\n return firstSort < secondSort ? -1 : firstSort > secondSort ? 1 : 0;\n });\n storeKey.sort();\n store.map((key:any, i:number)=>{\n sorted[key.code] = key;\n return true;\n })\n\n return {\n ...state, translations: sorted\n }\n },\n setTranslation: (state, action: PayloadAction) => ({\n ...state,\n translation: action.payload\n }), \n \n setG9CountryLanguages: (state, action: PayloadAction) => {\n return {\n ...state,\n g9CountryLanguages: action.payload\n }\n },\n\n setG9Languages: (state, action: PayloadAction) => {\n return {\n ...state,\n g9Languages: action.payload\n }\n },\n\n saveGlobalInformation: (state, action: PayloadAction) => ({ ...state, globalInformation: action.payload }),\n \n \n selectedLanguage: (state, action: PayloadAction) => ({\n ...state,\n }),\n \n updateDataStructureVersion: (state, action: PayloadAction) => ({\n ...state,\n dataStructureVersion: action.payload\n }),\n resetData: (state) => ({\n ...state,\n globalAlert: {\n show:false\n },\n translations: undefined,\n }),\n setIsModalOpen: (state, action: PayloadAction) => ({\n ...state,\n isModalOpen: action.payload\n }),\n }\n});\n\nexport const getApp = (state:iRootState) => state.app;\nexport default appSlice;\n","const KIDS_THEMES = [\n {\n id: 'red',\n main: '#ec7281',\n dark: '#ea5c6d',\n bubbleMain: '#ec6275',\n bubbleSub: '#ea5264',\n },\n {\n id: 'blue',\n main: '#3faaf7',\n dark: '#2b86d7',\n bubbleMain: '#2594ea',\n bubbleSub: '#2b80ce',\n },\n {\n id: 'green',\n main: '#6bd6c9',\n dark: '#63c6b9',\n bubbleMain: '#64ccbf',\n bubbleSub: '#5dc3b8',\n },\n {\n id: 'orange',\n main: '#f2a76b',\n dark: '#f09256',\n bubbleMain: '#ef9a5c',\n bubbleSub: '#f18d4d',\n },\n {\n id: 'purple',\n main: '#6b68c2',\n dark: '#5f5cac',\n bubbleMain: '#615eb5',\n bubbleSub: '#5b58a9',\n },\n {\n id: 'multi',\n main: '#0086d6',\n dark: '#0086d6',\n bubbleMain: '#0086d6',\n bubbleSub: '#0086d6',\n },\n]\n\nexport {\n KIDS_THEMES\n}\n\n\n","export const TRANSLATIONS_DEFAULT = {\n \"enUS\": {\n \"code\": \"enUS\",\n \"country\": \"USA\",\n \"translation\": {\n \"language_lang_select_your_language\": \"Select your language\",\n \"language_lang_next\": \"Next\",\n \"_message__la_mess_license_activation\": \"Please enter a valid credentials or If you have any questions, please contact your Essilor Companion Support Team. Thank you\",\n \"license_activation_welc\": \"Welcome to your new companion!\",\n \"license_activation_note\": \"If you don't have license, please contact your Essilor Representative.\",\n \"license_activation_la_id\": \"ID\",\n \"license_activation_la_pass\": \"Password\",\n \"license_activation_la_conct\": \"Connect\",\n \"message_-_first_time_app_loading_mess_pre-loading_assets...\": \"Pre-loading Assets...\",\n \"legal_notices_ln_legal_notices\": \"Legal Notice\",\n \"legal_notice_ln_01_demonstrations_title\": \"Demonstrations\",\n \"legal_notice_ln_01_demonstrations\": \"Please note that the information presented in this app is for demonstration purposes only. Comparison of products which might be quoted within the app, are for illustration only and must not be interpreted as comparative advertising. Each Essilor product, brand and or technology (Crizal...) does own specific marketing claims, to which you should revert, while promoting the benefits and properties of the said product.\",\n \"legal_notice_ln_under_this_privacy_notice_data_title\": \"Data\",\n \"inapp_inapprefresh\": \"Click to sync the latest update\",\n \"demo_download_all\": \"Download all demos\",\n \"demo_downloading\": \"Downloading\",\n \"legal_notice_ln_under_this_privacy_notice_data\": \"Under this Privacy Notice, we, Essilor International, inform you what personal data of yours we collect when you visit our website or use our services, why we collect it, and what we do with it. Your personal data means any information relating to you, in particular your name and contact details such as your home address, your telephone number or your email address. Please take the time to read this Privacy Notice carefully. It is very important that you fully understand how we process your personal data and how we protect your privacy. If you have any questions regarding our use of your personal data, you can of course contact us using the contact details provided below:Our contact details are: Essilor International, 141 Rue de Paris, Charenton le pont.The contact details of our Data Protection Officer are: Data Protection Office, You have the right to access, rectify or erase this data. Kindly ask the following to fill here the country’s contact details Privacy@essilor.comWHAT PERSONAL DATA WE COLLECTData we collect when you visit our websiteWhen you access our website, we automatically collect and store some of your data in our server logs and in cookies, which are small files we send to your computer when you visit our website. This data does not allow us to identify you directly. However, we do record data related to your browsing on our website, such as the pages that you accessed, the date and time you accessed these pages, your search queries, information on your device (hardware model, operating system version, unique device identifier, Internet protocol address, hardware settings, browser type, browser language), the date and time of your request and referral URL.The provision of your personal data is not required if you only want to visit our website. This means that you may refuse to accept cookies by configuring your web browser accordingly (for more information, refer to the ‘help’ section of your web browser). However, refusing cookies is likely to disrupt your navigation on our website, in particular by preventing you from accessing certain parts of it.Data we collect when you sign up or when you order productsSome of the services offered on our website require you to sign up. If you want to use these services, we will ask you to provide us with personal data. Please provide us with complete and accurate data, and also inform us if your data needs to be updated. If you do not provide us with complete and accurate data, or if you do not inform us that your data needs to be updated, we may not be able to provide you with the services you requested.We collect the following categories of your personal data: Identification data including your name, telephone number, e-mail address, home address, login and password, etc. ECP : Practice name, e-mail address, login & password, telephone if shared for customer service purposes. Consumer: name and e-mail, telephone number, if & only if coming from an Essilor platform (e.g appointment booking)IT data ECP: including data related to your browsing on our website, such as the pages that you accessed, the date and time you accessed these pages, your search queries, information on your device (hardware model, operating system version, unique device identifiers, Internet protocol address, hardware settings, browser type, browser language), the date and time of your request and referral URL]. Time spent on device & features, click count on demonstrationsConsumer: show or no show of an appointmentHealth dataPotentially stored on appWhat are the type of cookies that we are collecting: 1. Session Cookies - These cookies are only stored for the duration of your visit to a website until the user's browser is closed. 2. Persistent Cookies - These cookies are stored on a user's device for a period of time to help remember information, settings, preferences, sign-on credentials that the user previously saved. A persistent cookie lasts beyond the current session and will stay on your browser until they expire or you delete them. 3. First Party Cookies - are cookies set directly by the website you are visiting directly, allow website owners to retrieve data, remember language settings, and perform other useful functions that help provide a good user experience. 4. Third Party Cookies - are cookies used within our Services which are set by domains other than the website you are visiting directly. These include cookies from external analytics services or other applications that are integrated to our site.Below table are lists of the cookies that we and third parties placed.Since the number and names of cookies may change, these tables may be updated from time to time to provide you with the latest information.CategoryTypeCookies NameDomainPurposeProviderAuthenticationLocalStoragetokenessilorcompanion.comUse to authenticate User based on Machine Id and License CodeEssilor CompanionFunctionalLocalStoragepersistentDataessilorcompanion.comuser data, products, translations, themes, licenseEssilor CompanionFunctionalIndexDBusersessilorcompanion.comList of all users dataEssilor CompanionFunctionalIndexDBworkbox-expirationessilorcompanion.comCollections of offline dataEssilor CompanionThird PartyLocalStoragex-api-keyessilor-prd.apigee.comThird Party Proxy AppAPIGEEThird PartyCookiesARRAffinitySameSiteessilorcompanion.comAzure Load balancing on Az AppServiceAZUREThird PartyCookiesARRAffinityessilorcompanion.comStay with a certain instance of web app or web site in AzureAZUREThird PartytbdtbdtbdAppointment BookingKALIOPThird PartytbdtbdtbdSFCDSalesforceAnalyticsCookies_gcl_auessilorcompanion.comUsed through Google Analytics to understand user interaction with the site and advertisingGOOGLEAnalyticsCookies_gac_UA-essilorcompanion.comGoogle Analytics cookieGOOGLEAnalyticsCookies_gaessilorcompanion.comGoogle Analytics cookieGOOGLEAnalyticsCookies_gatessilorcompanion.comGoogle Analytics cookieGOOGLEAnalyticsCookies_gidessilorcompanion.comGoogle Analytics cookieGOOGLEAnalyticsCookies_gac_US-[Property ID]essilorcompanion.comGoogle Analytics cookieGOOGLEHOW WE USE PERSONAL DATA WE COLLECTWe only use your personal data within the limits authorized by the laws and regulations. Sometimes, we may use your personal data because the laws and regulations require us to do so. In any case, we do not make any automated decisions based solely on automatic processing which may produce legal effects on you, or similarly significantly affect you.We use your personal data for the following purposes: We use your identification data to give you a customized experience of the solution, understand how users use Essilor Companion and improve our features:ECP: to connect on the solution and use effectively. For CRM purposes & customer serviceConsumer: to streamline agenda of eye care professionals for incoming appointments of pickup of the equipment.We use your IT data for :ECP: Continuous improvement of the solution based on user experience. Consumer: Analyze consumer attendance to an appointmentHealth: We do not use or analyze Consumer personal health data. These data can be stored in a local cloud of the ECP and would be erased automatically after 2 months. These data include: consumer prescription data, consumer measurements and consumer answers to the questionnaire.HOW LONG WE KEEP PERSONAL DATA WE COLLECTThe period for which we store your personal data is shown in the table below:Category of dataRetention periodIdentification dataConsumer: 2 monthsECP: 5 yearsIT data[…13 months max … for Google analytics information – 3 Years on Back Office informationConsumer: 2 monthsECP: 13 MonthsPERSONAL DATA WE SHAREPlease note that we can share your personal data with the Essilor group and selected third parties. Category of dataCategory of recipientsLocationIdentification dataInternalEssilor Group and selected third partiesIT dataInternalEssilor Group and selected third partiesFor recipients located outside of the European Union, there is no adequacy decision by the European Commission for this area. This means that the level of data protection in this area is not comparable with the level of data protection in the European Union. Therefore, we use the appropriate internal measures as an appropriate safeguard to secure your personal data. HOW WE PROTECT PERSONAL DATAWe have measures in place to protect your personal data against unauthorized access, use, or disclosure including, without limitation, the following measures:We implement and maintain sophisticated technical measures to ensure that your personal data is recorded and processed in complete confidentiality and security;We implement and maintain appropriate restrictions on access to your personal data, and on monitoring the access, use, and transfer of personal data;All of our employees who have access to your personal data are required to enter into non-disclosure or similar agreements, which imposes obligations on them to comply with our data privacy and confidentiality requirements;We require any business partners and third party service providers with whom we may share your personal data to comply with any applicable data privacy and confidentiality requirements;We provide data privacy training on a regular basis to our employees and third parties who have access to personal data.WHAT RIGHTS YOU HAVEUnder applicable data protection laws and regulations, you have the right to:Access, rectify, and/or erase your personal data;Restrict or object to its processing;Tell us that you do not wish to receive marketing information;In some circumstances, require certain of your personal data to be transferred to you or a third party;To the extent our processing of your personal data is based upon your consent, withdraw your consent, without affecting the lawfulness of our processing based on your consent before its withdrawal.We are committed to enabling you to exercise your rights and, to do so, you can contact us using the contact information set out at the beginning of this Privacy Notice. Please provide us with the following information, so that we can act on your request with all due consideration:Your name and surname, and a photocopy of your identity document;Your specific request (in other words, what rights you want to exercise); andThe date of the application and your signature (if you send your application by post).If you are not fully satisfied with our response, you can also complain about our processing of your personal data to the relevant data protection authority.CHANGES TO THIS PRIVACY NOTICEWe regularly review our compliance with our Privacy Notice, in particular to ensure that it complies with new laws and regulations regarding data protection. But, although this Privacy Notice may change from time to time, we will not reduce your rights under this Privacy Notice without your explicit consent.\",\n\n region_language_change_region: 'Change your Region',\n region_filter: 'Select your location',\n language_lang__back_: 'Next',\n\n\n home_hom_whats_new: \"What's New?\",\n home_hommemat: 'eMat',\n home_home_disc_essilor: 'Discover Essilor',\n home_hom_lp_builder: 'Lens Proposal Builder',\n home_hom_start: 'Start',\n home_hom_start_from: 'Start From',\n home_hom_id: 'ID',\n home_hm_qr_code: 'QR Code',\n masterlicense_patientlist: 'Patient List'\n\n }\n },\n}\n\nexport const TRANSLATIONS_MULTIPLE_LANG: any = {\n \"GB\": {\n \"language\": {\n \"enGB\": {\n \"current_lens_rx_current_lens\": \"Current lenses\",\n \"need_explorer_single_choice_question\": \"Single choice question\",\n \"varilux_demo_card_stabilized\": \"Stabilised vision even in the most demanding situations\",\n \"varilux_demo_card_sharp\": \"High visual acuity even in low light conditions\",\n \"varilux_demo_card_extended\": \"Natural posture in all circumstances\",\n \"need_explorer_warning_modification\": \"Any modification will influence the next steps\",\n \"need_explorer_back\": \"Back to Need Explorer\",\n \"choose_a_different_location_language\": \"Choose a different Location/Language\",\n \"need_explorer_continue\": \"Continue\",\n \"exclusive\": \"Exclusive\",\n \"varilux_install\": \"Install\",\n \"varilux_install_web_app\": \"Install the application for a better experience\",\n \"varilux_demo_card_instant\": \"Instant sharpness at all distances, even in motion\",\n \"language_settings\": \"Language Settings\",\n \"recommended\": \"Recommended\",\n \"message_messrequired_rx\": \"Required\",\n \"search_location_language\": \"Search Location\",\n \"select_your_location_language\": \"Select Your Location/Language\",\n \"skip_button\": \"Skip\",\n \"suggested_location_language\": \"Suggested Location/Language\",\n \"varilux_web_app\": \"Web App\",\n \"need_explorer_warning\": \"Warning\",\n \"calculation_based_on_lenses\": \"*Essilor R&D simulations – 2022 – calculation based on lensesn measurements weighted by the level of importance of each criterian for progressive lenses declared by users (Quantitative Consumer study - Ipsos - Q1 2022 - BR/FR/IT/UK/US - n=4000 progressive lens wearers) - Simulations done on most relevant competitive brands : brands with good level of awareness among consumers (Consumer Lens Brand Tracking - Ipsos - Q3 2022 - BR/CA/CN/FR/IN/IT/UK/US - n=8000) & offering premium progressive lenses.​\",\n \"conclusion_rx_conclusion\": \"Conclusion\",\n \"current_progress_lens\": \"Current progressive lenses\",\n \"demo\": \"Demo\",\n \"legal_notice_ln_01_demonstrations_title\": \"Demonstrations\",\n \"varilux_choice_difficulty_sharpness\": \"Difficulty to maintain sharpness\",\n \"varilux_choice_difficulty_light\": \"Difficulty to see sharply in low light conditions\",\n \"varilux_btn_end_experience\": \"End demonstration\",\n \"need_explorer_experience_your\": \"Experience your\",\n \"need_explorer_personalized_demonstration\": \"personalised demonstration\",\n \"full-screen\": \"Full screen\",\n \"varilux_choice_limited_posture\": \"Limited postural changes\",\n \"varilux__mandatory\": \"Mandatory\",\n \"need_explorer_multiple_choice_question\": \"Multiple choice question\",\n \"lens_proposal_builder_lpb_need_explorer\": \"Need Explorer\",\n \"varilux_btn_next_patient\": \"New demonstration\",\n \"personalize_your_lenses_pyl_next\": \"Next\",\n \"varilux_choice_none\": \"None, I am very sastisfied with my progressive lenses\",\n \"varilux_demo_card_panoramic\": \"Panoramic field of vision\",\n \"standard_progressive_lens\": \"Premium progressive lenses\",\n \"quit-full-screen\": \"Quit full screen\",\n \"varilux_choice_restricted\": \"Restricted field of vision\",\n \"select_visual__prog_lens\": \"Select the visual discomforts experienced by your patient with their current progressive lenses\",\n \"varilux_choice_sensation\": \"Sensation of swim effect while moving\",\n \"varilux_the_best_overall\": \"The best Varilux®\",\n \"varilux_progressive_lens\": \"progressive lens ever*\",\n \"welcome-to-your\": \"Welcome to your\",\n \"personalized-profile\": \"personalised profile\"\n }\n },\n \"country\": \"United Kingdom\"\n },\n \"RO\": {\n \"language\": {\n \"roRO\": {\n \"current_lens_rx_current_lens\": \"Lentile actuale\",\n \"need_explorer_single_choice_question\": \"Întrebare cu o singură alegere\",\n \"varilux_demo_card_stabilized\": \"Vedere stabilizată chiar și în cele mai solicitante situații\",\n \"varilux_demo_card_sharp\": \"Acuitate vizuală ridicată chiar și în condiții de lumină scăzută\",\n \"varilux_demo_card_extended\": \"Postură naturală în toate circumstanțele\",\n \"need_explorer_warning_modification\": \"Orice modificare va influența pașii următori\",\n \"need_explorer_back\": \"Înapoi la Explorer\",\n \"choose_a_different_location_language\": \"Alegeți o altă locație/limbă\",\n \"need_explorer_continue\": \"Continuați\",\n \"exclusive\": \"Exclusiv\",\n \"varilux_install\": \"Instalați\",\n \"varilux_install_web_app\": \"Instalați aplicația pentru o experiență mai bună \",\n \"varilux_demo_card_instant\": \"Claritate instantanee la orice distanță, chiar și în mișcaren\",\n \"language_settings\": \"Setări de limbă\",\n \"recommended\": \"Recomandat\",\n \"message_messrequired_rx\": \"Necesar\",\n \"search_location_language\": \"Căutați locație\",\n \"select_your_location_language\": \"Selectați locația/Limba dumneavoastră\",\n \"skip_button\": \"Omiteți\",\n \"suggested_location_language\": \"Locație/Limbă sugerată\",\n \"varilux_web_app\": \"Aplicație web\",\n \"need_explorer_warning\": \"Avertizare\",\n \"calculation_based_on_lenses\": \"*Simulări de cercetare și dezvoltare ale Essilor – 2022 – calcul bazat pe măsurătorile lentilelor ponderate cu nivelul de importanță al fiecărui criteriu pentru lentilele progresive declarate de utilizatori (studiu cantitativ la consumatori - Ipsos - Q1 2022 - BR/FR/IT/UK/US - n=4000 purtători de lentile progresive) - Simulări efectuate pe cele mai relevante mărci competitive: mărci cu un nivel bun de conștientizare în rândul consumatorilor (Consumer Lens Brand Tracking - Ipsos - Q3 2022 - BR/CA/CN/FR/IN/IT/UK/US - n=8000) și care oferă lentile progresive premium.​\",\n \"conclusion_rx_conclusion\": \"Concluzie\",\n \"current_progress_lens\": \"Lentile progresive actuale\",\n \"demo\": \"Demo\",\n \"legal_notice_ln_01_demonstrations_title\": \"Demonstrații\",\n \"varilux_choice_difficulty_sharpness\": \"Dificultate în menținerea clarității\",\n \"varilux_choice_difficulty_light\": \"Dificultate în a vedea clar în condiții de lumină scăzută\",\n \"varilux_btn_end_experience\": \"Încheiați demonstrația \",\n \"need_explorer_experience_your\": \"Experimentați demonstrația\",\n \"need_explorer_personalized_demonstration\": \"personalizată pentru dvs.\",\n \"full-screen\": \"Ecran complet\",\n \"varilux_choice_limited_posture\": \"Modificări posturale limitate\",\n \"varilux__mandatory\": \"Obligatorie\",\n \"need_explorer_multiple_choice_question\": \"Întrebare cu răspunsuri multiple\",\n \"lens_proposal_builder_lpb_need_explorer\": \"Explorer\",\n \"varilux_btn_next_patient\": \"Demonstrație nouă\",\n \"personalize_your_lenses_pyl_next\": \"Următorul\",\n \"varilux_choice_none\": \"Niciuna, sunt foarte mulțumit de lentilele mele progresive\",\n \"varilux_demo_card_panoramic\": \"Câmp vizual panoramic\",\n \"standard_progressive_lens\": \"Lentile progresive premium\",\n \"quit-full-screen\": \"Ieșiți din ecranul complet\",\n \"varilux_choice_restricted\": \"Câmp vizual restrâns\",\n \"select_visual__prog_lens\": \"Selectați tipul de disconfort vizual manifestat de pacientul dumneavoastră cu lentilele progresive actuale:\",\n \"varilux_choice_sensation\": \"Senzație de efect de înot în timpul mișcării\",\n \"varilux_the_best_overall\": \"Cea mai performantă\",\n \"varilux_progressive_lens\": \"lentilă progresivă Varilux\",\n \"welcome-to-your\": \"Bun venit \",\n \"personalized-profile\": \"la profilul dumneavoastră personalizat!\"\n }\n },\n \"country\": \"Romania\"\n },\n \"ES\": {\n \"language\": {\n \"esES\": {\n \"current_lens_rx_current_lens\": \"Lentes actuales\",\n \"need_explorer_single_choice_question\": \"Pregunta de opción única\",\n \"varilux_demo_card_stabilized\": \"Visión estabilizada incluso en las situaciones más exigentes\",\n \"varilux_demo_card_sharp\": \"Gran agudeza visual incluso en condiciones de poca luz\",\n \"varilux_demo_card_extended\": \"Postura natural en cualquier circunstancia\",\n \"need_explorer_warning_modification\": \"Cualquier modificación condicionará los siguientes pasos\",\n \"need_explorer_back\": \"Volver a Identificar necesidades\",\n \"choose_a_different_location_language\": \"Elige una ubicación/idioma diferente\",\n \"need_explorer_continue\": \"Continuar\",\n \"exclusive\": \"Exclusivo\",\n \"varilux_install\": \"Instalar\",\n \"varilux_install_web_app\": \"Instala la aplicación para una mejor experiencia \",\n \"varilux_demo_card_instant\": \"Nitidez instantánea a todas las distancias, incluso en movimiento\",\n \"language_settings\": \"Ajustes de idioma\",\n \"recommended\": \"Recomendado\",\n \"message_messrequired_rx\": \"Obligatorio\",\n \"search_location_language\": \"Buscar ubicación\",\n \"select_your_location_language\": \"Selecciona tu ubicación/idioma\",\n \"skip_button\": \"Saltar\",\n \"suggested_location_language\": \"Ubicación/Idioma sugerido\",\n \"varilux_web_app\": \"Aplicación web\",\n \"need_explorer_warning\": \"Advertencia\",\n \"calculation_based_on_lenses\": \"* Simulaciones internasnde I+D – 2022 – vs lente Varilux® X series™. \",\n \"conclusion_rx_conclusion\": \"Conclusión\",\n \"current_progress_lens\": \"Lentes progresivas actuales\",\n \"demo\": \"Demostración\",\n \"legal_notice_ln_01_demonstrations_title\": \"Demostraciones\",\n \"varilux_choice_difficulty_sharpness\": \"Dificultad para mantener la nitidez\",\n \"varilux_choice_difficulty_light\": \"Dificultad para ver con nitidez en condiciones de poca luz\",\n \"varilux_btn_end_experience\": \"Finalizar demostración \",\n \"need_explorer_experience_your\": \"Disfruta de una\",\n \"need_explorer_personalized_demonstration\": \"demostración personalizada\",\n \"full-screen\": \"Pantalla completa\",\n \"varilux_choice_limited_posture\": \"Cambios posturales limitados\",\n \"varilux__mandatory\": \"Obligatorio\",\n \"need_explorer_multiple_choice_question\": \"Pregunta de opción múltiple\",\n \"lens_proposal_builder_lpb_need_explorer\": \"Identificar necesidades\",\n \"varilux_btn_next_patient\": \"Nueva demostración\",\n \"personalize_your_lenses_pyl_next\": \"Siguiente\",\n \"varilux_choice_none\": \"Ninguno, me gustan mucho mis lentes progresivas\",\n \"varilux_demo_card_panoramic\": \"Campo de visión panorámico\",\n \"standard_progressive_lens\": \"Lentes progresivas premium\",\n \"quit-full-screen\": \"Salir de pantalla completa\",\n \"varilux_choice_restricted\": \"Campo de visión restringido\",\n \"select_visual__prog_lens\": \"Selecciona las molestias visuales que experimenta tu paciente con sus lentes progresivas actuales\",\n \"varilux_choice_sensation\": \"Sensación de visión borrosa y distorsionada en movimiento\",\n \"varilux_the_best_overall\": \"La mejor lente progresiva Varilux®\",\n \"varilux_progressive_lens\": \"de todos los tiempos*\",\n \"welcome-to-your\": \"Bienvenido a tu\",\n \"personalized-profile\": \"perfil personalizado\"\n }\n },\n \"country\": \"Spain\"\n },\n \"BE\": {\n \"language\": {\n \"nlBE\": {\n \"current_lens_rx_current_lens\": \"Huidige brillenglazen\",\n \"need_explorer_single_choice_question\": \"Enkele keuze vraag\",\n \"varilux_demo_card_stabilized\": \"Gestabiliseerd zicht, zelfs in de meest veeleisende situaties\",\n \"varilux_demo_card_sharp\": \"Hoge gezichtsscherpte, zelfs bij weinig licht\",\n \"varilux_demo_card_extended\": \"Natuurlijke lichaamshouding in alle omstandigheden\",\n \"need_explorer_warning_modification\": \"Elke wijziging heeft invloed op de volgende stappen\",\n \"need_explorer_back\": \"Terug naar de behoefteverkenner\",\n \"choose_a_different_location_language\": \"Kies een andere locatie/taal\",\n \"need_explorer_continue\": \"Doorgaan\",\n \"exclusive\": \"Exclusief\",\n \"varilux_install\": \"Installeren\",\n \"varilux_install_web_app\": \"Installeer de applicatie voor een betere ervaring \",\n \"varilux_demo_card_instant\": \"Onmiddellijke scherpte, zelfs in beweging\",\n \"language_settings\": \"Taalinstellingen\",\n \"recommended\": \"Aanbevolen\",\n \"message_messrequired_rx\": \"Vereist\",\n \"search_location_language\": \"Zoek locatie\",\n \"select_your_location_language\": \"Selecteer uw locatie/taal\",\n \"skip_button\": \"Overslaan\",\n \"suggested_location_language\": \"Voorgestelde locatie/taal\",\n \"varilux_web_app\": \"Webapplicatie\",\n \"need_explorer_warning\": \"Waarschuwing\",\n \"calculation_based_on_lenses\": \"*Essilor R&D-simulaties – 2022 – berekening op basis van brillenglazenmetingen gewogen volgens het belang van elk criterium voor multifocale brillenglazen zoals aangegeven door gebruikers (Kwantitatief consumentenonderzoek - Ipsos - KW1 2022 - BR/FR/IT/VK/VS - n = 4000 dragers van multifocale brillenglazen) - Simulaties uitgevoerd op de meest relevante concurrerende merken: merken met een grote naambekendheid bij de consument (Merkregistratie van brillenglazen voor consumenten - Ipsos - KW3 2022 - BR/CA/CN/FR/IN/IT/VK/VS - n = 8000) en die premium multifocale brillenglazen aanbieden.​\",\n \"conclusion_rx_conclusion\": \"Conclusie\",\n \"current_progress_lens\": \"Huidige multifocale brillenglazen\",\n \"demo\": \"Demo\",\n \"legal_notice_ln_01_demonstrations_title\": \"Demonstraties\",\n \"varilux_choice_difficulty_sharpness\": \"Moeite om de scherpte te behouden\",\n \"varilux_choice_difficulty_light\": \"Moeilijkheden om scherp te zien bij weinig licht\",\n \"varilux_btn_end_experience\": \"Einde demonstratie \",\n \"need_explorer_experience_your\": \"Ervaar uw\",\n \"need_explorer_personalized_demonstration\": \"persoonlijke demonstratie\",\n \"full-screen\": \"Volledig scherm\",\n \"varilux_choice_limited_posture\": \"Beperkte posturale veranderingen\",\n \"varilux__mandatory\": \"Verplicht\",\n \"need_explorer_multiple_choice_question\": \"Meerkeuzevraag\",\n \"lens_proposal_builder_lpb_need_explorer\": \"Behoefteverkenner\",\n \"varilux_btn_next_patient\": \"Nieuwe demonstratie\",\n \"personalize_your_lenses_pyl_next\": \"Volgende\",\n \"varilux_choice_none\": \"Geen, ik ben zeer tevreden met mijn multifocale brillenglazen\",\n \"varilux_demo_card_panoramic\": \"Panoramisch gezichtsveld\",\n \"standard_progressive_lens\": \"Premium multifocale brillenglazen\",\n \"quit-full-screen\": \"Sluit het volledige scherm af\",\n \"varilux_choice_restricted\": \"Beperkt gezichtsveld\",\n \"select_visual__prog_lens\": \"Selecteer de visuele ongemakken die uw patiënt ervaart met zijn of haar huidige multifocale brillenglazen\",\n \"varilux_choice_sensation\": \"Sensatie van schommeleffect tijdens het bewegen\",\n \"varilux_the_best_overall\": \"Het beste algemene\",\n \"varilux_progressive_lens\": \"multifocale brillenglas*\",\n \"welcome-to-your\": \"Welkom bij uw\",\n \"personalized-profile\": \"gepersonaliseerde profiel\"\n },\n \"frBE\": {\n \"current_lens_rx_current_lens\": \"Verres progressifs actuels\",\n \"need_explorer_single_choice_question\": \"Question à choix unique\",\n \"varilux_demo_card_stabilized\": \"Une vision stabilisée même dans les situations les plus exigeantes\",\n \"varilux_demo_card_sharp\": \"Une acuité visuelle élevée, même dans des conditions de faible luminosité\",\n \"varilux_demo_card_extended\": \"Une posture naturelle en toutes circonstances\",\n \"need_explorer_warning_modification\": \"Toute modification affectera les prochaines étapes\",\n \"need_explorer_back\": \"Retour à la découverte des besoins\",\n \"choose_a_different_location_language\": \"Choisir une autre localisation/langue\",\n \"need_explorer_continue\": \"Continuer\",\n \"exclusive\": \"Exclusif\",\n \"varilux_install\": \"Installer\",\n \"varilux_install_web_app\": \"Installez l'application pour une meilleure expérience \",\n \"varilux_demo_card_instant\": \"Netteté instantanée à toutes distances, même en mouvement\",\n \"language_settings\": \"Paramètres de langue\",\n \"recommended\": \"Recommandé\",\n \"message_messrequired_rx\": \"Nécessaire\",\n \"search_location_language\": \"Chercher la localisation\",\n \"select_your_location_language\": \"Sélectionnez votre localisation/langue\",\n \"skip_button\": \"Passer\",\n \"suggested_location_language\": \"Localisation/langue suggérée\",\n \"varilux_web_app\": \"Appli Web\",\n \"need_explorer_warning\": \"Avertissement\",\n \"calculation_based_on_lenses\": \"*Simulations de R&D Essilor - 2022 - calcul basé sur les mesures de verres, pondérées par le niveau d'importance de chaque critère de verres progressifs déclaré par les porteurs (Étude quantitative de consommation - Ipsos - Q1 2022 - BR/FR/IT/UK/US - n = 4000 porteurs de verres progressifs) - Simulations réalisées avec les marques concurrentes les plus pertinentes : marques ayant une notoriété élevée auprès des consommateurs (Suivi des marques de verres consommateurs - Ipsos - Q3 2022 - BR/CA/CN/FR/IN/IT/UK/US) et proposant des verres progressifs haut de gamme.​\",\n \"conclusion_rx_conclusion\": \"Conclusion\",\n \"current_progress_lens\": \"Choisissez les gênes visuelles rencontrées par votre patient avec ses verres progressifs actuels\",\n \"demo\": \"Démo\",\n \"legal_notice_ln_01_demonstrations_title\": \"Démonstrations\",\n \"varilux_choice_difficulty_sharpness\": \"Difficulté à maintenir la netteté\",\n \"varilux_choice_difficulty_light\": \"Difficulté à avoir une vision nette en situation de faible luminosité\",\n \"varilux_btn_end_experience\": \"Fermer la démonstration \",\n \"need_explorer_experience_your\": \"Faites l'expérience de\",\n \"need_explorer_personalized_demonstration\": \"votre démonstration personnalisée\",\n \"full-screen\": \"Plein écran\",\n \"varilux_choice_limited_posture\": \"Changements de posture limités\",\n \"varilux__mandatory\": \"Obligatoire\",\n \"need_explorer_multiple_choice_question\": \"Questionnaire à choix multiple\",\n \"lens_proposal_builder_lpb_need_explorer\": \"Découverte des besoins\",\n \"varilux_btn_next_patient\": \"Nouvelle démonstration\",\n \"personalize_your_lenses_pyl_next\": \"Suivant\",\n \"varilux_choice_none\": \"Aucune gêne, mes verres progressifs me conviennent\",\n \"varilux_demo_card_panoramic\": \"Champ de vision panoramique\",\n \"standard_progressive_lens\": \"Verres progressifs haut de gamme\",\n \"quit-full-screen\": \"Quitter le plein écran\",\n \"varilux_choice_restricted\": \"Champ de vision réduit\",\n \"select_visual__prog_lens\": \"Choisissez les gênes visuelles rencontrées par votre patient avec ses verres progressifs actuels\",\n \"varilux_choice_sensation\": \"Effets de tangage pendant le mouvement\",\n \"varilux_the_best_overall\": \"Le meilleur\",\n \"varilux_progressive_lens\": \"verre progressif*\",\n \"welcome-to-your\": \"Bienvenue sur votre\",\n \"personalized-profile\": \"profil personnalisé\"\n }\n },\n \"country\": \"Belgium\"\n },\n \"DE\": {\n \"language\": {\n \"deDE\": {\n \"current_lens_rx_current_lens\": \"Aktuelle Gleitsichtgläser\",\n \"need_explorer_single_choice_question\": \"Single-Choice-Frage\",\n \"varilux_demo_card_stabilized\": \"Verlässliches Sehen auch in den anspruchsvollsten Situationen\",\n \"varilux_demo_card_sharp\": \"Hohe Sehschärfe auch bei schlechten Lichtverhältnissen\",\n \"varilux_demo_card_extended\": \"Natürliche Körperhaltung in allen Situationen\",\n \"need_explorer_warning_modification\": \"Jegliche Änderung wirkt sich auf die nächsten Schritte aus\",\n \"need_explorer_back\": \"Zurück zur Anamnese\",\n \"choose_a_different_location_language\": \"Anderen Standort/andere Sprache auswählen\",\n \"need_explorer_continue\": \"Weiter\",\n \"exclusive\": \"Exklusiv\",\n \"varilux_install\": \"Installieren\",\n \"varilux_install_web_app\": \"Installieren Sie die App für ein besseres Nutzer:innenerlebnis \",\n \"varilux_demo_card_instant\": \"Sofort scharf sehen in allen Entfernungen – auch in Bewegung\",\n \"language_settings\": \"Spracheinstellungen\",\n \"recommended\": \"Empfohlen\",\n \"message_messrequired_rx\": \"Eingabe erforderlich\",\n \"search_location_language\": \"Standort suchen\",\n \"select_your_location_language\": \"Wählen Sie Ihren Standort/Ihre Sprache aus\",\n \"skip_button\": \"Überspringen\",\n \"suggested_location_language\": \"Vorgeschlagener Standort/vorgeschlagene Sprache\",\n \"varilux_web_app\": \"Web-App\",\n \"need_explorer_warning\": \"Warnung\",\n \"calculation_based_on_lenses\": \"*Essilor F&E-Simulationen – 2022 – Berechnung beruht auf Brillenglasmessungen gewichtet nach dem von den Nutzer:innen empfundenen Wichtigkeitsgrad des jeweiligen Gleitsichtglaskriteriums (Quantitative Verbraucherstudie – Ipsos – Q1 2022 – BR/FR/IT/UK/US – n = 4.000 Gleitsichtglas-Träger:innen) – Simulationen mit den wichtigsten Konkurrenzmarken durchgeführt: Marken mit hohem Bekanntheitsgrad unter den Verbraucher:innen, und die Premium-Gleitsichtgläser anbieten (Consumer Lens Brand Tracking – Ipsos – Q3 2022 – BR/CA/CN/FR/IN/IT/UK/US – n = 8.000).​\",\n \"conclusion_rx_conclusion\": \"Abschluss\",\n \"current_progress_lens\": \"Aktuelle Gleitsichtgläser\",\n \"demo\": \"Demo\",\n \"legal_notice_ln_01_demonstrations_title\": \"Demonstrationen\",\n \"varilux_choice_difficulty_sharpness\": \"Schwierigkeiten, durchgehend scharf zu sehen\",\n \"varilux_choice_difficulty_light\": \"Schwierigkeiten, bei schlechten Lichtverhältnissen scharf zu sehen\",\n \"varilux_btn_end_experience\": \"Demonstration beenden \",\n \"need_explorer_experience_your\": \"Erleben Sie Ihre\",\n \"need_explorer_personalized_demonstration\": \"personalisierte Demonstration\",\n \"full-screen\": \"Vollbild\",\n \"varilux_choice_limited_posture\": \"Eingeschränkte Haltungsflexibilität\",\n \"varilux__mandatory\": \"Pflichtfeld\",\n \"need_explorer_multiple_choice_question\": \"Multiple-Choice-Frage\",\n \"lens_proposal_builder_lpb_need_explorer\": \"Anamnese\",\n \"varilux_btn_next_patient\": \"Neue Demonstration\",\n \"personalize_your_lenses_pyl_next\": \"Weiter\",\n \"varilux_choice_none\": \"Keine, ich bin mit meinen aktuellen Gleitsichtgläsern sehr zufrieden\",\n \"varilux_demo_card_panoramic\": \"Panorama-Sehbereich\",\n \"standard_progressive_lens\": \"Premium-Gleitsichtgläser\",\n \"quit-full-screen\": \"Vollbildmodus beenden\",\n \"varilux_choice_restricted\": \"Eingeschränkter Sehbereich\",\n \"select_visual__prog_lens\": \"Wählen Sie die Sehbeschwerden aus, die der/die Kund:in mit seiner/ihrer aktuellen Gleitsichtbrille hat\",\n \"varilux_choice_sensation\": \"Schwimmeffekte in Bewegung\",\n \"varilux_the_best_overall\": \"Das beste Varilux Gleitsichtglas\",\n \"varilux_progressive_lens\": \"aller Zeiten*\",\n \"welcome-to-your\": \"Willkommen zu Ihrem\",\n \"personalized-profile\": \"personalisierten Profil\"\n }\n },\n \"country\": \"Germany\"\n },\n \"NO\": {\n \"language\": {\n \"noNO\": {\n \"current_lens_rx_current_lens\": \"Nåværende glass\",\n \"need_explorer_single_choice_question\": \"Enkeltvalgsspørsmål\",\n \"varilux_demo_card_stabilized\": \"Stabilisert syn, selv i de mest krevende situasjoner\",\n \"varilux_demo_card_sharp\": \"Høy synsskarphet, selv ved dårlige lysforhold\",\n \"varilux_demo_card_extended\": \"Naturlig kroppsholdning under alle omstendigheter\",\n \"need_explorer_warning_modification\": \"Enhver endring vil påvirke de neste trinnene\",\n \"need_explorer_back\": \"Gå tilbake til « Behovsutforsker»\",\n \"choose_a_different_location_language\": \"Velg et annet sted/språk\",\n \"need_explorer_continue\": \"Fortsett\",\n \"exclusive\": \"Eksklusiv\",\n \"varilux_install\": \"Installer\",\n \"varilux_install_web_app\": \"Installer programmet for en bedre opplevelse \",\n \"varilux_demo_card_instant\": \"Umiddelbar synsskarphet på alle avstander, selv i bevegelse\",\n \"language_settings\": \"Språkinnstillinger\",\n \"recommended\": \"Anbefalt\",\n \"message_messrequired_rx\": \"Obligatorisk\",\n \"search_location_language\": \"Søk etter sted\",\n \"select_your_location_language\": \"Velg sted/språk\",\n \"skip_button\": \"Hopp over\",\n \"suggested_location_language\": \"Foreslått sted/språk\",\n \"varilux_web_app\": \"Nettapp\",\n \"need_explorer_warning\": \"Advarsel\",\n \"calculation_based_on_lenses\": \"*Essilor FoU-simuleringer – 2022 – beregninger basert på glassmålinger vektet etter nivå av viktighet for hvert kriterium for progressive glass, oppgitt av brukere (kvantitativ kundeundersøkelse – Ipsos – Q1 2022 – BR/FR/IT/UK/US – n = 4000 brukere av progressive glass) – Simuleringer utført på de mest relevante konkurrerende merkene: merker med et godt nivå av bevissthet blant forbrukere (sporing av forbrukeres valg av glassmerke – Ipsos – Q3 2022 – BR/CA/CN/FR/IN/IT/UK/US – n = 8000) og som tilbyr førsteklasses progressive glass.​\",\n \"conclusion_rx_conclusion\": \"Konklusjon\",\n \"current_progress_lens\": \"Nåværende progressive glass\",\n \"demo\": \"Demonstrasjon\",\n \"legal_notice_ln_01_demonstrations_title\": \"Demonstrasjoner\",\n \"varilux_choice_difficulty_sharpness\": \"Vansker med å opprettholde skarphet\",\n \"varilux_choice_difficulty_light\": \"Vansker med å se skarpt i dårlige lysforhold\",\n \"varilux_btn_end_experience\": \"Avslutt demonstrasjon \",\n \"need_explorer_experience_your\": \"Opplev en personlig\",\n \"need_explorer_personalized_demonstration\": \"tilpasset demonstrasjon\",\n \"full-screen\": \"Full skjerm\",\n \"varilux_choice_limited_posture\": \"Begrensninger ifm kroppsholdning\",\n \"varilux__mandatory\": \"Obligatorisk\",\n \"need_explorer_multiple_choice_question\": \"Flervalgsspørsmål\",\n \"lens_proposal_builder_lpb_need_explorer\": \"Behovsutforsker\",\n \"varilux_btn_next_patient\": \"Ny demonstrasjon\",\n \"personalize_your_lenses_pyl_next\": \"Neste\",\n \"varilux_choice_none\": \"Ingen, jeg er veldig fornøyd med mine progressive glass\",\n \"varilux_demo_card_panoramic\": \"Panoramasynsfelt\",\n \"standard_progressive_lens\": \"Premium progressive glass\",\n \"quit-full-screen\": \"Avslutt full skjerm\",\n \"varilux_choice_restricted\": \"Begrenset synsfelt\",\n \"select_visual__prog_lens\": \"Velg de synsplagene som pasienten opplever med sine nåværende\",\n \"varilux_choice_sensation\": \"Følelse av «svømmeeffekt» i bevegelse\",\n \"varilux_the_best_overall\": \"Det beste progressive glasset\",\n \"varilux_progressive_lens\": \"til generell bruk*\",\n \"welcome-to-your\": \"Velkommen til din\",\n \"personalized-profile\": \"personlig tilpassede profil\"\n }\n },\n \"country\": \"Norway\"\n },\n \"PT\": {\n \"language\": {\n \"ptPT\": {\n \"current_lens_rx_current_lens\": \"Lentes atuais\",\n \"need_explorer_single_choice_question\": \"Questão de escolha única\",\n \"varilux_demo_card_stabilized\": \"Visão estabilizada, mesmo nas situações mais exigentes\",\n \"varilux_demo_card_sharp\": \"Elevada acuidade visual, mesmo em condições de pouca luminosidade\",\n \"varilux_demo_card_extended\": \"Postura natural em todas as circunstâncias\",\n \"need_explorer_warning_modification\": \"Qualquer alteração vai influenciar os próximos passos\",\n \"need_explorer_back\": \"Voltar ao Explorador de necessidades\",\n \"choose_a_different_location_language\": \"Escolher uma Localização/Idioma diferente\",\n \"need_explorer_continue\": \"Continuar\",\n \"exclusive\": \"Exclusivo\",\n \"varilux_install\": \"Instalar\",\n \"varilux_install_web_app\": \"Instale a aplicação para desfrutar de uma melhor experiência \",\n \"varilux_demo_card_instant\": \"Nitidez instantânea a todas as distâncias, mesmo em movimento\",\n \"language_settings\": \"Definições de idioma\",\n \"recommended\": \"Recomendado\",\n \"message_messrequired_rx\": \"Necessário\",\n \"search_location_language\": \"Pesquisar localização\",\n \"select_your_location_language\": \"Selecione a sua Localização/Idioma\",\n \"skip_button\": \"Ignorar\",\n \"suggested_location_language\": \"Localização/Idioma sugerido\",\n \"varilux_web_app\": \"Aplicação Web\",\n \"need_explorer_warning\": \"Aviso\",\n \"calculation_based_on_lenses\": \"Simulações do departamento de I&D internas – 2022 – em comparação com Varilux® X series™\",\n \"conclusion_rx_conclusion\": \"Conclusão\",\n \"current_progress_lens\": \"Lentes progressivas atuais\",\n \"demo\": \"Demonstração\",\n \"legal_notice_ln_01_demonstrations_title\": \"Demonstrações\",\n \"varilux_choice_difficulty_sharpness\": \"Dificuldade em manter a nitidez\",\n \"varilux_choice_difficulty_light\": \"Dificuldade em ver de forma nítida em condições de pouca luminosidade\",\n \"varilux_btn_end_experience\": \"Terminar demonstração \",\n \"need_explorer_experience_your\": \"Experimente a sua\",\n \"need_explorer_personalized_demonstration\": \"demonstração personalizada\",\n \"full-screen\": \"Ecrã inteiro\",\n \"varilux_choice_limited_posture\": \"Alterações posturais limitadas\",\n \"varilux__mandatory\": \"Obrigatório\",\n \"need_explorer_multiple_choice_question\": \"Pergunta de escolha múltipla\",\n \"lens_proposal_builder_lpb_need_explorer\": \"Explorador de necessidades\",\n \"varilux_btn_next_patient\": \"Nova demonstração\",\n \"personalize_your_lenses_pyl_next\": \"Seguinte\",\n \"varilux_choice_none\": \"Nenhum, estou muito satisfeito com as minhas lentes progressivas\",\n \"varilux_demo_card_panoramic\": \"Campo de visão panorâmico\",\n \"standard_progressive_lens\": \"Lentes progressivas premium\",\n \"quit-full-screen\": \"Sair do ecrã inteiro\",\n \"varilux_choice_restricted\": \"Campo de visão restrito\",\n \"select_visual__prog_lens\": \"Selecione os desconfortos visuais sentidos pelo utilizador com as lentes progressivas atuais\",\n \"varilux_choice_sensation\": \"Sensação de efeito de oscilação em movimento \",\n \"varilux_the_best_overall\": \"A melhor lente progressiva\",\n \"varilux_progressive_lens\": \"Varilux de sempre*\",\n \"welcome-to-your\": \"Bem-vindo ao seu\",\n \"personalized-profile\": \"perfil personalizado\"\n }\n },\n \"country\": \"Portugal\"\n },\n \"FR\": {\n \"language\": {\n \"frFR\": {\n \"current_lens_rx_current_lens\": \"Verres progressifs actuels\",\n \"need_explorer_single_choice_question\": \"Question à choix unique\",\n \"varilux_demo_card_stabilized\": \"Une vision stabilisée même dans les situations les plus exigeantes\",\n \"varilux_demo_card_sharp\": \"Une acuité visuelle élevée, même dans des conditions de faible luminosité\",\n \"varilux_demo_card_extended\": \"Une posture naturelle en toutes circonstances\",\n \"need_explorer_warning_modification\": \"Toute modification affectera les prochaines étapes\",\n \"need_explorer_back\": \"Retour à la découverte des besoins\",\n \"choose_a_different_location_language\": \"Choisir une autre localisation/langue\",\n \"need_explorer_continue\": \"Continuer\",\n \"exclusive\": \"Exclusif\",\n \"varilux_install\": \"Installer\",\n \"varilux_install_web_app\": \"Installez l'application pour une meilleure expérience \",\n \"varilux_demo_card_instant\": \"Netteté instantanée à toutes distances, même en mouvement\",\n \"language_settings\": \"Paramètres de langue\",\n \"recommended\": \"Recommandé\",\n \"message_messrequired_rx\": \"Nécessaire\",\n \"search_location_language\": \"Chercher la localisation\",\n \"select_your_location_language\": \"Sélectionnez votre localisation/langue\",\n \"skip_button\": \"Passer\",\n \"suggested_location_language\": \"Localisation/langue suggérée\",\n \"varilux_web_app\": \"Appli Web\",\n \"need_explorer_warning\": \"Avertissement\",\n \"calculation_based_on_lenses\": \"*Simulations de R&D Essilor - 2022 - calcul basé sur les mesures de verres, pondérées par le niveau d'importance de chaque critère de verres progressifs déclaré par les porteurs (Étude quantitative de consommation - Ipsos - Q1 2022 - BR/FR/IT/UK/US - n = 4000 porteurs de verres progressifs) - Simulations réalisées avec les marques concurrentes les plus pertinentes : marques ayant une notoriété élevée auprès des consommateurs (Suivi des marques de verres consommateurs - Ipsos - Q3 2022 - BR/CA/CN/FR/IN/IT/UK/US) et proposant des verres progressifs haut de gamme.​\",\n \"conclusion_rx_conclusion\": \"Conclusion\",\n \"current_progress_lens\": \"Choisissez les gênes visuelles rencontrées par votre patient avec ses verres progressifs actuels\",\n \"demo\": \"Démo\",\n \"legal_notice_ln_01_demonstrations_title\": \"Démonstrations\",\n \"varilux_choice_difficulty_sharpness\": \"Difficulté à maintenir la netteté\",\n \"varilux_choice_difficulty_light\": \"Difficulté à avoir une vision nette en situation de faible luminosité\",\n \"varilux_btn_end_experience\": \"Fermer la démonstration \",\n \"need_explorer_experience_your\": \"Faites l'expérience de\",\n \"need_explorer_personalized_demonstration\": \"votre démonstration personnalisée\",\n \"full-screen\": \"Plein écran\",\n \"varilux_choice_limited_posture\": \"Changements de posture limités\",\n \"varilux__mandatory\": \"Obligatoire\",\n \"need_explorer_multiple_choice_question\": \"Questionnaire à choix multiple\",\n \"lens_proposal_builder_lpb_need_explorer\": \"Découverte des besoins\",\n \"varilux_btn_next_patient\": \"Nouvelle démonstration\",\n \"personalize_your_lenses_pyl_next\": \"Suivant\",\n \"varilux_choice_none\": \"Aucune gêne, mes verres progressifs me conviennent\",\n \"varilux_demo_card_panoramic\": \"Champ de vision panoramique\",\n \"standard_progressive_lens\": \"Verres progressifs haut de gamme\",\n \"quit-full-screen\": \"Quitter le plein écran\",\n \"varilux_choice_restricted\": \"Champ de vision réduit\",\n \"select_visual__prog_lens\": \"Choisissez les gênes visuelles rencontrées par votre patient avec ses verres progressifs actuels\",\n \"varilux_choice_sensation\": \"Effets de tangage pendant le mouvement\",\n \"varilux_the_best_overall\": \"Le meilleur\",\n \"varilux_progressive_lens\": \"verre progressif*\",\n \"welcome-to-your\": \"Bienvenue sur votre\",\n \"personalized-profile\": \"profil personnalisé\"\n }\n },\n \"country\": \"France\"\n },\n\t\"TR\": {\n\t\t\"language\": {\n\t\t\t\"trTR\": {\n\t\t\t\t\"current_lens_rx_current_lens\": \"Mevcut camlar\",\n\t\t\t\t\"need_explorer_single_choice_question\": \"Tek seçenekli soru\",\n\t\t\t\t\"varilux_demo_card_stabilized\": \"En zorlu koşullarda bile stabil görüş\",\n\t\t\t\t\"varilux_demo_card_sharp\": \"Düşük ışık koşullarında bile yüksek görüş keskinliği\",\n\t\t\t\t\"varilux_demo_card_extended\": \"Her koşulda doğal duruş\",\n\t\t\t\t\"need_explorer_warning_modification\": \"Herhangi bir değişiklik sonraki adımları etkileyecektir\",\n\t\t\t\t\"need_explorer_back\": \"İhtiyaç Belirleme'ye dön\",\n\t\t\t\t\"choose_a_different_location_language\": \"Farklı bir Konum/Dil seçin\",\n\t\t\t\t\"need_explorer_continue\": \"Devam edin\",\n\t\t\t\t\"exclusive\": \"Özel\",\n\t\t\t\t\"varilux_install\": \"Yükle\",\n\t\t\t\t\"varilux_install_web_app\": \"Daha iyi bir deneyim için uygulamayı yükleyin \",\n\t\t\t\t\"varilux_demo_card_instant\": \"Hareket halindeyken bile tüm mesafelerde anında netlik\",\n\t\t\t\t\"language_settings\": \"Dil Ayarları\",\n\t\t\t\t\"recommended\": \"Önerilen\",\n\t\t\t\t\"message_messrequired_rx\": \"Gerekli\",\n\t\t\t\t\"search_location_language\": \"Konum Seç\",\n\t\t\t\t\"select_your_location_language\": \"Konumunuzu/Dilinizi Seçin\",\n\t\t\t\t\"skip_button\": \"Atla\",\n\t\t\t\t\"suggested_location_language\": \"Önerilen Konum/Dil\",\n\t\t\t\t\"varilux_web_app\": \"Web Uygulaması\",\n\t\t\t\t\"need_explorer_warning\": \"Uyarı\",\n\t\t\t\t\"calculation_based_on_lenses\": \"*Hesaplamalar, 2022 Essilor AR-GE simülasyonlarına dayalı olarak, kullanıcılar tarafından beyan edilen progresif camlar için her bir kriterin önem düzeyine göre ağırlıklandırılmış cam ölçümleri baz alınarak yapılmıştır (Niteliksel Tüketici çalışması - Ipsos - Q1 2022 - BR/FR/IT/UK/US - n=4000 progresif cam kullanıcısı). Simülasyonlar, en alakalı rakip markalar üzerinde gerçekleştirildi: Bunlar, tüketiciler arasında iyi bilinen (Tüketici Gözlük Camı Markası Takibi - Ipsos - Q3 2022 - BR/CA/CN/FR/IN/IT/UK/ ABD - n=8000) ve birinci sınıf progresif camları sunan markalardı.​\",\n\t\t\t\t\"conclusion_rx_conclusion\": \"Sonuç\",\n\t\t\t\t\"current_progress_lens\": \"Mevcut progresif camlar\",\n\t\t\t\t\"demo\": \"Demo\",\n\t\t\t\t\"legal_notice_ln_01_demonstrations_title\": \"Demolar\",\n\t\t\t\t\"varilux_choice_difficulty_sharpness\": \"Keskin görüşü sürdürme zorluğu\",\n\t\t\t\t\"varilux_choice_difficulty_light\": \"Düşük ışık koşullarında keskin görüşte zorluk\",\n\t\t\t\t\"varilux_btn_end_experience\": \"Demoyu bitir \",\n\t\t\t\t\"need_explorer_experience_your\": \"Kişiselleştirilmiş\",\n\t\t\t\t\"need_explorer_personalized_demonstration\": \"demonuzu deneyimleyin\",\n\t\t\t\t\"full-screen\": \"Tam ekran\",\n\t\t\t\t\"varilux_choice_limited_posture\": \"Kısıtlı duruş değişiklikleri\",\n\t\t\t\t\"varilux__mandatory\": \"Zorunlu\",\n\t\t\t\t\"need_explorer_multiple_choice_question\": \"Çoktan seçmeli soru\",\n\t\t\t\t\"lens_proposal_builder_lpb_need_explorer\": \"İhtiyaç Belirleme\",\n\t\t\t\t\"varilux_btn_next_patient\": \"Yeni demo\",\n\t\t\t\t\"personalize_your_lenses_pyl_next\": \"İleri\",\n\t\t\t\t\"varilux_choice_none\": \"Hiçbiri, progresif gözlük camlarımdan çok memnunum\",\n\t\t\t\t\"varilux_demo_card_panoramic\": \"Yanal alanlarda net görüş\",\n\t\t\t\t\"standard_progressive_lens\": \"Birinci sınıf progresif camlar\",\n\t\t\t\t\"quit-full-screen\": \"Tam ekrandan çık\",\n\t\t\t\t\"varilux_choice_restricted\": \"Kısıtlı görüş alanı\",\n\t\t\t\t\"select_visual__prog_lens\": \"Kullanıcının mevcut progresif camlarıyla yaşadığı görüş rahatsızlıklarını seçin\",\n\t\t\t\t\"varilux_choice_sensation\": \"Hareket halindeyken dalgalanma etkisi hissi\",\n\t\t\t\t\"varilux_the_best_overall\": \"Tüm özelliklerde\",\n\t\t\t\t\"varilux_progressive_lens\": \"en iyi progresif cam*\",\n\t\t\t\t\"welcome-to-your\": \"Kişiselleştirilmiş profilinize\",\n\t\t\t\t\"personalized-profile\": \"hoş geldiniz\"\n\t\t\t}\n\t\t},\n\t\t\"country\": \"Turkey\"\n\t},\n\t\"SG\": {\n \"language\": {\n \"enSG\": {\n \"current_lens_rx_current_lens\": \"Current lenses\",\n \"need_explorer_single_choice_question\": \"Single choice question\",\n \"varilux_demo_card_stabilized\": \"Stabilised vision even in the most demanding situations\",\n \"varilux_demo_card_sharp\": \"High visual acuity even in low light conditions\",\n \"varilux_demo_card_extended\": \"Natural posture in all circumstances\",\n \"need_explorer_warning_modification\": \"Any modification will influence the next steps\",\n \"need_explorer_back\": \"Back to Need Explorer\",\n \"choose_a_different_location_language\": \"Choose a different Location/Language\",\n \"need_explorer_continue\": \"Continue\",\n \"exclusive\": \"Exclusive\",\n \"varilux_install\": \"Install\",\n \"varilux_install_web_app\": \"Install the application for a better experience\",\n \"varilux_demo_card_instant\": \"Instant sharpness at all distances, even in motion\",\n \"language_settings\": \"Language Settings\",\n \"recommended\": \"Recommended\",\n \"message_messrequired_rx\": \"Required\",\n \"search_location_language\": \"Search Location\",\n \"select_your_location_language\": \"Select Your Location/Language\",\n \"skip_button\": \"Skip\",\n \"suggested_location_language\": \"Suggested Location/Language\",\n \"varilux_web_app\": \"Web App\",\n \"need_explorer_warning\": \"Warning\",\n \"calculation_based_on_lenses\": \"*Essilor R&D simulations – 2022 – calculation based on lensesn measurements weighted by the level of importance of each criterian for progressive lenses declared by users (Quantitative Consumer study - Ipsos - Q1 2022 - BR/FR/IT/UK/US - n=4000 progressive lens wearers) - Simulations done on most relevant competitive brands : brands with good level of awareness among consumers (Consumer Lens Brand Tracking - Ipsos - Q3 2022 - BR/CA/CN/FR/IN/IT/UK/US - n=8000) & offering premium progressive lenses.​\",\n \"conclusion_rx_conclusion\": \"Conclusion\",\n \"current_progress_lens\": \"Current progressive lenses\",\n \"demo\": \"Demo\",\n \"legal_notice_ln_01_demonstrations_title\": \"Demonstrations\",\n \"varilux_choice_difficulty_sharpness\": \"Difficulty to maintain sharpness\",\n \"varilux_choice_difficulty_light\": \"Difficulty to see sharply in low light conditions\",\n \"varilux_btn_end_experience\": \"End demonstration\",\n \"need_explorer_experience_your\": \"Experience your\",\n \"need_explorer_personalized_demonstration\": \"personalised demonstration\",\n \"full-screen\": \"Full screen\",\n \"varilux_choice_limited_posture\": \"Limited postural changes\",\n \"varilux__mandatory\": \"Mandatory\",\n \"need_explorer_multiple_choice_question\": \"Multiple choice question\",\n \"lens_proposal_builder_lpb_need_explorer\": \"Need Explorer\",\n \"varilux_btn_next_patient\": \"New demonstration\",\n \"personalize_your_lenses_pyl_next\": \"Next\",\n \"varilux_choice_none\": \"None, I am very sastisfied with my progressive lenses\",\n \"varilux_demo_card_panoramic\": \"Panoramic field of vision\",\n \"standard_progressive_lens\": \"Premium progressive lenses\",\n \"quit-full-screen\": \"Quit full screen\",\n \"varilux_choice_restricted\": \"Restricted field of vision\",\n \"select_visual__prog_lens\": \"Select the visual discomforts experienced by your patient with their current progressive lenses\",\n \"varilux_choice_sensation\": \"Sensation of swim effect while moving\",\n \"varilux_the_best_overall\": \"The best Varilux®\",\n \"varilux_progressive_lens\": \"progressive lens ever*\",\n \"welcome-to-your\": \"Welcome to your\",\n \"personalized-profile\": \"personalised profile\"\n }\n },\n \"country\": \"Singapore\"\n },\n \"TW\": {\n \"language\": {\n \"zhTW\": {\n \"current_lens_rx_current_lens\": \"現有鏡片\",\n \"need_explorer_single_choice_question\": \"單選題\",\n \"varilux_demo_card_stabilized\": \"即使在最嚴苛的情況下也有穩定的視力表現\",\n \"varilux_demo_card_sharp\": \"即使在低光源環境下也能保持清晰視力\",\n \"varilux_demo_card_extended\": \"任何情況下的自然姿勢\",\n \"need_explorer_warning_modification\": \"任何修改都會影響下一步\",\n \"need_explorer_back\": \"回到探索需求\",\n \"choose_a_different_location_language\": \"選擇不同的地區/語言\",\n \"need_explorer_continue\": \"繼續\",\n \"exclusive\": \"獨家的\",\n \"varilux_install\": \"安裝\",\n \"varilux_install_web_app\": \"安裝應用程序以獲得更好的體驗\",\n \"varilux_demo_card_instant\": \"瞬間清晰的動態視覺\",\n \"language_settings\": \"語言設定\",\n \"recommended\": \"建議的\",\n \"message_messrequired_rx\": \"必要的\",\n \"search_location_language\": \"搜尋地區\",\n \"select_your_location_language\": \"選擇您的地區/語言\",\n \"skip_button\": \"略過\",\n \"suggested_location_language\": \"選擇地區/語言\",\n \"varilux_web_app\": \"安裝網路應用程式\",\n \"need_explorer_warning\": \"警語\",\n \"calculation_based_on_lenses\": \"根據依視路國際公司2022年的研發模擬,基於使用者評估漸進鏡片各個產品特性的重要程度加權計算(資料來源:2022年第一季益普索市調公司在巴西、法國、義大利、英國與美國等地所執行的量化消費者研究,樣本數為4000名漸進鏡片配戴者)。該研究針對最相關的競爭品牌鏡片進行模擬測試:係指在消費者中具有良好知名度並提供高階漸進鏡片的品牌(資料來源:2022年第三季益普索市調公司於巴西、加拿大、中國、法國、印度、義大利、英國與美國等地執行的消費者鏡片品牌追蹤報告,樣本數為8000)。\",\n \"conclusion_rx_conclusion\": \"結論\",\n \"current_progress_lens\": \"現有漸進鏡片\",\n \"demo\": \"展示\",\n \"legal_notice_ln_01_demonstrations_title\": \"展示\",\n \"varilux_choice_difficulty_sharpness\": \"難以保持清晰度\",\n \"varilux_choice_difficulty_light\": \"在低光源環境下難以看清楚\",\n \"varilux_btn_end_experience\": \"結束展示\",\n \"need_explorer_experience_your\": \"體驗您的\",\n \"need_explorer_personalized_demonstration\": \"個人化設計\",\n \"full-screen\": \"全螢幕\",\n \"varilux_choice_limited_posture\": \"有限的姿勢變化\",\n \"varilux__mandatory\": \"必要性的\",\n \"need_explorer_multiple_choice_question\": \"多選題\",\n \"lens_proposal_builder_lpb_need_explorer\": \"探索需求\",\n \"varilux_btn_next_patient\": \"新的展示\",\n \"personalize_your_lenses_pyl_next\": \"下一個\",\n \"varilux_choice_none\": \"沒有,我對我的漸進鏡片非常滿意\",\n \"varilux_demo_card_panoramic\": \"擴增視野\",\n \"standard_progressive_lens\": \"高階漸進鏡片\",\n \"quit-full-screen\": \"停止全螢幕\",\n \"varilux_choice_restricted\": \"視野受限\",\n \"select_visual__prog_lens\": \"選擇配戴者使用目前漸進鏡片時所經歷的視覺不適\",\n \"varilux_choice_sensation\": \"移動時的晃動感受\",\n \"varilux_the_best_overall\": \"極致完美的\",\n \"varilux_progressive_lens\": \"漸進鏡片\",\n \"welcome-to-your\": \"歡迎來到您的\",\n \"personalized-profile\": \"個人化資料\"\n }\n },\n \"country\": \"Taiwan\"\n },\n \"MY\": {\n \"language\": {\n \"enMY\": {\n \"current_lens_rx_current_lens\": \"Current lenses\",\n \"need_explorer_single_choice_question\": \"Single choice question\",\n \"varilux_demo_card_stabilized\": \"Stabilised vision even in the most demanding situations\",\n \"varilux_demo_card_sharp\": \"High visual acuity even in low light conditions\",\n \"varilux_demo_card_extended\": \"Natural posture in all circumstances\",\n \"need_explorer_warning_modification\": \"Any modification will influence the next steps\",\n \"need_explorer_back\": \"Back to Need Explorer\",\n \"choose_a_different_location_language\": \"Choose a different Location/Language\",\n \"need_explorer_continue\": \"Continue\",\n \"exclusive\": \"Exclusive\",\n \"varilux_install\": \"Install\",\n \"varilux_install_web_app\": \"Install the application for a better experience\",\n \"varilux_demo_card_instant\": \"Instant sharpness at all distances, even in motion\",\n \"language_settings\": \"Language Settings\",\n \"recommended\": \"Recommended\",\n \"message_messrequired_rx\": \"Required\",\n \"search_location_language\": \"Search Location\",\n \"select_your_location_language\": \"Select Your Location/Language\",\n \"skip_button\": \"Skip\",\n \"suggested_location_language\": \"Suggested Location/Language\",\n \"varilux_web_app\": \"Web App\",\n \"need_explorer_warning\": \"Warning\",\n \"calculation_based_on_lenses\": \"*Essilor R&D simulations – 2022 – calculation based on lensesn measurements weighted by the level of importance of each criterian for progressive lenses declared by users (Quantitative Consumer study - Ipsos - Q1 2022 - BR/FR/IT/UK/US - n=4000 progressive lens wearers) - Simulations done on most relevant competitive brands : brands with good level of awareness among consumers (Consumer Lens Brand Tracking - Ipsos - Q3 2022 - BR/CA/CN/FR/IN/IT/UK/US - n=8000) & offering premium progressive lenses.​\",\n \"conclusion_rx_conclusion\": \"Conclusion\",\n \"current_progress_lens\": \"Current progressive lenses\",\n \"demo\": \"Demo\",\n \"legal_notice_ln_01_demonstrations_title\": \"Demonstrations\",\n \"varilux_choice_difficulty_sharpness\": \"Difficulty to maintain sharpness\",\n \"varilux_choice_difficulty_light\": \"Difficulty to see sharply in low light conditions\",\n \"varilux_btn_end_experience\": \"End demonstration\",\n \"need_explorer_experience_your\": \"Experience your\",\n \"need_explorer_personalized_demonstration\": \"personalised demonstration\",\n \"full-screen\": \"Full screen\",\n \"varilux_choice_limited_posture\": \"Limited postural changes\",\n \"varilux__mandatory\": \"Mandatory\",\n \"need_explorer_multiple_choice_question\": \"Multiple choice question\",\n \"lens_proposal_builder_lpb_need_explorer\": \"Need Explorer\",\n \"varilux_btn_next_patient\": \"New demonstration\",\n \"personalize_your_lenses_pyl_next\": \"Next\",\n \"varilux_choice_none\": \"None, I am very sastisfied with my progressive lenses\",\n \"varilux_demo_card_panoramic\": \"Panoramic field of vision\",\n \"standard_progressive_lens\": \"Premium progressive lenses\",\n \"quit-full-screen\": \"Quit full screen\",\n \"varilux_choice_restricted\": \"Restricted field of vision\",\n \"select_visual__prog_lens\": \"Select the visual discomforts experienced by your patient with their current progressive lenses\",\n \"varilux_choice_sensation\": \"Sensation of swim effect while moving\",\n \"varilux_the_best_overall\": \"The best Varilux®\",\n \"varilux_progressive_lens\": \"progressive lens ever*\",\n \"welcome-to-your\": \"Welcome to your\",\n \"personalized-profile\": \"personalised profile\"\n }\n },\n \"country\": \"Malaysia\"\n },\n \"PH\": {\n \"language\": {\n \"enPH\": {\n \"current_lens_rx_current_lens\": \"Current lenses\",\n \"need_explorer_single_choice_question\": \"Single choice question\",\n \"varilux_demo_card_stabilized\": \"Stabilised vision even in the most demanding situations\",\n \"varilux_demo_card_sharp\": \"High visual acuity even in low light conditions\",\n \"varilux_demo_card_extended\": \"Natural posture in all circumstances\",\n \"need_explorer_warning_modification\": \"Any modification will influence the next steps\",\n \"need_explorer_back\": \"Back to Need Explorer\",\n \"choose_a_different_location_language\": \"Choose a different Location/Language\",\n \"need_explorer_continue\": \"Continue\",\n \"exclusive\": \"Exclusive\",\n \"varilux_install\": \"Install\",\n \"varilux_install_web_app\": \"Install the application for a better experience\",\n \"varilux_demo_card_instant\": \"Instant sharpness at all distances, even in motion\",\n \"language_settings\": \"Language Settings\",\n \"recommended\": \"Recommended\",\n \"message_messrequired_rx\": \"Required\",\n \"search_location_language\": \"Search Location\",\n \"select_your_location_language\": \"Select Your Location/Language\",\n \"skip_button\": \"Skip\",\n \"suggested_location_language\": \"Suggested Location/Language\",\n \"varilux_web_app\": \"Web App\",\n \"need_explorer_warning\": \"Warning\",\n \"calculation_based_on_lenses\": \"*Essilor R&D simulations – 2022 – calculation based on lensesn measurements weighted by the level of importance of each criterian for progressive lenses declared by users (Quantitative Consumer study - Ipsos - Q1 2022 - BR/FR/IT/UK/US - n=4000 progressive lens wearers) - Simulations done on most relevant competitive brands : brands with good level of awareness among consumers (Consumer Lens Brand Tracking - Ipsos - Q3 2022 - BR/CA/CN/FR/IN/IT/UK/US - n=8000) & offering premium progressive lenses.​\",\n \"conclusion_rx_conclusion\": \"Conclusion\",\n \"current_progress_lens\": \"Current progressive lenses\",\n \"demo\": \"Demo\",\n \"legal_notice_ln_01_demonstrations_title\": \"Demonstrations\",\n \"varilux_choice_difficulty_sharpness\": \"Difficulty to maintain sharpness\",\n \"varilux_choice_difficulty_light\": \"Difficulty to see sharply in low light conditions\",\n \"varilux_btn_end_experience\": \"End demonstration\",\n \"need_explorer_experience_your\": \"Experience your\",\n \"need_explorer_personalized_demonstration\": \"personalised demonstration\",\n \"full-screen\": \"Full screen\",\n \"varilux_choice_limited_posture\": \"Limited postural changes\",\n \"varilux__mandatory\": \"Mandatory\",\n \"need_explorer_multiple_choice_question\": \"Multiple choice question\",\n \"lens_proposal_builder_lpb_need_explorer\": \"Need Explorer\",\n \"varilux_btn_next_patient\": \"New demonstration\",\n \"personalize_your_lenses_pyl_next\": \"Next\",\n \"varilux_choice_none\": \"None, I am very sastisfied with my progressive lenses\",\n \"varilux_demo_card_panoramic\": \"Panoramic field of vision\",\n \"standard_progressive_lens\": \"Premium progressive lenses\",\n \"quit-full-screen\": \"Quit full screen\",\n \"varilux_choice_restricted\": \"Restricted field of vision\",\n \"select_visual__prog_lens\": \"Select the visual discomforts experienced by your patient with their current progressive lenses\",\n \"varilux_choice_sensation\": \"Sensation of swim effect while moving\",\n \"varilux_the_best_overall\": \"The best Varilux®\",\n \"varilux_progressive_lens\": \"progressive lens ever*\",\n \"welcome-to-your\": \"Welcome to your\",\n \"personalized-profile\": \"personalised profile\"\n }\n },\n \"country\": \"Philippines\"\n },\n};\n/*\n{\n \"current_lens_rx_current_lens\": \"\",\n \"need_explorer_single_choice_question\": \"\",\n \"varilux_demo_card_stabilized\": \"\",\n \"varilux_demo_card_sharp\": \"\",\n \"varilux_demo_card_extended\": \"\",\n \"need_explorer_warning_modification\": \"\",\n \"need_explorer_back\": \"\",\n \"choose_a_different_location_language\": \"\",\n \"need_explorer_continue\": \"\",\n \"exclusive\": \"\",\n \"varilux_install\": \"\",\n \"varilux_install_web_app\": \"\",\n \"varilux_demo_card_instant\": \"\",\n \"language_settings\": \"\",\n \"recommended\": \"\",\n \"message_messrequired_rx\": \"\",\n \"search_location_language\": \"\",\n \"select_your_location_language\": \"\",\n \"skip_button\": \"\",\n \"suggested_location_language\": \"\",\n \"varilux_web_app\": \"\",\n \"need_explorer_warning\": \"\",\n \"calculation_based_on_lenses\": \"\",\n \"conclusion_rx_conclusion\": \"\",\n \"current_progress_lens\": \"\",\n \"demo\": \"\",\n \"legal_notice_ln_01_demonstrations_title\": \"\",\n \"varilux_choice_difficulty_sharpness\": \"\",\n \"varilux_choice_difficulty_light\": \"\",\n \"varilux_btn_end_experience\": \"\",\n \"need_explorer_experience_your\": \"\",\n \"need_explorer_personalized_demonstration\": \"\",\n \"full-screen\": \"\",\n \"varilux_choice_limited_posture\": \"\",\n \"varilux__mandatory\": \"\",\n \"need_explorer_multiple_choice_question\": \"\",\n \"lens_proposal_builder_lpb_need_explorer\": \"\",\n \"varilux_btn_next_patient\": \"\",\n \"personalize_your_lenses_pyl_next\": \"\",\n \"varilux_choice_none\": \"\",\n \"varilux_demo_card_panoramic\": \"\",\n \"standard_progressive_lens\": \"\",\n \"quit-full-screen\": \"\",\n \"varilux_choice_restricted\": \"\",\n \"select_visual__prog_lens\": \"\",\n \"varilux_choice_sensation\": \"\",\n \"varilux_the_best_overall\": \"\",\n \"varilux_progressive_lens\": \"\",\n \"welcome-to-your\": \"\",\n \"personalized-profile\": \"\"\n}\n*/","import IVariluxChoices from \"../../interface/varilux-choices.interface\"\n\nconst variluxChoices:IVariluxChoices[] = [\n {\n id:1,\n label:['varilux_choice_difficulty_sharpness','Difficulty to maintain sharpness'],\n selected:false,\n gtmId: 'varilux_choice_difficulty_sharpness'\n },\n {\n id:2,\n label:['varilux_choice_sensation','Sensation of swim effect while moving'],\n selected:false,\n gtmId: 'varilux_choice_sensation'\n },\n {\n id:3,\n label:['varilux_choice_restricted','Restricted field of vision'],\n selected:false,\n gtmId: 'varilux_choice_restricted'\n },\n {\n id:4,\n label:['varilux_choice_difficulty_light','Difficulty to see sharply in low light conditions'],\n selected:false,\n gtmId: 'varilux_choice_difficulty_light'\n },\n {\n id:5,\n label:['varilux_choice_limited_posture','Limited postural changes'],\n selected:false,\n gtmId: 'varilux_choice_limited_posture'\n },\n {\n id:6,\n label:['varilux_choice_none','None, I am very satisfied with my progressive lenses'],\n selected:false,\n gtmId: 'varilux_choice_none'\n },\n]\n\n\nexport default variluxChoices","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport variluxChoices from '../../constants/variluxG9/need-explorer-choices';\nimport IVariluxResult from '../../interface/varilux-matrix-result.interface';\nimport PrescriptionAddSegmentationType from '../../types/prescription-add-segmentation-varilux.type';\nimport PrescriptionEyeConditionType from '../../types/prescription-eye-condition-varilux.type';\nimport PrescriptionProductTypeVarilux from '../../types/prescription-product-varilux.type';\nimport iRootState from '../interface/root-state.interface';\nimport iVariluxG9, { iView } from '../interface/variluxG9.interface';\n\n\nconst initialState: iVariluxG9 = {\n view: 'intro',\n needExplorerChoices:variluxChoices,\n prescriptionVarilux: {\n productSelected: PrescriptionProductTypeVarilux.NONE,\n values: {\n sphere: { od: undefined, os: undefined },\n addition: undefined\n },\n sphereMean:undefined,\n addition:undefined,\n },\n ametropia: null,\n additionSegmentation:null,\n categoryPercentages:null,\n lensCategorySelected:false,\n showDownloadPopup:false,\n prescriptionVideoPlay:false,\n}\n\nconst variluxgG9Slice = createSlice({\n name: 'variluxG9',\n initialState,\n reducers: {\n changeView: (state, action: PayloadAction) => ( {...state, view:action.payload} ),\n selectChoice: (state, action: PayloadAction) => {\n const newChoices = [...state.needExplorerChoices.map(choice => {\n\n // deselect none if others are selected\n if(choice.id === 6 && action.payload !== 6){\n return {\n ...choice,\n selected: false\n }\n }\n\n // deselect others if none is selected.\n if(choice.id !== 6 && action.payload ===6){\n return {\n ...choice,\n selected:false\n }\n }\n\n // otherwise select / deselect\n if(choice.id === action.payload){\n return {\n ...choice,\n selected:!choice.selected\n }\n }\n return choice\n })]\n\n\n return {\n ...state,\n needExplorerChoices:newChoices\n }\n },\n savePrescription:(state, action: PayloadAction) => {\n const {sphere, addition} = action.payload\n\n const convertValuesToNumber = (value?:string) => {\n const isPositive = value?.[0] === '+'\n const number = value && value.length > 2 && value.slice(1)\n let convertedString:number;\n if(number){\n convertedString = isPositive ? +number : -number\n return convertedString\n } \n return undefined\n }\n const os = convertValuesToNumber(sphere?.os)\n const od = convertValuesToNumber(sphere?.od)\n const add = convertValuesToNumber(addition)\n\n return {\n ...state,\n prescriptionVarilux: {\n ...state.prescriptionVarilux,\n values:{\n ...action.payload\n },\n sphereMean: (os && od) && (od + os)/2,\n addition: add && add,\n\n }\n }\n },\n selectProduct:(state, action: PayloadAction) => {\n // reset values to initial state if selected product is None\n return {\n ...state,\n prescriptionVarilux:{\n ...state.prescriptionVarilux,\n values:{\n ...(action.payload === PrescriptionProductTypeVarilux.NONE ? \n initialState.prescriptionVarilux.values : \n state.prescriptionVarilux.values)\n },\n productSelected:action.payload\n }\n }\n },\n setEyeCondition:(state, action: PayloadAction) => {\n return {\n ...state,\n ametropia:action.payload\n }\n },\n setAddSegmentation:(state, action: PayloadAction) => {\n return {\n ...state,\n additionSegmentation:action.payload\n }\n },\n setCategoryPercentages:(state, action: PayloadAction) => {\n return {\n ...state,\n categoryPercentages:action.payload\n }\n },\n setLensCategorySelected:(state, action: PayloadAction) => {\n return {\n ...state,\n lensCategorySelected:action.payload,\n }\n },\n resetData:(state)=>{\n return{\n ...state,\n ...initialState,\n }\n },\n setShowDownloadPopup: (state, action: PayloadAction) => {\n return{\n ...state,\n showDownloadPopup:action.payload\n }\n },\n setPrescriptionVideoPlay: (state, action: PayloadAction) => {\n return{\n ...state,\n prescriptionVideoPlay:action.payload\n }\n },\n}\n});\n\nexport const getVariluxG9 = (state:iRootState) => state.variluxG9;\nexport default variluxgG9Slice;","import { configureStore, getDefaultMiddleware } from '@reduxjs/toolkit';\nimport appSlice from './slices/app.slice';\nimport variluxgG9Slice from './slices/variluxG9.slice';\nimport iRootState from './interface/root-state.interface';\n\nconst loadFromLocalStorage = (): iRootState | undefined => {\n try {\n const serialisedState = localStorage.getItem(\"persistantState\");\n if (serialisedState === null) return undefined;\n return JSON.parse(serialisedState) as iRootState;\n } catch (e) {\n console.warn(e);\n return undefined;\n }\n}\n\n\n\nconst store = configureStore({\n reducer: {\n app: appSlice.reducer,\n variluxG9:variluxgG9Slice.reducer\n },\n preloadedState: loadFromLocalStorage(),\n middleware: [...getDefaultMiddleware({immutableCheck: false, serializableCheck: false})]\n});\n\nexport default store;","\nconst routes = {\n home: {\n id: 'varilux-g9',\n path: '/',\n label: 'varilux_g9_varilux'\n },\n}\n\nexport default routes;","import * as React from \"react\";\n\ntype ProviderProps = {\n db: IDBDatabase,\n children: React.ReactNode\n}\n\nexport interface IndexedDBContextType {\n db: any,\n get: (table: string, key: string) => Promise,\n update : (table: string, data: any) => void,\n insert : (table: string, data: any) => void\n}\n\nexport const IndexedDBContext = React.createContext< IndexedDBContextType | undefined >(undefined)\n\n\nfunction IndexedDBProvider({db, children}: ProviderProps) {\n \n const database = db;\n\n const getData = (table: string, key: string) => {\n const tx = database.transaction(table,'readonly');\n const store = tx.objectStore(table);\n const getRequest = store.get(key);\n\n return new Promise((resolved, reject) => {\n getRequest.onsuccess = (ev: any) => {\n resolved(ev.target.result);\n }\n getRequest.onerror = (err: any) => { \n reject(err);\n }\n }); \n }\n\n // const updateData = (database:IDBDatabase,table: string, data: any) => {\n const updateData = (table: string, data: any) => { \n const tx = database.transaction(table,'readwrite');\n const store = tx.objectStore(table);\n const request = store.put(data);\n request.onsuccess = () => { }\n request.onerror = () => { }\n }\n\n const insertData = (table: string, data: any) => {\n const tx = database.transaction(table,'readwrite');\n const store = tx.objectStore(table);\n const request = store.add(data);\n request.onsuccess = () => { }\n request.onerror = () => { }\n }\n\n const value = {\n db: database,\n get: getData,\n update: updateData,\n insert: insertData\n }\n return (\n \n {children}\n \n )\n}\n\nexport default IndexedDBProvider","import React, { useEffect, useState } from 'react'\nimport { useSelector } from 'react-redux'\nimport { getVariluxG9 } from '../../../store/slices/variluxG9.slice'\nimport useBEM from '../../../utils/hooks/useBEM'\n\ninterface Props {\n}\n\nexport enum iViewStep {\n intro = 0,\n needExplorer,\n prescription,\n demonstrations,\n conclusion\n}\nconst ProgressBar:React.FC = () => {\n const [B, E] = useBEM('varilux-progress')\n const [multiplier, setMultiplier] = useState(1)\n const width:number = multiplier * 25\n const {view } = useSelector(getVariluxG9)\n\n\n\n useEffect(() => {\n setMultiplier(iViewStep[view])\n }, [view])\n \n\n return (\n
\n
\n {`${width}%`}\n
\n\n
\n \n
\n
\n )\n}\n\nexport default ProgressBar","type indexedDBType = {\n connect: (upgradeCallBack?: any) => Promise,\n createTables: (db: any) => void,\n get: (\n database:IDBDatabase, \n table: string, \n key: string\n ) => Promise,\n getAll: (\n database:IDBDatabase, \n table: string, \n condition?: (data: any) => boolean\n ) => Promise,\n queryByDateRange: (database:IDBDatabase, table: string, indexField: string, dateRange: {\n from?: Date,\n to?: Date\n }) => Promise,\n insert: (database:IDBDatabase, table: string, data: any, indexes?: { [key: string]: any }) => void,\n update: (database:IDBDatabase, table: string, data: any) => void,\n remove: (database:IDBDatabase, table: string, key: string) => Promise,\n}\n\nconst useIndexedDB = (): indexedDBType => {\n const database = 'varilux';\n const version = 1;\n const tables = ['userStore', 'applicationStore', 'lensDemoStore', 'localAssetsStore', 'languageStore', 'variluxG9Store'];\n\n // Note: 1 index per table\n const tableIndexes: {\n [key: string]: {\n name: string,\n options: any\n }\n } = {\n userStore: { name: 'createdDate', options: { unique:false} }\n }\n\n\n const connect = (upgradeCallBack?: any) => {\n const promise = new Promise((res, rej) => {\n let DBOpenRequest = window.indexedDB.open(database, version);\n DBOpenRequest.addEventListener('success', (ev: any) => {\n res(ev.target.result);\n });\n DBOpenRequest.addEventListener('upgradeneeded', (ev: any) => {\n if(upgradeCallBack)upgradeCallBack(ev.target);\n\n });\n DBOpenRequest.addEventListener('error', (err: any) => {\n rej(err)\n });\n })\n return promise;\n }\n\n const createTables = (db: any) => {\n tables.forEach( t => {\n if(!db.result.objectStoreNames.contains(t)){\n const store = db.result.createObjectStore(t, {\n keyPath: 'id'\n }); \n const indx = tableIndexes[t];\n if(indx){\n store.createIndex(indx.name, indx.name, indx.options);\n }\n } else {\n const indx = tableIndexes[t];\n const objectStore = db.transaction.objectStore(t);\n if(indx && !objectStore.indexNames.contains(indx.name)){\n objectStore.createIndex(indx.name, indx.name, { unique: false });\n }\n }\n })\n }\n\n const get = (database:IDBDatabase, table: string, key: string) => {\n const tx = database.transaction(table,'readonly');\n const store = tx.objectStore(table);\n const getRequest = store.get(key);\n\n return new Promise((resolved, reject) => {\n getRequest.onsuccess = (ev: any) => {\n resolved(ev.target.result);\n }\n getRequest.onerror = (err: any) => { \n reject(err);\n }\n }); \n }\n\n const getAll = (database:IDBDatabase, table: string, condition?: (data: any) => boolean) => { \n const tx = database.transaction(table,'readonly');\n const store = tx.objectStore(table);\n const request = store.openCursor();\n const all:any[] = [];\n return new Promise((resolved, reject) => {\n request.onsuccess = (ev: any) => {\n const cursor = request.result || ev.result; \n if(!cursor)return;\n if( \n ( cursor.value && condition && condition(cursor.value)) ||\n ( cursor.value && !condition )\n ){\n all.push(cursor.value); \n }\n cursor.continue();\n }\n tx.oncomplete = () => {\n resolved(all);\n }\n request.onerror = (err: any) => { \n reject(err);\n }\n }); \n }\n\n const insert = (database:IDBDatabase, table: string, data: any, indexes?: {\n [key: string]: any\n }) => {\n const tx = database.transaction(table,'readwrite');\n const store = tx.objectStore(table);\n \n let finalData = !indexes ? data : {\n ...data,\n ...indexes\n };\n\n const request = store.add(finalData);\n request.onsuccess = () => { }\n request.onerror = () => { }\n }\n\n const update = (database:IDBDatabase,table: string, data: any) => {\n const tx = database.transaction(table,'readwrite');\n const store = tx.objectStore(table);\n const request = store.put(data);\n request.onsuccess = () => { }\n request.onerror = () => { }\n }\n\n const remove = (database:IDBDatabase,table: string, key: string) => {\n const transaction = database.transaction([table], \"readwrite\");\n const request = transaction.objectStore(table).delete(key);\n\n return new Promise((resolved, reject) => {\n request.onsuccess = (ev: any) => {\n resolved(ev.target.result);\n }\n request.onerror = (err: any) => { \n reject(err);\n }\n });\n }\n\n const queryByDateRange = (\n database:IDBDatabase, \n table: string, \n indexField: string, \n dateRange: {\n from?: Date,\n to?: Date\n }\n ) => {\n const transaction = database.transaction([table],\"readonly\");\n const store = transaction.objectStore(table);\n if(store.indexNames.length === 0) return new Promise((res, rej) => rej('failed'));\n\n const index = store.index(indexField);\n let range: any;\n\n if(dateRange?.from && dateRange?.to ) {\n range = IDBKeyRange.bound(dateRange?.from, dateRange?.to);\n } else if(!dateRange?.from) {\n range = IDBKeyRange.upperBound(dateRange?.to);\n } else {\n range = IDBKeyRange.lowerBound(dateRange?.from);\n }\n \n let results: any[] = [];\n const promise = new Promise((resolved, reject) => {\n index.openCursor(range).onsuccess = (e: any) => {\n const cursor = e.target.result;\n if(cursor) {\n results = [...results, cursor.value];\n cursor.continue();\n } else {\n resolved(results);\n }\n }\n index.openCursor(range).onerror = (error: any) => reject(error)\n })\n \n return promise;\n }\n\n return {\n connect,\n createTables,\n get,\n getAll,\n insert,\n update,\n remove,\n queryByDateRange\n }\n}\n\nexport default useIndexedDB;","type bemType = [\n B: (modifierName?: string | string[]) => string,\n E: (elementName: string, modifiers?: string | string[]) => string,\n]\n\nconst useBEM = (blockName: string): bemType => {\n\n const E = (elementName: string, modifiers?: string | string[]): string => {\n\n let modifier = '';\n if (modifiers) {\n modifier = `${blockName}__${elementName}--${modifiers}`;\n if(Array.isArray(modifiers)){\n modifier = modifiers.map( m => m ? `${blockName}__${elementName}--${m}` : '').join(' ');\n }\n }\n\n return `${blockName}__${elementName} ${modifier}`.trim();\n }\n\n const B = (modifiers?: string | string[]): string => { \n \n let modifier = '';\n if (modifiers) {\n modifier = `${blockName}--${modifiers}`;\n if (Array.isArray(modifiers)) {\n modifier = modifiers.map( m => m ? `${blockName}--${m}` : '').join(' ');\n }\n }\n \n return `${blockName} ${modifier}`.trim();\n }\n\n return [\n B,\n E\n ]\n}\n\nexport default useBEM;","import React from 'react';\nimport useBEM from '../../utils/hooks/useBEM';\nimport ReactDOM from 'react-dom';\n\n\ninterface Props {\n show: boolean,\n message: string,\n buttons?: {\n label: string,\n id: string\n }[],\n onButtonSelect: (buttonId: string) => void\n}\n\nconst Alert : React.FC = ({\n show,\n message,\n buttons,\n onButtonSelect\n}) => {\n // VARIABLES\n const portal: any = document.getElementById(\"portal\");\n const [B, E] = useBEM('alert');\n\n const onClickHandler = (id: string) => {\n onButtonSelect(id)\n }\n\n const render = () => (\n
\n
\n

\n {message}\n

\n
\n {\n buttons && buttons.map( b => (\n \n ))\n }\n
\n
\n
\n )\n\n return ReactDOM.createPortal(render(),portal)\n}\n\nexport default Alert;","import React from 'react';\nimport { useHistory } from 'react-router';\nimport iRoute from '../../interface/route.interface';\n\ninterface Props {\n route?: iRoute,\n className?: string,\n click?: () => void\n}\n\nconst RouterLink : React.FC = ({\n route,\n className,\n children,\n click\n}) => {\n // VARIABLES\n const history = useHistory();\n\n // HOOKS\n\n // METHODS\n const onclickHandler = (event: React.MouseEvent) => {\n event.preventDefault();\n\n if(click) {\n click();\n }\n\n if(!route)return;\n history.push(route.path);\n }\n\n return (\n onclickHandler(e)} className={className} href=\"/\">\n {children}\n \n )\n}\n\nexport default RouterLink;","// import { backgroundPosition } from 'html2canvas/dist/types/css/property-descriptors/background-position';\n// import { backgroundSize } from 'html2canvas/dist/types/css/property-descriptors/background-size';\nimport React, { useEffect, useRef, useState } from 'react';\n\ninterface Props {\n name: string,\n type?: 'svg' | 'image' | 'png' | 'gif',\n extension?: 'png' | 'jpg' | 'gif',\n className?: string,\n click?: () => void,\n background?: boolean,\n customStyle?: any,\n position?: string\n\n // for gtm id\n gtmId?: string\n}\n\nconst Icon : React.FC = ({\n name,\n type = 'svg',\n extension = 'png',\n className,\n click,\n background = false,\n customStyle,\n position = 'top',\n gtmId\n }) => {\n // VARIABLES\n const [ image, setImage ] = useState();\n const folders = {\n svg: 'svg',\n image: 'images',\n png: 'png',\n gif: 'gif'\n }\n\n // METHODS\n const getFileExtension = () => {\n return type === 'svg' ? 'svg' : extension;\n }\n\n\n const onClickHandler = () => {\n if(click)click();\n }\n\n const renderImage = () => {\n if(background) {\n return \n ;\n }\n return \"\"\n }\n\n // HOOKS\n const mounting = useRef(false)\n useEffect(() => {\n mounting.current = true\n const loadImage = (imgName: string) => {\n const ext = getFileExtension();\n import(`../../assets/${folders[type]}/${imgName}.${ext}`).then(img => {\n if(mounting.current){\n setImage(img.default)\n };\n }).catch(()=> console.log(`Image not found: ${imgName}`));\n };\n loadImage(name);\n\n return () => {\n mounting.current = false\n }\n }, [name])\n\n return (\n <>\n { image && renderImage()}\n \n );\n}\n\nexport default Icon;\n","import { IconType } from \"./IconType\";\nimport stackedGroup from './icons/stacked-group';\n\nconst accountCircle = `M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 3c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3zm0 14.2c-2.5 0-4.71-1.28-6-3.22.03-1.99 4-3.08 6-3.08 1.99 0 5.97 1.09 6 3.08-1.29 1.94-3.5 3.22-6 3.22z`;\nconst gps = `M12 8c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm8.94 3c-.46-4.17-3.77-7.48-7.94-7.94V1h-2v2.06C6.83 3.52 3.52 6.83 3.06 11H1v2h2.06c.46 4.17 3.77 7.48 7.94 7.94V23h2v-2.06c4.17-.46 7.48-3.77 7.94-7.94H23v-2h-2.06zM12 19c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z`;\nconst close = `M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z`;\nconst add = `M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z`;\nconst minus = `M19 13H5v-2h14v2z`;\nconst arrowRight = `M6.23 20.23 8 22l10-10L8 2 6.23 3.77 14.46 12z`;\nconst arrowLeft = `M11.67 3.87 9.9 2.1 0 12l9.9 9.9 1.77-1.77L3.54 12z`;\nconst check = `M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z`;\nconst qrcode = `M19.26 13.952c.408 0 .74.331.74.74v4.567c0 .41-.332.741-.74.741h-4.567c-.41 0-.74-.332-.74-.74 0-.41.33-.741.74-.741h3.826v-3.826c0-.41.331-.741.74-.741zm-18.52 0c.41 0 .742.331.742.74v3.827h3.825c.41 0 .741.331.741.74 0 .41-.332.741-.74.741H.74C.33 20 0 19.668 0 19.26v-4.567c0-.41.332-.741.74-.741zm10.014-4.707v5.658h5.657v1.508H9.246v-5.657H3.589V9.245h7.165zM8.08 11.921v4.49h-4.49v-4.49h4.49zM6.57 13.43H5.097v1.474h1.474v-1.474zm9.84-4.183v4.184h-1.508v-2.676h-1.474v2.676h-1.508V9.246h4.49zM8.08 3.589v4.49h-4.49v-4.49h4.49zm8.332 0v4.49h-4.49v-4.49h4.49zm-5.657 0v4.49H9.246v-4.49h1.508zM6.571 5.097H5.097V6.57h1.474V5.097zm8.332 0H13.43V6.57h1.473V5.097zM5.307 0c.41 0 .741.332.741.74 0 .41-.331.742-.74.742H1.48v3.825c0 .409-.331.74-.74.74-.41 0-.741-.331-.741-.74V.741C0 .33.332 0 .74 0h4.567zM19.26 0c.41 0 .741.332.741.74v4.567c0 .409-.332.74-.74.74-.41 0-.741-.331-.741-.74V1.482h-3.826c-.41 0-.74-.332-.74-.741 0-.41.33-.74.74-.74h4.566z\" transform=\"translate(-822 -656) translate(373 631) translate(.84) translate(30 15) translate(334.258) translate(15 10) translate(69)`\n\nexport const SvgIcons: {\n [key in IconType]: string\n} = {\n gps,\n accountCircle,\n close,\n add,\n arrowRight,\n arrowLeft,\n minus,\n check,\n qrcode,\n stackedGroup\n}\n","const stackedGroup = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n`;\n\nexport default stackedGroup;","import React from 'react';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport { IconType } from './IconType';\nimport { SvgIcons } from './svg-icon-list';\nimport ReactHtmlParser from 'react-html-parser';\n\ninterface Props {\n className?: string,\n name: IconType,\n color?: string,\n width?: string,\n height?: string,\n circle?: boolean,\n bordered?: boolean,\n backgroundColor?: string,\n borderColor?: string,\n html?: boolean,\n withViewBox?: boolean,\n padding?: string,\n\n onClick?: () => void\n}\n\nconst SvgIcon : React.FC = ({\n className = '',\n name,\n color,\n width,\n height,\n circle = false,\n backgroundColor = 'transparent',\n borderColor,\n bordered,\n html = false,\n withViewBox = true,\n padding = '0rem',\n onClick\n}) => {\n\n const [B ,E] = useBEM('svg-icon');\n\n const cssProperties = () => {\n return {\n '--app-svg-icon-fill': color,\n '--app-svg-icon-height': height || width || '1.5rem',\n '--app-svg-icon-width': width || height || '1.5rem',\n '--app-svg-icon-background-color': backgroundColor,\n '--app-svg-icon-border-color': borderColor,\n '--app-svg-icon-padding': padding\n } as React.CSSProperties\n }\n\n const modfiers = () => {\n const mods = [];\n if(circle)mods.push('circle');\n if(bordered)mods.push('bordered');\n\n return mods;\n }\n\n const onClickHandler = () => {\n if(onClick)onClick()\n }\n\n return (\n
\n \n { !html && }\n\n { html && (\n ReactHtmlParser(SvgIcons[name])\n )}\n\n \n
\n );\n}\n\nexport default SvgIcon;","import React, { useEffect, useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport useBEM from '../utils/hooks/useBEM';\nimport SvgIcon from './../components/ui/svg-icon/SvgIcon';\nimport { useSelector, useDispatch } from 'react-redux';\nimport appSlice, { getApp } from '../store/slices/app.slice';\n\n// import { IndexedDBContext, IndexedDBContextType } from '../utils/context/indexedDBContext';\n\ninterface Props {\n show?: boolean,\n onClose?: () => void,\n hideCloseButton?: boolean,\n closeModalOnOutsideClick?: boolean,\n rightHeaderDetail?: string,\n height?: string,\n width?: string,\n\n radius?: string,\n className?: string,\n transparent?: boolean,\n style?: {\n width?: string,\n heigth?: string,\n borderRadius?: string\n },\n noPadding?: boolean\n closeButtonColor?:string,\n}\n\nconst Modal : React.FC = ({\n onClose,\n show = false,\n children,\n hideCloseButton = false,\n closeModalOnOutsideClick = true,\n rightHeaderDetail = \"\",\n height,\n width,\n radius,\n className = '',\n transparent = false,\n style,\n noPadding = false,\n closeButtonColor,\n}) => {\n\n // VARIABLES\n const [B, E] = useBEM('modal');\n const portal: any = document.getElementById(\"portal\");\n const [isWithBanner, withBanner] = useState(false);\n const { experience } = useSelector(getApp);\n // const {experience, isModalOpen, } = useSelector(getApp);\n const dispatch = useDispatch();\n // const {get} = React.useContext(IndexedDBContext) as IndexedDBContextType;\n // HOOKS\n // const videoRef = useRef();\n useEffect(() => {\n if(!show || !style)return;\n dispatch(appSlice.actions.setIsModalOpen(true))\n const bannerElement = document.getElementById('onetrust-banner-sdk');\n const visible = (bannerElement && bannerElement.style.display !== 'none');\n withBanner(visible as boolean);\n }, [show])\n\n\n // const [assetSource, setAssetSource] = useState()\n\n // METHODS\n const onCloseHandler = () => {\n if(onClose){\n dispatch(appSlice.actions.setIsModalOpen(false))\n onClose();\n }\n }\n\n const overlayOnClickHandler = () => {\n if(closeModalOnOutsideClick) onCloseHandler()\n }\n\n const customStyles = () => {\n return style ? style : {\n width,\n height,\n borderRadius: radius\n }\n }\n\n const mofifierClass = () => {\n let classes: string[] = [];\n if(transparent) classes.push('transparent');\n if(noPadding) classes.push('no-padding');\n if(isWithBanner)classes.push('with-banner');\n classes.push(experience);\n return classes;\n }\n\n if(!show) return null;\n return ReactDOM.createPortal(\n <>\n
\n
\n \n {\n !hideCloseButton && \n \n // \n
onCloseHandler()}\n >\n \n
\n }\n\n \n\n {\n hideCloseButton && rightHeaderDetail !== undefined && \n

{rightHeaderDetail}

\n }\n\n\n
\n {children}\n
\n \n \n
\n ,\n portal\n )\n}\n\nexport default Modal;","const settings: any = {\n environment:'uat',\n dev: {\n version: 'version: 0.0.1',\n apiUrl: 'https://essilor-sandbox-dev.apigee.net/gse/essilorcompanion/',\n GA: 'UA-203551100-2',\n // demoAssetsUrl: 'https://cpbx-dev-app-frc-03-companion.azurewebsites.net/sites/default/files/demo/'\n demoAssetsUrl: 'https://companion-cdn-dev.azureedge.net/demostration/optimized/',\n newAssetsUrl:'https://cpbxdevstafrccompanion.blob.core.windows.net/demostration/',\n siteAssets: 'https://companion-cdn-dev.azureedge.net/sites/assets/',\n dataStructureVersion: 66,\n signalRUrl: 'https://function-pwa-signalr-personal.azurewebsites.net',\n azureApiUrl: 'https://cpbx-dev-fnc-frc-companion.azurewebsites.net/api/',\n azureApiCodes: [\n 'XdDlrxDnhMaGPn91ffoXGPsmkly0vI6uCmzAU5ZTdpyRyHVoV4uFRQ==',\n 'ZCCbqSaNHqbYh/axQC6MNh4PlHHyFN7UmhwLHUL5RAAgr9QqVMfqAg==',\n 'Q8I1NaJjkxWBbOdK7J3FKyubys5UMpnk6T6U0Qk4DoLI/JMr921/1g==',\n 'jOjyPr0BHP7s0E7Mo3elhcQ4nwqNpSZ/tXTmTCIdDYrSUVpcysmYzQ=='\n ]\n },\n uat: {\n version: 'version: 0.0.1',\n // apiUrl: 'https://cpbx-tst-app-frc-01-companion.azurewebsites.net/api/v1/',\n apiUrl: 'https://essilor-int.apigee.net/gse/essilorcompanion/',\n GA: 'UA-197617238-1', // UAT\n // GA: 'UA-197524783-1', // DEV\n demoAssetsUrl: 'https://companion-cdn-qua.azureedge.net/demonstration/optimized/',\n newAssetsUrl:'https://cpbxtstaspfrc01companion.blob.core.windows.net/demonstration/',\n siteAssets: 'https://companion-cdn-qua.azureedge.net/sites/assets/',\n dataStructureVersion: 59,\n signalRUrl: 'https://cpbx-qua-fnc-frc-01.azurewebsites.net',\n azureApiUrl: 'https://cpbx-dev-fnc-frc-companion.azurewebsites.net/api/',\n azureApiCodes: [\n 'XdDlrxDnhMaGPn91ffoXGPsmkly0vI6uCmzAU5ZTdpyRyHVoV4uFRQ==',\n 'ZCCbqSaNHqbYh/axQC6MNh4PlHHyFN7UmhwLHUL5RAAgr9QqVMfqAg==',\n 'Q8I1NaJjkxWBbOdK7J3FKyubys5UMpnk6T6U0Qk4DoLI/JMr921/1g==',\n 'jOjyPr0BHP7s0E7Mo3elhcQ4nwqNpSZ/tXTmTCIdDYrSUVpcysmYzQ=='\n ]\n },\n prod: {\n version: 'version: 0.0.1',\n apiUrl: 'https://essilor-prd.apigee.net/gse/essilorcompanion/',\n GA: 'UA-202077407-1',\n // demoAssetsUrl: 'https://cpbx-dev-app-frc-03-companion.azurewebsites.net/sites/default/files/demo/'\n demoAssetsUrl: 'https://companion-cdn.azureedge.net/demonstration/optimized/',\n newAssetsUrl:'https://cpbxprdaspfrc01companion.blob.core.windows.net/demonstration/',\n siteAssets: 'https://companion-cdn.azureedge.net/sites/assets/',\n dataStructureVersion: 29,\n signalRUrl: 'https://function-pwa-signalr-prod.azurewebsites.net',\n azureApiUrl: 'https://cpbx-prd-fnc-frc-01.azurewebsites.net/api/',\n azureApiCodes: [\n 'Q4yW0Qf/F1R7OalWv5VgdknPLf5AXdKnrvZXK/TW1QeZx2XQHYLkYA==',\n 'utE2P5SPrgnAKNVxKTpsFkD6hp7tF1m-2_d4iZgnIGiyAzFuM_QFBg==',\n 'nZl7BF7YfbbkPuPl92TT4LVbB9nWz9FWQ78mFxaDawn3AzFucg5Oxg==',\n 'hLutOzwe1Yzp5i6uKyhvHEt-rcme3nfDqGmCz3PF0-QpAzFu8OSjtQ=='\n ]\n },\n}\n\nexport default settings;","import settings from \"./settings.constants\";\n\nconst apiURL = settings[settings.environment].apiUrl;\nconst withVersion = settings.environment !== 'prod' ? 'api/v1/' : '';\nconst apiUrlWithVersion = `${apiURL}${withVersion}`;\nconst {\n azureApiUrl,\n azureApiCodes\n} = settings[settings.environment];\n\nconst ENDPOINTS = {\n activateLicense: `${apiURL}bearertoken`, //register\n account: `${apiUrlWithVersion}account`,\n translation: `${apiUrlWithVersion}translation`,\n email: `${apiUrlWithVersion}email`,\n\n // TEMP\n\n lensThickness: `${azureApiUrl}lensthickness/calculate?code=${azureApiCodes[0]}`,\n eprom: (region: string, country: string) => `${azureApiUrl}eproms?code=${azureApiCodes[1]}®ion=${region}&country=${country}`,\n // emats: `https://cpbx-dev-app-frc-03-companion.azurewebsites.net/api/v1/emats`,\n // whatsnew: `https://cpbx-dev-app-frc-03-companion.azurewebsites.net/api/v1/whatsnew`,\n emats: `${apiUrlWithVersion}emats`,\n whatsnew: `${apiUrlWithVersion}whatsnew`,\n tutorial: `${apiUrlWithVersion}tutorial`,\n products: `${apiUrlWithVersion}products`,\n productCombi: `${apiUrlWithVersion}pricecombination`,\n masterLicenseData: `${azureApiUrl}config?code=${azureApiCodes[0]}`,\n orders: `${azureApiUrl}orders?code=${azureApiCodes[0]}`,\n order: (id: string) => `${azureApiUrl}orders/${id}?code=${azureApiCodes[0]}`,\n frametraces: (countryCode: string, shopId:string) => `${azureApiUrl}frametrace?countryShopId=${countryCode}-${shopId}&code=${azureApiCodes[2]}`,\n frametrace: (id: string) => `${azureApiUrl}frametrace/${id}?code=${azureApiCodes[3]}`\n}\n\nexport default ENDPOINTS;\n","import iAppStore from \"../../store/interface/app-store.interface\";\nimport axios from 'axios';\nimport ENDPOINTS from \"../../constants/endpoints\";\n\ntype hookType = {\n t: (key: string, fallback?: string) => string,\n getTranslations: (params: {\n onSuccess?: (res: any) => void,\n onError?: (err:any) => void,\n }) => void,\n\n getTranslations2: (region: string, loading?: boolean) => Promise<{\n status: 'success' | 'error',\n responseData: any\n }>,\n sortCountries: (data: any) => any,\n generateIconImage: (country: string) => string\n\n}\n\nconst useTranslation = (app: iAppStore): hookType => {\n\n const translate = (key: string, fallback?: string): string => { \n if(!app.translation)return key;\n //const multipleLanguages = [\"caCA\", \"chCH\", \"beBE\"];\n const lang = app.translation;\n if(!lang || !lang?.translation)return key;\n const text = lang.translation[key];\n return text || fallback || key;\n }\n\n const getTranslations = (params: {\n onSuccess?: (res: any) => void,\n onError?: (err:any) => void,\n }) => {\n const {\n onSuccess,\n onError\n } = params;\n\n axios.get(ENDPOINTS.translation, { headers: {Authorization : true}})\n .then((res) => onSuccess && onSuccess(res))\n .catch((err) => onError && onError(err))\n }\n\n const getTranslations2 = (region: string, loading = false): Promise<{\n status: 'success' | 'error',\n responseData: any\n }> => { \n const promise = new Promise<{\n status: 'success' | 'error',\n responseData: any\n }>((res, rej) => {\n axios.get(`${ENDPOINTS.translation}/${region || ''}`, { headers: {\n Authorization : true,\n background: !loading\n }})\n .then((resp) => res({\n status: 'success',\n responseData: resp\n }))\n .catch((err) => rej({\n status: 'error',\n responseData: err\n }))\n });\n return promise;\n }\n\n const sorter = ( a: string, b: string ): number => {\n const aa = a.toLocaleLowerCase();\n const bb = b.toLocaleLowerCase();\n if ( aa < bb )return -1; \n if ( aa > bb )return 1;\n return 0;\n }\n \n const sortCountries = (data: any) => {\n const entries = Object.entries(data);\n return entries.sort((a: any,b: any) => {\n return sorter(a[1].label, b[1].label)\n })\n }\n\n const generateIconImage = (countryName: string) => {\n return (countryName || '').toLocaleLowerCase().replace(/ /g,'_');\n }\n\n return {\n t: translate,\n getTranslations,\n getTranslations2,\n sortCountries,\n generateIconImage\n }\n}\n\nexport default useTranslation;","import React, { useEffect, useState } from \"react\";\nimport useBEM from \"../../../utils/hooks/useBEM\";\nimport Modal from \"../../../components/Modal\";\nimport SearchIcon from \"../../../assets/images/demonstrations/icons/Union.png\";\nimport useTranslation from \"../../../utils/hooks/useTranslation\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport appSlice, { getApp } from \"../../../store/slices/app.slice\";\nimport { IndexedDBContext, IndexedDBContextType } from \"../../../utils/context/indexedDBContext\";\nimport iG9CountryLanguages from \"../../../interface/g9-country-languages.interface\";\n\n\nconst LanguageSetting = () => {\n const dispatch = useDispatch();\n const { t } = useTranslation(useSelector(getApp));\n const [B, E] = useBEM('varilux-language-setting');\n const { language, g9CountryLanguages, g9Languages } = useSelector(getApp);\n const [selectedLanguage, setSelectedLanguage] = useState(language);\n const [showModal, setShowModal] = useState(false);\n const [searchText, setSearchText] = useState(\"\");\n const [dataList, setDataList] = useState([]);\n const [location, setLocation] = useState(localStorage.getItem('location') !== null ? localStorage.getItem('location') : 'default');\n const [continent, setContinent] = useState(\"\");\n const { get } = React.useContext(IndexedDBContext) as IndexedDBContextType;\n\n\n // HOOKS\n useEffect(() => {\n dispatch(appSlice.actions.setLanguage(location === 'default' ? 'enUK' : selectedLanguage));\n localStorage.setItem('location', location)\n }, [selectedLanguage, location])\n\n useEffect(() => {\n let strings = JSON.stringify(g9CountryLanguages);\n localStorage.setItem('countryLanguages', strings);\n setDataList(g9CountryLanguages);\n }, [g9CountryLanguages])\n\n\n const handleLocation = async (loc: any) => {\n if (loc === 'default') {\n setLocation('default')\n const engCountryCode = 'GB'\n const enCountryLanguageCode = 'enGB'\n let getLangfromDB = await get('languageStore', 'g9translations')\n let englishTranslation = getLangfromDB.value[engCountryCode].language[enCountryLanguageCode];\n dispatch(appSlice.actions.setTranslation({\n code: enCountryLanguageCode,\n country: 'USA',\n translation: englishTranslation,\n }));\n }\n\n setSelectedLanguage(loc === 'default' ? 'enUK' : loc)\n dispatch(appSlice.actions.setLanguage(loc === 'default' ? 'enUK' : loc));\n setLocation(loc);\n }\n\n const handlSearch = () => {\n let strings: any = localStorage.getItem('countryLanguages');\n const data = JSON.parse(strings);\n if (searchText === \"\") {\n setDataList(data);\n } else {\n let continents: any = [];\n\n data?.map((item: any) => {\t\n let countries: any = [];\n item.countries.map((country: any) => {\n if ((country.name.toLowerCase()).includes(searchText) || (country.language.name.toLowerCase()).includes(searchText)) {\n countries.push(country)\n }\n })\n if (countries.length > 0) {\n item.countries = countries;\n continents.push(item)\n }\n })\n setDataList(continents);\n }\n }\n\n const handleSelectLanguage = async (contenent: any, country: any) => {\n const countryCode = country.code;\n const countryLanguageCode = country.language.code + countryCode;\n const countryTranslationData = await get('languageStore', 'g9translations');\n\t\tdispatch(appSlice.actions.setTranslation({\n code: countryLanguageCode,\n country: country.name,\n translation: countryTranslationData.value[countryCode].language[countryLanguageCode]\n }));\n setLocation(country.language.code + country.code)\n }\n\n return (\n <>\n
setShowModal(true)}>\n
{selectedLanguage.substring(0,2).toUpperCase()}
\n
\n
\n setShowModal(false)}\n hideCloseButton={false}\n closeModalOnOutsideClick={true}\n className={B()}\n >\n
{t('language_settings', 'Language Settings')}
\n
\n \n
\n
\n setSearchText((e.target.value).toLowerCase())} type=\"text\" placeholder={t('search_location_language', \"Search location/language\")} />\n
\n
\n \n \"search-icon\"\n \n
\n
\n
\n\n
\n \n {\n g9Languages?.map((item, index) => {\n return (\n
\n {\n (index === 0 || item.code === location) && (\n
handleLocation(item.code)}>\n \n \n \n \n
\n )\n }\n
\n )\n })\n }\n
\n\n
\n \n {\n (dataList.length > 0) && dataList?.map((item: any, index: number) => {\n return (\n
\n
setContinent(item.continent === continent ? \"\" : item.continent)}>\n \n \n
\n {\n (item.continent === continent) && item?.countries?.map((country: any, index: number) => {\n return (\n
{\n setSelectedLanguage(country?.language?.code + country?.code);\n handleSelectLanguage(item.continent, country);\n }\n }>\n \n
\n )\n })\n }\n
\n )\n })\n }\n
\n
\n
\n \n \n )\n}\nexport default LanguageSetting;","import React, { useEffect, useState } from 'react'\nimport { useDispatch } from 'react-redux';\nimport RouterLink from '../../../components/ui/RouterLink';\nimport routes from '../../../constants/routes.constant';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport logo from '../../../assets/png/logo-white.png';\nimport Icon from '../../../components/ui/Icon';\nimport LanguageSetting from './LanguageSetting';\nimport variluxgG9Slice from '../../../store/slices/variluxG9.slice';\nimport RefreshIcon from \"../../../assets/svg/varilux-g9/icons/refresh.svg\";\n//import DemonstrationPopup from './DemonstrationPopup';\n//import { getApp } from '../../../store/slices/app.slice';\n\n\ninterface Props {\n\n}\n\nconst VarNavbarHeader: React.FC = () => {\n const [B, E] = useBEM('varilux-navbar-head')\n const [supported, setSupported] = useState(false)\n const [installed, setInstalled] = useState(null)\n const dispatch = useDispatch()\n //const { translation } = useSelector(getApp)\n\n useEffect(() => {\n const handler = (e: any) => {\n e.preventDefault()\n setSupported(true)\n setInstalled(e)\n }\n window.addEventListener('beforeinstallprompt', (handler))\n return () => window.removeEventListener(\"transitionend\", handler)\n }, [])\n\n const openDownloadPopUp = () => {\n dispatch(variluxgG9Slice.actions.setShowDownloadPopup(true))\n }\n\n const handleRefresh = () => {\n window.location.reload();\n }\n\n\n return (\n
\n \n \"essilor-logo\"\n \n\n \n\n {/* download and language selection */}\n
\n
\n refresh\n
\n \n {\n supported && installed !== null && <>\n
\n \n
\n \n \n }\n {/* {\n (translation?.country === \"Germany\") && (\n <>\n \n \n \n )\n } */}\n \n
\n
\n )\n}\n\nexport default VarNavbarHeader","import React from 'react';\nimport Icon from './Icon';\nimport useTranslation from '../../utils/hooks/useTranslation';\nimport { getApp } from '../../store/slices/app.slice';\nimport { useSelector } from 'react-redux';\nimport ExperienceType from '../../types/experience.type';\ninterface Props {\n text?: string,\n className?: string,\n type?: 'primary' | 'secondary' | 'simple',\n disabled?: boolean,\n icon?: string | React.ReactNode,\n iconPosition?: 'right' | 'left'\n outlined?: boolean,\n circle?: boolean,\n active?: boolean,\n weight?: 'bold' | 'normal',\n outlineType?: 'light' | 'colored' | 'none',\n textSize?: 'default' | 'small',\n themed?: boolean,\n soon?: boolean,\n click?: () => void,\n icontype?: 'svg' | 'image' | 'png' | 'gif',\n experience?: ExperienceType,\n\n //temporary\n notAvailable?: boolean,\n sunBack?:boolean\n\n //for Google tag manager\n id?:string,\n}\n\nconst Button : React.FC = ({\n text,\n className,\n type = \"primary\",\n disabled = false,\n icon,\n outlined = true,\n circle = false,\n active = false,\n iconPosition = 'right',\n weight = 'bold',\n outlineType = 'colored',\n textSize = 'default',\n themed = false,\n soon = false,\n click,\n icontype,\n experience,\n sunBack=false,\n id\n}) => {\n // VARIABLES\n const { t } = useTranslation(useSelector(getApp));\n const finalClass = () => {\n const classes = [];\n if(className)classes.push(className);\n if(disabled)classes.push(`button--disabled ${className}--disabled`);\n if(!text)classes.push(`button--icon-only`);\n if(outlined)classes.push(`button--outlined`);\n if(circle)classes.push(`button--circle`);\n if(active)classes.push(`button--active`);\n if(themed)classes.push(`button--themed`);\n if(soon)classes.push(`button--soon`);\n if(experience)classes.push(`button--${experience}`);\n if(sunBack)classes.push(`button--sun-back`)\n \n classes.push(`button--icon-${iconPosition}`);\n classes.push(`button--${weight}`);\n classes.push(`button--outline-${outlineType}`);\n classes.push(`button--text-${textSize}`);\n\n classes.push(`button--${type}`);\n return classes.join(\" \");\n }\n\n // HOOKS\n\n // METHODS\n const onClickHandler = () => {\n if(!click)return;\n click();\n }\n\n return (\n \n )\n}\n\nexport default Button;","import iVariluxSteps from \"../../interface/variluxSteps.interface\";\n\n\nexport const variluxSteps:iVariluxSteps[] = [\n {\n id:'needExplorer',\n label:['lens_proposal_builder_lpb_need_explorer', 'Need Explorer']\n },\n {\n id:'prescription',\n label:['current_lens_rx_current_lens', 'Current Lenses']\n },\n {\n id:'demonstrations',\n label:['legal_notice_ln_01_demonstrations_title', 'Demonstration']\n },\n {\n id:'conclusion',\n label:['conclusion_rx_conclusion', 'Conclusion']\n },\n]","const PRESCRIPTION_RULES = {\n standard: {\n sphere: {\n increment: 0.25,\n min: -20.00,\n max: 20.00,\n validation: {\n required: true,\n requiredSign: true\n }\n },\n cylinder: {\n increment: 0.25,\n min: -6,\n max: 6,\n validation: {\n required: false,\n requiredSign: true\n }\n },\n axis: {\n increment: 1,\n min: 0,\n max: 180,\n suffix: '°',\n validation: {\n required: false,\n requiredSign: false,\n }\n },\n addition: {\n increment: 0.25,\n min: 0.50,\n max: 4.00,\n validation: {\n required: false,\n requiredSign: true\n }\n }\n },\n ava: {\n sphere: {\n increment: 0,\n min: -20.00,\n max: 20.00,\n validation: {\n required: true,\n requiredSign: true\n }\n },\n cylinder: {\n increment: 0,\n min: -6,\n max: 6,\n validation: {\n required: false,\n requiredSign: true\n }\n },\n axis: {\n increment: 1,\n min: 0,\n max: 180,\n suffix: '°',\n validation: {\n required: false,\n requiredSign: false\n }\n },\n addition: {\n increment: 0.25,\n min: 0.50,\n max: 4.00,\n validation: {\n required: false,\n requiredSign: true\n }\n }\n }\n}\nconst PRESCRIPTION_RULES_VARILUX = {\n standard: {\n sphere: {\n increment: 0.25,\n min: -20.00,\n max: 20.00,\n validation: {\n required: true,\n requiredSign: true\n }\n },\n cylinder: {\n increment: 0.25,\n min: -6,\n max: 6,\n validation: {\n required: false,\n requiredSign: true\n }\n },\n axis: {\n increment: 1,\n min: 0,\n max: 180,\n suffix: '°',\n validation: {\n required: false,\n requiredSign: false,\n }\n },\n addition: {\n increment: 0.25,\n min: 0.50,\n max: 4.00,\n validation: {\n required: true,\n requiredSign: true\n }\n }\n },\n ava: {\n sphere: {\n increment: 0,\n min: -20.00,\n max: 20.00,\n validation: {\n required: true,\n requiredSign: true\n }\n },\n cylinder: {\n increment: 0,\n min: -6,\n max: 6,\n validation: {\n required: false,\n requiredSign: true\n }\n },\n axis: {\n increment: 1,\n min: 0,\n max: 180,\n suffix: '°',\n validation: {\n required: false,\n requiredSign: false\n }\n },\n addition: {\n increment: 0.25,\n min: 0.50,\n max: 4.00,\n validation: {\n required: false,\n requiredSign: true\n }\n }\n }\n}\n\n\n\nconst PRESCRIPTION_FORM = [\n {\n label: 'prescription_rx_sphere',\n name: 'sphere',\n fields: [\n {\n position: 'od',\n label: 'rx_righ_teye'\n },\n {\n position: 'os',\n label: 'rx_left_eye'\n }\n ]\n },\n {\n label: 'prescription_rx_cylinder_',\n name: 'cylinder',\n fields: [\n {\n position: 'od',\n label: 'rx_righ_teye'\n },\n {\n position: 'os',\n label: 'rx_left_eye'\n }\n ]\n },\n {\n label: 'prescription_rx_axis_',\n name: 'axis',\n fields: [\n {\n position: 'od',\n label: 'rx_righ_teye'\n },\n {\n position: 'os',\n label: 'rx_left_eye'\n }\n ]\n },\n {\n label: 'prescription_rx_addition_',\n name: 'addition',\n fields: [\n {}\n ]\n }\n]\nconst PRESCRIPTION_FORM_VARILUX = [\n {\n label: 'prescription_rx_sphere',\n name: 'sphere',\n fields: [\n {\n position: 'od',\n label: 'rx_righ_teye'\n },\n {\n position: 'os',\n label: 'rx_left_eye'\n }\n ]\n },\n {\n label: 'prescription_rx_addition_',\n name: 'addition',\n fields: [\n {}\n ]\n }\n]\n\nexport {\n PRESCRIPTION_FORM,\n // NO_RX_DATA,\n // PRESCRIPTION_LENS_DATA,\n // PRESCRIPTION_SUNWEAR_DATA,\n PRESCRIPTION_FORM_VARILUX,\n PRESCRIPTION_RULES_VARILUX,\n}\nexport default PRESCRIPTION_RULES;\n","enum PrescriptionAddSegmentationType {\n HIGH_ADD = 'high_add',\n MID_ADD = 'mid_add',\n LOW_ADD = 'low_add',\n}\n\nexport default PrescriptionAddSegmentationType;","import { useSelector } from \"react-redux\";\nimport { PRESCRIPTION_RULES_VARILUX } from \"../../constants/prescription.constants\";\nimport { iView } from \"../../store/interface/variluxG9.interface\";\nimport { getVariluxG9 } from \"../../store/slices/variluxG9.slice\";\nimport PrescriptionProductTypeVarilux from \"../../types/prescription-product-varilux.type\";\nimport { iViewStep } from \"../../pages/varilux-g9/components/ProgressBar\";\n\ntype hookType = {\n disableNext: (currentView: iView) => boolean\n disableButtonNav: (disabledView: iView) => boolean\n}\n\n\nconst useVariluxDisableButton = (): hookType => {\n //variables\n const { needExplorerChoices, prescriptionVarilux, view } = useSelector(getVariluxG9);\n const { productSelected, addition, values } = prescriptionVarilux\n\n // NEED EXPLORER\n const needExplorerHasSelectedValue = needExplorerChoices.every(choice => choice.selected === false)\n\n //PRESCRIPTION\n const sphereMax = PRESCRIPTION_RULES_VARILUX.standard.sphere.max\n const sphereMin = PRESCRIPTION_RULES_VARILUX.standard.sphere.min\n const additionMax = PRESCRIPTION_RULES_VARILUX.standard.addition.max\n const additionMin = PRESCRIPTION_RULES_VARILUX.standard.addition.min\n const od = values?.sphere?.od\n const os = values?.sphere?.os\n\n const disableNext = (currentView: iView) => {\n if (currentView === 'needExplorer') {\n return needExplorerHasSelectedValue\n }\n\n if (currentView === 'prescription') {\n if (productSelected === PrescriptionProductTypeVarilux.NONE) return true\n if (os && od && addition) {\n return !((os <= sphereMax && os >= sphereMin) &&\n (od <= sphereMax && od >= sphereMin) &&\n (addition <= additionMax && addition >= additionMin))\n }\n //if(!os && !od && !addition) return true\n // revert back to false when no logic on demo calculation without inputs on prescription is made.\n if (!os && !od && !addition) return false\n if (os || od || addition) return true\n }\n return false\n }\n\n const disableButtonNav = (disabledView: iView) => {\n switch (disabledView) {\n case 'needExplorer':\n return iViewStep[view] < iViewStep.needExplorer\n case 'prescription':\n return iViewStep[view] < iViewStep.prescription\n case 'demonstrations':\n return iViewStep[view] < iViewStep.demonstrations\n case 'conclusion':\n return iViewStep[view] < iViewStep.conclusion\n default:\n return false\n }\n }\n\n // Reserved in case they want the settings to be reverted back\n // const disableButtonNav = (disabledView:iView) => {\n // switch (disabledView) {\n // case 'needExplorer':\n // return false\n // case 'prescription':\n // return needExplorerHasSelectedValue\n // case 'demonstrations':\n // return demonstrationViewSettings()\n // case 'conclusion':\n // return !(view === 'demonstrations' || view === 'conclusion')\n // default:\n // return false\n // }\n // }\n\n\n // const demonstrationViewSettings = () => {\n // if (view === 'intro') {\n // return disableNext('needExplorer')\n // }\n // if (view === 'needExplorer') {\n // return true\n // }\n // if (view === 'prescription') {\n // return disableNext('prescription')\n // }\n // return false\n // }\n\n return {\n disableNext,\n disableButtonNav\n }\n}\n\nexport default useVariluxDisableButton;","import Varilux_Matrix from \"../../interface/varilux-matrix.interface\"\n\nconst varilux_matrix: Varilux_Matrix = {\n none:{\n low_myope:{\n low_add:{\n extended: 0,\n stabilized: 0,\n panoramic: 0,\n instant: 0,\n sharp: 0\n },\n mid_add:{\n extended: 0,\n stabilized:0,\n panoramic: 0,\n instant: 0,\n sharp: 0\n },\n high_add:{\n extended: 0,\n stabilized:0,\n panoramic:0,\n instant:0,\n sharp:0\n },\n },\n\n high_myope:{\n low_add:{\n extended:0,\n stabilized:0,\n panoramic:0,\n instant:0,\n sharp:0\n },\n mid_add:{\n extended:0,\n stabilized:0,\n panoramic: 0,\n instant:0,\n sharp: 0\n },\n high_add:{\n extended:0,\n stabilized: 0,\n panoramic: 0,\n instant: 0,\n sharp: 0\n }\n },\n\n emmetropic:{\n low_add:{\n extended: 0,\n stabilized:0,\n panoramic: 0,\n instant: 0,\n sharp: 0\n },\n mid_add:{\n extended: 0,\n stabilized: 0,\n panoramic: 0,\n instant: 0,\n sharp: 0\n },\n high_add:{\n extended: 0,\n stabilized: 0,\n panoramic: 0,\n instant: 0,\n sharp: 0\n }\n },\n\n low_hyperope:{\n low_add:{\n extended: 0,\n stabilized: 0,\n panoramic:0,\n instant: 0,\n sharp: 0\n },\n mid_add:{\n extended: 0,\n stabilized: 0,\n panoramic: 0,\n instant: 0,\n sharp: 0\n },\n high_add:{\n extended: 0,\n stabilized: 0,\n panoramic: 0,\n instant: 0,\n sharp: 0\n }\n },\n\n high_hyperope:{\n low_add:{\n extended: 0,\n stabilized: 0,\n panoramic: 0,\n instant: 0,\n sharp: 0\n },\n mid_add:{\n extended: 0,\n stabilized: 0,\n panoramic: 0,\n instant: 0,\n sharp: 0\n },\n high_add:{\n extended:0,\n stabilized: 0,\n panoramic: 0,\n instant: 0,\n sharp: 0\n }\n }\n },\n standard_progressive_lens:{\n low_myope:{\n low_add:{\n extended: 16.20822441,\n stabilized: -9.691148378,\n panoramic: 14.53908896,\n instant: 33.42395783,\n sharp: 51.04476716\n },\n mid_add:{\n extended: 19.56282605,\n stabilized: -13.3467453,\n panoramic: 9.356287705,\n instant: 51.02839098,\n sharp: 31.12484054\n },\n high_add:{\n extended: 128.7359399,\n stabilized: 12.07546201,\n panoramic: 40.20968547,\n instant: 76.96636986,\n sharp: 77.53441455\n },\n },\n\n high_myope:{\n low_add:{\n extended: 23.99720463,\n stabilized: -2.256157772,\n panoramic: 43.16455305,\n instant: 71.28381089,\n sharp: 25.37321562\n },\n mid_add:{\n extended: 23.08481623,\n stabilized: -13.1488358,\n panoramic: 24.50292839,\n instant: 93.09243687,\n sharp: 7.205707975\n },\n high_add:{\n extended: 92.76927984,\n stabilized: 10.03277559,\n panoramic: 59.20645529,\n instant: 99.00165343,\n sharp: 57.29566296\n }\n },\n\n emmetropic:{\n low_add:{\n extended: 23.34015273,\n stabilized: 9.605824648,\n panoramic: 20.64439144,\n instant: 34.91307856,\n sharp: 79.92902121\n },\n mid_add:{\n extended: 40.37075,\n stabilized: 4.101040789,\n panoramic: 14.50159067,\n instant: 31.9559952,\n sharp: 88.78596267\n },\n high_add:{\n extended: 135.1965586,\n stabilized: 21.01504333,\n panoramic: 48.09454081,\n instant: 93.39544742,\n sharp: 81.17735109\n }\n },\n\n low_hyperope:{\n low_add:{\n extended: 9.776435274,\n stabilized: 36.99800833,\n panoramic: 2.144376633,\n instant: 32.81223152,\n sharp: 160.8634637\n },\n mid_add:{\n extended: 21.71472302,\n stabilized: 41.09935725,\n panoramic: 5.977806836,\n instant: 28.13384894,\n sharp: 196.0510463\n },\n high_add:{\n extended: 70.95507669,\n stabilized: 12.40237305,\n panoramic: 16.19457286,\n instant: 52.2754674,\n sharp: 220.1450768\n }\n },\n\n high_hyperope:{\n low_add:{\n extended: -1.028660068,\n stabilized: 40.73388597,\n panoramic: 27.15544958,\n instant: 42.80880495,\n sharp: 87.40937178\n },\n mid_add:{\n extended: 8.683374204,\n stabilized: 47.45031677,\n panoramic: 39.90977245,\n instant: 40.27104252,\n sharp: 120.4507311\n },\n high_add:{\n extended: 30.96186004,\n stabilized: 17.23292186,\n panoramic: 39.98336997,\n instant: 44.33864805,\n sharp: 177.0129851\n }\n }\n },\n\n\n\n varilux_comfort:{\n low_myope:{\n low_add:{\n extended: 5.448985739,\n stabilized: 10.94952304,\n panoramic: 21.91285489,\n instant: 31.72980159,\n sharp: -5.371737417\n },\n mid_add:{\n extended: 4.595889293,\n stabilized: 12.64696123,\n panoramic: 35.07687963,\n instant: 41.02797777,\n sharp: -24.26750402\n },\n high_add:{\n extended: 16.56709117 ,\n stabilized: 28.50893927,\n panoramic: 56.21685447,\n instant: 60.54236944,\n sharp: -44.11983973\n }\n },\n\n high_myope:{\n low_add:{\n extended: 5.677038491,\n stabilized: 4.498251397,\n panoramic: 56.710483,\n instant: 48.05549108,\n sharp: -2.873110538\n },\n mid_add:{\n extended: 1.352374594,\n stabilized: 0.002154102,\n panoramic: 56.58118876,\n instant: 61.73542537,\n sharp: -20.8972008\n },\n high_add:{\n extended: 4.512768078,\n stabilized: 23.08171912,\n panoramic: 69.4862372,\n instant: 71.43196195,\n sharp: -48.04903585\n },\n },\n \n emmetropic:{\n low_add:{\n extended: 18.2919,\n stabilized: 23.91213614,\n panoramic: 43.05809833,\n instant: 42.62188655,\n sharp: 15.25837191\n },\n mid_add:{\n extended: 27.31846279,\n stabilized: 17.73911997,\n panoramic: 33.76485756,\n instant: 60.60317366,\n sharp: 17.93315676\n },\n high_add:{\n extended: 70.76921429,\n stabilized: 25.26914814,\n panoramic: 50.39139069,\n instant: 72.13168102,\n sharp: 15.04005366\n },\n },\n\n low_hyperope:{\n low_add:{\n extended: -0.528463019,\n stabilized: 36.3068722,\n panoramic: 33.04435987,\n instant: 48.71838875,\n sharp: 15.28430763\n },\n mid_add:{\n extended: 1.613130955,\n stabilized: 34.49939026,\n panoramic: 31.65944611,\n instant: 58.02086282,\n sharp: 12.71549122\n },\n high_add:{\n extended: 58.24191959,\n stabilized: 31.58201447,\n panoramic: 54.419417,\n instant: 64.83808459,\n sharp: 18.631578\n },\n },\n \n high_hyperope:{\n low_add:{\n extended: -5.135450625,\n stabilized: 30.95434037,\n panoramic: 76.16475532,\n instant: 47.77466953,\n sharp: 8.977145782\n },\n mid_add:{\n extended: -1.650745733,\n stabilized: 33.89650862,\n panoramic: 78.40382419,\n instant: 51.68105585,\n sharp: 9.318518358\n },\n high_add:{\n extended: 49.79208816,\n stabilized: 22.9179387,\n panoramic: 98.57813184,\n instant: 49.64507721,\n sharp: 19.45858675\n },\n },\n },\n\n\n varilux_x_series:{\n low_myope:{\n low_add:{\n extended: 1.762456715,\n stabilized: -17.47041642,\n panoramic: 10.460397,\n instant: 33.26781724,\n sharp: -7.066752853\n },\n mid_add:{\n extended: 4.014844902,\n stabilized: -29.34210938,\n panoramic: 28.28255067,\n instant: 61.89806629,\n sharp: -9.229877288\n },\n high_add:{\n extended: 3.720213688 ,\n stabilized: -3.907034721,\n panoramic: 33.32259589,\n instant: 53.99987003,\n sharp: -20.41589159\n }\n },\n\n high_myope:{\n low_add:{\n extended: 6.099394556,\n stabilized: -11.24397668,\n panoramic: 29.6509863,\n instant: 57.02026616,\n sharp: 1.741881791\n },\n mid_add:{\n extended: 11.4398299,\n stabilized: -21.44558221,\n panoramic: 69.28692902,\n instant: 106.2937577,\n sharp: -0.75424116\n },\n high_add:{\n extended: 9.713957086,\n stabilized: -4.483715819,\n panoramic: 58.43883824,\n instant: 72.02194374,\n sharp: -30.39756185\n }\n },\n\n emmetropic:{\n low_add:{\n extended: 2.254333354,\n stabilized: 8.61607726,\n panoramic: 25.27093007,\n instant: 8.606746637,\n sharp: -9.220858173\n },\n mid_add:{\n extended: 4.021798197,\n stabilized: 4.830478171,\n panoramic: 8.286340852,\n instant: 15.94996171,\n sharp: -7.404415363\n },\n high_add:{\n extended: 3.664538618,\n stabilized: 10.14444396,\n panoramic: 43.96047877,\n instant: 37.62403775,\n sharp: 1.301071358\n }\n },\n\n low_hyperope:{\n low_add:{\n extended: 0.90454517,\n stabilized: 16.73918951,\n panoramic: 29.25364798,\n instant: 18.57816417,\n sharp: -0.249089001\n },\n mid_add:{\n extended: 1.102349803,\n stabilized: 25.58310527,\n panoramic: 56.62228035,\n instant: 44.33703217,\n sharp: 5.782054932\n },\n high_add:{\n extended: 1.917567989,\n stabilized: 21.72325639,\n panoramic: 64.39004814,\n instant: 40.42320497,\n sharp: 5.206929909\n }\n },\n\n high_hyperope:{\n low_add:{\n extended: 5.602589971,\n stabilized: 15.3178461,\n panoramic: 85.10425063,\n instant: 34.55545842,\n sharp: -1.208388588\n },\n mid_add:{\n extended: 13.45117325,\n stabilized: 18.73217194,\n panoramic: 159.7095417,\n instant: 74.10811795,\n sharp: 1.242280466\n },\n high_add:{\n extended: 17.18117834,\n stabilized: 16.39429037,\n panoramic: 82.00828039,\n instant: 44.91682032,\n sharp: 15.0638362\n }\n },\n },\n\n\n varilux_physio_30:{\n low_myope:{\n low_add:{\n extended: 21.70113445,\n stabilized: -18.55069159,\n panoramic: 20.00408626,\n instant: 51.18732709,\n sharp: 3.246305651\n },\n mid_add:{\n extended: 32.55069424,\n stabilized: -20.04172913,\n panoramic: 25.16814333,\n instant: 67.75418439,\n sharp: -9.726443156\n },\n high_add:{\n extended: 74.4040218,\n stabilized: 5.038748671,\n panoramic: 22.15400087,\n instant: 60.07402951,\n sharp: -20.13190123\n }\n },\n\n high_myope:{\n low_add:{\n extended: 31.6388818,\n stabilized: -10.41030539,\n panoramic: 66.11487844,\n instant: 86.09175118,\n sharp: 15.62564294\n },\n mid_add:{\n extended: 42.86221774,\n stabilized: -23.37203384,\n panoramic: 65.96216617,\n instant: 104.0356712,\n sharp: 8.034370727\n },\n high_add:{\n extended: 71.89196383,\n stabilized: -1.268382962,\n panoramic: 46.43180918,\n instant: 78.28778891,\n sharp: -13.29860337\n }\n },\n\n emmetropic:{\n low_add:{\n extended: 7.98676395,\n stabilized: 13.77940479,\n panoramic: 23.38712871,\n instant: 14.3097305,\n sharp: -9.193546927\n },\n mid_add:{\n extended: 11.79925257,\n stabilized: 7.514958008,\n panoramic: -2.87627551,\n instant: 19.50952866,\n sharp: -11.2657667\n },\n high_add:{\n extended: 16.61305236,\n stabilized: 15.24441152,\n panoramic: 38.42455456,\n instant: 42.20645598,\n sharp: -13.47559895\n }\n },\n\n low_hyperope:{\n low_add:{\n extended: -1.534937081,\n stabilized: 33.22805453,\n panoramic: 68.99992466,\n instant: 40.44655422,\n sharp: -6.15207302\n },\n mid_add:{\n extended: 1.183407234,\n stabilized: 40.30873221,\n panoramic: 69.41925251,\n instant: 40.02471407,\n sharp: -7.41187986\n },\n high_add:{\n extended: 7.897521831,\n stabilized: 25.94484157,\n panoramic: 13.50543269,\n instant: 41.9286635,\n sharp: 10.38266078\n }\n },\n\n high_hyperope:{\n low_add:{\n extended: -0.965997159,\n stabilized: 38.99493466,\n panoramic: 95.30958285,\n instant: 55.82046703,\n sharp: -3.570450491\n },\n mid_add:{\n extended: 11.53119853,\n stabilized: 43.54463727,\n panoramic: 115.7199961,\n instant: 59.85084979,\n sharp: -2.444374378\n },\n high_add:{\n extended: 18.80136927,\n stabilized: 21.2156491,\n panoramic: 49.50962627,\n instant: 44.61326733,\n sharp: 18.6291229\n }\n },\n },\n}\n\n\nexport default varilux_matrix","enum PrescriptionEyeConditionType {\n LOW_MYOPE = 'low_myope',\n HIGH_MYOPE = 'high_myope',\n EMMETROPIC = 'emmetropic',\n LOW_HYPEROPE = 'low_hyperope',\n HIGH_HYPEROPE = 'high_hyperope',\n}\n\nexport default PrescriptionEyeConditionType;","export enum VariluxPreviewType {\n IMAGE = \"image\",\n VIDEO = \"video\",\n}\ninterface listItem {\n title: string,\n source: string,\n}\ninterface previewItem {\n type: VariluxPreviewType,\n list: listItem[]\n}\ninterface iVariluxProductCard {\n video: string | undefined;\n category: string,\n image: string,\n title: string | string[],\n isRecommended: boolean,\n isExclusive: boolean,\n previewItems: previewItem,\n}\n\nexport default iVariluxProductCard;","import varilux_matrix from \"../../constants/variluxG9/varilux-products-matrix\";\nimport IVariluxResult from \"../../interface/varilux-matrix-result.interface\";\nimport PrescriptionAddSegmentationType from \"../../types/prescription-add-segmentation-varilux.type\";\nimport PrescriptionEyeConditionType from \"../../types/prescription-eye-condition-varilux.type\";\nimport PrescriptionProductTypeVarilux from \"../../types/prescription-product-varilux.type\";\n\ntype hookType = {\n getAmetropia: (value:number) => PrescriptionEyeConditionType | null\n getAddSegmentation: (n: number) => PrescriptionAddSegmentationType | null\n getCategoryPercentages:(ametropia:PrescriptionEyeConditionType, add:PrescriptionAddSegmentationType, product:PrescriptionProductTypeVarilux) => IVariluxResult | null\n}\n\nconst useVariluxMatrix = (): hookType => {\n\n const getAmetropia = (value:number) =>{\n if(value >= -3 && value < -0.75)return PrescriptionEyeConditionType.LOW_MYOPE\n\n if( value < -3)return PrescriptionEyeConditionType.HIGH_MYOPE\n\n if( value >= -0.75 && value <= 0.75 ) return PrescriptionEyeConditionType.EMMETROPIC\n\n if( value <= 3 && value > 0.75) return PrescriptionEyeConditionType.LOW_HYPEROPE\n\n if( value > 3) return PrescriptionEyeConditionType.HIGH_HYPEROPE\n\n return null\n }\n\n const getAddSegmentation = (n: number) => {\n if(n >= 2.5)return PrescriptionAddSegmentationType.HIGH_ADD\n\n if(n >= 2 && n < 2.5)return PrescriptionAddSegmentationType.MID_ADD\n\n if(n <= 1.75)return PrescriptionAddSegmentationType.LOW_ADD\n\n\n return null\n }\n\n\n const getCategoryPercentages = (ametropia:PrescriptionEyeConditionType | null, add:PrescriptionAddSegmentationType, product:PrescriptionProductTypeVarilux) => {\n if(ametropia !== null && add !== null){\n const category = varilux_matrix[product][ametropia][add]\n const {extended, stabilized, panoramic, instant,sharp} = category\n return {\n extended,\n stabilized,\n panoramic,\n instant,\n sharp\n }\n }\n return null\n }\n\n\n\n return {\n getAmetropia,\n getAddSegmentation,\n getCategoryPercentages,\n }\n}\n\nexport default useVariluxMatrix;","import { useDispatch, useSelector } from 'react-redux'\nimport Button from '../../../components/ui/Button'\nimport { variluxSteps } from '../../../constants/variluxG9/variluxSteps'\nimport { iView } from '../../../store/interface/variluxG9.interface'\nimport { getApp } from '../../../store/slices/app.slice'\nimport variluxgG9Slice, { getVariluxG9 } from '../../../store/slices/variluxG9.slice'\nimport PrescriptionProductTypeVarilux from '../../../types/prescription-product-varilux.type'\nimport useBEM from '../../../utils/hooks/useBEM'\nimport useTranslation from '../../../utils/hooks/useTranslation'\nimport useVariluxDisableButton from '../../../utils/hooks/useVariluxDisableButton'\nimport useVariluxMatrix from '../../../utils/hooks/useVariluxMatrix'\nimport ProgressBar from './ProgressBar'\n\nconst VarNavbarBottom = () => {\n //variables\n const dispatch = useDispatch()\n //hooks\n const [B, E] = useBEM('varilux-navbar-bottom')\n const { t } = useTranslation(useSelector(getApp));\n const { prescriptionVarilux, view } = useSelector(getVariluxG9)\n //const [stepProgress, setStepProgress] = useState(1);\n const { disableButtonNav } = useVariluxDisableButton()\n const { productSelected, sphereMean, addition } = prescriptionVarilux\n const { getAddSegmentation, getAmetropia, getCategoryPercentages } = useVariluxMatrix()\n\n\n //functions\n const activeStep = (v: iView) => {\n if (view === v) {\n return 'active'\n }\n }\n\n const changeView = (v: iView, i: number) => {\n //setStepProgress(i + 1);\n if (v === 'demonstrations') {\n if (productSelected === PrescriptionProductTypeVarilux.NONE) {\n dispatch(variluxgG9Slice.actions.setLensCategorySelected(false))\n }\n if (sphereMean && addition && productSelected !== PrescriptionProductTypeVarilux.NONE) {\n const add = getAddSegmentation(addition)\n const ametropia = getAmetropia(sphereMean)\n if (ametropia !== null && add !== null) {\n const categoryPercentages = getCategoryPercentages(ametropia, add, productSelected)\n dispatch(variluxgG9Slice.actions.setEyeCondition(ametropia))\n dispatch(variluxgG9Slice.actions.setAddSegmentation(add))\n dispatch(variluxgG9Slice.actions.setCategoryPercentages(categoryPercentages))\n dispatch(variluxgG9Slice.actions.setLensCategorySelected(true))\n }\n }\n }\n dispatch(variluxgG9Slice.actions.changeView(v))\n }\n\n return (\n
\n {/* buttons */}\n
\n {\n variluxSteps.map((step, i) =>\n changeView(step.id, i)}\n disabled={disableButtonNav(step.id)}\n />\n )\n }\n
\n\n\n {/* progress bar */}\n \n
\n )\n}\n\nexport default VarNavbarBottom","import React from 'react'\nimport { useSelector } from 'react-redux'\n// import { getApp } from '../../../store/slices/app.slice'\nimport useBEM from '../../../utils/hooks/useBEM'\nimport VarNavbarHeader from './VarNavbarHeader'\nimport VarNavbarBottom from './VarNavbarBottom'\nimport { getVariluxG9 } from '../../../store/slices/variluxG9.slice'\n\n\nconst VarNavbar:React.FC = () => {\n const [ B ] = useBEM('varilux-navbar')\n // const appStore = useSelector(getApp);\n const { prescriptionVideoPlay } = useSelector(getVariluxG9)\n\n return (\n <>\n {!prescriptionVideoPlay ?\n
\n \n \n
\n :\n null\n }\n \n\n )\n}\n\nexport default VarNavbar","import { useDispatch, useSelector } from 'react-redux';\nimport Button from '../../../components/ui/Button';\nimport Icon from '../../../components/ui/Icon';\nimport { getApp } from '../../../store/slices/app.slice';\nimport variluxgG9Slice from '../../../store/slices/variluxG9.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\n// import useGoto from '../../../utils/hooks/useGoto';\nimport useTranslation from '../../../utils/hooks/useTranslation';\n// import routes from '../../../constants/routes.constant'\nimport { useEffect, useState } from 'react';\n\nconst ConclusionVarilux = () => {\n const dispatch = useDispatch()\n const [B, E] = useBEM('varilux-conclusion')\n const { t } = useTranslation(useSelector(getApp));\n const { translation } = useSelector(getApp)\n const [endExperience, setEndExperience] = useState(false)\n// const goto = useGoto()\n\n\n const nextStep = () => {\n //dispatch(variluxgG9Slice.actions.resetData())\n //goto.route(routes.home)\n window.location.replace(window.name)\n }\n\n const restart = () => {\n dispatch(variluxgG9Slice.actions.resetData())\n dispatch(variluxgG9Slice.actions.changeView('intro'))\n }\n\n useEffect( () => {\n if(window.name){\n setEndExperience(true)\n }\n },[window.name])\n\n\n const setKoreanHeaderText = () => {\n if (translation?.country === 'Korea') {\n return (\n

\n 바리락스 최고의  \n \n 누진다초점 렌즈\n \n

\n )\n } return (\n

\n \n {t('varilux_the_best_overall', 'The best overall')}\n \n  \n \n {t('varilux_progressive_lens', 'progressive lens*')}\n \n

\n )\n }\n\n return (\n
\n
\n \n
\n
\n {/*

\n \n {t('varilux_the_best_overall', 'The best overall')}\n \n  \n \n {t('varilux_progressive_lens', 'progressive lens*')}\n \n

*/}\n {setKoreanHeaderText()}\n
\n
\n \n {\n endExperience &&\n \n }\n
\n
\n {t('calculation_based_on_lenses', '*Disclaimer: Essilor R&D simulations - 2022 - calculation based on lenses measurements weighted by the level of importance of each criteria for progressive lenses declared by users (Quantitative Consumer study - Ipsos - Q1 2022 - BR/FR/IT/UK/US - n=4000 progressive lens wearers) - Simulations done on most relevant competitive brands : brands with good level of awareness among consumers (Consumer Lens Brand Tracking - Ipsos - Q3 2022 - BR/CA/CN/FR/IN/IT/UK/US - n=8000) & offering premium progressive lenses.')}​\n
\n
\n )\n}\n\nexport default ConclusionVarilux","const variluxCategories = {\n EXTENDED: \"extended\",\n INSTANT: \"instant\",\n PANORAMIC: \"panoramic\",\n SHARP: \"sharp\",\n STABILIZED: \"stabilized\",\n};\nexport default variluxCategories;\n\n\n\n","import iVariluxProductCard, { VariluxPreviewType } from '../interface/varilux-product-card.interface';\nimport variluxCategories from '../constants/variluxG9/varilux-categories';\nimport Image1 from '../assets/images/demonstrations/01.webp';\nimport Image2 from '../assets/images/demonstrations/02.webp';\nimport Image3 from '../assets/images/demonstrations/03.webp';\nimport Image4 from '../assets/images/demonstrations/04.webp';\nimport Image5 from '../assets/images/demonstrations/05.webp';\n\nconst variluxProducts: iVariluxProductCard[] = [\n {\n category: variluxCategories.INSTANT,\n image: Image1,\n title: ['varilux_demo_card_instant','Instant sharpness at all distances, even in motion'],\n isRecommended: false,\n isExclusive: true,\n previewItems: {\n type: VariluxPreviewType.VIDEO,\n list: [{\n title: \"Standard progressive lens\",\n source: \"\"\n }, {\n title: \"Varilux® XR series™\",\n source: \"\"\n }],\n },\n video: \"\",\n },\n {\n category: variluxCategories.STABILIZED,\n image: Image2,\n title: ['varilux_demo_card_stabilized','Stabilized vision even in the most demanding situations'],\n isRecommended: true,\n isExclusive: false,\n previewItems: {\n type: VariluxPreviewType.VIDEO,\n list: [{\n title: \"Standard progressive lens\",\n source: \"\"\n }, {\n title: \"Varilux® XR series™\",\n source: \"\"\n }],\n },\n video: \"\",\n },\n {\n category: variluxCategories.PANORAMIC,\n image: Image3,\n title: ['varilux_demo_card_panoramic',\"Panoramic field of vision\"],\n isRecommended: false,\n isExclusive: false,\n previewItems: {\n type: VariluxPreviewType.VIDEO,\n list: [{\n title: \"Standard progressive lens\",\n source: \"\"\n }, {\n title: \"Varilux® XR series™\",\n source: \"\"\n }],\n },\n video: \"\",\n },\n {\n category: variluxCategories.SHARP,\n image: Image4,\n title: ['varilux_demo_card_sharp',\"High visual acuity even in low light conditions\"],\n isRecommended: false,\n isExclusive: false,\n previewItems: {\n type: VariluxPreviewType.VIDEO,\n list: [{\n title: \"Standard progressive lens\",\n source: \"\"\n }, {\n title: \"Varilux® XR series™\",\n source: \"\"\n }],\n },\n video: \"\",\n },\n {\n category: variluxCategories.EXTENDED,\n image: Image5,\n title: ['varilux_demo_card_extended',\"Natural posture in all circumstances\"],\n isRecommended: false,\n isExclusive: false,\n previewItems: {\n type: VariluxPreviewType.VIDEO,\n list: [{\n title: \"Standard progressive lens\",\n source: \"\"\n }, {\n title: \"Varilux® XR series™\",\n source: \"\"\n }],\n },\n video: \"\",\n },\n];\n\nexport default variluxProducts;","import iVariluxProductCard from \"../../../../interface/varilux-product-card.interface\";\nimport Button from '../../../../components/ui/Button';\nimport useBEM from \"../../../../utils/hooks/useBEM\";\nimport useTranslation from \"../../../../utils/hooks/useTranslation\";\nimport { useSelector } from \"react-redux\";\nimport { getApp } from \"../../../../store/slices/app.slice\";\nimport { useState } from \"react\";\n\nconst ProductCardVarilux = ({ product, setShowDemo, setPreviewItem, setPreviewItemIndex, index, setActiveIndex }: any) => {\n const item: iVariluxProductCard = product;\n const { t } = useTranslation(useSelector(getApp));\n const [ B, E ] = useBEM('varilux-demonstrations');\n const [active, setActive] = useState(false);\n const [playVideo, setPlayVideo] = useState(false);\n\n return (\n <>\n
{setActive(true);setActiveIndex(index)}}\n onMouseLeave={() => {\n setActive(false);\n setPlayVideo(false);\n setActiveIndex(-1)\n }}\n >\n
setPlayVideo(true)}\n >
\n\n setPlayVideo(false)}\n style={{ display: playVideo ? 'block' : 'none' }}\n >\n \n \n \n\n {\n item.isRecommended && (\n
\n \n {t('recommended', 'Recommended')}\n
\n )\n }\n {\n item.isExclusive && (\n {t('exclusive', 'Exclusive')}\n )\n }\n
{t(item.title[0], item.title[1])}
\n\n
{\n setPlayVideo(false);\n setPreviewItem(item);\n setShowDemo(true);\n setPreviewItemIndex(index);\n }\n }\n >\n \n
\n\n
\n \n\n )\n}\n\nexport default ProductCardVarilux;","import React from 'react';\nimport useBEM from '../../utils/hooks/useBEM';\n\ninterface Props {\n text?: string,\n color?: string\n}\n\nconst Spinner : React.FC = ({\n text,\n color = '#fff'\n}) => {\n // VARIABLES\n const [B, E] = useBEM('lds-spinner');\n\n // HOOKS\n\n // METHODS\n\n return (\n
\n {\n new Array(12).fill('').map((o,i) => (\n
\n ))\n }\n { text && {text} }\n
\n )\n}\n\nexport default Spinner;","import React from 'react';\nimport useBEM from '../utils/hooks/useBEM';\nimport Spinner from './ui/Spinner';\n\ninterface Props {\n show: boolean,\n text?: string,\n textOnly?: boolean\n}\n\nconst Loading : React.FC = ({\n text,\n textOnly,\n show\n}) => {\n // VARIABLES\n const [B, E] = useBEM('loading');\n // HOOKS\n\n // METHODS\n const selectRGB = () => \"0 134 214\"\n\n return (\n
\n {\n !textOnly &&\n \n }\n \n\n {\n text &&\n

{text}

\n }\n \n
\n )\n}\n\nexport default Loading;","import Icon_1 from \"../../../../assets/svg/varilux-g9/icons/control-1.svg\";\nimport Icon_2 from \"../../../../assets/svg/varilux-g9/icons/control-2.svg\";\nimport Icon_3 from \"../../../../assets/svg/varilux-g9/icons/control-3.svg\";\nimport Icon_4 from \"../../../../assets/svg/varilux-g9/icons/control-4.svg\";\nimport Icon_5 from \"../../../../assets/svg/varilux-g9/icons/control-5.svg\";\nimport Icon_1_white from \"../../../../assets/svg/varilux-g9/icons/control-1-white.svg\";\nimport Icon_2_white from \"../../../../assets/svg/varilux-g9/icons/control-2-white.svg\";\nimport Icon_3_white from \"../../../../assets/svg/varilux-g9/icons/control-3-white.svg\";\nimport Icon_4_white from \"../../../../assets/svg/varilux-g9/icons/control-4-white.svg\";\nimport Icon_5_white from \"../../../../assets/svg/varilux-g9/icons/control-5-white.svg\";\nimport Icon_fill from \"../../../../assets/svg/varilux-g9/icons/fill.svg\";\n// import Icon_fill_white from \"../../../../assets/svg/varilux-g9/icons/fill-white.svg\";\n// import Icon_ZoomIn from \"../../../../assets/images/demonstrations/icons/zoom-in.png\";\n// import Icon_ZoomOut from \"../../../../assets/images/demonstrations/icons/zoom-out.png\";\nimport Loading from \"../../../../components/Loading\";\nimport variluxProducts from \"../../../../utils/varilux-products\";\nimport { VariluxPreviewType } from \"../../../../interface/varilux-product-card.interface\";\nimport { useSelector } from \"react-redux\";\nimport { getVariluxG9 } from \"../../../../store/slices/variluxG9.slice\";\n\nconst ProductCardVariluxModalContent = ({ E, t, showModal, setShowModal, item, isDownloading, index, handlControlClick }: any) => {\n\n const { previewItems } = item;\n const products = variluxProducts;\n const {\n needExplorerChoices,\n } = useSelector(getVariluxG9);\n\n return (\n
\n {\n showModal && (\n
\n {/* {t('demo', 'Demo')} */}\n
\n )\n }\n
\n {\n isDownloading ? :\n previewItems?.list?.map((item: any, index: number) => {\n return (\n
\n {\n previewItems?.type === VariluxPreviewType.IMAGE ?\n Asset :\n \n }\n
\n
{item.title}
\n
\n
\n )\n })\n }\n
\n
\n {\n !isDownloading && (\n <>\n
\n
\n {\n index === 0\n ? {products[0].title[0]}\n : handlControlClick(0)} alt={products[0].title[0]} />\n }\n {\n needExplorerChoices[0].selected && {products[0].title[0]}\n }\n
\n
\n {\n index === 1\n ? {products[1].title[0]}\n : handlControlClick(1)} id={products[1].title[0]} alt={products[1].title[0]} />\n }\n {\n needExplorerChoices[1].selected && {products[1].title[0]}\n }\n
\n
\n {\n index === 2\n ? {products[2].title[0]}\n : handlControlClick(2)} id={products[2].title[0]} alt={products[2].title[0]} />\n }\n {\n needExplorerChoices[2].selected && {products[2].title[0]}\n }\n
\n
\n {\n index === 3\n ? {products[3].title[0]}\n : handlControlClick(3)} id={products[3].title[0]} alt={products[3].title[0]} />\n }\n {\n needExplorerChoices[3].selected && {products[3].title[0]}\n }\n
\n
\n {\n index === 4\n ? {products[4].title[0]}\n : handlControlClick(4)} id={products[4].title[0]} alt={products[4].title[0]} />\n }\n {\n needExplorerChoices[4].selected && {products[4].title[0]}\n }\n
\n
\n
\n
{t(item.title[0], item.title[1])}
\n {/*
{showModal ? t('full-screen', 'Full screen') : t('quit-full-screen', 'Quit full screen')}
\n
setShowModal(!showModal)}>
*/}\n
\n \n )\n }\n\n
\n
\n )\n}\nexport default ProductCardVariluxModalContent;","import Modal from \"../../../../components/Modal\";\nimport useBEM from \"../../../../utils/hooks/useBEM\";\nimport { useState } from \"react\";\nimport useTranslation from \"../../../../utils/hooks/useTranslation\";\nimport { useSelector } from \"react-redux\";\nimport { getApp } from \"../../../../store/slices/app.slice\";\nimport ProductCardVariluxModalContent from \"./ProductCardVariluxModalContent\";\n\nconst ProductCardVariluxModal = (props: any) => {\n const { t } = useTranslation(useSelector(getApp));\n const [B, E] = useBEM('varilux-demonstrations-modal');\n const [showModal, setShowModal] = useState(true);\n const modalStyle = {\n width: \"100%\",\n height: \"69.8rem\",\n borderRadius: \"15px\"\n }\n return (\n <>\n {\n showModal ?\n props.setShowDemo(false)}\n hideCloseButton={false}\n closeModalOnOutsideClick={true}\n className={B()}\n >\n \n \n : \n\n }\n \n\n )\n}\nexport default ProductCardVariluxModal;","import settings from \"../constants/settings.constants\";\nimport iTheme from \"../interface/theme.interface\";\n\ntype utilsType = {\n cloneObject: (obj: T) => T,\n downloadAsset: (src: string, progressCallback?: (percent: number) => void) => Promise,\n downloadAssetBase64: (src: string, callback?: (request: any, percent: number) => void) => Promise,\n generateRandomNumbers: (count: number) => number[],\n getThemeVariables: (theme: iTheme) => React.CSSProperties,\n getDateTimeDifference: (date1: Date, date2: Date) => string;\n isNullUndefined: (object: any) => boolean;\n //isMobileTablet: () => boolean;\n lensDemoURL: (path: string) => string;\n deepEqual: (object1: any, object2: any) => boolean\n}\n\nconst Utils = (): utilsType => {\n const cloneObject = (obj: T): T => {\n const str = JSON.stringify(obj);\n const json = JSON.parse(str);\n return json;\n }\n\n const downloadAsset = (src: string, progressCallback?: (percent: number) => void): Promise => {\n const req = new XMLHttpRequest();\n req.open('GET', src, true);\n req.responseType = 'blob';\n req.addEventListener(\"progress\", function (evt) {\n if (evt.lengthComputable) {\n const percentComplete = ((evt.loaded / evt.total) * 100).toFixed(0);\n if (progressCallback) progressCallback(Number(percentComplete));\n }\n }, false);\n const promise = new Promise((resolved, reject) => {\n req.onload = function () {\n if (this.status === 200) {\n const response = this.response;\n const blobData = URL.createObjectURL(response); // IE10+\n resolved(blobData);\n }\n }\n req.onerror = (e) => reject(e);\n });\n req.send();\n return promise;\n }\n\n const downloadAssetBase64 = (src: string, callback?: (request: any, percent: number) => void): Promise => {\n const req = new XMLHttpRequest();\n req.open('GET', src, true);\n req.responseType = 'blob';\n req.addEventListener(\"progress\", function (evt) {\n if (evt.lengthComputable) {\n const percentComplete = ((evt.loaded / evt.total) * 100).toFixed(0);\n if (callback) callback(req, Number(percentComplete));\n }\n }, false);\n const promise = new Promise((resolved, reject) => {\n req.onload = function () {\n if (this.status === 200) {\n const response = this.response;\n const reader = new FileReader();\n reader.readAsDataURL(response as any);\n reader.onloadend = function () {\n resolved(reader.result);//base64\n }\n }\n }\n req.onerror = (e) => reject(e);\n });\n req.send();\n return promise;\n }\n\n const generateRandomNumbers = (count: number): number[] => {\n const numbers = new Array(count).fill('').map((o, i) => i).sort(() => .5 - Math.random());\n return numbers;\n }\n\n const getThemeVariables = (theme: iTheme) => {\n return {\n \"--app-theme-main\": theme.main,\n \"--app-theme-dark\": theme.dark,\n \"--app-bubble-main\": theme?.bubbleMain,\n \"--app-bubble-sub\": theme?.bubbleSub,\n } as React.CSSProperties\n }\n\n const getDateTimeDifference = (start: Date, end: Date) => {\n if (start.getTime() > end.getTime()) return '00:00:00';\n\n const timediff = end.getTime() - start.getTime();\n return new Date(timediff).toISOString().slice(11, 19);\n }\n\n const isNullUndefined = (object: any) => {\n return object === undefined || object === null;\n }\n\n // const isMobileTablet = () => {\n // let check = false;\n // (function (a) { if (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0, 4))) check = true; })(navigator.userAgent || navigator.vendor);\n // return check;\n // };\n\n const lensDemoURL = (path: string) => {\n return `${settings[settings.environment].demoAssetsUrl}${path}`;\n }\n\n const deepEqual = (object1: any, object2: any) => {\n const keys1 = Object.keys(object1);\n const keys2 = Object.keys(object2);\n if (keys1.length !== keys2.length) return false;\n for (const key of keys1) {\n const val1 = object1[key];\n const val2 = object2[key];\n const areObjects = isObject(val1) && isObject(val2);\n if (\n (areObjects && !deepEqual(val1, val2)) ||\n (!areObjects && val1 !== val2)\n )\n return false;\n }\n return true;\n }\n\n const isObject = (object: any) => { return object != null && typeof object === 'object' }\n\n return {\n cloneObject,\n downloadAsset,\n downloadAssetBase64,\n generateRandomNumbers,\n getThemeVariables,\n getDateTimeDifference,\n isNullUndefined,\n //isMobileTablet,\n lensDemoURL,\n deepEqual\n }\n}\n\nexport default Utils;","const varluxDemoCategories = {\n INSTANT: \"GPS\",\n SHARP: \"LIVRE\",\n STABILIZED: \"STAIRS\",\n EXTENDED: \"TABLETTE\",\n PANOROMIC: \"TROTT\"\n}\nexport default varluxDemoCategories;","import settings from \"../constants/settings.constants\";\nimport CATEGORY from \"../constants/variluxG9/varilux-demo-categories\";\n\nconst newAssetsURL = (url: string) => {\n return `${settings[settings.environment].newAssetsUrl}VariluxG9/demo/${url}`;\n}\n\nconst variluxG9Videos = [\n {\n directory: CATEGORY.INSTANT,\n videos: [\n newAssetsURL(CATEGORY.INSTANT+\"/01_GPS A.mp4\"),\n newAssetsURL(CATEGORY.INSTANT+\"/01_GPS B.mp4\"),\n newAssetsURL(CATEGORY.INSTANT+\"/01_GPS C.mp4\"),\n newAssetsURL(CATEGORY.INSTANT+\"/01_GPS D.mp4\"),\n ],\n },\n {\n directory: CATEGORY.STABILIZED,\n videos: [\n newAssetsURL(CATEGORY.STABILIZED+\"/02_STAIRS A.mp4\"),\n newAssetsURL(CATEGORY.STABILIZED+\"/02_STAIRS B.mp4\"),\n newAssetsURL(CATEGORY.STABILIZED+\"/02_STAIRS C.mp4\"),\n newAssetsURL(CATEGORY.STABILIZED+\"/02_STAIRS D.mp4\"),\n ],\n }, \n {\n directory: CATEGORY.PANOROMIC,\n videos: [\n newAssetsURL(CATEGORY.PANOROMIC+\"/03_TROTT A.mp4\"),\n newAssetsURL(CATEGORY.PANOROMIC+\"/03_TROTT B.mp4\"),\n newAssetsURL(CATEGORY.PANOROMIC+\"/03_TROTT C.mp4\"),\n newAssetsURL(CATEGORY.PANOROMIC+\"/03_TROTT D.mp4\"),\n ],\n },\n {\n directory: CATEGORY.SHARP,\n videos: [\n newAssetsURL(CATEGORY.SHARP+\"/04_LIVRE A.mp4\"),\n newAssetsURL(CATEGORY.SHARP+\"/04_LIVRE B.mp4\"),\n newAssetsURL(CATEGORY.SHARP+\"/04_LIVRE C.mp4\"),\n newAssetsURL(CATEGORY.SHARP+\"/04_LIVRE D.mp4\"),\n ],\n },\n {\n directory: CATEGORY.EXTENDED,\n videos: [\n newAssetsURL(CATEGORY.EXTENDED+\"/05_TABLETTE A.mp4\"),\n newAssetsURL(CATEGORY.EXTENDED+\"/05_TABLETTE B.mp4\"),\n newAssetsURL(CATEGORY.EXTENDED+\"/05_TABLETTE C.mp4\"),\n newAssetsURL(CATEGORY.EXTENDED+\"/05_TABLETTE D.mp4\"),\n ],\n },\n {\n directory: 'PRESCRIPTIONS',\n videos:[\n newAssetsURL('PRESCRIPTIONS/varilux_prescription_video.mp4')\n ]\n }\n];\nexport default variluxG9Videos;","const prescriptionOptions = [\n // {\n // label: '',\n // value: 'none',\n // videoIndex: {\n // extended: 0,\n // stabilized: 0,\n // panoramic: 0,\n // instant: 0,\n // sharp: 0,\n // }\n // },\n {\n label: 'Varilux® X series™',\n value: 'varilux_x_series',\n videoIndex: { \n instant: 2,\n stabilized: 1,\n panoramic: 1,\n sharp: 1,\n extended: 1,\n },\n gtmId: \"current_lenses_varilux_x_series\"\n },\n {\n label: 'Varilux® Physio® 3.0',\n value: 'varilux_physio_30',\n videoIndex: {\n instant: 3,\n stabilized: 2,\n panoramic: 2,\n sharp: 1,\n extended: 2,\n },\n gtmId: \"current_lenses_varilux_physio_30\"\n },\n {\n label: 'Varilux® Comfort Max',\n value: 'varilux_comfort',\n videoIndex: {\n instant: 3,\n stabilized: 2,\n panoramic: 3,\n sharp: 1,\n extended: 1,\n },\n gtmId: \"current_lenses_varilux_comfort\"\n },\n {\n label: 'Premium Progressive Lenses',\n value: 'standard_progressive_lens',\n videoIndex: {\n instant: 3,\n stabilized: 2,\n panoramic: 3,\n sharp: 3,\n extended: 3,\n },\n gtmId: \"current_lenses_standard_progressive_lens\"\n },\n]\n\n\nexport default prescriptionOptions","import React, { useEffect, useRef, useState } from 'react';\nimport Slider from \"react-slick\";\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport Button from '../../../components/ui/Button';\nimport { getApp } from '../../../store/slices/app.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport variluxProducts from '../../../utils/varilux-products';\nimport ProductCardVarilux from './demonstrations-varilux/ProductCardVarilux';\nimport variluxgG9Slice, { getVariluxG9 } from \"../../../store/slices/variluxG9.slice\";\nimport ProductCardVariluxModal from './demonstrations-varilux/ProductCardVariluxModal';\nimport iVariluxProductCard from '../../../interface/varilux-product-card.interface';\nimport VARILUX_CATEGORY from '../../../constants/variluxG9/varilux-categories';\nimport { IndexedDBContext, IndexedDBContextType } from '../../../utils/context/indexedDBContext';\nimport Utils from '../../../utils/Utils';\nimport DEMO_CATEGORY from \"../../../constants/variluxG9/varilux-demo-categories\";\nimport variluxG9Videos from '../../../utils/varilux-g9-videos';\nimport prescriptionOptions from \"../../../constants/variluxG9/prescription-options\";\n\nconst DemonstrationsVarilux = () => {\n const dispatch = useDispatch();\n const { t } = useTranslation(useSelector(getApp));\n const [B, E] = useBEM('varilux-demonstrations');\n const { prescriptionVarilux } = useSelector(getVariluxG9);\n const { productSelected } = prescriptionVarilux;\n\n const { get, insert } = React.useContext(IndexedDBContext) as IndexedDBContextType;\n const { downloadAssetBase64 } = Utils();\n const {\n needExplorerChoices,\n lensCategorySelected,\n categoryPercentages,\n } = useSelector(getVariluxG9);\n const { translation } = useSelector(getApp)\n // hooks\n const [isDownloading, setIsDownloading] = useState(false);\n const [showDemo, setShowDemo] = useState(false);\n const [iVariluxProducts, setIVariluxProducts] = useState([]);\n const [previewItem, setPreviewItem] = useState();\n const [previewItemIndex, setPreviewItemIndex] = useState(0);\n const [activeIndex, setActiveIndex] = useState(-1);\n const loadedCount = useRef(0);\n const totalAssets = 2;\n const nextButtonContainerRef = useRef(null)\n\n // constants\n const settings = {\n className: \"slider variable-width\",\n initialSlide: 0,\n infinite: false,\n centerMode: true,\n slidesToShow: 5,\n slidesToScroll: 1,\n variableWidth: true,\n responsive: [\n {\n breakpoint: 1024,\n settings: {\n slidesToShow: 3,\n centerMode: false,\n }\n },\n {\n breakpoint: 1180,\n settings: {\n slidesToShow: 3,\n centerMode: false,\n }\n },\n {\n breakpoint: 1280,\n settings: {\n slidesToShow: 4,\n centerMode: false,\n }\n },\n {\n breakpoint: 1440,\n settings: {\n slidesToShow: 4,\n centerMode: false,\n }\n },\n {\n breakpoint: 1600,\n settings: {\n slidesToShow: 4,\n centerMode: false,\n }\n },\n {\n breakpoint: 1920,\n settings: {\n slidesToShow: 5,\n centerMode: false,\n }\n },\n {\n breakpoint: 2048,\n settings: {\n slidesToShow: 5,\n }\n },\n {\n breakpoint: 2304,\n settings: {\n slidesToShow: 5,\n }\n },\n ]\n };\n\n useEffect(() => {\n if (nextButtonContainerRef.current) {\n nextButtonContainerRef.current.scrollIntoView({ behavior: 'smooth' });\n }\n }, [])\n\n useEffect(() => {\n if (needExplorerChoices.length) {\n if (needExplorerChoices[needExplorerChoices.length - 1].selected) {\n variluxProducts?.map((item) => {\n return item.isRecommended = false;\n })\n } else {\n needExplorerChoices?.map((item: any, i: number) => {\n if (i < variluxProducts.length) {\n variluxProducts[i].isRecommended = item.selected\n }\n })\n }\n setIVariluxProducts(variluxProducts);\n }\n // unsubscribe\n return () => { };\n }, [needExplorerChoices]);\n\n useEffect(() => {\n // unsubscribe\n setPreviewAssets();\n return () => { };\n }, [lensCategorySelected])\n\n const setPreviewAssets = () => {\n if (lensCategorySelected) {\n // do apply dynamic video by categoryPercentages for each category\n variluxProducts?.map(async (item: iVariluxProductCard) => {\n const filteredItem = await filterVideoByCategoryPercentage(item.category, item);\n return filteredItem;\n });\n\n } else {\n // do apply static videos for each category\n variluxProducts?.map((item) => {\n const filteredItem = filterVideoByCategory(item.category, item);\n return filteredItem;\n });\n }\n setIVariluxProducts(variluxProducts);\n }\n const getVideoIndex = (percentage: number) => {\n const index = percentage < 15 ? 1 : percentage < 30 ? 2 : 3;\n return index;\n }\n\n const filterVideoByCategoryPercentage = async (category: string, item: iVariluxProductCard) => {\n // Logic of filter video by category percentage : TODO\n const resutls: any = categoryPercentages;\n const percentage = resutls[category];\n const videoIndex = getVideoIndex(percentage);\n const demoCategory = getDemoCategory(category);\n const filteredItem = await getPreviewAssets(demoCategory, videoIndex, item);\n return filteredItem;\n }\n\n const filterVideoByCategory = async (category: string, item: iVariluxProductCard) => {\n // Logic of filter video by category : TODO\n const videoIndex = getVideoIndexByCategory(category);\n const demoCategory = getDemoCategory(category);\n const filteredItem = await getPreviewAssets(demoCategory, videoIndex, item);\n return filteredItem;\n }\n\n const getPreviewAssets = async (category: string, index: number, item: iVariluxProductCard) => {\n const leftAsset = await get('variluxG9Store', category + '_' + index);\n const rightAsset = await get('variluxG9Store', category + '_0');\n //const Alpha = [\"A\",\"B\",\"C\",\"D\"];\n if (leftAsset && rightAsset) {\n const leftTitle = prescriptionOptions.find(item => item.value === productSelected);\n //item.previewItems.list[0].title = leftTitle?.label + ' '+ Alpha[index];\n if(leftTitle){\n item.previewItems.list[0].title = t(leftTitle.value,leftTitle?.label);\n }\n item.previewItems.list[0].source = leftAsset.asset;\n //item.previewItems.list[1].title = rightAsset.id;\n item.previewItems.list[1].source = rightAsset.asset;\n }\n return item;\n }\n\n const getDemoCategory = (category: string) => {\n let demoCategory: string = \"\";\n switch (category) {\n case VARILUX_CATEGORY.INSTANT:\n demoCategory = DEMO_CATEGORY.INSTANT;\n break;\n case VARILUX_CATEGORY.STABILIZED:\n demoCategory = DEMO_CATEGORY.STABILIZED;\n break;\n case VARILUX_CATEGORY.PANORAMIC:\n demoCategory = DEMO_CATEGORY.PANOROMIC;\n break;\n case VARILUX_CATEGORY.SHARP:\n demoCategory = DEMO_CATEGORY.SHARP;\n break;\n case VARILUX_CATEGORY.EXTENDED:\n demoCategory = DEMO_CATEGORY.EXTENDED;\n break;\n default:\n break;\n }\n return demoCategory;\n }\n\n const loaded = async (data?: any, flag?: boolean) => {\n loadedCount.current += 1;\n if (loadedCount.current >= totalAssets) {\n if (flag) {\n setPreviewAssets();\n }\n setTimeout(() => setIsDownloading(false),500);\n }\n }\n const handlDownloadAsset = async (category: string) => {\n setIsDownloading(true);\n setShowDemo(true);\n const resutls: any = categoryPercentages;\n const videoIndex = resutls ? getVideoIndex(resutls[category]): getVideoIndexByCategory(category); \n const demoCategory = getDemoCategory(category);\n for (const categoryItem of variluxG9Videos) {\n if (categoryItem.directory === demoCategory) {\n categoryItem?.videos?.map(async (asset, i) => {\n if (i === 0 || i === videoIndex) {\n const isAlreadyDownloaded = await isAlreadyPreloaded(categoryItem.directory, i);\n if (!isAlreadyDownloaded) {\n setIsDownloading(true);\n const base64 = await downloadAssetBase64(asset);\n const itemData = await insert('variluxG9Store', {\n id: `${categoryItem.directory}_${i}`,\n asset: base64,\n });\n await loaded(itemData, true);\n } else {\n await loaded();\n }\n }\n })\n }\n }\n\n }\n\n const getVideoIndexByCategory = (category: string) => {\n const prescriptionOption:any = prescriptionOptions.find(item => item.value === productSelected);\n return prescriptionOption?.videoIndex ? prescriptionOption.videoIndex[category]: 0;\n }\n\n const isAlreadyPreloaded = async (category: string, i: number) => {\n const id = `${category}_${i}`;\n const asset = await get('variluxG9Store', id);\n return asset ? true : false;\n }\n\n const nextStep = () => {\n dispatch(variluxgG9Slice.actions.changeView('conclusion'));\n }\n\n const handlControlClick = (index: number) => {\n setPreviewItem(iVariluxProducts[index]);\n setPreviewItemIndex(index)\n }\n\n const setKoreanHeaderText = () => {\n if (translation?.country === 'Korea') {\n return (\n <>\n \n 다양한 시나리오를\n \n \n  \n 가상체험\n  \n \n \n 해 보세요.\n \n \n )\n } else {\n return (\n <>\n {t('welcome-to-your', 'Welcome to your')} {t('personalized-profile', 'personalized profile')}\n \n )\n }\n }\n\n return (\n
\n
\n {/* {t('welcome-to-your', 'Welcome to your')} {t('personalized-profile', 'personalized profile')} */}\n {setKoreanHeaderText()}\n
\n
-1 ? ' fadein-card':''))}>\n \n {\n iVariluxProducts?.map((item, i) => (\n handlDownloadAsset(item.category)}\n setPreviewItem={setPreviewItem}\n setPreviewItemIndex={setPreviewItemIndex}\n />\n ))\n }\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n {/** Demo modal */}\n \n
\n )\n}\n\nexport default DemonstrationsVarilux","import { useEffect } from 'react';\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Button from \"../../../components/ui/Button\";\nimport Icon from \"../../../components/ui/Icon\"\nimport { getApp } from \"../../../store/slices/app.slice\";\nimport variluxgG9Slice from \"../../../store/slices/variluxG9.slice\";\nimport useBEM from \"../../../utils/hooks/useBEM\"\nimport useTranslation from \"../../../utils/hooks/useTranslation\";\n\n\nconst IntroVarilux = () => {\n const dispatch = useDispatch()\n const [B, E] = useBEM('varilux-intro')\n const { t } = useTranslation(useSelector(getApp));\n const { translation } = useSelector(getApp)\n\n const nextStep = () => {\n dispatch(variluxgG9Slice.actions.changeView('needExplorer'))\n }\n\n useEffect(() => {\n dispatch(variluxgG9Slice.actions.resetData())\n }, [])\n\n const setKoreanHeaderText = () => {\n if (translation?.country === 'Korea') {\n return (\n

\n \n 당신의  \n 개인맞춤렌즈\n \n \n \n 가상체험  \n 해 보세요.\n \n

\n ) \n } else {\n return (\n

\n {t('need_explorer_experience_your','Experience your')}\n \n {t('need_explorer_personalized_demonstration','personalized demonstration.')}\n \n

\n )\n }\n }\n\n return (\n
\n
\n \n
\n
\n {/*

\n {t('need_explorer_experience_your','Experience your')}\n \n {t('need_explorer_personalized_demonstration','personalized demonstration')}\n \n

*/}\n {setKoreanHeaderText()}\n
\n
\n )\n}\n\nexport default IntroVarilux","import useBEM from \"../../utils/hooks/useBEM\"\n\ninterface Props{\n text:string,\n click?: () => void,\n className?:string,\n selected?:boolean,\n gtmId?: string\n}\n\nconst Champ:React.FC = ({\n click,\n text,\n selected = true,\n gtmId\n }) => {\n const [B,E] = useBEM('champ')\n\n const onClickHandler = () => {\n if(!click)return;\n click();\n }\n\n return (\n
\n \n {text}\n \n \n {selected && \n
\n }\n
\n
\n )\n}\n\nexport default Champ","import useBEM from \"../../utils/hooks/useBEM\"\n\ninterface Props{\n className?:string\n flexColumn?:boolean\n}\n\n\nconst Dialogue:React.FC = ({children, className, flexColumn = false}) => {\n const [ B ] = useBEM('dialogue')\n \n return (\n
\n {children}\n
\n )\n}\n\nexport default Dialogue","//import { useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\n//import Modal from \"../../../components/Modal\";\nimport Button from \"../../../components/ui/Button\";\nimport Champ from \"../../../components/ui/Champ\"\nimport Dialogue from \"../../../components/ui/Dialogue\";\n//import Icon from \"../../../components/ui/Icon\";\nimport { getApp } from \"../../../store/slices/app.slice\";\nimport variluxgG9Slice, { getVariluxG9 } from \"../../../store/slices/variluxG9.slice\";\nimport useBEM from \"../../../utils/hooks/useBEM\"\nimport useTranslation from \"../../../utils/hooks/useTranslation\";\nimport useVariluxDisableButton from \"../../../utils/hooks/useVariluxDisableButton\";\n\ninterface Props {\n \n}\n\nconst NeedExplorerVarilux: React.FC = () => {\n const dispatch = useDispatch()\n const { t } = useTranslation(useSelector(getApp));\n const [B,E] = useBEM('varilux-needExplorer')\n const { needExplorerChoices, view } = useSelector(getVariluxG9); \n\n //hooks\n //const [showWarning, setShowWarning] = useState(false)\n const {disableNext} = useVariluxDisableButton()\n\n //functions\n const selectChoice = (id:number) => {\n dispatch(variluxgG9Slice.actions.selectChoice(id))\n }\n\n const nextStep = () => {\n dispatch(variluxgG9Slice.actions.changeView('prescription'))\n }\n\n return (\n\n
\n \n
\n \n {t('select_visual__prog_lens','Select the visual discomforts experienced by your patient with their current progressive lenses')}\n \n \n {t('need_explorer_multiple_choice_question','Multiple choice question')}\n \n
\n {/* choices */}\n
\n {\n needExplorerChoices.map((choice) => (\n selectChoice(choice.id)}\n />\n ))\n }\n
\n\n
\n */}\n \n \n )\n}\n\nexport default NeedExplorerVarilux","import React, { useEffect, useRef, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Button from \"../../../components/ui/Button\";\nimport Dialogue from \"../../../components/ui/Dialogue\";\nimport prescriptionOptions from \"../../../constants/variluxG9/prescription-options\";\nimport { getApp } from \"../../../store/slices/app.slice\";\nimport variluxgG9Slice, {\n getVariluxG9,\n} from \"../../../store/slices/variluxG9.slice\";\nimport PrescriptionProductTypeVarilux from \"../../../types/prescription-product-varilux.type\";\nimport useBEM from \"../../../utils/hooks/useBEM\";\nimport useTranslation from \"../../../utils/hooks/useTranslation\";\nimport useVariluxDisableButton from \"../../../utils/hooks/useVariluxDisableButton\";\nimport useVariluxMatrix from \"../../../utils/hooks/useVariluxMatrix\";\nimport Icon from \"../../../components/ui/Icon\";\nimport settings from \"../../../constants/settings.constants\";\nimport {\n IndexedDBContext,\n IndexedDBContextType,\n} from \"../../../utils/context/indexedDBContext\";\nimport Utils from \"../../../utils/Utils\";\nimport Champ from \"../../../components/ui/Champ\";\n\ninterface Props {\n\n}\n\nconst PrescriptionVarilux2: React.FC = () => {\n //variables, hooks\n const dispatch = useDispatch();\n const { t } = useTranslation(useSelector(getApp));\n const { prescriptionVarilux, view, prescriptionVideoPlay } =\n useSelector(getVariluxG9);\n const [B, E] = useBEM(\"varilux-prescription\");\n const { productSelected, sphereMean, addition } = prescriptionVarilux;\n const { getAddSegmentation, getAmetropia, getCategoryPercentages } =\n useVariluxMatrix();\n const { get, insert } = React.useContext(\n IndexedDBContext\n ) as IndexedDBContextType;\n const { downloadAssetBase64 } = Utils();\n\n const { disableNext } = useVariluxDisableButton();\n const [showSkip, setShowSkip] = useState(false);\n const [asset, setAsset] = useState(null);\n const videoRef = useRef();\n const newAssetsURL = (url: string) => {\n return `${\n settings[settings.environment].newAssetsUrl\n }VariluxG9/demo/${url}`;\n };\n const prescriptionVideo = newAssetsURL(\n \"PRESCRIPTIONS/varilux_prescription_video.mp4\"\n );\n\n \n useEffect(() => {\n let mounted = true\n const downloadPrescriptionAsset = async () => {\n const isPrescriptionVideoDownloaded = await isAlreadyPreloaded(\n \"PRESCRIPTIONS\",\n 0\n );\n if (!isPrescriptionVideoDownloaded) {\n const base64 = await downloadAssetBase64(prescriptionVideo);\n await insert(\"variluxG9Store\", {\n id: \"PRESCRIPTIONS_0\",\n asset: base64,\n });\n const asset = await get(\"variluxG9Store\", \"PRESCRIPTIONS_0\");\n if (asset.asset) setAsset(asset.asset);\n } else {\n const asset = await get(\"variluxG9Store\", \"PRESCRIPTIONS_0\");\n if (mounted && asset.asset) setAsset(asset.asset);\n }\n };\n downloadPrescriptionAsset();\n\n return () => {mounted = false}\n }, []);\n\n\n const isAlreadyPreloaded = async (category: string, i: number) => {\n const id = `${category}_${i}`;\n const asset = await get(\"variluxG9Store\", id);\n return asset ? true : false;\n };\n\n // functions\n const onSelectChamp = (option: string) => {\n if(option === productSelected){\n dispatch(variluxgG9Slice.actions.selectProduct(\"none\" as PrescriptionProductTypeVarilux));\n return\n }\n dispatch(\n variluxgG9Slice.actions.selectProduct(\n option as PrescriptionProductTypeVarilux\n )\n );\n };\n\n const next = () => {\n dispatch(variluxgG9Slice.actions.setPrescriptionVideoPlay(true));\n };\n\n const delayedShowSkip = () => {\n setTimeout(() => {\n setShowSkip(true);\n }, 3000);\n };\n\n const videoSkip = () => {\n if (productSelected === PrescriptionProductTypeVarilux.NONE) {\n dispatch(variluxgG9Slice.actions.setLensCategorySelected(false));\n }\n if (\n sphereMean &&\n addition &&\n productSelected !== PrescriptionProductTypeVarilux.NONE\n ) {\n const add = getAddSegmentation(addition);\n const ametropia = getAmetropia(sphereMean);\n if (ametropia !== null && add !== null) {\n const categoryPercentages = getCategoryPercentages(\n ametropia,\n add,\n productSelected\n );\n dispatch(variluxgG9Slice.actions.setEyeCondition(ametropia));\n dispatch(variluxgG9Slice.actions.setAddSegmentation(add));\n dispatch(\n variluxgG9Slice.actions.setCategoryPercentages(categoryPercentages)\n );\n dispatch(variluxgG9Slice.actions.setLensCategorySelected(true));\n }\n }\n dispatch(variluxgG9Slice.actions.setPrescriptionVideoPlay(false));\n dispatch(variluxgG9Slice.actions.changeView(\"demonstrations\"));\n };\n\n return (\n
\n {!prescriptionVideoPlay ? (\n \n {/* prescription part */}\n
\n \n {t('current_progress_lens', 'Current progressive lenses')}\n \n \n {t('need_explorer_single_choice_question','Single choice question')}\n \n
\n {/* choices */}\n
\n {prescriptionOptions.map((choice, i) => {\n return (\n onSelectChamp(choice.value)}\n />\n )\n })}\n
\n\n {/* bottom */}\n
\n \n {/* {t(\"varilux__mandatory\", \" *Mandatory \")} */}\n \n\n
\n {/* to do : confirm if will remove skip button */}\n {/*
\n {t('skip_button', 'Skip')}\n \n
*/}\n\n \n
\n
\n
\n ) : (\n <>\n {/*
*/}\n
\n \n \n \n
\n {showSkip && (\n
\n {t(\"skip_button\", \"Skip\")}\n \n
\n )}\n \n )}\n
\n );\n};\n\nexport default PrescriptionVarilux2;\n","import React from 'react'\n// import { useSelector } from 'react-redux';\nimport { iView } from '../../../store/interface/variluxG9.interface';\n// import { getApp } from '../../../store/slices/app.slice';\n// import useTranslation from '../../../utils/hooks/useTranslation';\nimport ConclusionVarilux from './ConclusionVarilux';\nimport DemonstrationsVarilux from './DemonstrationsVarilux';\nimport IntroVarilux from './IntroVarilux';\nimport NeedExplorerVarilux from './NeedExplorerVarilux';\nimport PrescriptionVarilux2 from './PrescriptionVarilux2';\n\ninterface Props {\n step?:iView\n}\n\nconst VariluxContainer:React.FC = ({step}) => {\n// const { t } = useTranslation(useSelector(getApp));\n // for gtm id\n\n const viewPage = (step:iView) => {\n switch (step) {\n case 'intro':\n return \n case 'needExplorer':\n return \n case 'prescription':\n return \n case 'demonstrations':\n return \n case 'conclusion':\n return \n \n default:\n break;\n }\n }\n\n return (\n <>\n {\n step && viewPage(step)\n }\n \n )\n}\n\nexport default VariluxContainer","import iVariluxG9Background from \"../../interface/variluxG9Background.interface\";\n\ntype iView = 'intro' | 'needExplorer' | 'prescription' | 'demonstrations' | 'conclusion'\n\n \n\nconst useVariluxBackground = (source:string[], view:iView) => {\n\n const backgrounds:iVariluxG9Background = {\n intro:{\n background:source[0]\n },\n needExplorer:{\n background:source[1]\n },\n prescription:{\n background:source[1]\n },\n demonstrations:{\n background:source[0]\n },\n conclusion:{\n background:source[0]\n }\n }\n const background = backgrounds[view]?.background\n const backgroundStyle = {\n height:'100%',\n width:'100%',\n backgroundImage:`url(${background ?? source[0]})`,\n backgroundSize: 'cover',\n backgroundPosition:'center'\n }\n return {backgroundStyle}\n}\n\nexport default useVariluxBackground;","import React, { useEffect, useState } from 'react';\n// import { useDispatch } from 'react-redux';\nimport useBEM from '../../utils/hooks/useBEM';\ninterface Props {\n percentage:any,\n use?: 'default' | 'varilux'\n}\n\nconst LoadingAssets : React.FC = ({\n percentage,\n use = 'default'\n}) => {\n // VARIABLES\n const useCase = use === 'varilux' ? '-varilux' : ''\n const [B, E] = useBEM(`loading-asset${useCase}`);\n // const dispatch = useDispatch();\n const [progress, setProgress] = useState([\"waiting\",\"waiting\",\"waiting\"])\n const loadingText = {\n // first: \"Our assistant is currently downloading the catalog\", // CHANGE TO We are loading your Varilux XR Series demonstration tool\n // second: \"We currently adjusting our latest technologies for you\",\n // third: \"Your companion will be ready soon\"\n first: \"We are loading your Varilux XR Series demonstration tool\",\n second: \"We are loading your Varilux XR Series demonstration tool\",\n third: \"We are loading your Varilux XR Series demonstration tool\"\n }\n \n \n // HOOKS\n useEffect(() => {\n let newList = progress;\n if(percentage <= 33){\n \n }\n if(percentage <= 33){\n if(percentage === 33){\n newList[0] = 'done'\n }else{\n newList[0] = ''\n }\n }\n else if(percentage >= 34 && percentage <= 66){\n if(percentage === 66){\n newList[1] = 'done'\n } else{\n newList[1] = ''\n }\n }\n else if(percentage >= 67){\n if(percentage === 100){\n newList[2] = 'done'\n }\n else{\n newList[2] = ''\n }\n }\n \n \n setProgress(newList)\n }, [percentage]);\n \n // console.log(percentage,progress)\n \n // METHODS\n const displayText = () =>{\n if(percentage <= 33)\n return loadingText.first;\n else if(percentage >= 34 && percentage <= 66)\n return loadingText.second;\n else if(percentage >= 67)\n return loadingText.third;\n }\n return (\n
\n
\n

{displayText()}

\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n )\n}\n\nexport default LoadingAssets;","import React, { useEffect, useRef, useState } from 'react';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport Utils from '../../../utils/Utils';\nimport LoadingAssets from '../../../components/ui/loadingAssets';\nimport { IndexedDBContext, IndexedDBContextType } from '../../../utils/context/indexedDBContext';\nimport variluxG9Videos from '../../../utils/varilux-g9-videos';\ninterface Props {\n\n}\nconst DownloadVariluxAssets: React.FC = () => {\n // VARIABLES\n const [ B ] = useBEM('download-assets');\n const { downloadAssetBase64 } = Utils();\n const [preloadComplete, setPreloadComplete] = useState(false);\n const { get, insert } = React.useContext(IndexedDBContext) as IndexedDBContextType;\n const [doneCount, setDoneCount] = useState(0);\n const loadedCount = useRef(0);\n const totalAssets = 21;\n\n // HOOKS\n useEffect(() => {\n downloadAssets();\n return () => { };\n }, []);\n const loaded = () => {\n loadedCount.current += 1;\n setDoneCount(prev => prev + 1);\n if (loadedCount.current >= totalAssets) {\n setPreloadComplete(true);\n }\n }\n const downloadPercentage = () => {\n const percent = (doneCount / totalAssets * 100);\n // return `${ Math.floor(percent) }%`;\n return Math.floor(percent);\n }\n const downloadAssets = async () => {\n for (const category of variluxG9Videos) {\n category?.videos?.map(async (asset, i) => {\n const isAlreadyDownloaded = await isAlreadyPreloaded(category.directory, i);\n\n if (!isAlreadyDownloaded) {\n const base64 = await downloadAssetBase64(asset)\n await insert('variluxG9Store', {\n id: `${category.directory}_${i}`,\n asset: base64,\n });\n loaded();\n } else {\n loaded();\n }\n })\n }\n }\n const isAlreadyPreloaded = async (category: string, i: number) => {\n const id = `${category}_${i}`;\n const asset = await get('variluxG9Store', id);\n return asset ? true : false;\n }\n return (\n
\n \n
\n );\n}\n\nexport default DownloadVariluxAssets;","import React, { useLayoutEffect, useState, useEffect, useContext } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport appSlice, { getApp } from '../../store/slices/app.slice'\nimport useBEM from '../../utils/hooks/useBEM'\nimport VarNavbar from './components/VarNavbar'\nimport background1 from '../.././assets/png/variluxG9-bg-4.webp'\nimport background2 from '../.././assets/png/variluxG9-bg-2.webp'\nimport background3 from '../.././assets/png/variluxG9-bg-3.webp'\nimport VariluxContainer from './components/VariluxContainer'\nimport variluxgG9Slice, { getVariluxG9 } from '../../store/slices/variluxG9.slice'\nimport useVariluxBackground from '../../utils/hooks/useVariluxBackground'\nimport DownloadVariluxAssets from './components/DownloadVariluxAssets'\nimport Modal from '../../components/Modal'\nimport Icon from '../../components/ui/Icon'\nimport useTranslation from '../../utils/hooks/useTranslation'\nimport Button from '../../components/ui/Button'\nimport { IndexedDBContext, IndexedDBContextType } from '../../utils/context/indexedDBContext'\nimport iG9CountryLanguages from '../../interface/g9-country-languages.interface'\n\n\ninterface Props {\n\n}\n\nconst Varilux: React.FC = () => {\n const dispatch = useDispatch()\n const [B, E] = useBEM('varilux')\n const { t } = useTranslation(useSelector(getApp));\n const { view, showDownloadPopup } = useSelector(getVariluxG9);\n const [installPWA, setInstallPWA] = useState(null) \n const { backgroundStyle } = useVariluxBackground([background1, background2, background3], view)\n const { get, insert, update } = useContext(IndexedDBContext) as IndexedDBContextType\n\n useLayoutEffect(() => {\n dispatch(variluxgG9Slice.actions.changeView('intro'))\n\n return () => {\n closeDownloadPopup()\n }\n }, [])\n\n useEffect(() => {\n fetchG9Translation()\n\n const handler = (e: any) => {\n e.preventDefault()\n setInstallPWA(e)\n }\n window.addEventListener('beforeinstallprompt', handler)\n return () => window.removeEventListener(\"transitionend\", handler)\n }, [])\n \n const closeDownloadPopup = () => {\n dispatch(variluxgG9Slice.actions.setShowDownloadPopup(false))\n }\n\n const handlInstallation = (e: any) => {\n e.preventDefault()\n installPWA?.prompt()\n dispatch(variluxgG9Slice.actions.setShowDownloadPopup(false))\n }\n\n const fetchG9Translation = async () => { // jump\n try {\n const res = await fetch('https://qua-bo.essilorcompanion.com/api/v1/translationg9')\n const data = await res.json()\n const translationData = await get('languageStore', 'g9translations')\n const todo = translationData ? update : insert\n todo('languageStore', {\n id: 'g9translations',\n value: data.translations\n })\n\n let sortedCountryLanguages = data.continents.map((continent: iG9CountryLanguages) => {\n return {\n ...continent,\n countries: continent.countries.sort((a, b) => {\n return a.name.localeCompare(b.name);\n })\n }\n });\n\n dispatch(appSlice.actions.setG9CountryLanguages(sortedCountryLanguages))\n dispatch(appSlice.actions.setG9Languages(data.languages))\n } catch (error) {\n return error\n }\n }\n\n const varilux_version = 'Version: 0.0.17'\n\n return (\n <>\n \n
\n \n \n {varilux_version} \n
\n\n {/* download modal */}\n {\n closeDownloadPopup()}\n closeButtonColor='#6E51EB'\n >\n
\n
\n \n
\n
\n \n {t('varilux_web_app', 'Installation web app')}\n \n

\n {t('varilux_install_web_app', 'Install the application for a better experience')}\n

\n
\n
\n \n
\n
\n \n }\n\n {/* NOTE: varilux version, Increment the value varilux \n version everytime you deploy something that is \n related to varilux G9*/}\n \n )\n}\n\nexport default Varilux","import React, { useEffect, useRef, useState } from 'react';\nimport { BrowserRouter as Router, Route, Switch } from \"react-router-dom\";\nimport { Provider } from 'react-redux';\nimport store from './store/store';\nimport routes from './constants/routes.constant';\nimport iTheme from './interface/theme.interface';\n// import ReactGA from 'react-ga';\n//import RouteChangeTracker from './components/RouteChangeTracker';\nimport axios from 'axios';\nimport IndexedDBProvider from './utils/context/indexedDBContext';\nimport useIndexedDB from './utils/hooks/useIndexedDB';\nimport iRootState from './store/interface/root-state.interface';\n// import useENV from './utils/hooks/useEnv';\nimport Alert from './components/ui/Alert';\nimport appSlice from './store/slices/app.slice';\nimport ExperienceType from './types/experience.type';\nimport Varilux from './pages/varilux-g9/Varilux';\n// test\n\nfunction App() {\n const [theme, setTheme] = useState();\n const [globalAlert, setGlobalAlert] = useState<{\n show: boolean,\n message?: string,\n action?: () => void\n }>({\n show: false\n });\n const [experience,] = useState(ExperienceType.VARILUX);\n const [isModalOpen, setIsModalOpen] = useState((): any => {\n store.subscribe(() => {\n const state = store.getState();\n const appStore = state.app;\n return appStore.isModalOpen\n })\n })\n const oldTheme = useRef();\n // const [loading, setLoading] = useState<{\n // show: boolean,\n // text?: string,\n // textOnly?: boolean\n // }>({ show: false });\n\n const loadingPrevValue = useRef(false);\n const [db, setDB] = useState(undefined);\n const dbRef = useRef(db);\n const { connect, createTables } = useIndexedDB();\n// const env = useENV();\n\n useEffect(() => {\n watchAppTheme();\n axiosInterceptors();\n\n async function connectIndexDB() {\n const indexDB = await connect((db: any) => createTables(db));\n setDB(indexDB)\n }\n connectIndexDB();\n }, []);\n\n useEffect(() => {\n dbRef.current = db;\n initializeGoogleAnalytics();\n if (!db) return;\n\n const isIndexedDbDataFixed = localStorage.getItem('isIndexedDbDataFixed');\n if (isIndexedDbDataFixed) return;\n localStorage.setItem('isIndexedDbDataFixed', 'true');\n }, [db]);\n\n useEffect(() => {\n store.subscribe(() => {\n const state = store.getState();\n const appStore = state.app;\n setIsModalOpen(appStore.isModalOpen)\n }\n )\n }, [isModalOpen])\n\n const initializeGoogleAnalytics = () => { \n // const gaCode = accountDetails?.ga_code;\n //for custom GA code\n // ReactGA.initialize( (gaCode !== undefined || gaCode !== \"\" ? gaCode : env.GA) || env.GA);\n //ReactGA.initialize(env.GA);\n //ReactGA.pageview('/');\n }\n\n const axiosInterceptors = () => {\n let isBackground = false;\n axios.interceptors.request.use(\n (req) => {\n //const token = store.getState().app.token;\n const token = \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJFc3NpbG9yIENvbXBhbmlvbiIsImF1ZCI6IiIsImF2YWlsYWJsZV9kYXRlIjoiMjAyMS0wNi0yOSIsImlzcyI6InVybjpcL1wvYXBpZ2VlLWVkZ2UtZXNzaWxvci1KV1QiLCJtYWNoaW5lX2lkIjoiNjk3ZDMwMmEtMDBjNC00OWY1LWI3YTctNzkyMWJhZGQ3OTQzIiwic3RhdGUiOiI4IiwiZXhwaXJhdGlvbl9kYXRlIjoiMjAyNS0wMS0wMSIsImlhdCI6MTY4MzYwNTgyMCwianRpIjoiZmU2M2NjZjctZGMwYS00MzE1LTk5YWYtYWJkZDg5ODUwNjc3IiwibGljZW5zZV9udW1iZXIiOiJYWFhYLVhYWFgtWFhYWC1YWFhYIn0.yTyh9V0nsqB0Iq7IvfJbVeaII2IMeTyLQNLcpeza7hJANrNhgP7YwIp3O_a1LwXGKvSwtfIXk6dogDnIUYUYJpE3gas8oxE-jPmlt8Ly82Gqd0ULHb5s-iGDaLaI2G8m5jAkfHpT2diAi9qRf2iZ_yVsT1Pb3vDoRjWBbBrg1tXQA5dpavmEMgZ5Z0VW2pYpG2u06kM0y1Mo7i7aYTcD9Z1xsZ86nn8BYUq0wFFWZkB-9KXTrpkBiSyqeemRfqo1xuDQteNcOo2tjP6F40YIo-Db5bt_Df2zbpxP_G82iFtVffTB9hnaXx_Tm89jzC917HyL0Cr8aHNv55S0A7cbOg\"\n isBackground = req.headers['background'];\n delete req.headers['background'];\n const requiredToken = req.headers['Authorization'];\n if (requiredToken) req.headers['Authorization'] = `Bearer ${token}`;\n //if (!isBackground) setLoading({ show: true });\n return req;\n },\n (err) => {\n //if (!isBackground) setLoading({ show: false });\n return Promise.reject(err);\n }\n );\n axios.interceptors.response.use(\n (res) => {\n // Add configurations here\n // if (res.status === 201 || res.status === 200) {\n // if (!isBackground) setLoading({ show: false });\n // }\n return res;\n },\n (err) => {\n //if (!isBackground) setLoading({ show: false });\n return Promise.reject(err);\n }\n );\n }\n\n\n let throttle: any;\n const saveToLocalStorage = (state: iRootState) => {\n clearTimeout(throttle);\n throttle = setTimeout(() => {\n try {\n const serialisedState = JSON.stringify(state);\n localStorage.setItem(\"persistantState\", serialisedState);\n } catch (e) {\n console.warn(e);\n }\n }, 250);\n }\n\n const watchAppTheme = () => {\n store.subscribe(() => {\n const state = store.getState();\n\n const appStore = state.app;\n const currentTheme = appStore.theme;\n // Note: update theme only when theme state is changed\n if (!oldTheme.current || oldTheme.current !== currentTheme.id) {\n setTheme(currentTheme);\n oldTheme.current = currentTheme.id;\n }\n\n if (appStore.loading.show === undefined) return;\n if (appStore.loading.show !== loadingPrevValue.current) {\n //setLoading(appStore.loading);\n loadingPrevValue.current = appStore.loading.show\n }\n saveToLocalStorage(state);\n setGlobalAlert(appStore.globalAlert);\n });\n setTheme(store.getState().app.theme)\n }\n\n if (!db) return null;\n return (\n
\n\n \n \n \n {/* */}\n \n \n \n {\n if (globalAlert.action) globalAlert.action();\n store.dispatch(appSlice.actions.showGlobalAlert({ show: false }))\n }}\n />\n \n \n \n
\n );\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://cra.link/PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://cra.link/PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://cra.link/PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType !== null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log('No internet connection found. App is running in offline mode.');\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './styles/index.scss';\nimport App from './App';\nimport * as serviceWorkerRegistration from './serviceWorkerRegistration';\nimport reportWebVitals from './reportWebVitals';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://cra.link/PWA\nserviceWorkerRegistration.register({\n onUpdate: registration => {\n if (registration && registration.waiting) {\n registration.waiting.postMessage({ type: 'SKIP_WAITING' });\n }\n }\n});\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n\n\n","export default __webpack_public_path__ + \"static/media/logo-white.4425de87.png\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAFxSURBVHgBnZLPSkJREMZn5lyLdj7CXUWU4m1bkGarVuYT6BuUYEQQ6S4jSiFah0+gEFFg+e8FvC6CVmFP0N0EYZ05nRvd21UJo29xzjDMj5lzvkEIaDfajL8jbgGCCYj6wvoQjfZFb/UZxkResB9tlBFVjYAdTVQBVFURJmZAtnJWNzUOonscRhoFiSr1KkLJir3uBAt2rJYJFGqhomy5t9LxOxYXbkwCmZkzRHoccqVzA6k4CyAvR0Y1BG4LPdZBb2PiHZ7Oe2sdRuXklrtxHxTAFjLbMEW6pi+VMn0QlBqEkMLTQFAQFoDOT0cFNrC0poKgLELhT0ah2WGVEDOl+dvYb0g+cl/QvrVPA35Szk47AilHhqyXFq8n/HL9JYQCsaoH8+gFJxpiwIr+vRephP2h14aRUozYf9OuIGKZJKWPH5L9EdDTUeQqwWyYUsfM0C4+bg7c/N5SMyaJa8yUPvuG/ywXzkfvnuA/0iv4Zd0nGXWPscsq2vMAAAAASUVORK5CYII=\"","export default __webpack_public_path__ + \"static/media/refresh.1b0b2a7e.svg\";","export default __webpack_public_path__ + \"static/media/variluxG9-bg-4.30b968f5.webp\";","export default __webpack_public_path__ + \"static/media/variluxG9-bg-2.56bf9d73.webp\";","export default __webpack_public_path__ + \"static/media/variluxG9-bg-3.e2fa4688.webp\";","export default __webpack_public_path__ + \"static/media/01.f0e99b03.webp\";","export default __webpack_public_path__ + \"static/media/02.c24ffec2.webp\";","export default __webpack_public_path__ + \"static/media/03.a756752e.webp\";","export default __webpack_public_path__ + \"static/media/04.eb1b5ea4.webp\";","export default __webpack_public_path__ + \"static/media/05.5b92f362.webp\";","export default __webpack_public_path__ + \"static/media/control-1.3c90e8a5.svg\";","export default __webpack_public_path__ + \"static/media/control-2.d3d46b5e.svg\";","export default __webpack_public_path__ + \"static/media/control-3.35833c7e.svg\";","export default __webpack_public_path__ + \"static/media/control-4.2488ac7f.svg\";","export default __webpack_public_path__ + \"static/media/control-5.c38f4361.svg\";","export default __webpack_public_path__ + \"static/media/control-1-white.d000f808.svg\";","export default __webpack_public_path__ + \"static/media/control-2-white.34802679.svg\";","export default __webpack_public_path__ + \"static/media/control-3-white.d418c8e4.svg\";","export default __webpack_public_path__ + \"static/media/control-4-white.2177a804.svg\";","export default __webpack_public_path__ + \"static/media/control-5-white.291e2c76.svg\";"],"sourceRoot":""}