{"version":3,"sources":["chat/types.js","store/language/types.js","regions/types.js","utils/favoriteHelper.js","utils/languageDetector.js","register/registerExecutor/types.js","components/imageScroller/ImageScroller.js","verify/verifyAccountService.js","verify/actions.js","constants/productTypes.js","autoBuild/actions.js","feedback/actions.js","projects/myprojects/actions.js","home/types.js","projects/newproject/actions.js","basket/actions.js","register/registerSimple/actions.js","store/language/actions.js","manufacturer/manufacturerPriceList/RegisterPopup.js","projects/myprojects/types.js","feedback/FeedbackPopup.js","solutions/types.js","manufacturer/actions.js","register/registerCustomer/types.js","autoBuildEdit/types.js","myprofile/editorSessions/types.js","autoBuild/createProduct/sections/SectionHelper.js","components/infoView/InfoView.js","home/catalog/SharePopUp.js","autoBuildEdit/actions.js","utils/TitleHelper.js","constants/publicationTypes.js","manufacturer/manufacturerPriceList/ManufacturerPriceList.js","components/fields/checkbox/CheckBox.js","autoBuildEdit/EditSketchConstants.js","siteCompany/actions.js","components/filtrView/filtView.js","autoBuild/createProduct/TemplateList.js","autoBuild/ProposeSketch/ProposeSketch.js","components/infoView/VideoInfoView.js","chat/components/MessageItem.js","siteCompany/types.js","instruction/actions.js","utils/amplitude.js","myprofile/myelements/types.js","projects/newproject/types.js","projects/projectdetails/types.js","home/catalogv23/ProductCard.js","manufacturer/manufacturerPriceList/RegionSelect.js","feedback/types.js","myprofile/myspecialty/mySpecialtyService.js","myprofile/myspecialty/actions.js","instruction/types.js","projectsExecuter/helper.js","components/labelWithMoreText/LabelWithMoreText.js","elements/elementslist/ElementItem.js","projectsExecuter/types.js","regions/regionsService.js","regions/actions.js","utils/lsMethods.js","basket/types.js","myprofile/calculationfactors/types.js","utils/MathHelper.js","myprofile/myportfolio/types.js","favorites/types.js","manufacturer/types.js","utils/helper.js","embedding/types.js","login/types.js","home/actions.js","login/loginService.js","login/actions.js","myprofile/myspecialty/types.js","autoBuild/types.js","verify/types.js","feedback/liveSupport/LiveSupport.js","cookies/CookiesBanner.js","components/flags/FlagIcon.js","projects/callMeasurerPopup/CallMeasurerPopup.js","components/sidebar/MyProfileSideBar.js","components/NavMenu.js","aboutProject/BannerColumn.js","components/footer/FooterLayout.js","components/layouts/MainLayout.js","components/layouts/MyProfileLayout.js","components/layouts/MainLayoutHome.js","siteCompany/components/menu/CompanyNavMenu.js","siteCompany/components/menu/CompanyLayout.js","components/routes/GuestRoute.js","components/routes/UserRoute.js","components/routes/UserRouteExecutor.js","components/routes/UserRoutePortfolio.js","components/routes/UnConfirmAccountRoute.js","components/routes/UserRouteSeller.js","i18n.js","home/catalogv23/ProductDetailsV3.js","home/catalogv23/CatalogPageV3.js","AppTitleHelper.js","components/layouts/MainLayoutFullWidth.js","errorBoundary.js","utils/componentLoader.js","App.js","login/reducer.js","store/language/reducer.js","refreshToken/refreshService.js","store/middleware/refreshMiddleware.js","refreshToken/actions.js","refreshToken/types.js","myprofile/myinfo/reducer.js","myprofile/myspecialty/reducer.js","refreshToken/reducer.js","myprofile/myportfolio/reducer.js","register/registerSimple/reducer.js","register/registerCustomer/reducer.js","register/registerExecutor/reducer.js","verify/reducer.js","myprofile/myelements/reducer.js","regions/reducer.js","projects/newproject/reducer.js","projects/myprojects/reducer.js","projects/projectdetails/reducer.js","projects/executerdetails/reducer.js","projectsExecuter/reducer.js","chat/reducer.js","feedback/reducer.js","home/reducer.js","myprofile/editorSessions/reducer.js","myprofile/goods/reducer.js","goods/reducer.js","myprofile/calculationfactors/reducer.js","favorites/reducer.js","instruction/reducer.js","basket/reducer.js","autoBuildEdit/reducer.js","autoBuild/reducer.js","elements/reducer.js","solutions/reducer.js","myprofile/balance/reducer.js","embedding/reducer.js","siteCompany/reducer.js","manufacturer/reducer.js","store/configureStore.js","index.js","components/loaders/FullPageLoader/FullPageLoader.js","constants/specialty.js","autoBuildEdit/FormulaHelper.js","elements/types.js","favorites/actions.js","utils/setAuthorizationToken.js","myprofile/myinfo/types.js","myprofile/goods/types.js","goods/types.js","register/registerSimple/types.js","utils/HistoryStorage.js","projects/executerdetails/types.js","myprofile/balance/types.js"],"names":["GET_MESSAGES_REQUEST","GET_MESSAGES_SUCCESS","GET_MESSAGES_FAILURE","GET_USERS_REQUEST","GET_USERS_SUCCESS","GET_USERS_FAILURE","SET_AUTO_MESSAGE","SET_LANGUAGE_REQUEST","SET_LANGUAGE_SUCCESS","SET_LANGUAGE_FAILURE","GET_REGIONS_REQUEST","GET_REGIONS_SUCCESS","GET_REGIONS_FAILURE","FavotireHelper","addFavoriteProduct","productId","data","loadFavoriteData","productIds","indexOf","push","saveFavoriteData","removeFavoriteProduct","filter","pid","getFavoriteProducts","clearFavorite","favStr","window","localStorage","getItem","JSON","parse","setItem","stringify","getCountryByIp","sucessCallback","axios","get","then","response","console","log","country_code","toLowerCase","err","catch","getInnerRegionIdByIp","instance","create","defaults","headers","common","regionCodeInner","region_code","REGISTER_EXECUTOR_REQUEST","REGISTER_EXECUTOR_SUCCESS","REGISTER_EXECUTOR_FAILURE","GETREGIONS_EXECUTOR_REQUEST","GETREGIONS_EXECUTOR_SUCCESS","GETREGIONS_EXECUTOR_FAILURE","ImageScroller","props","maxWidth","index","state","imageMaxWidth","setState","show","onHide","onBgClick","e","bind","selectFirst","images","id","prevProps","this","length","className","onClick","map","img","key","stopPropagation","size","alt","altBuilder","src","srcLinkBuilder","img2","index2","React","Component","VerifyAccountService","post","confirmationCode","code","verifyAccountActions","type","types","payload","errors","seconds","sendSms","callback","dispatch","verificateAccount","loginActions","setTimer","ProductTypes","TypeBalcon","SubtypeBalcon_P","SubtypeBalcon_French","TypeLattice","getSketches","getSketchDetails","sketchId","getTemplates","proposeSketchImage","actionList","newOnly","getMyFeedbacks","getMessages","feedbackId","sendMessage","sendLiveSupportMessage","getLiveSupportMessages","sessionId","getIsAdminOnline","attachAdminLiveSupportMessage","message","setLiveMessagesUser","getMyProjects","getMyProjectsV2","getProjectsWithoutMeasurer","callMeasurer","projectId","deleteProject","isDelete","createProduct","calculatePrices","ids","deleteProduct","deleteProductGroup","getSpecification","responseType","updateProjectName","projectClose","getMyPriceFactors","GET_CLOSEDPROJECTS_REQUEST","GET_CLOSEDPROJECTS_SUCCESS","GET_CLOSEDPROJECTS_FAILURE","GET_PROJECTDETAILS_REQUEST","GET_PROJECTDETAILS_SUCCESS","GET_PROJECTDETAILS_FAILURE","SEND_ORDERTOSELLER_REQUEST","SEND_ORDERTOSELLER_SUCCESS","SEND_ORDERTOSELLER_FAILURE","GET_HOMEDATA_REQUEST","GET_HOMEDATA_SUCCESS","GET_HOMEDATA_FAILURE","GET_CLOSEDPRODUCTS_REQUEST","GET_CLOSEDPRODUCTS_SUCCESS","GET_CLOSEDPRODUCTS_FAILURE","GET_PRODUCTTDETAILS_REQUEST","GET_PRODUCTTDETAILS_SUCCESS","GET_PRODUCTTDETAILS_FAILURE","THREED_TIME_OUT","THREED_TIME_OUT_FLUSH","REQUEST","FAILURE","SUCCESS","GET_ELEMENTS_FOR_PRODUCT_SUCCESS","GET_LIST_ELEMENTS_AND_METALS_FOR_PRODUCT_SUCCESS","GET_PRODUCT_TYPES_SUCCESS","GET_TEXTURED_METALS_LIST_SUCCESS","REQUEST_METALS_LIST","FAILURE_METALS_LIST","getRegions","getCities","regionId","uploadProjectImage","file","f","FormData","append","deleteProjectImage","getProductTypes","createProject","productTypes","products","p","productTypeId","sendAmplitudeData","amplitudeTypes","PROJECT_CREATE","resetState","getProjectDetails","uploadProductImage","productType","addGoodsToBasket","goodsItem","basket","getBasket","goods","findIndex","i","new_item","count","parseInt","setBasket","changeBasketFromState","addElementsToBasket","elementsItem","Array","isArray","forEach","item","elements","clearBasket","isGood","basket_storage","getGoodsByIds","makeOrder","getElementsByIds","makeElementsOrder","registerActions","registerUser","model","token","saveVerificationToken","setAuthorizationToken","loginByJWT","REGISTER","isExecutor","isConfirmed","setLanguage","language","actionTypes","Promise","resolve","reject","res","error","RegisterPopup","onUserInfoChange","target","name","value","onUserPhoneChange","phone","userPhone","onUserPhoneFocus","showPhoneLabel","onUserPhoneBlur","onApply","isValid","isAuthenticated","sendContactRequest","loading","requestFailed","topError","t","password","registerFrom","isOk","sendSmsVerification","isOk2","confirmationCodeSent","onConfirmCode","confirmCode","isEmpty","onSendContactRequest","title","color","onCloseClick","row","sm","inputClass","inputStyle","width","country","preferredCountries","onChange","onFocus","onBlur","style","display","replace","outline","GET_MYPROJECTS_REQUEST","GET_MYPROJECTS_SUCCESS","GET_MYPROJECTSV2_SUCCESS","GET_MYPROJECTS_FAILURE","GET_PROJECTS_WITHOUT_MEASURER_REQUEST","GET_PROJECTS_WITHOUT_MEASURER_SUCCESS","GET_PROJECTS_WITHOUT_MEASURER_FAILURE","CALL_MEASURER_REQUEST","CALL_MEASURER_SUCCESS","CALL_MEASURER_FAILURE","DELETE_PROJECT_REQUEST","DELETE_PROJECT_SUCCESS","DELETE_PROJECT_FAILURE","CREATE_PRODUCT_REQUEST","CREATE_PRODUCT_SUCCESS","CREATE_PRODUCT_FAILURE","CALCULATE_PRICE_SUCCESS","DELETE_PRODUCT_SUCCESS","DELETE_PRODUCT_GROUP_SUCCESS","GET_SPECIFICATION_SUCCESS","UPDATE_PROJECT_NAME_SUCCESS","CLOSE_PROJECT_SUCCESS","GET_MY_PRICE_FACTOR","FeedbackPopup","onSendClick","themeId","email","text","toastr","success","onHideFeedbackClick","onFeedbackSent","failed","onFieldChange","validateFields","trim","test","themes","undefined","isOpen","toggle","placeholder","height","disabled","GET_SOLUTION_REQUEST","GET_SOLUTION_SUCCESS","GET_SOLUTION_FAILURE","getManufacturers","top","path","getPriceManufacturers","becomeManufacturerRequest","REGISTER_CUSTOMER_REQUEST","REGISTER_CUSTOMER_SUCCESS","REGISTER_CUSTOMER_FAILURE","REQUEST_TEMPLATE","GET_MYSKETCHES_SUCCESS","GET_PRODUCT_EDITOR_STATE_SUCCESS","SAVE_SKETCH_SUCCESS","GET_SKETCH_DATA_SUCCESS","DELETE_SKETCH_SUCCESS","COPY_SKETCH_SUCCESS","GET_SKETCH_METALS_SUCCESS","GET_TEMPLATE_SUCCESS","SAVE_END","GET_MYTEMPLATES_SUCCESS","SAVE_AUTOBUILD_TEMPLATE_SUCCESS","GET_AUTOBUILD_TEMPLATE_DETAILS_SUCCESS","DELETE_AUTOBUILD_TEMPLATE_SUCCESS","GENERATE_HIDDEN_PRODUCT","MOVE_PRODUCT_TO_NEW_PROJECT","GET_MYEDITORSESSIONS_REQUEST","GET_MYEDITORSESSIONS_SUCCESS","GET_MYEDITORSESSIONS_FAILURE","SectionHelper","warning","sketch","metalList","return_obj","objects","newItemId","find","newItem","texturedMetalId","sections","sectionT","isMirror","sectionMirror","itemIndex","skipInMirror","isPillar","isPillarA","donotMirror","rotation","y","yy","Math","PI","position","x","itemX","isFaceRevert","z","keyName","prevSection","section","uniqueId","SECTION_STRAIGHT","pillar1","pillar2","pillarA","floatHeight","pillarACount","SECTION_STRAIGHT2","SECTION_LATTICE","SECTION_CANOPY","SECTION_GATE","SECTION_STAIRS","l1","l2","hStairs","stairsCount","SECTION_STAIRS2","SECTION_ANGLE","angle","SECTION_CLIMB","SECTION_INDENT","indent","variantId","variants","variant","v","variantObjects","oIndex","o","sectionRotation","rotateSectionCenter","center","handrailWidth","pillarWidth","pillarAWidth","template","sectionTransform","sectionRotationY","prevSectionYOffet","hidePillar1","TRANSFORM_OFFSET","isPillarOffset","sectionYOffet","hidePillar2","nextSection","s","si","contentBuilder","SectionContentBuilder","buildTemplateSectionStairs","buildTemplateSection","_getSectionOffset","transform","mirrorObject","r","TRANSFORM_ROTATION","MathHelper","degreeToRad","mmToMeters","SECTION_GO_START","resetToZero","hidePillar1_","sectionT_","offset","EditSketchConstants","ROTATE_SECTION_OUTER_ANGLE","thHalf","sign","sin","cos","getPillarOffset","ROTATE_SECTION_PILLAR","th","abs","x2","tan","betta","x1","y1","sectionIn","rotateAngle","isFirstSection","isLastSection","version","_buildTemplateSectionV3","objectsOut","sectionWidth","sectionHeight","innerSections","objectPillarA","tag","PILLARA","stepX","pillarIndex","left","objectIn","PILLAR1","PILLAR2","processType","PROCESS_TYPE_SINGLE","visibleInterval","min","max","objectOut","l","FormulaHelper","FILL_WIDTH","parseFloat","k","FILL_HEIGHT","useSegment","segmentHeight","segmentDirection","useSpline","points","PROCESS_TYPE_COPY","isi","innerSection","isHorizontal","copy","stepY","stepZ","xOffset","yOffset","zOffset","firstIndent","secondIndent","right","multiplicity","shift","copyLenght","floor","ceil","offsetHalfStep","hideFirstLast","objectOutCopy","sectionWidthExtra","objPillar1","objPillar2","userValues","STEP","_getExtraVars","_getInnerSections","globalSteps","_getGlobalStep","_attachConstStepRemain","complexCopy","copyToInnerSection","_visibleCheck","OBJECT_TYPE_GROUP","arr","_processGroup","_getObjectOutFromObjectIn","_processPillarA","pillarAAlternative","_processCopyToInnerSection","shift2","objectInNewShift","isComplex","copyArr","_processCopyItem","isHandRails","_processComplexCopyItem2","stepx","visibleIntervalY","flag","array_flag","skipY","alfa","flagSkip","visibleIntervalA","deegre","radToDegree","userValuesInnerSection","skipCalculation","noCalculate","useCoeff","calcValue","y2","rotation2","OBJECT_TYPE_METALL","autosize","end1","end2","ends","first","END_TYPE_CUT","cutLength","axis","END_TYPE_ABC","a","b","c","last","isBorder","autofit","torsions","firstTorsion","end","start","torsion","globalStepObjects","globalStep","steps","globalStepObject","step","constStep","isEven","isOdd","sindex","globalStepNumber","constStepObjects","constStepNumber","constStepObject","remain","CONST_STEP_REMAIN","extraVars","extraVarsObj","val","sectionsA","hasPillarA","innerSectionWidthForSplitting","pillarCount","innerSectionsA","isAlternativePillarA","notInnersectionIfNoPillarA","deltaPillar","angleAlpha","innerSectionWidth","userValueForInnerSection","isThroughOneMirror","objectsIn","outArr","mainObjects","minorComplex","minorObject","centerObject","minusShiftObjects","setObjectToStepArray","stepArr","currentStepIndex","stepLength","complexLength","objectId","isSet","oneWayCount","li","minorObjectOut","copyObjectsArr","sectionIndex","objIndex","shiftStepsToRight","leftOffsetCurrent","lastIndex","rightOffset","leftOffsetNew","shiftCount","pop","unshift","objShitf","oo","curveZ","curveX","curveY","stepForCurve","rightCorner","_visibleCheckCopy","visibleIntervalCopy","visibleIntervalYCopy","getCurvePosition","curveShiftX","curveShiftY","curveShiftZ","xStepNew","perpendicular","temp_x","temp_y","temp_z","coef","xx","groupObjectIn","useStairsCorrection","centerPositions","groupObjectOut","_correctStairsPositionY","pos","_getCorrectionStairsY","pi","gRotationx","gRotationy","gRotationz","widthOrig","sizeOriginal","heightOrig","scaleX","sizeTarget","scaleY","gi","gPosx","gPosy","gPosz","_scaleMetalSpline","pNew","_rotatePoint","angleRad","pointsNew","pOrig","rx","ry","lastPoint","angleNewRad","atan","xn","yn","point","curveHeight","objectIndex","object","stairsReverse","hStairSingle","widthStairSingle","STAIR_HEIGHT","heightRail","heightRailPerpendicular","_buildStairs","_correctInnerSectionsForStairs","isStairsHorizontal","_processHorizontalSegments","isPerpendicular","ladderAngle","dy","_processCopyItemStairsSegment","filtredCopy","_visibleCheckAlfaForSimpleCopy","_splitCopyArr","copyItem","objectOutNew","xArr","yArr","zArr","intv","yPos2","isLadderAngle","stairsCoeff","xPos","xSDelta","lenTop1","lenTop2","outParams","isStairsSegment","rotationZ","rotationX","rotationY","rotationType","yPos","pYStairs","yDelta","length1","hhStairs","sideHalfB","o1","o3","o2","dl1Cos","dl3Cos","lenHo2f","x1o2f","x2o2f","lastYo2f","o2copy","lenH","xo2","len","heighto2","posYViaPerpendicular","lengthSegment1","lengthSegment3","xSegment2","xSegment3","corner","stepXOblique","sectionWidthFull","obliqueWidth","isOnOblique","metallId","location","host","horStair","vertStair","currentInnerSection","dx","round","InfoView","showIcon","line1","line2","linkText","linkTo","isMobile","xs","fontSize","to","EmailBlankTargetShareButton","createShareButton","url","_a","subject","body","separator","objectToGetParams","openShareDialogOnClick","_","link","SHARE_CLICK","open","SharePopUp","itemName","summary","source","quote","hashtag","getMySketches","getEditorState","saveSketch","copySketch","getSketchData","getMetals","deleteSketch","saveEnd","getMyAutoBuildTemplates","saveAutoBuildTemplate","getAutoBuildTemplateDetails","deleteAutoBuildTemplate","generateHiddenProduct","moveProductToNewProject","titleChanger","description","keywords","document","querySelector","setAttribute","PublicationTypes","Design","Production","Installation","All","ManufacturerPriceList","onRegionLabelClick","isRegionListShow","onRegionItemClick","selectedRegionId","onPortfolioClick","userItem","portfolio","previewImages","image","hidePorfolio","onManufacturerSelect","CONTACT_MANUFACTURER","contactSelectedManufacturer","onRegisterPopupHide","manufactorId","priceManufacturer","priceManufacturers","m","executerId","sketchLink","href","userProductLink","Helper","editorPreviewLink","isBecomeManufacturerClick","onCloseRegisterPopupClick","onBecomeManufacturerClick","BECOME_MANUFACTURER","onMouseEnterLogo","logoItemId","logoImg","imgIndex","logoInterval","setInterval","onMouseLeaveLogo","clearInterval","regions","buildRegions","isActiveExecutor","hideRegion","priceCoeff","regionLabel","region","regionItem","logo","onMouseEnter","onMouseLeave","address","price","productionPrice","toFixed","paintingPrice","shippingPrice","installationPrice","concretingPrice","borderTop","mapDispatchToProps","actions","withTranslation","connect","manufacturer","login","user","countries","CheckBox","label","useTranslation","checked","htmlFor","viewBox","CURRENT_VERSION","OBJECT_TYPE_ELEMENT","OBJECT_TYPE_TEMPLATE","AUTOFIT_TYPE_INSIDE","AUTOFIT_TYPE_OUTSIDE","COPY_X","COPY_Y","COPY_Z","VISIBLE_STANDART","VISIBLE_COPY","VISIBLE_ALFA","getNewRow","getObjectByType","TYPE_CONSTANT","TYPE_CONSTANT_ANGLE","useRotation2","convertToLatestVerion","objectOld","TYPE_LINEAR","loadStateDataToGroup","editorData","itemOld","children","objOut","metersToMm","getTransactionData","sendToModeration","getMyCompanySite","getProductsForCompany","createSite","getProductDetails","loadSite","updateCompanySite","getBGI","loadLogo","loadImage","deleteImage","FiltrView","toggleDD","selectedItem","onChangeFiltr","startId","items","showInHeader","singleClassName","marginBottom","data-toggle","aria-expanded","cursor","TemplateList","onParamValueChange","params","useForPillarACount","pillarAIndex","onApplyClick","wasDetailsApplied","templateItem","templates","selectedId","sessionStorage","prop","userVarsObj","userVars","userValueItem","prevState","selectedProductType","LastSelectedTemlates","isAutoShow","autoShowFirstTime","isFromProductDetails","onTemplateSelect","isSigleRow","el","getElementById","clientRect","getBoundingClientRect","innerWidth","getParams","d","sessionParam","filteredTemplates","flexWrap","renderParams","extraButtonClick","margin","extraButtonText","lang","isShownUser","currentLang","userVar","vIndex","HistoryStorage","historyArray","ProposeSketch","onImageSelect","files","reader","FileReader","onloadend","imageBase64","result","errorimageBase64","readAsDataURL","onInputChange","errorphone","erroremail","accept","VideoInfoView","hideFullscreenVideo","showFullscreenVideo","onVideoPlayClick","videoCode","getInfoVideo","videoKey","frameBorder","allow","MessageItem","userName","date","isMy","dateStr","Date","toLocaleString","LOAD_DETAILS","SUCCESS_LOGO_LOAD","SUCCESS_BGI_LOAD","SUCCESS_PRODUCT_LOAD","GET_MY_COMPANY_SITE","GET_TRANSACTION_DATA","UPDATE_SITE","UPDATE_SITE_FAILURE","LOAD_SITE","LOAD_SITE_FAILURE","CREATE_SITE","CREATE_SITE_FAILURE","REQUEST_PRODUCTS","getInstructionType","getAllInstruction","getAllBlog","getLatestBlog","getInstructionDetails","Id","OPEN_WEBSITE","REGISTER_START","PROJECT_CREATE_START","PROJECT_CLOSE","PUBLICATION","CONTRACT","OPEN_DEMO_EDITOR","CLICK_ABOUT_US","CLICK_FOR_BUSINESS","CLICK_HOW_TO_ORDER","CLICK_MORE_PRODUCTS","CLICK_MORE_GOODS","CLICK_MORE_ELEMENTS","CLICK_PRIVACY","CLICK_TERMS_OF_USE","CLICK_TARIFFS","CLICK_PROJECT_CREATE_HOMEPAGE","CLICK_PROJECT_CREATE_DEMO","CLICK_PROJECT_CANCEL_DEMO","CLICK_OPEN_EDITOR","CLICK_GOOGLE_PLAY","OPEN_CATALOG_PRODUCTS","OPEN_CATALOG_GOODS","OPEN_DEMO_FROM_PRODUCT","OPEN_CATALOG_PRODUCTS_BY_ID","OPEN_SOLUTION_MAIN","CREATE_NEW_PRODUCT","CREATE_NEW_OPTION","CREATE_NEW_PRODUCT_OBJECT","CALCULATE_SERVICE_USAGE","DOWNLOAD_DESIGN","CONSTRUCTOR_OPEN","CATALOG_APPLY_CLICK","MY_PROFILE_OPEN","CALCULATE_PRICE_KOEF_USAGE","CALCULATE_PRICE_KOEF_SAVE","SAVE_NEW_PRODUCT","APPLY_TEMPLATE_ON_SKETCH_DETAILS","OPEN_INSTRUCTION_PAGE","OPEN_SOLUTION_BY_ID","CREATE_COMPANY_SITE","CREATE_EMBEDDING_SITE","initAmplitude","amplitude","getInstance","init","deviceId","lodash","setDeviceId","setAmplitudeUserId","userId","setUserId","eventType","eventProperties","logEvent","GET_MYELEMENTS_REQUEST","GET_MYELEMENTS_SUCCESS","GET_MYELEMENTS_FAILURE","GET_MYELEMENT_REQUEST","GET_MYELEMENT_SUCCESS","GET_MYELEMENT_FAILURE","GET_CATEGORIES_REQUEST","GET_CATEGORIES_SUCCESS","GET_CATEGORIES_FAILURE","GET_ELEMENTFORM_REQUEST","GET_ELEMENTFORM_SUCCESS","GET_ELEMENTFORM_FAILURE","GET_ELEMENTTEXTURES_REQUEST","GET_ELEMENTTEXTURES_SUCCESS","GET_ELEMENTTEXTURES_FAILURE","UPDATE_ELEMENT_REQUEST","UPDATE_ELEMENT_SUCCESS","UPDATE_ELEMENT_FAILURE","UPLOAD_THREEDMODEL_REQUEST","UPLOAD_THREEDMODEL_SUCCESS","UPLOAD_THREEDMODEL_FAILURE","UPLOAD_ELEMENTFORM_REQUEST","UPLOAD_ELEMENTFORM_SUCCESS","UPLOAD_ELEMENTFORM_FAILURE","UPLOAD_ELEMENTTEXTURE_REQUEST","UPLOAD_ELEMENTTEXTURE_SUCCESS","UPLOAD_ELEMENTTEXTURE_FAILURE","DELETE_ELEMENT_REQUEST","DELETE_ELEMENT_SUCCESS","DELETE_ELEMENT_FAILURE","UPLOAD_BULKELEMENTS_REQUEST","UPLOAD_BULKELEMENTS_SUCCESS","UPLOAD_BULKELEMENTS_FAILURE","CHANGE_AVAILABILITY_REQUEST","CHANGE_AVAILABILITY_SUCCESS","CHANGE_AVAILABILITY_FAILURE","GET_LOADED_IMAGE_SUCCESS","DELETE_IMAGE_SUCCESS","CHANGE_WRAPPER_SUCCESS","GET_CODE_GROUPS","SAVE_CODE_GROUP","SAVE_CODE","GET_CITIES_REQUEST","GET_CITIES_SUCCESS","GET_CITIES_FAILURE","UPLOAD_IMAGE_REQUEST","UPLOAD_IMAGE_SUCCESS","UPLOAD_IMAGE_FAILURE","DELETE_IMAGE","GET_PRODUCT_TYPES_REQUEST","GET_PRODUCT_TYPES_FAILURE","CREATE_PROJECT_REQUEST","CREATE_PROJECT_SUCCESS","CREATE_PROJECT_FAILURE","RESET","GET_PROJECT_DETAILS_REQUEST","GET_PROJECT_DETAILS_SUCCESS","GET_PROJECT_DETAILS_FAILURE","GET_DETAILS_REQUEST","GET_DETAILS_SUCCESS","GET_DETAILS_FAILURE","SET_PRODUCT_DIMENTION_REQUEST","SET_PRODUCT_DIMENTION_SUCCESS","SET_PRODUCT_DIMENTION_FAILURE","SET_DIMENTION_DONE_REQUEST","SET_DIMENTION_DONE_SUCCESS","SET_DIMENTION_DONE_FAILURE","CREATE_PUBLICATION_REQUEST","CREATE_PUBLICATION_SUCCESS","CREATE_PUBLICATION_FAILURE","FIND_EXECUTERS_REQUEST","FIND_EXECUTERS_SUCCESS","FIND_EXECUTERS_FAILURE","SET_DESIGN_VIEW_MODE","GET_PROPOSITIONS_REQUEST","GET_PROPOSITIONS_SUCCESS","GET_PROPOSITIONS_FAILURE","ACCEPT_PROPOSITION_REQUEST","ACCEPT_PROPOSITION_SUCCESS","ACCEPT_PROPOSITION_FAILURE","SET_CONTRACT_DONE_REQUEST","SET_CONTRACT_DONE_SUCCESS","SET_CONTRACT_DONE_FAILURE","RETURN_BACK_CONTRACT_REQUEST","RETURN_BACK_CONTRACT_SUCCESS","RETURN_BACK_CONTRACT_FAILURE","SET_SELF_DESIGN_REQUEST","SET_SELF_DESIGN_SUCCESS","SET_SELF_DESIGN_FAILURE","SET_DESIGN_DONE_REQUEST","SET_DESIGN_DONE_SUCCESS","SET_DESIGN_DONE_FAILURE","SET_PRODUCTION_DONE_REQUEST","SET_PRODUCTION_DONE_SUCCESS","SET_PRODUCTION_DONE_FAILURE","SET_INSTALLATION_DONE_REQUEST","SET_INSTALLATION_DONE_SUCCESS","SET_INSTALLATION_DONE_FAILURE","SET_FORCE_DIMENTION","ProductCard","onFavoriteClick","preventDefault","isFavorite","removeFavorites","loadFavoriteLocal","isFavoriteChange","addFavorites","onConstructorOpenClickHandler","onConstructorOpenClick","showAfterDemoPopup","onCreateProjectWithSketch","cancelAfterDemo","hideAfterDemoPopup","showpopup","showPopUp","hidepopup","onImageClick","showImagesPopup","hideImagesPopup","productImages","onMouseEnterSelf","showTopManufacturers","onMouseLeaveSelf","selectedImageIndex","isRedirectToRegister","isSelected","dimention","isHomeCard","origin","manufacturers","slice","firstSpecificationImage","imageAlt","executorProductImagesModerationCount","isNoContent","generalUnits","verticalAlign","RegionSelect","onRegionSelected","onRegionFetched","topLabel","GET_MYFEEDBACKS_REQUEST","GET_MYFEEDBACKS_SUCCESS","GET_MYFEEDBACKS_FAILURE","SEND_MESSAGE_REQUEST","SEND_MESSAGE_SUCCESS","SEND_MESSAGE_FAILURE","GET_LIVE_SUPPORT_MESSAGES_REQUEST","GET_LIVE_SUPPORT_MESSAGES_SUCCESS","GET_LIVE_SUPPORT_MESSAGES_FAILURE","SEND_LIVE_SUPPORT_MESSAGE_REQUEST","SEND_LIVE_SUPPORT_MESSAGE_SUCCESS","SEND_LIVE_SUPPORT_MESSAGE_FAILURE","ATTACH_ADMIN_LIVE_SUPPORT_MESSAGE","GET_IS_ADMIN_ONLINE","MySpecialtyService","mySpecialtyActions","getMySpecialty","saveMySpecialty","authToken","decode","jwt","roles","rolesIdentity","ownname","of","saveAuthToken","setCurrentUser","changeInfo","makeExecutor","GET_ALL_INSTRUCTIONS_REQUEST","GET_ALL_INSTRUCTIONS_SUCCESS","GET_ALL_INSTRUCTIONS_FAILURE","GET_ALL_BLOG_REQUEST","GET_ALL_BLOG_SUCCESS","GET_ALL_BLOG_FAILURE","GET_SINGLE_INSTRUCTION_REQUEST","GET_SINGLE_INSTRUCTION_SUCCESS","GET_SINGLE_INSTRUCTION_FAILURE","GET_LAST_BLOG_REQUEST","GET_LAST_BLOG_SUCCESS","GET_LAST_BLOG_FAILURE","GET_INSTUCTION_TYPE_REQUEST","GET_INSTUCTION_TYPE_SUCCESS","GET_INSTUCTION_TYPE_FAILURE","ProjectsExecuterHelper","getProducatSizeText","product","subTypeKey","depth","LabelWithMoreText","shortLength","textShort","substring","trigger","placement","ElementCard","showPhoto","onAddToBasket","input_number_container","onCountChange","event","is","show3d","useWholesale","threedSrc","editorLinkElementPreview","imagesCount","elementImages","viewTwoPrice","float","uniqueCode","ref","textureImage","icon","hasContent","file3d","on3dClick","weight","priceRetail","priceWholesale","padding","GET_MYINVITATIONS_REQUEST","GET_MYINVITATIONS_SUCCESS","GET_MYINVITATIONS_FAILURE","SEND_PROPOSITION_REQUEST","SEND_PROPOSITION_SUCCESS","SEND_PROPOSITION_FAILURE","FIND_PROJECTS_REQUEST","FIND_PROJECTS_SUCCESS","FIND_PROJECTS_FAILURE","GET_MYPROPOSITIONS_REQUEST","GET_MYPROPOSITIONS_SUCCESS","GET_MYPROPOSITIONS_FAILURE","GET_CUSTOMER_DETAILS_REQUEST","GET_CUSTOMER_DETAILS_SUCCESS","GET_CUSTOMER_DETAILS_FAILURE","GET_MYCONTRACTS_REQUEST","GET_MYCONTRACTS_SUCCESS","GET_MYCONTRACTS_FAILURE","GET_CONTRACT_DETAILS_REQUEST","GET_CONTRACT_DETAILS_SUCCESS","GET_CONTRACT_DETAILS_FAILURE","SEND_CONTRACT_TO_REVIEW_REQUEST","SEND_CONTRACT_TO_REVIEW_SUCCESS","SEND_CONTRACT_TO_REVIEW_FAILURE","RegionsService","regionsActions","getAuthToken","getLocalStorageItem","getRefreshToken","saveRefreshToken","getVerificationToken","removeVerificationToken","removeStorageItem","removeRefreshToken","removeAuthToken","removeItem","REFRESH_BASKET","REFRESH_BASKET_WITHOUT_PAGE_UPDATE","GET_GOODS_BY_IDS_SUCCESS","MAKE_ORDER_SUCCESS","GET_ELEMENTS_BY_IDS_SUCCESS","MAKE_ELEMENTS_ORDER_SUCCESS","ADD_CALCULATEFACTORS_REQUEST","ADD_CALCULATEFACTORS_SUCCESS","ADD_CALCULATEFACTORS_FAILURE","GET_CALCULATEFACTORS_REQUEST","GET_CALCULATEFACTORS_SUCCESS","GET_CALCULATEFACTORS_FAILURE","ADD_PAINTINGSPRICE_REQUEST","ADD_PAINTINGSPRICE_SUCCESS","ADD_PAINTINGSPRICE_FAILURE","GET_PAINTINGPRICES_REQUEST","GET_PAINTINGPRICES_SUCCESS","GET_PAINTINGPRICES_FAILURE","UPDATE_PAINTINGPRICES_REQUEST","UPDATE_PAINTINGPRICES_SUCCESS","UPDATE_PAINTINGPRICES_FAILURE","DELETE_PAINTINGPRICES_REQUEST","DELETE_PAINTINGPRICES_SUCCESS","DELETE_PAINTINGPRICES_FAILURE","SET_DEFAULT_PAINTINGPRICE_SUCCESS","GET_INSTALL_PRICE_SUCCESS","UPDATE_INSTALL_PRICE_SUCCESS","GET_REGION_FACTORS_SUCCESS","SEND_REGION_FACTORS_SUCCESS","mm","rad","degree","GET_MYPORTFOLIO_REQUEST","GET_MYPORTFOLIO_SUCCESS","GET_MYPORTFOLIO_FAILURE","GET_MYPORTFOLIOITEM_REQUEST","GET_MYPORTFOLIOITEM_SUCCESS","GET_MYPORTFOLIOITEM_FAILURE","UPLOAD_PORTFOLIOIMAGE_REQUEST","UPLOAD_PORTFOLIOIMAGE_SUCCESS","UPLOAD_PORTFOLIOIMAGE_FAILURE","DELETE_PORTFOLIOIMAGE_REQUEST","DELETE_PORTFOLIOIMAGE_SUCCESS","DELETE_PORTFOLIOIMAGE_FAILURE","UPDATE_PORTFOLIOITEM_REQUEST","UPDATE_PORTFOLIOITEM_SUCCESS","UPDATE_PORTFOLIOITEM_FAILURE","UPLOAD_PORTFOLIOMODEL_REQUEST","UPLOAD_PORTFOLIOMODEL_SUCCESS","UPLOAD_PORTFOLIOMODEL_FAILURE","DELETE_PORTFOLIO_REQUEST","DELETE_PORTFOLIO_SUCCESS","DELETE_PORTFOLIO_FAILURE","EDIT_MYPORTFOLIO","GET_FAVORITES_PRODUCTS_REQUEST","GET_FAVORITES_PRODUCTS_SUCCESS","GET_FAVORITES_PRODUCTS_FAILURE","ADD_FAVORITES_REQUEST","ADD_FAVORITES_SUCCESS","ADD_FAVORITES_FAILURE","REMOVE_FAVORITES_REQUEST","REMOVE_FAVORITES_SUCCESS","REMOVE_FAVORITES_FAILURE","GET_FAVORITES_REQUEST","GET_FAVORITES_SUCCESS","GET_FAVORITES_FAILURE","LOAD_FAVORITES_LOCAL","GET_MANUFACTORERS_SUCCESS","GET_PRICE_MANUFACTORERS_SUCCESS","SEND_CONTACT_REQUEST_SUCCESS","BECOME_MANUFACTURER_REQUEST_SUCCESS","AndroidMobileApp","EditorTimeParam","getTime","ElementWholesaleLimit","roleToLocalString","role","UserRoles","str","formatWithNewLine","tarr","split","isShow3dOnDemand","navigator","deviceMemory","getEmbeddingLink","protocol","getMyCompanySiteLink","getMyCompanySiteLinkEdit","editorEditLink","editorLinkAutoBuild","autorotate","elementId","saveDemoProductId","getSiteCompanyImgPath","getBase64","addEventListener","getDemoProductId","getDemoProductTypeId","deleteDemoProductId","GET_PRODUCTS_FOR_PROFILE_SUCCESS","SAVE_EXECUTOR_PRODUCT_SELECTION","GENERATE_KEY","GET_EXISTING_KEY","GET_PRICE_INFO","GENERATE_KEY_FAILURE","GET_PRODUCT_TYPES","GET_PRODUCTS_FOR_EMBEDDING","GET_PRODUCTS_FOR_EMBEDDING_FAILURE","GET_PRODUCT_DETAILS","LOGIN_POST_REQUEST","LOGIN_POST_SUCCESS","LOGIN_POST_FAILED","LOGIN_SET_CURRENT_USER","LOGOUT_POST_REQUEST","LOGIN_SOCIAL_REQUEST","LOGIN_SOCIAL_SUCCESS","LOGIN_SOCIAL_FAILED","getTexturedMetalsList","getClosedProjects","sendOrderToSeller","sendOrderToSeller2","getHomeData","getClosedProducts","getCatalogProductDetails","makeDemoProduct","checkLastDate","Number","date_now","now","flush3dError","constructorOpenClick","pathname","getElementsForProduct","getListElementsAndMetalsForProduct","getProductTypesV2","sendProductCatalogSketchRequest","sendProductCatalogSketchRequestv4","LoginService","nameIdentity","loginStarted","loginSuccess","loginFailed","logoutStarted","loginPost","tokenData","loginSocial","logout","logoutByJWT","tokens","refreshToken","passwordRecoveryRequest","passwordRecoveryFinish","GET_MYSPECIALTY_REQUEST","GET_MYSPECIALTY_SUCCESS","GET_MYSPECIALTY_FAILURE","SAVE_MYSPECIALTY_REQUEST","SAVE_MYSPECIALTY_SUCCESS","SAVE_MYSPECIALTY_FAILURE","EDIT_MYSPECIALTY","GET_SKETCHES_SUCCESS","GET_SKETCH_DETAILS_SUCCESS","GET_TEMPLATES_SUCCESS","VERIFY_ACCOUNT_REQUEST","VERIFY_ACCOUNT_SUCCESS","VERIFY_ACCOUNT_FAILURE","SEND_SMS_REQUEST","SEND_SMS_SUCCESS","SEND_SMS_FAILURE","SET_TIMER_REQUEST","LiveSupport","startTimer","timerInterval","getSessionId","keydownHandler","keyCode","onSendMessage","onChatToggle","isChatVisible","stopTimer","clearTimeout","questionTimeout","scrollToBottom","messagesEnd","scrollIntoView","behavior","handleMessageTextChange","textToSend","uuidv4","isAdminOnline","setSeconds","getSeconds","userSessionId","time","isUserSender","isTempAdmin","localMessages","setTimeout","isAuthorizedUser","isSupportRead","toISOString","messages","containerStyle","svgStyle","clear","InputGroup","Input","onKeyDown","InputGroupAddon","addonType","Button","feedback","liveSupportMessages","liveSupportIsAdminOnline","CookiesBanner","styleMessage","fontWeight","marginLeft","textAlign","lineHeight","styleButton","backgroundColor","styles","banner","bottom","button","buttonMessage","onAccept","Cookies","set","dismissOnScroll","cookie","FlagIconFactory","useCssModules","CallMeasurerPopup","selectedProjectId","onHideClick","onProjectSelect","projectsWithoutMeasurer","Modal","ModalBody","Spinner","ModalFooter","myProjects","MyProfileSideBar","getFavoriteCount","favoritesData","getFavoriteProductCount","isLoading","popupVideoId","nextProps","isSketchEditor","includes","FullPageLoader","isSeller","isManufactor","getFavorites","isShowPortfolio","favorite","LastBlogs","instructions","NavMenu","onShowFeedbackClick","isFeedbackOpen","onCallMeasurerClick","isCallMeasurerOpen","onHideCallMeasurerClick","changeLanguage","lng","i18n","reload","handleChange","logOut","onOpenConstructor","isRedirectToConstructor","countryCode","projectsWithoutMeasurerRequested","hasProjectsWithoutMeasurer","isHomePage","basketCount","Navbar","Container","NavbarBrand","minWidth","Link","NavbarToggler","Collapse","navbar","UncontrolledDropdown","inNavbar","DropdownToggle","nav","caret","DropdownMenu","DropdownItem","NavItem","NavLink","toUpperCase","BannerColumn","FooterLayout","onOpenGooglePlay","onARSupportClick","Row","Col","marginTop","CompanyNavMenu","selectorFiles","base64","companyId","companySite","pathSplit","pathNameFirst","isEdit","pathToView","logoImage","backgroundImage","data-tip","data-for","place","effect","justifyContent","isManufactoring","siteCompany","iAuthentificated","Layout","layout","component","rest","render","isPortfolio","refreshThreshold","exp","use","Backend","LanguageDetector","initReactI18next","fallbackLng","debug","interpolation","escapeValue","ProductDetailsV3","onImageSelected","onBuyClick","flush3DError","openCreateProject","onAutobuildTemplateApply","isFrameReady","renderSections","pdContainer","pdItem","isProgrammScroll","scrollTo","offsetLeft","buildTemplate","selectedVariantId","frames","postMessage","onMessageFromFrame","currentEditorProductId","productIdForPrice","saveProductState","createdProductId","onVariantSelect","show3dElementIndex","onElementCountChange","elementsForProduct","onBuyElementsFromEditorProduct","isRedirectToBasket","hideAuthPopup","showAuthPopup","toggleFullScreen","isFullscreenMode","onOpenEditorClick","openEditor","isShowRegisterFromOpenEditor","onRegisterDone","onContainerTouch","autoScrollInterval","timeoutAutoScrollInterval","startAutoScrollMobile","onContainerScroll","isScrolling","currentLeft","scrollLeft","currentRight","clientWidth","scrollToItem","scrollToItemIndex","pdItemsData","onSelectTopScreenMobile","onSendProductCatalogSketchRequest","catalogProductId","productItem","elementsAndMetals","selectedTopScreenMobile","showTopHeader","autoScrollIntervalLoopCount","showTimeSpinner","removeEventListener","needInitialScroll","autoBuildTemplates","sketchDetails","addNewVariant","texturedMetalList","userDimention","editorSrc","generalDimentionNumb","renderNoContent","Alert","onScroll","onTouchStart","onTouchMove","onTouchEnd","renderVariants","alignItems","maxHeight","home","catalogProductDetails","threeDTimeError","autoBuild","CatalogPageV3","onProductTypeChangeV2","approximateSize","dimentionStr","selectedItemId","onItemSelect","itemId","onCloseDetails","showCatalogClick","includeCatalogProducts","manufacturerRegionId","onChangeDimentionClick","catalogProducts","match","approximateFlag","lastApproximate","isForMyProject","pTypes","renderCatalog","catalogProductsFiltered","selectedType","AppTitleHelper","changeTitle","history","unlisten","listen","action","ptitle","pdesc","pkeywords","ErrorBoundary","hasError","errorInfo","appVersion","platfrom","errorText","toString","StackTrace","fromError","errText","functionName","fileName","lineNumber","columnNumber","join","finally","loadlazy","importFunc","lazy","componentLoader","lazyComponent","attemptsLeft","AboutProject","HomePage","HomeCatalogPageV2","HomeCatalogPageV3","HomeCatalogPageV4","CatalogProductPage","HomeProjectDetailsPage","GoodsListPage","ManufacturersPage","GoodsDetailsPage","ElementsListPage","SolutionFooter","RegisterPage","CustomerPage","RegisterExecutorStepOne","LoginPage","RecoverPasswordPage","MyInfoPage","MySpecialtyPage","ListMyPortfolioPage","PortfolioItemPage","VerificateAccountPage","MyElementsPage","MyElementPage","BulkUploadInfoPage","MyEditorSessions","MyGoods","AddGoods","MyFeedbacksPage","FeedbackChatPage","CreateProjectPage","MyProjectsPage","MyProjectsPageV2","MyProjectDetailsPage","ExecuterPage","ExecuterMyInvitationsPage","ExecuterProjectDetailsPage","ExecuterProjectFindProjectsPage","ExecuterProjectMyPropositionsPage","ECustomerPage","ExecuterMyContractsPage","ExecuterContractDetailsPage","CalculateFactorsPage","AllInstructionsPage","InstructionPage","ChatPage","FavoriteProductsPage","BasketPage","MySketchesPage","EditSketchPage","MyAutoBuildTemplatesPage","EditAutoBuildTemplatePage","AutoBuildCreateProduct","MainSolutionPage","SolutionPage","BalancePage","ExecutorSettingsPage","EmbedingCatalogPage","EmbeddingDetailsPage","SiteCompanyServicePage","CompanyPage","CompanyPage3dCatalog","CompanyPageContacts","CompanyPagePortfolio","CompanyPageProductsDetails","App","showLiveSup","showCookieBanner","fallback","exact","MainLayoutHome","MainLayoutFullWidth","HomeCatalogPageV23","MainLayout","MyProfileLayout","MyCompanyLayout","initialState","Immutable","social","loginReducer","merge","RefreshService","RefreshToken","refreshTokenMiddleware","getState","next","youtubeLink","edit","emailConfirm","myInfoReducer","specialty","specialtyTypes","regOfDest","regOfServiced","mySpecialtyReducer","tempTypes","Object","assign","refreshReducer","myPortfolioReducer","threedmodel","registerReducer","expiredCode","confirm","verifyAccountReducer","expired","bulkUploadErrors","codeGroups","element","categories","forms","textures","category","customElementFormId","customElementTextureId","myElementsReducer","regionsReducer","cities","createSuccess","createProjectId","projectData","createProjectReducer","projects","projects2","callMeasurerSucess","priceFactors","myProjectsReducer","projectIndex","projIndex","isClosed","project","forceDimention","executers","isSearchDesigner","propositions","designDoneError","projectDetailsReducer","productNew","searchFor","designPublication","executer","publications","executerReducer","publication","invitations","customer","contracts","selectedContract","sendToReviewError","projectsExecuterReducer","hasProposition","proposition","users","autoMessage","chatReducer","userTo","u","feedbacks","liveSupportFailed","feedbackReducer","isLocal","tempAdminMessages","individualProjects","productsTypes","elementsCategories","executorRegions","projectDetails","homeReducer","sessions","editorSessionsReducer","currencies","addGoodSuccess","productInfo","myGoods","goodDetails","goodsReducer","sellers","noMoreGoods","goodsDetails","isSuccess","isFailed","factors","paintingPrices","installPriceFactor","regionFactors","calculationFactorsReducer","currValues","favoriteProducts","favoriteReducer","AllInstructions","SingleInstruction","InstructionType","instructionsReducer","goodsInfos","elementsInfos","makeOrderSuccess","makeOrderElementsSuccess","basketReducer","sketches","editorStateData","metals","saveSketchSuccess","sketchData","autobuildTemplates","autobuildTemplateDetails","sketchSaveId","autoBuildEditReducer","autoBuildReducer","typeloaded","typeloadedV2","elementsCatalog","elementFilter","elementFilterV2","noMoreElements","linkImage","elementsReducer","elementsLink","elementsLinkImage","solution","solutionsReducer","transactions","userInfo","balanceReducer","loadingProducts","productsMyProfile","executorSelections","isAutoAddToCatalog","isAutoAddToCatalogSellElements","embeddingKey","productsEmbedding","productsEmbeddingError","productDetails","priceInfo","embeddingReducer","executorProducts","myCompanySite","backgroundImages","transactionData","siteCompanyError","siteCompanyReducer","manufacturerReducer","executors","baseUrl","getElementsByTagName","getAttribute","createBrowserHistory","basename","store","reducers","toastrReducer","myInfo","mySpecialty","myportfolio","register","verifyAccount","myElements","executerDetails","projectsExecuter","chat","editorSessions","calculationFactors","mygoods","myGoodsReducer","autoBuildEdit","solutions","balance","embedding","middleware","thunk","routerMiddleware","enhancers","rootReducer","combineReducers","router","connectRouter","createStore","compose","applyMiddleware","configureStore","initialReduxState","rootElement","rax","ReactDOM","timeOut","sellElements","productionElements","setupElements","designElements","TYPE_CURVE","CURVE_Y_PLUS","hCurve","TYPE_LINEAR_OR_CONSTANT","TYPE_CURVE_DIF_ANGLE","TYPE_TORSION","dA","R","aSegment","asin","aStart","aEnd","xStart","yStart","yEnd","xEnd","xTemp","yDa","xDa","xEndDa","newHypotenuse","sqrt","pow","acos","CURVE_MINUS","adjacentValues","hypotenuse","cathetus","FORMULA_COPY","FORMULA_POSITION","FORMULA_ROTATION","CURVE_PLUS","GET_ELEMENTS_REQUEST","GET_ELEMENTS_SUCCESS","GET_ELEMENTS_FAILURE","GET_FILTER_REQUEST","GET_FILTER_SUCCESS","GET_FILTER_FAILURE","SET_ELEMENTS_ZERO","GET_LINK_SUCCESS","GET_FILTER_V2_REQUEST","GET_FILTER_V2_SUCCESS","GET_FILTER_V2_FAILURE","GET_MYINFO_REQUEST","GET_MYINFO_SUCCESS","GET_MYINFO_FAILURE","SAVE_MYINFO_REQUEST","SAVE_MYINFO_SUCCESS","SAVE_MYINFO_FAILURE","EDIT_MYINFO","SEND_EMAILCONFIRMATION_REQUEST","SEND_EMAILCONFIRMATION_SUCCESS","SEND_EMAILCONFIRMATION_FAILURE","GET_REQUEST","GET_FAILURE","GET_CURRENCIES_SUCCESS","GET_PRODUCTS_SUCCESS","GET_PRODUCTINFO_SUCCESS","ADD_GOOD_SUCCESS","GET_MY_GOODS_SUCCESS","SET_GOODS_ACTIVE","GET_ALLSELLERS_REQUEST","GET_ALLSELLERS_SUCCESS","GET_ALLSELLERS_FAILURE","FIND_GOODS_REQUEST","FIND_GOODS_SUCCESS","FIND_GOODS_FAILURE","FIND_GOODS_RESET","GET_GOODS_DETAILS_REQUEST","GET_GOODS_DETAILS_SUCCESS","GET_GOODS_DETAILS_FAILURE","REGISTER_SIMPLE_REQUEST","REGISTER_SIMPLE_SUCCESS","REGISTER_SIMPLE_FAILURE","SET_DEMO_REQUEST","SET_DEMO_SUCCESS","SET_DEMO_FAILURE","GET_EXECUTER_DETAILS_REQUEST","GET_EXECUTER_DETAILS_SUCCESS","GET_EXECUTER_DETAILS_FAILURE","GET_PUBLICATIONS_REQUEST","GET_PUBLICATIONS_SUCCESS","GET_PUBLICATIONS_FAILURE","SEND_INVITATION_REQUEST","SEND_INVITATION_SUCCESS","SEND_INVITATION_FAILURE","SET_CURRENCY_SUCCESS","SET_BILL_SUCCESS","GET_TRANSACTION_SUCCESS","GET_PPEUSER_SUCCESS","SET_PPEUSER_SUCCESS","GET_ACT_SUCCESS"],"mappings":"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","file":"static/js/main.5ea595fa.chunk.js","sourcesContent":["export const GET_MESSAGES_REQUEST = 'chat/GET_MESSAGES_REQUEST';\r\nexport const GET_MESSAGES_SUCCESS = 'chat/GET_MESSAGES_SUCCESS';\r\nexport const GET_MESSAGES_FAILURE = 'chat/GET_MESSAGES_FAILURE';\r\n\r\nexport const GET_USERS_REQUEST = 'chat/GET_USERS_REQUEST';\r\nexport const GET_USERS_SUCCESS = 'chat/GET_USERS_SUCCESS';\r\nexport const GET_USERS_FAILURE = 'chat/GET_USERS_FAILURE';\r\n\r\nexport const SET_AUTO_MESSAGE = 'chat/SET_AUTO_MESSAGE';","export const SET_LANGUAGE_REQUEST = 'SET_LANGUAGE_REQUEST';\r\nexport const SET_LANGUAGE_SUCCESS = 'SET_LANGUAGE_SUCCESS';\r\nexport const SET_LANGUAGE_FAILURE = 'SET_LANGUAGE_FAILURE';\r\n\r\n\r\n\r\n","export const GET_REGIONS_REQUEST = 'regions/GET_REGIONS_REQUEST'\r\nexport const GET_REGIONS_SUCCESS = 'regions/GET_REGIONS_SUCCESS'\r\nexport const GET_REGIONS_FAILURE = 'regions/GET_REGIONS_FAILURE'","export default class FavotireHelper {\r\n static addFavoriteProduct = (productId) => {\r\n let data = this.loadFavoriteData();\r\n if (data.productIds == null)\r\n data.productIds = [];\r\n if (data.productIds.indexOf(productId) == -1) {\r\n data.productIds.push(productId);\r\n this.saveFavoriteData(data);\r\n }\r\n }\r\n\r\n static removeFavoriteProduct = (productId) => {\r\n let data = this.loadFavoriteData();\r\n if (data.productIds != null) {\r\n data.productIds = data.productIds.filter((pid) => pid != productId);\r\n this.saveFavoriteData(data);\r\n }\r\n }\r\n\r\n static getFavoriteProducts = () => {\r\n let data = this.loadFavoriteData();\r\n if (data.productIds == null)\r\n data.productIds = [];\r\n return data.productIds;\r\n }\r\n\r\n static clearFavorite = () => { \r\n this.saveFavoriteData({ productIds: []});\r\n }\r\n\r\n static loadFavoriteData = () => {\r\n let favStr = window.localStorage.getItem(\"favorites\");\r\n if (favStr == null) {\r\n return {\r\n productIds: []\r\n };\r\n }\r\n\r\n return JSON.parse(favStr);\r\n }\r\n\r\n static saveFavoriteData = (data) => {\r\n window.localStorage.setItem(\"favorites\", JSON.stringify(data));\r\n }\r\n}","import axios from \"axios\";\r\n\r\nexport function getCountryByIp(sucessCallback) {\r\n //http://ip-api.com/json\r\n //http://api.ipstack.com/check?access_key=a6fcc12f70f8d3387152f9a0dcbc0791\r\n //https://freegeoip.app/json/\r\n axios.get(`https://freegeoip.app/json/`)\r\n .then((response) => {\r\n console.log(response.data);\r\n if (sucessCallback) {\r\n sucessCallback(response.data.country_code.toLowerCase());\r\n }\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n console.log(err);\r\n });\r\n}\r\n\r\nexport function getInnerRegionIdByIp(sucessCallback) {\r\n let instance = axios.create();\r\n delete instance.defaults.headers.common['Authorization'];\r\n instance.get(`https://freegeoip.app/json/`).then((response) => {\r\n const region_code = response.data.region_code;\r\n let regionCodeInner = -1;\r\n switch (region_code) {\r\n case \"09\":\r\n regionCodeInner = 1;\r\n break;\r\n case \"63\":\r\n regionCodeInner = 2;\r\n break;\r\n case \"61\":\r\n regionCodeInner = 3;\r\n break;\r\n case \"59\":\r\n regionCodeInner = 4;\r\n break;\r\n case \"56\":\r\n regionCodeInner = 5;\r\n break;\r\n case \"53\":\r\n regionCodeInner = 6;\r\n break;\r\n case \"51\":\r\n regionCodeInner = 7;\r\n break;\r\n case \"48\":\r\n regionCodeInner = 8;\r\n break;\r\n case \"46\":\r\n regionCodeInner = 9;\r\n break;\r\n case \"74\":\r\n regionCodeInner = 10;\r\n break;\r\n case \"35\":\r\n regionCodeInner = 11;\r\n break;\r\n case \"30\":\r\n case \"32\":\r\n regionCodeInner = 12;\r\n break;\r\n case \"26\":\r\n regionCodeInner = 13;\r\n break;\r\n case \"23\":\r\n regionCodeInner = 14;\r\n break;\r\n case \"21\":\r\n regionCodeInner = 15;\r\n break;\r\n case \"18\":\r\n regionCodeInner = 16;\r\n break;\r\n case \"14\":\r\n regionCodeInner = 17;\r\n break;\r\n case \"12\":\r\n regionCodeInner = 18;\r\n break;\r\n case \"07\":\r\n regionCodeInner = 19;\r\n break;\r\n case \"05\":\r\n regionCodeInner = 20;\r\n break;\r\n case \"71\":\r\n regionCodeInner = 21;\r\n break;\r\n case \"77\":\r\n regionCodeInner = 22;\r\n break;\r\n case \"65\":\r\n regionCodeInner = 23;\r\n break;\r\n case \"68\":\r\n regionCodeInner = 24;\r\n break;\r\n }\r\n\r\n if (sucessCallback) {\r\n sucessCallback(regionCodeInner);\r\n }\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n console.log(err);\r\n });\r\n}","export const REGISTER_EXECUTOR_REQUEST = 'registerexecutor/REGISTER_EXECUTOR_REQUEST';\r\nexport const REGISTER_EXECUTOR_SUCCESS = 'registerexecutor/REGISTER_EXECUTOR_SUCCESS';\r\nexport const REGISTER_EXECUTOR_FAILURE = 'registerexecutor/REGISTER_EXECUTOR_FAILURE';\r\n\r\nexport const GETREGIONS_EXECUTOR_REQUEST='registerexecutor/GETREGIONS_EXECUTOR_REQUEST';\r\nexport const GETREGIONS_EXECUTOR_SUCCESS='registerexecutor/GETREGIONS_EXECUTOR_SUCCESS';\r\nexport const GETREGIONS_EXECUTOR_FAILURE='registerexecutor/GETREGIONS_EXECUTOR_FAILURE';\r\n\r\n","import React from 'react';\r\nimport { Media, Row, Col, Button, Input } from 'reactstrap';\r\nimport { toastr } from 'react-redux-toastr'\r\nimport Helper from '../../utils/helper';\r\n\r\nimport { IoIosCloseCircle, IoIosArrowBack, IoIosArrowForward } from 'react-icons/io';\r\nimport { LazyLoadImage } from 'react-lazy-load-image-component';\r\n\r\nimport './ImageScroller.css';\r\n\r\nexport default class ImageScroller extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.maxWidth = this.maxWidth.bind(this);\r\n this.state = {\r\n imageMaxWidth: props.selectFirst ? this.props.images[0].id : -1,\r\n show: this.props.show ? this.props.show : false\r\n };\r\n\r\n }\r\n\r\n componentDidMount() {\r\n\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n\r\n }\r\n\r\n maxWidth = (index) => {\r\n if (this.state.imageMaxWidth == index) {\r\n this.setState({ imageMaxWidth: -1, show: false });\r\n if (this.props.onHide)\r\n this.props.onHide();\r\n }\r\n else {\r\n this.setState({ imageMaxWidth: index, show: true });\r\n }\r\n }\r\n\r\n onBgClick = (e) => {\r\n this.setState({ imageMaxWidth: -1, show: false });\r\n if (this.props.onHide)\r\n this.props.onHide(e);\r\n }\r\n\r\n render() {\r\n const { images } = this.props;\r\n const { show, imageMaxWidth } = this.state;\r\n const length = images != null ? images.length : 0;\r\n return (\r\n
\r\n
\r\n {length > 0 &&\r\n images.map((img, index) => {\r\n return
\r\n {index > 0 &&\r\n
{ this.setState({ imageMaxWidth: images[index - 1].id }); e.stopPropagation(); }}>\r\n \r\n
\r\n }\r\n {this.props.altBuilder(img)}\r\n { this.maxWidth(img.id); e.stopPropagation(); }} />\r\n {index < length - 1 &&\r\n
{ this.setState({ imageMaxWidth: images[index + 1].id }); e.stopPropagation(); }}>\r\n \r\n
\r\n }\r\n
\r\n })\r\n }\r\n {length > 1 ?\r\n
\r\n {images.map((img2, index2) => {\r\n if (img2.id != imageMaxWidth) {\r\n return { this.maxWidth(img2.id); e.stopPropagation(); }} />\r\n }\r\n else {\r\n return { this.maxWidth(img2.id); e.stopPropagation(); }} />\r\n }\r\n })}\r\n
\r\n :\r\n
\r\n }\r\n
\r\n
\r\n )\r\n }\r\n}","import axios from \"axios\";\r\n\r\nexport default class VerifyAccountService {\r\n static sendSms() {\r\n return axios.post(`api/account/sendsms`)\r\n };\r\n static verificateAccount(confirmationCode){\r\n return axios.post(`api/account/verificationphone`,{code:confirmationCode})\r\n }\r\n}","import * as types from './types';\r\nimport VerifyAccountService from './verifyAccountService';\r\nimport * as loginActions from '../login/actions';\r\n\r\n\r\nconst verifyAccountActions = {\r\n\r\n //#region Register executor\r\n sendSmsStarted: () => {\r\n return {\r\n type: types.SEND_SMS_REQUEST\r\n }\r\n },\r\n sendSmsSuccess: (data) => {\r\n return {\r\n type: types.SEND_SMS_SUCCESS,\r\n payload: data\r\n }\r\n },\r\n sendSmsFailed: (errors) => {\r\n return {\r\n type: types.SEND_SMS_FAILURE,\r\n payload: errors\r\n }\r\n },\r\n //#endregion\r\n\r\n\r\n //#region Get Regions\r\n verificateAccountStarted: () => {\r\n return {\r\n type: types.VERIFY_ACCOUNT_REQUEST\r\n }\r\n },\r\n verificateAccountSuccess: (data) => {\r\n return {\r\n type: types.VERIFY_ACCOUNT_SUCCESS,\r\n payload: data\r\n }\r\n },\r\n verificateAccountFailed: (errors) => {\r\n return {\r\n type: types.VERIFY_ACCOUNT_FAILURE,\r\n payload: errors\r\n }\r\n },\r\n\r\n //#endregion\r\n\r\n setTimerStarted:(seconds)=>{\r\n return {\r\n type: types.SET_TIMER_REQUEST,\r\n payload:seconds\r\n }\r\n }\r\n}\r\n\r\n\r\nexport const sendSms = (callback) => (dispatch) => {\r\n dispatch(verifyAccountActions.sendSmsStarted());\r\n return VerifyAccountService.sendSms()\r\n .then((response) => {\r\n dispatch(verifyAccountActions.sendSmsSuccess(response.data));\r\n\r\n if (callback) \r\n callback(true, null);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch(verifyAccountActions.sendSmsFailed(err.response.data));\r\n\r\n if (callback)\r\n callback(false, err.response.data);\r\n })\r\n}\r\n\r\nexport const verificateAccount = (confirmationCode, callback) => (dispatch) => {\r\n dispatch(verifyAccountActions.verificateAccountStarted());\r\n return VerifyAccountService.verificateAccount(confirmationCode)\r\n .then((response) => {\r\n \r\n loginActions.loginByJWT(response.data, dispatch)\r\n dispatch(verifyAccountActions.verificateAccountSuccess(response.data));\r\n\r\n if (callback)\r\n callback(true);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch(verifyAccountActions.verificateAccountFailed(err.response.data));\r\n\r\n if (callback)\r\n callback(false);\r\n })\r\n}\r\nexport const setTimer=(seconds)=>(dispatch)=>{\r\n dispatch(verifyAccountActions.setTimerStarted(seconds));\r\n}","export const ProductTypes = {\r\n TypeBalcon: \"balcon\",\r\n SubtypeBalcon_P: \"pbalcon\",\r\n SubtypeBalcon_French: \"frenchbalcon\",\r\n\r\n TypeLattice: \"lattice\",\r\n};","import axios from \"axios\";\r\nimport * as types from './types';\r\nimport { data } from \"jquery\";\r\n\r\nexport const getSketches = () => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.get(`api/AutoBuild/GetAllSketches`)\r\n .then((response) => {\r\n dispatch({\r\n type: types.GET_SKETCHES_SUCCESS,\r\n payload: response.data\r\n });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n })\r\n}\r\n\r\nexport const getSketchDetails = (sketchId) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.get(`api/AutoBuild/GetSketchDetails?sketchId=${sketchId}`)\r\n .then((response) => {\r\n dispatch({\r\n type: types.GET_SKETCH_DETAILS_SUCCESS,\r\n payload: response.data\r\n });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n })\r\n}\r\n\r\nexport const getTemplates = () => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.get(`api/AutoBuild/GetAllTemplates`)\r\n .then((response) => {\r\n dispatch({\r\n type: types.GET_TEMPLATES_SUCCESS,\r\n payload: response.data\r\n });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n })\r\n}\r\n\r\nexport const proposeSketchImage = (data, callback) => (dispatch) => {\r\n return axios.post(`api/AutoBuild/ProposeSketchImage`, data)\r\n .then((response) => {\r\n callback(true);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n callback(false);\r\n })\r\n}","import axios from \"axios\";\r\nimport * as types from './types';\r\n\r\nconst actionList = {\r\n\r\n //#region getMyFeedbacks\r\n getMyFeedbacksStarted: () => {\r\n return {\r\n type: types.GET_MYFEEDBACKS_REQUEST\r\n }\r\n },\r\n getMyFeedbacksSuccess: (data) => {\r\n return {\r\n type: types.GET_MYFEEDBACKS_SUCCESS,\r\n payload: data\r\n }\r\n },\r\n getMyFeedbacksFailed: () => {\r\n return {\r\n type: types.GET_MYFEEDBACKS_FAILURE,\r\n }\r\n },\r\n //#endregion\r\n\r\n //#region getMessages\r\n getMessagesStarted: (newOnly) => {\r\n return {\r\n type: types.GET_MESSAGES_REQUEST,\r\n newOnly: newOnly\r\n }\r\n },\r\n getMessagesSuccess: (data) => {\r\n return {\r\n type: types.GET_MESSAGES_SUCCESS,\r\n payload: data\r\n }\r\n },\r\n getMessagesFailed: () => {\r\n return {\r\n type: types.GET_MESSAGES_FAILURE,\r\n }\r\n },\r\n //#endregion\r\n\r\n //#region sendMessage\r\n sendMessageStarted: () => {\r\n return {\r\n type: types.SEND_MESSAGE_REQUEST\r\n }\r\n },\r\n sendMessageSuccess: (data) => {\r\n return {\r\n type: types.SEND_MESSAGE_SUCCESS,\r\n payload: data\r\n }\r\n },\r\n sendMessageFailed: () => {\r\n return {\r\n type: types.SEND_MESSAGE_FAILURE,\r\n }\r\n },\r\n //#endregion\r\n}\r\n\r\nexport const getMyFeedbacks = () => (dispatch) => {\r\n dispatch(actionList.getMyFeedbacksStarted());\r\n return axios.get(`api/feedback/getmyfeebacks`)\r\n .then((response) => {\r\n dispatch(actionList.getMyFeedbacksSuccess(response.data));\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch(actionList.getMyFeedbacksFailed());\r\n })\r\n}\r\n\r\nexport const getMessages = (feedbackId, newOnly) => (dispatch) => {\r\n dispatch(actionList.getMessagesStarted(newOnly == true));\r\n return axios.get(`api/feedback/getmessages?feedbackId=${feedbackId}&newOnly=${newOnly == true}`)\r\n .then((response) => {\r\n dispatch(actionList.getMessagesSuccess(response.data));\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch(actionList.getMessagesFailed());\r\n })\r\n}\r\n\r\nexport const sendMessage = (data) => (dispatch) => {\r\n dispatch(actionList.sendMessageStarted());\r\n return axios.post(`api/feedback/sendmessage`, data)\r\n .then((response) => {\r\n dispatch(actionList.sendMessageSuccess(response.data));\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch(actionList.sendMessageFailed());\r\n })\r\n}\r\n\r\nexport const sendLiveSupportMessage = (data) => (dispatch) => {\r\n dispatch({ type: types.SEND_LIVE_SUPPORT_MESSAGE_REQUEST, payload: data });\r\n return axios.post(`api/feedback/sendLiveMessage`, data)\r\n .then((response) => { \r\n dispatch({ type: types.SEND_LIVE_SUPPORT_MESSAGE_SUCCESS, payload: response.data });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.SEND_LIVE_SUPPORT_MESSAGE_FAILURE });\r\n })\r\n}\r\n\r\nexport const getLiveSupportMessages = (newOnly, sessionId) => (dispatch) => {\r\n dispatch({ type: types.GET_LIVE_SUPPORT_MESSAGES_REQUEST, payload: newOnly });\r\n return axios.get(`api/feedback/getLiveMessages?newOnly=${newOnly == true}&sessionId=${sessionId}`)\r\n .then((response) => {\r\n dispatch({ type: types.GET_LIVE_SUPPORT_MESSAGES_SUCCESS, payload: response.data });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.GET_LIVE_SUPPORT_MESSAGES_FAILURE });\r\n })\r\n}\r\n\r\nexport const getIsAdminOnline = () => (dispatch) => {\r\n return axios.get(`api/feedback/getIsAdminOnline`)\r\n .then((response) => {\r\n dispatch({ type: types.GET_IS_ADMIN_ONLINE, payload: response.data });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n \r\n })\r\n}\r\n\r\nexport const attachAdminLiveSupportMessage = (message) => (dispatch) => {\r\n dispatch({ type: types.ATTACH_ADMIN_LIVE_SUPPORT_MESSAGE, payload: message });\r\n}\r\n\r\nexport const setLiveMessagesUser = (sessionId) => (dispatch) => {\r\n return axios.post(`api/feedback/setLiveMessagesUser?sessionId=${sessionId}`)\r\n .then((response) => {\r\n \r\n }, err => { throw err; })\r\n .catch((err) => {\r\n \r\n })\r\n}","import axios from \"axios\";\r\nimport * as types from './types';\r\n\r\nconst actionList = {\r\n\r\n //#region get my projects\r\n getProjectsStarted: () => {\r\n return {\r\n type: types.GET_MYPROJECTS_REQUEST\r\n }\r\n },\r\n getProjectsSuccess: (data) => {\r\n return {\r\n type: types.GET_MYPROJECTS_SUCCESS,\r\n payload: data\r\n }\r\n },\r\n getProjectsFailed: () => {\r\n return {\r\n type: types.GET_MYPROJECTS_FAILURE,\r\n }\r\n },\r\n //#endregion\r\n\r\n //#region getProjectsWithoutMeasurer\r\n getProjectsWithoutMeasurerStarted: () => {\r\n return {\r\n type: types.GET_PROJECTS_WITHOUT_MEASURER_REQUEST\r\n }\r\n },\r\n getProjectsWithoutMeasurerSuccess: (data) => {\r\n return {\r\n type: types.GET_PROJECTS_WITHOUT_MEASURER_SUCCESS,\r\n payload: data\r\n }\r\n },\r\n getProjectsWithoutMeasurerFailed: () => {\r\n return {\r\n type: types.GET_PROJECTS_WITHOUT_MEASURER_FAILURE,\r\n }\r\n },\r\n //#endregion\r\n\r\n //#region callMeasurer\r\n callMeasurerStarted: () => {\r\n return {\r\n type: types.CALL_MEASURER_REQUEST\r\n }\r\n },\r\n callMeasurerSuccess: () => {\r\n return {\r\n type: types.CALL_MEASURER_SUCCESS\r\n }\r\n },\r\n callMeasurerFailed: () => {\r\n return {\r\n type: types.GET_MYPROJECTS_FAILURE\r\n }\r\n },\r\n //#endregion\r\n\r\n //#region deleteProject\r\n deleteProjectStarted: () => {\r\n return {\r\n type: types.DELETE_PROJECT_REQUEST\r\n }\r\n },\r\n deleteProjectSuccess: () => {\r\n return {\r\n type: types.DELETE_PROJECT_SUCCESS\r\n }\r\n },\r\n deleteProjectFailed: () => {\r\n return {\r\n type: types.DELETE_PROJECT_FAILURE\r\n }\r\n },\r\n //#endregion\r\n}\r\n\r\nexport const getMyProjects = () => (dispatch) => {\r\n dispatch(actionList.getProjectsStarted());\r\n return axios.get(`api/project/getmyprojects`)\r\n .then((response) => {\r\n dispatch(actionList.getProjectsSuccess(response.data));\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch(actionList.getProjectsFailed());\r\n })\r\n}\r\nexport const getMyProjectsV2 = () => (dispatch) => {\r\n dispatch(actionList.getProjectsStarted());\r\n return axios.get(`api/project/getmyprojectsV2`)\r\n .then((response) => {\r\n dispatch({\r\n type: types.GET_MYPROJECTSV2_SUCCESS,\r\n payload: response.data\r\n });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch(actionList.getProjectsFailed());\r\n })\r\n}\r\n\r\nexport const getProjectsWithoutMeasurer = () => (dispatch) => {\r\n dispatch(actionList.getProjectsWithoutMeasurerStarted());\r\n return axios.get(`api/project/getProjectsWihoutMeasurerCalled`)\r\n .then((response) => {\r\n dispatch(actionList.getProjectsWithoutMeasurerSuccess(response.data));\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch(actionList.getProjectsWithoutMeasurerFailed());\r\n })\r\n}\r\n\r\nexport const callMeasurer = (projectId, callback) => (dispatch) => {\r\n dispatch(actionList.callMeasurerStarted());\r\n return axios.get(`api/project/callMeasurerForProject?projectId=${projectId}`)\r\n .then((response) => {\r\n dispatch(actionList.callMeasurerSuccess());\r\n if (callback != null)\r\n callback(true);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch(actionList.callMeasurerFailed());\r\n if (callback != null)\r\n callback(false);\r\n })\r\n}\r\n\r\nexport const deleteProject = (projectId, isDelete, callback) => (dispatch) => {\r\n dispatch(actionList.deleteProjectStarted());\r\n return axios.get(`api/project/deleteProject?projectId=${projectId}&isDelete=${isDelete}`)\r\n .then((response) => {\r\n dispatch(actionList.deleteProjectSuccess());\r\n if (callback != null)\r\n callback(true);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch(actionList.deleteProjectFailed());\r\n if (callback != null)\r\n callback(false);\r\n })\r\n}\r\n\r\nexport const createProduct = (data, callback) => (dispatch) => {\r\n dispatch({ type: types.CREATE_PRODUCT_REQUEST });\r\n return axios.post(`api/project/createProduct`, data)\r\n .then((response) => {\r\n dispatch({\r\n type: types.CREATE_PRODUCT_SUCCESS,\r\n payload: response.data\r\n });\r\n if (callback != null)\r\n callback(true, response.data);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.CREATE_PRODUCT_FAILURE });\r\n if (callback != null)\r\n callback(false);\r\n })\r\n}\r\n\r\nexport const calculatePrices = (ids, callback) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.post(`api/project/calculatePrices`, ids)\r\n .then((response) => {\r\n dispatch({\r\n type: types.CALCULATE_PRICE_SUCCESS,\r\n payload: response.data\r\n });\r\n if (callback != null)\r\n callback(true, response.data);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n if (callback != null)\r\n callback(false);\r\n })\r\n}\r\n\r\nexport const deleteProduct = (id, callback) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.get(`api/project/deleteProduct?productId=${id}`)\r\n .then((response) => {\r\n dispatch({\r\n type: types.DELETE_PRODUCT_SUCCESS,\r\n payload: response.data\r\n });\r\n if (callback != null)\r\n callback(true, response.data);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n if (callback != null)\r\n callback(false);\r\n })\r\n}\r\n\r\nexport const deleteProductGroup = (id, callback) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.get(`api/project/deleteProductGroup?productGroupId=${id}`)\r\n .then((response) => {\r\n dispatch({\r\n type: types.DELETE_PRODUCT_GROUP_SUCCESS,\r\n payload: response.data\r\n });\r\n if (callback != null)\r\n callback(true, response.data);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n if (callback != null)\r\n callback(false);\r\n })\r\n}\r\n\r\nexport const getSpecification = (id, callback) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.get(`api/editor/getspecification?productId=${id}&specType=full`, {\r\n responseType: 'blob'\r\n })\r\n .then((response) => {\r\n dispatch({\r\n type: types.GET_SPECIFICATION_SUCCESS,\r\n payload: response.data\r\n });\r\n if (callback != null)\r\n callback(true, response.data);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n if (callback != null)\r\n callback(false);\r\n })\r\n}\r\n\r\nexport const updateProjectName = (data) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.post(`api/project/UpdateProjectName`, data)\r\n .then((response) => {\r\n dispatch({\r\n type: types.UPDATE_PROJECT_NAME_SUCCESS,\r\n payload: data\r\n });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n })\r\n}\r\n\r\n\r\n\r\nexport const projectClose = (id) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.get(`api/project/setprojectclosedv2/` + id)\r\n .then((response) => {\r\n dispatch({\r\n type: types.CLOSE_PROJECT_SUCCESS,\r\n payload: id\r\n });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n })\r\n}\r\n\r\nexport const getMyPriceFactors = () => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.get(`api/project/GetMyPriceFactors`)\r\n .then((response) => {\r\n dispatch({\r\n type: types.GET_MY_PRICE_FACTOR,\r\n payload: response.data\r\n });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n })\r\n}","export const GET_CLOSEDPROJECTS_REQUEST = 'homeproject/GET_CLOSEDPROJECTS_REQUEST';\r\nexport const GET_CLOSEDPROJECTS_SUCCESS = 'homeproject/GET_CLOSEDPROJECTS_SUCCESS';\r\nexport const GET_CLOSEDPROJECTS_FAILURE = 'homeproject/GET_CLOSEDPROJECTS_FAILURE';\r\n\r\nexport const GET_PROJECTDETAILS_REQUEST = 'homeproject/GET_PROJECTDETAILS_REQUEST';\r\nexport const GET_PROJECTDETAILS_SUCCESS = 'homeproject/GET_PROJECTDETAILS_SUCCESS';\r\nexport const GET_PROJECTDETAILS_FAILURE = 'homeproject/GET_PROJECTDETAILS_FAILURE';\r\n\r\nexport const SEND_ORDERTOSELLER_REQUEST = 'homeproject/SEND_ORDERTOSELLER_REQUEST';\r\nexport const SEND_ORDERTOSELLER_SUCCESS = 'homeproject/SEND_ORDERTOSELLER_SUCCESS';\r\nexport const SEND_ORDERTOSELLER_FAILURE = 'homeproject/SEND_ORDERTOSELLER_FAILURE';\r\n\r\nexport const GET_HOMEDATA_REQUEST = 'home/GET_HOMEDATA_REQUEST';\r\nexport const GET_HOMEDATA_SUCCESS = 'home/GET_HOMEDATA_SUCCESS';\r\nexport const GET_HOMEDATA_FAILURE = 'home/GET_HOMEDATA_FAILURE';\r\n\r\nexport const GET_CLOSEDPRODUCTS_REQUEST = 'home/GET_CLOSEDPRODUCTS_REQUEST';\r\nexport const GET_CLOSEDPRODUCTS_SUCCESS = 'home/GET_CLOSEDPRODUCTS_SUCCESS';\r\nexport const GET_CLOSEDPRODUCTS_FAILURE = 'home/GET_CLOSEDPRODUCTS_FAILURE';\r\n\r\nexport const GET_PRODUCTTDETAILS_REQUEST = 'homeproject/GET_PRODUCTTDETAILS_REQUEST';\r\nexport const GET_PRODUCTTDETAILS_SUCCESS = 'homeproject/GET_PRODUCTTDETAILS_SUCCESS';\r\nexport const GET_PRODUCTTDETAILS_FAILURE = 'homeproject/GET_PRODUCTTDETAILS_FAILURE';\r\n\r\nexport const THREED_TIME_OUT = \"home/3D_TIME_OUT\";\r\nexport const THREED_TIME_OUT_FLUSH = \"home/THREED_TIME_OUT_FLUSH\";\r\n\r\nexport const REQUEST = 'home/REQUEST';\r\nexport const FAILURE = 'home/FAILURE';\r\nexport const SUCCESS = 'home/SUCCESS';\r\n\r\nexport const GET_ELEMENTS_FOR_PRODUCT_SUCCESS = 'home/GET_ELEMENTS_FOR_PRODUCT_SUCCESS';\r\n\r\nexport const GET_LIST_ELEMENTS_AND_METALS_FOR_PRODUCT_SUCCESS = 'home/GET_LIST_ELEMENTS_AND_METALS_FOR_PRODUCT_SUCCESS';\r\n\r\nexport const GET_PRODUCT_TYPES_SUCCESS = 'home/GET_PRODUCT_TYPES_SUCCESS';\r\n\r\nexport const GET_TEXTURED_METALS_LIST_SUCCESS = 'home/GET_TEXTURED_METALS_LIST_SUCCESS';\r\nexport const REQUEST_METALS_LIST = 'home/REQUEST_METALS_LIST';\r\nexport const FAILURE_METALS_LIST = 'home/FAILURE_METALS_LIST';\r\n\r\n\r\n\r\n\r\n","import axios from \"axios\";\r\nimport * as types from './types';\r\nimport { amplitudeTypes, sendAmplitudeData } from '../../utils/amplitude';\r\n\r\nconst actionList = {\r\n\r\n //#region get regions\r\n getRegionsStarted: () => {\r\n return {\r\n type: types.GET_REGIONS_REQUEST\r\n }\r\n },\r\n getRegionsSuccess: (data) => {\r\n return {\r\n type: types.GET_REGIONS_SUCCESS,\r\n payload: data\r\n }\r\n },\r\n getRegionsFailed: () => {\r\n return {\r\n type: types.GET_REGIONS_FAILURE,\r\n }\r\n },\r\n //#endregion\r\n\r\n //#region getCities\r\n getCitiesStarted: () => {\r\n return {\r\n type: types.GET_CITIES_REQUEST\r\n }\r\n },\r\n getCitiesSuccess: (data) => {\r\n return {\r\n type: types.GET_CITIES_SUCCESS,\r\n payload: data\r\n }\r\n },\r\n getCitiesFailed: () => {\r\n return {\r\n type: types.GET_CITIES_FAILURE,\r\n }\r\n },\r\n //#endregion\r\n\r\n //#region Upload project image\r\n uploadImageStarted: () => {\r\n return {\r\n type: types.UPLOAD_IMAGE_REQUEST\r\n }\r\n },\r\n uploadImageSuccess: (data) => {\r\n return {\r\n type: types.UPLOAD_IMAGE_SUCCESS,\r\n payload: data\r\n }\r\n },\r\n uploadImageFailed: (errors) => {\r\n return {\r\n type: types.UPLOAD_IMAGE_FAILURE,\r\n payload: errors\r\n }\r\n },\r\n //#endregion \r\n\r\n //#region get product types\r\n getProductTypesStarted: () => {\r\n return {\r\n type: types.GET_PRODUCT_TYPES_REQUEST\r\n }\r\n },\r\n getProductTypesSuccess: (data) => {\r\n return {\r\n type: types.GET_PRODUCT_TYPES_SUCCESS,\r\n payload: data\r\n }\r\n },\r\n getProductTypesFailed: (errors) => {\r\n return {\r\n type: types.GET_PRODUCT_TYPES_FAILURE\r\n }\r\n },\r\n //#endregion\r\n\r\n //#region get product types\r\n createProjectStarted: () => {\r\n return {\r\n type: types.CREATE_PROJECT_REQUEST\r\n }\r\n },\r\n createProjectSuccess: (data) => {\r\n return {\r\n type: types.CREATE_PROJECT_SUCCESS,\r\n payload: data\r\n }\r\n },\r\n createProjectFailed: (errors) => {\r\n return {\r\n type: types.CREATE_PROJECT_FAILURE\r\n }\r\n },\r\n //#endregion\r\n\r\n //#region getProjectDetails\r\n getProjectDetailsStarted: () => {\r\n return {\r\n type: types.GET_PROJECT_DETAILS_REQUEST\r\n }\r\n },\r\n getProjectDetailsSuccess: (data) => {\r\n return {\r\n type: types.GET_PROJECT_DETAILS_SUCCESS,\r\n payload: data\r\n }\r\n },\r\n getProjectDetailsFailed: (errors) => {\r\n return {\r\n type: types.GET_PROJECT_DETAILS_FAILURE\r\n }\r\n },\r\n //#endregion\r\n}\r\n\r\nexport const getRegions = () => (dispatch) => {\r\n dispatch(actionList.getRegionsStarted());\r\n return axios.get(`api/region/getCountriesAndRegions`)\r\n .then((response) => {\r\n dispatch(actionList.getRegionsSuccess(response.data));\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch(actionList.getRegionsFailed());\r\n })\r\n}\r\n\r\nexport const getCities = (regionId) => (dispatch) => {\r\n dispatch(actionList.getCitiesStarted());\r\n return axios.get(`api/region/getCities?regionId=${regionId}`)\r\n .then((response) => {\r\n dispatch(actionList.getCitiesSuccess(response.data));\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch(actionList.getCitiesFailed());\r\n })\r\n}\r\n\r\nexport const uploadProjectImage = (file) => (dispatch) => {\r\n dispatch(actionList.uploadImageStarted());\r\n let f = new FormData();\r\n f.append(\"File\", file)\r\n return axios.post(`api/project/uploadprojectimage`, f)\r\n .then((response) => {\r\n dispatch(actionList.uploadImageSuccess(response.data));\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch(actionList.uploadImageFailed(err.response.data));\r\n })\r\n}\r\n\r\nexport const deleteProjectImage = (id) => (dispatch) => {\r\n dispatch({\r\n type: types.DELETE_IMAGE,\r\n payload: id\r\n });\r\n}\r\n\r\nexport const getProductTypes = () => (dispatch) => {\r\n dispatch(actionList.getProductTypesStarted());\r\n return axios.get(`api/project/getproducttypes`)\r\n .then((response) => {\r\n dispatch(actionList.getProductTypesSuccess(response.data));\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch(actionList.getProductTypesFailed());\r\n })\r\n}\r\n\r\nexport const createProject = (data) => (dispatch) => { \r\n dispatch(actionList.createProjectStarted());\r\n return axios.post(`api/project/create`, data)\r\n .then((response) => {\r\n dispatch(actionList.createProjectSuccess(response.data));\r\n if (data.id == null) {\r\n let productTypes = data.products.map((p) => p.productTypeId);\r\n sendAmplitudeData(amplitudeTypes.PROJECT_CREATE, { \"productTypes\": productTypes });\r\n }\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch(actionList.createProjectFailed());\r\n })\r\n}\r\n\r\nexport const resetState = () => (dispatch) => {\r\n dispatch({\r\n type: types.RESET\r\n });\r\n}\r\n\r\nexport const getProjectDetails = (id) => (dispatch) => {\r\n dispatch(actionList.getProjectDetailsStarted());\r\n return axios.get(`api/project/getupdateprojectdetails/${id}`)\r\n .then((response) => {\r\n dispatch(actionList.getProjectDetailsSuccess(response.data));\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch(actionList.getProjectDetailsFailed());\r\n })\r\n}\r\n\r\nexport const uploadProductImage = (file, productType, callback) => (dispatch) => { \r\n let f = new FormData();\r\n f.append(\"File\", file)\r\n f.append(\"ProductTypeId\", productType)\r\n return axios.post(`api/project/uploadproductimage`, f)\r\n .then((response) => {\r\n if (callback) {\r\n callback(true, response.data);\r\n }\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n if (callback) {\r\n callback(false);\r\n }\r\n })\r\n}\r\n","import axios from \"axios\";\r\nimport * as types from './types';\r\n\r\nexport const addGoodsToBasket = (goodsItem) => (dispatch) => {\r\n let basket = getBasket();\r\n const index = basket.goods.findIndex((i) => i.id == goodsItem.id);\r\n if (index == -1) {\r\n basket.goods.push(goodsItem);\r\n }\r\n else {\r\n let new_item = { id: goodsItem.id, count: parseInt(basket.goods[index].count) + parseInt(goodsItem.count) }\r\n basket.goods[index] = new_item;\r\n }\r\n setBasket(basket); \r\n dispatch({ type: types.REFRESH_BASKET, payload: basket });\r\n}\r\n\r\nexport const changeBasketFromState = (basket) => (dispatch) => {\r\n setBasket(basket);\r\n dispatch({ type: types.REFRESH_BASKET_WITHOUT_PAGE_UPDATE, payload: basket });\r\n}\r\n\r\nexport const addElementsToBasket = (elementsItem) => (dispatch) => {\r\n let basket = getBasket();\r\n if (!Array.isArray(elementsItem)) {\r\n const index = basket.elements.findIndex((i) => i.id == elementsItem.id);\r\n if (index == -1) {\r\n basket.elements.push(elementsItem);\r\n }\r\n else {\r\n let new_item = { id: elementsItem.id, count: parseInt(basket.elements[index].count) + parseInt(elementsItem.count) }\r\n basket.elements[index] = new_item;\r\n }\r\n }\r\n else {\r\n elementsItem.forEach((item) => {\r\n const index = basket.elements.findIndex((i) => i.id == item.id);\r\n if (index == -1) {\r\n basket.elements.push(item);\r\n }\r\n else {\r\n let new_item = { id: item.id, count: parseInt(basket.elements[index].count) + parseInt(item.count) }\r\n basket.elements[index] = new_item;\r\n }\r\n })\r\n }\r\n setBasket(basket);\r\n dispatch({ type: types.REFRESH_BASKET, payload: basket });\r\n}\r\n\r\nexport const getBasket = () => {\r\n let basket = window.localStorage.getItem(\"basket\");\r\n if (basket != null) {\r\n return JSON.parse(basket);\r\n }\r\n return {\r\n goods: [],\r\n elements: []\r\n };\r\n}\r\n\r\nconst setBasket = (basket) => {\r\n window.localStorage.setItem(\"basket\", JSON.stringify(basket));\r\n}\r\n\r\nexport const clearBasket = (isGood) => (dispatch) => {\r\n let basket;\r\n let basket_storage = window.localStorage.getItem(\"basket\");\r\n if (basket_storage != null) {\r\n basket = JSON.parse(basket_storage);\r\n }\r\n else {\r\n basket = {\r\n goods: [],\r\n elements: []\r\n };\r\n }\r\n if (isGood) {\r\n basket.goods = [];\r\n }\r\n else {\r\n basket.elements = [];\r\n }\r\n setBasket(basket);\r\n dispatch({ type: types.REFRESH_BASKET, payload: basket });\r\n}\r\n\r\nexport const getGoodsByIds = (data) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.post(`api/goods/getGoodsByIds`, data)\r\n .then((response) => {\r\n dispatch({\r\n type: types.GET_GOODS_BY_IDS_SUCCESS,\r\n payload: response.data\r\n });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n })\r\n}\r\n\r\nexport const makeOrder = (data) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.post(`api/goods/makeOrder`, data)\r\n .then((response) => {\r\n dispatch({\r\n type: types.MAKE_ORDER_SUCCESS\r\n });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n })\r\n}\r\n\r\nexport const getElementsByIds = (data) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.post(`api/elements/getElementsByIds`, data)\r\n .then((response) => {\r\n dispatch({\r\n type: types.GET_ELEMENTS_BY_IDS_SUCCESS,\r\n payload: response.data\r\n });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n })\r\n}\r\n\r\nexport const makeElementsOrder = (data, callback) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.post(`api/elements/makeOrder`, data)\r\n .then((response) => {\r\n dispatch({\r\n type: types.MAKE_ELEMENTS_ORDER_SUCCESS\r\n });\r\n if (callback) callback(true);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n if (callback) callback(false);\r\n })\r\n}","import axios from \"axios\";\r\nimport * as types from './types';\r\nimport { saveVerificationToken } from '../../utils/lsMethods';\r\nimport setAuthorizationToken from '../../utils/setAuthorizationToken';\r\nimport { sendAmplitudeData, amplitudeTypes } from '../../utils/amplitude';\r\n\r\nimport Helper from '../../utils/helper';\r\nimport { loginByJWT } from \"../../login/actions\";\r\n\r\nconst registerActions = {\r\n // For select info\r\n registerStarted: () => {\r\n return {\r\n type: types.REGISTER_SIMPLE_REQUEST\r\n }\r\n },\r\n registerSuccess: (data) => {\r\n return {\r\n type: types.REGISTER_SIMPLE_SUCCESS,\r\n payload: data\r\n }\r\n },\r\n registerFailed: (data) => {\r\n return {\r\n type: types.REGISTER_SIMPLE_FAILURE,\r\n payload:data\r\n }\r\n },\r\n}\r\n\r\nexport const registerUser = (model, callback) => (dispatch) => {\r\n dispatch(registerActions.registerStarted());\r\n return axios.post(`api/account/registerUserSimple`, model)\r\n .then((response) => {\r\n \r\n if (response.data.token) {\r\n saveVerificationToken(response.data.token);\r\n setAuthorizationToken(response.data.token);\r\n } else {\r\n loginByJWT(response.data, dispatch);\r\n }\r\n\r\n dispatch(registerActions.registerSuccess(response.data));\r\n\r\n sendAmplitudeData(amplitudeTypes.REGISTER, { \"type\": model.isExecutor ? \"Customer\" : \"Executor\" });\r\n //sendAmplitudeData(amplitudeTypes.OPEN_WEBSITE, { 'registered': true });\r\n //const id = Helper.getDemoProductId();\r\n //if (id != null && id != 0) {\r\n // axios.get('api/home/setDemoToProfile?productId=' + id);\r\n //}\r\n\r\n if (callback)\r\n callback(true, { isConfirmed: response.data.isConfirmed });\r\n\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch(registerActions.registerFailed(err.response.data));\r\n if (callback)\r\n callback(false, err.response.data);\r\n })\r\n}","import axios from 'axios';\r\nimport * as actionTypes from './types';\r\n\r\n\r\nexport const setLanguage = (language) => (dispatch)=>{\r\n dispatch({type: actionTypes.SET_LANGUAGE_REQUEST});\r\n return new Promise(function(resolve, reject) {\r\n axios.post(`api/localization/setLanguage?culture=${language}`)\r\n .then((res) => {\r\n dispatch({type: actionTypes.SET_LANGUAGE_SUCCESS});\r\n\r\n resolve(res);\r\n })\r\n .catch((error)=>{\r\n dispatch({type: actionTypes.SET_LANGUAGE_FAILURE});\r\n\r\n reject(error);\r\n })\r\n })\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { FormGroup, Col, FormFeedback, Label, Input, Button, Alert } from \"reactstrap\";\r\nimport PhoneInput from \"react-phone-input-2\";\r\nimport 'react-phone-input-2/lib/style.css'\r\nimport FullPageLoader from \"../../components/loaders/FullPageLoader/FullPageLoader\";\r\nimport { isEmpty } from \"lodash\";\r\nimport { MdClose } from \"react-icons/md\";\r\n\r\nexport class RegisterPopup extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n let userPhone = localStorage.getItem(\"ownPhoneNumber\");\r\n if (!userPhone)\r\n userPhone = '';\r\n\r\n this.state = {\r\n userPhone: userPhone,\r\n password: '',\r\n confirmCode: '',\r\n confirmationCodeSent: false,\r\n errors: {},\r\n loading: false,\r\n requestFailed: false,\r\n showPhoneLabel: true,\r\n topError: this.props.t('manufacturer.errorRegister')\r\n };\r\n }\r\n\r\n onUserInfoChange = (e) => {\r\n this.setState({\r\n [e.target.name]: e.target.value,\r\n errors: {}\r\n });\r\n }\r\n\r\n onUserPhoneChange = (phone) => {\r\n if (phone == \"3800\") {\r\n phone = \"380\";\r\n }\r\n this.setState({\r\n userPhone: phone\r\n });\r\n }\r\n\r\n onUserPhoneFocus = () => {\r\n this.setState({\r\n showPhoneLabel: false\r\n });\r\n }\r\n onUserPhoneBlur = () => {\r\n this.setState({\r\n showPhoneLabel: true\r\n });\r\n }\r\n\r\n isValid() {\r\n let errors = {};\r\n if (this.state.userPhone == '') {\r\n errors.userPhone = this.props.t('basket.errors.phone');\r\n }\r\n if (!this.props.isAuthenticated) {\r\n if (this.state.password.length < 5) {\r\n errors.password = this.props.t('basket.errors.password');\r\n }\r\n }\r\n\r\n this.setState({\r\n errors: errors\r\n });\r\n\r\n return isEmpty(errors);\r\n }\r\n\r\n onApply = () => {\r\n if (this.isValid()) {\r\n localStorage.setItem(\"ownPhoneNumber\", this.state.userPhone);\r\n if (!this.props.isAuthenticated) {\r\n this.setState({ loading: true, requestFailed: false, topError: this.props.t('manufacturer.errorRegister') });\r\n this.props.registerUser({\r\n phone: this.state.userPhone,\r\n password: this.state.password,\r\n isExecutor: false,\r\n registerFrom: this.props.registerFrom\r\n }, (isOk, data) => {\r\n if (isOk) {\r\n if (data.isConfirmed) {\r\n this.setState({ loading: false });\r\n this.sendContactRequest();\r\n } else {\r\n this.props.sendSmsVerification((isOk2, data) => {\r\n if (isOk2) {\r\n this.setState({ loading: false, confirmationCodeSent: true });\r\n } else {\r\n this.setState({ requestFailed: true, loading: false });\r\n }\r\n });\r\n }\r\n } else {\r\n let topError = data.phone && data.phone == \"PhoneExistentClient\" ?\r\n this.props.t('registerCommon.errors.PhoneExistentClient') : this.props.t('manufacturer.errorRegister');\r\n this.setState({ requestFailed: true, loading: false, topError: topError });\r\n }\r\n });\r\n } else {\r\n this.sendContactRequest();\r\n }\r\n }\r\n }\r\n\r\n onConfirmCode = () => {\r\n this.setState({ loading: true, errors: {} });\r\n this.props.verificateAccount(this.state.confirmCode, (isOk) => {\r\n if (isOk) {\r\n this.setState({ loading: false });\r\n this.sendContactRequest();\r\n } else {\r\n this.setState({\r\n loading: false,\r\n errors: {\r\n confirmCode: this.props.t('basket.errors.confirmCode')\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n sendContactRequest() {\r\n this.props.onSendContactRequest(this.state.userPhone);\r\n }\r\n\r\n render() {\r\n const { t, isAuthenticated, title } = this.props;\r\n const { requestFailed, loading, topError } = this.state;\r\n\r\n return (\r\n
\r\n
\r\n {(loading) &&\r\n \r\n }\r\n {(requestFailed) &&\r\n \r\n {topError}\r\n \r\n }\r\n \r\n
{title ? title : (isAuthenticated ? t('manufacturer.validateTitle2') : t('manufacturer.validateTitle1'))}
\r\n \r\n \r\n \r\n \r\n {this.state.errors.userPhone &&\r\n {this.state.errors.userPhone}\r\n }\r\n {this.state.showPhoneLabel && this.state.userPhone &&\r\n
{t('basket.phoneValidLabel').replace('{0}', this.state.userPhone)}
\r\n }\r\n \r\n
\r\n {!this.props.isAuthenticated &&\r\n \r\n \r\n \r\n \r\n {this.state.errors.password &&\r\n {this.state.errors.password}\r\n }\r\n \r\n \r\n }\r\n {this.state.confirmationCodeSent &&\r\n \r\n \r\n \r\n \r\n {this.state.errors.confirmCode &&\r\n {this.state.errors.confirmCode}\r\n }\r\n \r\n \r\n \r\n {t('basket.confirmCodeButton')}\r\n \r\n \r\n \r\n }\r\n {!this.state.confirmationCodeSent &&\r\n
\r\n this.onApply()}>\r\n {t('manufacturer.confirm')}\r\n \r\n
\r\n }\r\n
\r\n
\r\n );\r\n }\r\n}","export const GET_MYPROJECTS_REQUEST = 'myproject/GET_MYPROJECTS_REQUEST';\r\nexport const GET_MYPROJECTS_SUCCESS = 'myproject/GET_MYPROJECTS_SUCCESS';\r\nexport const GET_MYPROJECTSV2_SUCCESS = 'myproject/GET_MYPROJECTSV2_SUCCESS';\r\nexport const GET_MYPROJECTS_FAILURE = 'myproject/GET_MYPROJECTS_FAILURE';\r\n\r\nexport const GET_PROJECTS_WITHOUT_MEASURER_REQUEST = 'myproject/GET_PROJECTS_WITHOUT_MEASURER_REQUEST';\r\nexport const GET_PROJECTS_WITHOUT_MEASURER_SUCCESS = 'myproject/GET_PROJECTS_WITHOUT_MEASURER_SUCCESS';\r\nexport const GET_PROJECTS_WITHOUT_MEASURER_FAILURE = 'myproject/GET_PROJECTS_WITHOUT_MEASURER_FAILURE';\r\n\r\nexport const CALL_MEASURER_REQUEST = 'myproject/CALL_MEASURER_REQUEST';\r\nexport const CALL_MEASURER_SUCCESS = 'myproject/CALL_MEASURER_SUCCESS';\r\nexport const CALL_MEASURER_FAILURE = 'myproject/CALL_MEASURER_FAILURE';\r\n\r\nexport const DELETE_PROJECT_REQUEST = 'myproject/DELETE_PROJECT_REQUEST';\r\nexport const DELETE_PROJECT_SUCCESS = 'myproject/DELETE_PROJECT_SUCCESS';\r\nexport const DELETE_PROJECT_FAILURE = 'myproject/DELETE_PROJECT_FAILURE';\r\n\r\nexport const CREATE_PRODUCT_REQUEST = 'myproject/CREATE_PRODUCT_REQUEST';\r\nexport const CREATE_PRODUCT_SUCCESS = 'myproject/CREATE_PRODUCT_SUCCESS';\r\nexport const CREATE_PRODUCT_FAILURE = 'myproject/CREATE_PRODUCT_FAILURE';\r\n\r\nexport const REQUEST = 'myproject/REQUEST';\r\nexport const FAILURE = 'myproject/FAILURE';\r\n\r\nexport const CALCULATE_PRICE_SUCCESS = 'myproject/CALCULATE_PRICE_SUCCESS';\r\nexport const DELETE_PRODUCT_SUCCESS = 'myproject/DELETE_PRODUCT_SUCCESS';\r\nexport const DELETE_PRODUCT_GROUP_SUCCESS = 'myproject/DELETE_PRODUCT_GROUP_SUCCESS';\r\nexport const GET_SPECIFICATION_SUCCESS = 'myproject/GET_SPECIFICATION_SUCCESS';\r\nexport const UPDATE_PROJECT_NAME_SUCCESS = 'myproject/UPDATE_PROJECT_NAME_SUCCESS';\r\n\r\nexport const CLOSE_PROJECT_SUCCESS = 'myproject/CLOSE_PROJECT_SUCCESS';\r\nexport const GET_MY_PRICE_FACTOR = 'myproject/GET_MY_PRICE_FACTOR';","import React from 'react';\r\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter, Input, Alert, Spinner } from 'reactstrap';\r\nimport axios from \"axios\";\r\nimport { toastr } from 'react-redux-toastr'\r\n\r\nexport default class FeedbackPopup extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n failed: false,\r\n loading: true,\r\n themes: [],\r\n themeId: undefined,\r\n text: '',\r\n email: ''\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n axios.get(`api/feedback/getfeedbackthemes`)\r\n .then((response) => {\r\n this.setState({\r\n themes: response.data,\r\n themeId: response.data[0].id,\r\n loading: false\r\n });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n this.setState({\r\n failed: true,\r\n loading: false\r\n });\r\n })\r\n }\r\n\r\n onSendClick = () => { \r\n this.setState({\r\n loading: true\r\n });\r\n let data = {\r\n themeId: this.state.themeId,\r\n email: this.state.email,\r\n text: this.state.text\r\n };\r\n axios.post(`api/feedback/sendfeedback`, data)\r\n .then((response) => {\r\n this.setState({ \r\n loading: false\r\n });\r\n toastr.success('', this.props.t('feedback.sendSucess'));\r\n this.props.onHideFeedbackClick();\r\n if (this.props.onFeedbackSent != null)\r\n this.props.onFeedbackSent();\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n this.setState({\r\n failed: true,\r\n loading: false\r\n });\r\n })\r\n }\r\n\r\n onFieldChange = (e) => {\r\n let name = e.target.name;\r\n this.setState({\r\n [name]: e.target.value\r\n });\r\n }\r\n\r\n validateFields = () => {\r\n if (this.props.isAuthenticated) {\r\n return this.state.text.trim() != '';\r\n } else {\r\n let emailRegex = /\\S+@\\S+\\.\\S+/;\r\n return emailRegex.test(this.state.email) && (this.state.text.trim() != '');\r\n }\r\n }\r\n\r\n render() {\r\n const { t, onHideFeedbackClick, isAuthenticated } = this.props;\r\n const { failed, loading, themes, themeId, text, email } = this.state;\r\n return (\r\n \r\n \r\n {failed &&\r\n \r\n {t('errorDataLoad')}\r\n \r\n }\r\n {loading &&\r\n
\r\n \r\n
\r\n }\r\n
{t('feedback.theme')}
\r\n \r\n {\r\n themes.map((item) => (\r\n \r\n ))\r\n }\r\n \r\n {!isAuthenticated &&\r\n \r\n }\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}","export const GET_SOLUTION_REQUEST = 'elements/GET_SOLUTION_REQUEST';\r\nexport const GET_SOLUTION_SUCCESS = 'elements/GET_SOLUTION_SUCCESS';\r\nexport const GET_SOLUTION_FAILURE = 'elements/GET_SOLUTION_FAILURE';","import axios from \"axios\";\r\nimport * as types from './types';\r\n\r\nexport const getManufacturers = (top,type) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n let path = `api/home/GetManufacturers`;\r\n if (top) {\r\n path += `?top=${top}`;\r\n if (type) {\r\n path += `&type=${type}`;\r\n }\r\n }\r\n else {\r\n if (type) {\r\n path += `?type=${type}`;\r\n }\r\n }\r\n return axios.get(path)\r\n .then((response) => {\r\n dispatch({\r\n type: types.GET_MANUFACTORERS_SUCCESS,\r\n payload: response.data\r\n });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n })\r\n}\r\n\r\nexport const getPriceManufacturers = (regionId, productId) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.get(`api/home/GetPriceManufacturers?` + (regionId ? `regionId=${regionId}&` : '') + (productId ? `productId=${productId}&` : ''))\r\n .then((response) => {\r\n dispatch({\r\n type: types.GET_PRICE_MANUFACTORERS_SUCCESS,\r\n payload: response.data\r\n });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n })\r\n}\r\n\r\nexport const sendContactRequest = (data, callback) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.post(`api/home/SendContactRequest`, data)\r\n .then((response) => {\r\n dispatch({\r\n type: types.SEND_CONTACT_REQUEST_SUCCESS,\r\n payload: response.data\r\n });\r\n if (callback) callback(true);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n if (callback) callback(false);\r\n })\r\n}\r\n\r\nexport const becomeManufacturerRequest = (data, callback) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.post(`api/home/BecomeManufacturerRequest`, data)\r\n .then((response) => {\r\n dispatch({\r\n type: types.BECOME_MANUFACTURER_REQUEST_SUCCESS,\r\n payload: response.data\r\n });\r\n if (callback) callback(true);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n if (callback) callback(false);\r\n })\r\n}","export const REGISTER_CUSTOMER_REQUEST = 'registercustomer/REGISTER_CUSTOMER_REQUEST';\r\nexport const REGISTER_CUSTOMER_SUCCESS = 'registercustomer/REGISTER_CUSTOMER_SUCCESS';\r\nexport const REGISTER_CUSTOMER_FAILURE = 'registercustomer/REGISTER_CUSTOMER_FAILURE';","export const REQUEST = 'autoBuildEdit/REQUEST';\r\nexport const FAILURE = 'autoBuildEdit/FAILURE';\r\nexport const REQUEST_TEMPLATE = 'autoBuildEdit/REQUEST_TEMPLATE';\r\n\r\nexport const GET_MYSKETCHES_SUCCESS = 'autoBuildEdit/GET_MYSKETCHES_SUCCESS';\r\nexport const GET_PRODUCT_EDITOR_STATE_SUCCESS = 'autoBuildEdit/GET_PRODUCT_EDITOR_STATE_SUCCESS';\r\nexport const SAVE_SKETCH_SUCCESS = 'autoBuildEdit/SAVE_SKETCH_SUCCESS';\r\nexport const GET_SKETCH_DATA_SUCCESS = 'autoBuildEdit/GET_SKETCH_DATA_SUCCESS';\r\nexport const DELETE_SKETCH_SUCCESS = 'autoBuildEdit/DELETE_SKETCH_SUCCESS';\r\n\r\nexport const COPY_SKETCH_SUCCESS = 'autoBuildEdit/COPY_SKETCH_SUCCESS';\r\n\r\nexport const GET_SKETCH_METALS_SUCCESS = 'autoBuild/GET_SKETCH_METALS_SUCCESS';\r\n\r\nexport const GET_TEMPLATE_SUCCESS = 'autoBuild/GET_TEMPLATE_SUCCESS';\r\n\r\nexport const SAVE_END = 'autoBuild/SAVE_END';\r\nexport const GET_MYTEMPLATES_SUCCESS = 'autoBuildEdit/GET_MYTEMPLATES_SUCCESS';\r\nexport const SAVE_AUTOBUILD_TEMPLATE_SUCCESS = 'autoBuildEdit/SAVE_AUTOBUILD_TEMPLATE_SUCCESS';\r\nexport const GET_AUTOBUILD_TEMPLATE_DETAILS_SUCCESS = 'autoBuildEdit/GET_AUTOBUILD_TEMPLATE_DETAILS_SUCCESS';\r\nexport const DELETE_AUTOBUILD_TEMPLATE_SUCCESS = 'autoBuildEdit/DELETE_AUTOBUILD_TEMPLATE_SUCCESS';\r\n\r\nexport const GENERATE_HIDDEN_PRODUCT = \"autoBuildEdit/GENERATE_HIDDEN_PRODUCT\";\r\nexport const MOVE_PRODUCT_TO_NEW_PROJECT = \"autoBuildEdit/MOVE_PRODUCT_TO_NEW_PROJECT\";","export const GET_MYEDITORSESSIONS_REQUEST = 'editorSessions/GET_MYEDITORSESSIONS_REQUEST';\r\nexport const GET_MYEDITORSESSIONS_SUCCESS = 'editorSessions/GET_MYEDITORSESSIONS_SUCCESS';\r\nexport const GET_MYEDITORSESSIONS_FAILURE = 'editorSessions/GET_MYEDITORSESSIONS_FAILURE';","import * as uniqueId from \"lodash/uniqueId\";\r\nimport MathHelper from \"../../../utils/MathHelper\";\r\nimport { EditSketchConstants } from \"../../../autoBuildEdit/EditSketchConstants\";\r\nimport { FormulaHelper } from \"../../../autoBuildEdit/FormulaHelper\";\r\nimport * as isEmpty from \"lodash/isEmpty\";\r\nimport { toastr } from \"react-redux-toastr\";\r\nimport { pick } from \"lodash\";\r\n\r\n\r\nexport default class SectionHelper {\r\n static SECTION_STRAIGHT = \"section_straight\";\r\n static SECTION_STRAIGHT2 = \"section_straight2\";\r\n static SECTION_STAIRS = \"section_stairs\";\r\n static SECTION_STAIRS2 = \"section_stairs2\";\r\n static SECTION_LATTICE = \"section_lattice\";\r\n static SECTION_GATE = \"section_gate\";\r\n static SECTION_ANGLE = \"angle\";\r\n static SECTION_INDENT = \"indent\";\r\n static SECTION_CLIMB = \"climb\";\r\n static SECTION_CANOPY = \"section_canopy\";\r\n static SECTION_GO_START = \"go_start\";\r\n\r\n static TRANSFORM_ROTATION = \"rotation\";\r\n static TRANSFORM_OFFSET = \"offset\";\r\n\r\n static isInputValid(e, t) {\r\n if (e.target.name == 'length') {\r\n if (e.target.value > 20000) {\r\n toastr.warning('', t('editSketch.lengError'));\r\n return false;\r\n }\r\n }\r\n if (e.target.name == 'height') {\r\n if (e.target.value > 10000) {\r\n toastr.warning('', t('editSketch.heigError'));\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n static addNewVariant(sketch, metalList, name) {\r\n let return_obj = { id: 0, name: name, objects: [] };\r\n sketch.objects.map(item => {\r\n let newItemId = metalList.find(i => i.id == parseInt(item.id));\r\n let newItem = item.type == \"metalrolling\" && newItemId != null ? { ...item, id: newItemId.texturedMetalId } : { ...item };\r\n return_obj.objects.push(newItem);\r\n })\r\n\r\n return return_obj;\r\n }\r\n\r\n static mirrorObject(sections, sectionT, i) {\r\n if (sections[i].isMirror) {\r\n let sectionMirror = {\r\n ...sectionT,\r\n sketch: {\r\n height: sectionT.sketch.height,\r\n objects: []\r\n }\r\n };\r\n sectionT.sketch.objects.forEach((item, itemIndex) => {\r\n let newItem = {};\r\n if (!item.skipInMirror) {\r\n newItem = item;\r\n if (!item.isPillar || item.isPillarA) {\r\n if (!item.donotMirror) {\r\n if (typeof (newItem.rotation.y) == \"object\") {\r\n newItem.rotation.y = newItem.rotation.y.map(yy => (yy + Math.PI));\r\n } else {\r\n newItem.rotation.y += Math.PI;\r\n } \r\n }\r\n if (typeof (item.position.x) == \"object\") {\r\n let x = [];\r\n newItem.position.x.map((itemX) => {\r\n x.push(sectionT.width - itemX);\r\n });\r\n newItem.position.x = x;\r\n }\r\n else {\r\n newItem.position.x = sectionT.width - item.position.x;\r\n }\r\n }\r\n sectionMirror.sketch.objects.push(newItem);\r\n }\r\n });\r\n sectionT = sectionMirror;\r\n }\r\n\r\n if (sections[i].isFaceRevert) {\r\n let sectionMirror = {\r\n ...sectionT,\r\n sketch: {\r\n height: sectionT.sketch.height,\r\n objects: []\r\n }\r\n };\r\n sectionT.sketch.objects.forEach((item, itemIndex) => {\r\n let newItem = {};\r\n //if (!item.skipInMirror) {\r\n newItem = item;\r\n //if (!item.donotMirror) {\r\n if (typeof (newItem.rotation.y) == \"object\") {\r\n newItem.rotation.y = newItem.rotation.y.map(yy => -yy);\r\n } else {\r\n newItem.rotation.y = -newItem.rotation.y;\r\n }\r\n if (typeof (newItem.rotation.x) == \"object\") {\r\n newItem.rotation.x = newItem.rotation.x.map(x => -x);\r\n } else {\r\n newItem.rotation.x = -newItem.rotation.x;\r\n }\r\n if (typeof (item.position.z) == \"object\") {\r\n newItem.position.z = newItem.position.z.map(z => -z);\r\n } else {\r\n newItem.position.z = -newItem.position.z;\r\n }\r\n //} \r\n sectionMirror.sketch.objects.push(newItem);\r\n //}\r\n });\r\n sectionT = sectionMirror;\r\n }\r\n return sectionT;\r\n }\r\n\r\n static getNewSection(type, keyName, prevSection) {\r\n let section = {\r\n id: uniqueId('section-'),\r\n type: type\r\n };\r\n let length = 2000;\r\n let height = 1000;\r\n switch (keyName) {\r\n case \"lattice\":\r\n length = 1200;\r\n height = 1400;\r\n break;\r\n\r\n case \"fence\":\r\n height = 2000;\r\n length = 2500;\r\n break;\r\n\r\n case \"lawn\":\r\n length = 2000;\r\n break;\r\n\r\n case \"gate\":\r\n if (prevSection != null) {\r\n prevSection.height != null ? height = prevSection.height : height = height;\r\n prevSection.length != null ? length = prevSection.length : length = length;\r\n }\r\n else {\r\n length = 1800;\r\n height = 2000;\r\n }\r\n break;\r\n }\r\n\r\n switch (type) {\r\n case this.SECTION_STRAIGHT:\r\n section.length = length;\r\n section.pillar1 = true;\r\n section.pillar2 = true;\r\n section.pillarA = false;\r\n section.floatHeight = false;\r\n section.pillarACount = 0;\r\n break;\r\n\r\n case this.SECTION_STRAIGHT2:\r\n section.length = length;\r\n section.height = height;\r\n section.pillar1 = true;\r\n section.pillar2 = true;\r\n section.pillarA = false;\r\n section.floatHeight = true;\r\n section.pillarACount = 0;\r\n break;\r\n\r\n case this.SECTION_LATTICE:\r\n section.length = length;\r\n section.height = height;\r\n section.floatHeight = true;\r\n break;\r\n\r\n case this.SECTION_CANOPY:\r\n section.length = length;\r\n section.height = height;\r\n section.floatHeight = true;\r\n break;\r\n\r\n case this.SECTION_GATE:\r\n section.length = length;\r\n section.height = height;\r\n section.pillar1 = true;\r\n section.pillar2 = true;\r\n section.floatHeight = true;\r\n break;\r\n\r\n case this.SECTION_STAIRS:\r\n section.length = 1400;\r\n section.pillar1 = true;\r\n section.pillar2 = true;\r\n section.pillarA = false;\r\n section.floatHeight = false;\r\n section.pillarACount = 0;\r\n section.l1 = 50;\r\n section.l2 = 50;\r\n section.hStairs = 600;\r\n section.stairsCount = 4;\r\n break;\r\n case this.SECTION_STAIRS2:\r\n section.length = 900;\r\n section.pillar1 = true;\r\n section.pillar2 = true;\r\n section.pillarA = false;\r\n section.floatHeight = false;\r\n section.pillarACount = 0;\r\n section.l1 = 200;\r\n section.l2 = 200;\r\n section.hStairs = 600;\r\n section.stairsCount = 4;\r\n break;\r\n\r\n case this.SECTION_ANGLE:\r\n section.angle = 90;\r\n break;\r\n case this.SECTION_CLIMB:\r\n section.indent = 200;\r\n break;\r\n case this.SECTION_INDENT:\r\n section.indent = 200;\r\n break;\r\n }\r\n\r\n return section;\r\n }\r\n\r\n static buildTemplate(sections, sketch, variantId) {\r\n if (variantId != null && variantId != -1 && sketch.variants) {\r\n sketch = {\r\n ...sketch,\r\n objects: [...sketch.objects]\r\n };\r\n const variant = sketch.variants.find(v => v.id == variantId);\r\n if (variant != null) {\r\n let variantObjects = variant.objects;\r\n for (let i = 0; i < variantObjects.length; i++) {\r\n let oIndex = sketch.objects.findIndex(o => o.key == variantObjects[i].key);\r\n if (oIndex >= 0) {\r\n sketch.objects[oIndex] = variantObjects[i];\r\n }\r\n }\r\n\r\n sketch.sectionRotation = { ...sketch.sectionRotation };\r\n if (variant.rotateSectionCenter)\r\n sketch.sectionRotation.center = variant.rotateSectionCenter;\r\n if (variant.handrailWidth)\r\n sketch.sectionRotation.handrailWidth = variant.handrailWidth;\r\n if (variant.pillarWidth)\r\n sketch.sectionRotation.pillarWidth = variant.pillarWidth;\r\n if (variant.pillarAWidth)\r\n sketch.sectionRotation.pillarAWidth = variant.pillarAWidth;\r\n }\r\n }\r\n\r\n let template = {\r\n sections: []\r\n };\r\n let sectionRotation = {\r\n x: 0,\r\n y: 0,\r\n z: 0\r\n };\r\n let sectionOffset = {\r\n x: 0,\r\n y: 0,\r\n z: 0\r\n }\r\n let sectionTransform = [];\r\n let sectionRotationY = 0;\r\n let prevSection = null;\r\n let prevSectionYOffet = 0;\r\n for (let i = 0; i < sections.length; i++) {\r\n if (sections[i].pillarACount) {\r\n sections[i].pillarACount = parseInt(sections[i].pillarACount);\r\n }\r\n switch (sections[i].type) {\r\n case this.SECTION_STRAIGHT:\r\n case this.SECTION_LATTICE:\r\n case this.SECTION_STRAIGHT2:\r\n case this.SECTION_STAIRS:\r\n case this.SECTION_STAIRS2:\r\n case this.SECTION_GATE:\r\n case this.SECTION_CANOPY:\r\n let hidePillar1 = false;\r\n if (prevSection != null) {\r\n hidePillar1 = prevSection.pillar2;\r\n if (prevSection.type == this.SECTION_STAIRS || prevSection.type == this.SECTION_STAIRS2) {\r\n hidePillar1 = false;\r\n }\r\n const indent = sectionTransform.find(t => t.type == SectionHelper.TRANSFORM_OFFSET && !t.isPillarOffset);\r\n if (indent) {\r\n hidePillar1 = false;\r\n }\r\n }\r\n let sectionYOffet = prevSectionYOffet;\r\n prevSectionYOffet = 0;\r\n let sectionT = null;\r\n if (sections[i].type == this.SECTION_STAIRS || sections[i].type == this.SECTION_STAIRS2) {\r\n let hidePillar2 = false;\r\n let nextSection = sections.filter((s, si) => si > i)\r\n .find(s => s.type == this.SECTION_STRAIGHT || s.type == this.SECTION_STRAIGHT2 || s.type == this.SECTION_STAIRS || s.type == this.SECTION_STAIRS2 || s.type == this.SECTION_INDENT);\r\n if (nextSection != null && nextSection.type == this.SECTION_STRAIGHT) {\r\n hidePillar2 = true;\r\n }\r\n const contentBuilder = new SectionContentBuilder();\r\n sectionT = contentBuilder.buildTemplateSectionStairs(sections[i], sketch, hidePillar1, hidePillar2, sectionRotationY);\r\n prevSectionYOffet = contentBuilder.hStairs;\r\n } else {\r\n sectionT = new SectionContentBuilder().buildTemplateSection(sections[i], sketch, hidePillar1, sectionRotationY, (i == 0), (i == sections.length - 1));\r\n }\r\n\r\n\r\n if (sectionYOffet != 0) {\r\n sectionTransform.push({\r\n type: SectionHelper.TRANSFORM_OFFSET,\r\n x: 0,\r\n y: sectionYOffet,\r\n z: 0\r\n });\r\n }\r\n sectionTransform.push(this._getSectionOffset(sketch, sectionRotationY));\r\n sectionT.transform = sectionTransform;\r\n\r\n\r\n //sectionT.rotation = sectionRotation;\r\n //sectionT.offset = this._getSectionOffset(sketch, sectionT.rotation.y);\r\n //sectionT.offset.y += sectionYOffet;\r\n //sectionT.offset.x += sectionOffset.x;\r\n //sectionT.offset.y += sectionOffset.y;\r\n //if (sectionOffset.resetToZero)\r\n // sectionT.offset.resetToZero = sectionOffset.resetToZero;\r\n //sectionOffset = {\r\n // x: 0,\r\n // y: 0,\r\n // z: 0\r\n //};\r\n sectionT = SectionHelper.mirrorObject(sections, sectionT, i);\r\n template.sections.push(sectionT);\r\n prevSection = sections[i];\r\n //sectionRotation = {\r\n // x: 0,\r\n // y: 0,\r\n // z: 0\r\n //};\r\n sectionTransform = [];\r\n sectionRotationY = 0;\r\n break;\r\n case this.SECTION_ANGLE:\r\n const r = {\r\n type: SectionHelper.TRANSFORM_ROTATION,\r\n x: 0,\r\n y: MathHelper.degreeToRad(parseInt(sections[i].angle)),\r\n z: 0\r\n }\r\n sectionTransform.push(r);\r\n sectionRotationY = r.y;\r\n //sectionRotation.y += MathHelper.degreeToRad(parseInt(sections[i].angle));\r\n break;\r\n case this.SECTION_CLIMB:\r\n sectionTransform.push({\r\n type: SectionHelper.TRANSFORM_OFFSET,\r\n x: 0,\r\n y: MathHelper.mmToMeters(parseInt(sections[i].indent)),\r\n z: 0\r\n });\r\n //sectionOffset.y += MathHelper.mmToMeters(parseInt(sections[i].indent));\r\n break;\r\n case this.SECTION_INDENT:\r\n sectionTransform.push({\r\n type: SectionHelper.TRANSFORM_OFFSET,\r\n x: MathHelper.mmToMeters(parseInt(sections[i].indent)),\r\n y: 0,\r\n z: 0\r\n });\r\n //sectionOffset.x += MathHelper.mmToMeters(parseInt(sections[i].indent));\r\n break;\r\n case this.SECTION_GO_START:\r\n sectionTransform.push({\r\n type: SectionHelper.TRANSFORM_OFFSET,\r\n x: 0,\r\n y: 0,\r\n z: 0,\r\n resetToZero: true\r\n });\r\n //sectionOffset.resetToZero = true;\r\n break;\r\n default: //do we need it?\r\n let hidePillar1_ = false;\r\n if (prevSection != null) {\r\n hidePillar1_ = prevSection.pillar2;\r\n }\r\n let sectionT_ = new SectionContentBuilder().buildTemplateSection(sections[i], sketch, hidePillar1_);\r\n sectionT_.rotation = sectionRotation;\r\n template.sections.push(sectionT_);\r\n prevSection = sections[i];\r\n sectionRotation = {\r\n x: 0,\r\n y: 0,\r\n z: 0\r\n };\r\n break;\r\n }\r\n }\r\n return template;\r\n }\r\n\r\n static _getSectionOffset(sketch, angle) {\r\n if (sketch.sectionRotation != null) {\r\n let offset = { type: SectionHelper.TRANSFORM_OFFSET, x: 0, y: 0, z: 0 };\r\n if (sketch.sectionRotation.center == EditSketchConstants.ROTATE_SECTION_OUTER_ANGLE && sketch.sectionRotation.handrailWidth != 0) {\r\n const thHalf = MathHelper.mmToMeters(parseInt(sketch.sectionRotation.handrailWidth)) / 2;\r\n offset = {\r\n type: SectionHelper.TRANSFORM_OFFSET,\r\n x: -1 * Math.sign(angle) * (thHalf * Math.sin(angle)),\r\n y: 0.0,\r\n z: -1 * Math.sign(angle) * (thHalf * (1 - Math.cos(angle))),\r\n isPillarOffset: true\r\n };\r\n offset.x -= this.getPillarOffset(sketch, angle);\r\n }\r\n if (sketch.sectionRotation.center == EditSketchConstants.ROTATE_SECTION_PILLAR && sketch.sectionRotation.pillarWidth != 0) {\r\n const thHalf = MathHelper.mmToMeters(parseInt(sketch.sectionRotation.pillarWidth)) / 2;\r\n offset = {\r\n type: SectionHelper.TRANSFORM_OFFSET,\r\n x: -1 * thHalf * (1 + Math.cos(angle)),\r\n y: 0.0,\r\n z: -1 * thHalf * Math.sin(angle),\r\n isPillarOffset: true\r\n };\r\n }\r\n \r\n return offset;\r\n }\r\n return { type: SectionHelper.TRANSFORM_OFFSET, x: 0, y: 0, z: 0, isPillarOffset: true };\r\n }\r\n\r\n static getPillarOffset(sketch, angle) {\r\n if (sketch.sectionRotation.pillarWidth != 0) {\r\n const th = MathHelper.mmToMeters(parseInt(sketch.sectionRotation.pillarWidth));\r\n if (Math.abs(angle) == 0) {\r\n return th;\r\n }\r\n let offset = 0;\r\n if (0 < Math.abs(angle) && Math.abs(angle) < Math.PI / 2) {\r\n let x2 = th / Math.tan(Math.abs(angle));\r\n offset = ((x2 - th / 2) * th) / x2;\r\n }\r\n if (offset < 0) {\r\n let betta = (Math.PI - Math.abs(angle)) / 2;\r\n let x2 = th / Math.tan(betta);\r\n let x1 = th - x2;\r\n let y1 = x1 * Math.tan(Math.abs(angle));\r\n offset = x1 * (y1 - th / 2) / y1;\r\n }\r\n return offset;\r\n }\r\n return 0;\r\n }\r\n}\r\n\r\nclass SectionContentBuilder {\r\n constructor() {\r\n\r\n }\r\n\r\n buildTemplateSection(sectionIn, sketch, hidePillar1, rotateAngle, isFirstSection, isLastSection) {\r\n this.sectionIn = sectionIn;\r\n this.sketch = sketch;\r\n this.hidePillar1 = hidePillar1;\r\n this.rotateAngle = rotateAngle;\r\n this.isFirstSection = isFirstSection;\r\n this.isLastSection = isLastSection;\r\n if (sketch.version >= 3) {\r\n return this._buildTemplateSectionV3();\r\n }\r\n let objectsOut = [];\r\n let sectionWidth = MathHelper.mmToMeters(parseInt(sectionIn.length));\r\n let sectionHeight = sectionIn.height != null ? MathHelper.mmToMeters(parseInt(sectionIn.height)) : MathHelper.mmToMeters(parseInt(sketch.height));\r\n //split section to inner sections by pillar A\r\n let innerSections = [];\r\n const objectPillarA = sketch.objects.find(o => o.tag == EditSketchConstants.PILLARA);\r\n if (sectionIn.pillarA && objectPillarA != null && sectionIn.pillarACount > 0) {\r\n let stepX = sectionWidth / (parseInt(sectionIn.pillarACount) + 1);\r\n for (let pillarIndex = 0; pillarIndex < sectionIn.pillarACount; pillarIndex++) {\r\n innerSections.push({\r\n left: pillarIndex * stepX,\r\n width: stepX,\r\n });\r\n }\r\n innerSections.push({\r\n left: sectionIn.pillarACount * stepX,\r\n width: stepX,\r\n });\r\n } else {\r\n innerSections.push({ left: 0, width: sectionWidth });\r\n }\r\n\r\n for (let i = 0; i < sketch.objects.length; i++) {\r\n let objectIn = sketch.objects[i];\r\n\r\n if (objectIn.tag == EditSketchConstants.PILLAR1 && (!sectionIn.pillar1 || hidePillar1)) {\r\n continue;\r\n }\r\n if (objectIn.tag == EditSketchConstants.PILLAR2 && !sectionIn.pillar2) {\r\n continue;\r\n }\r\n\r\n if (objectIn.processType == EditSketchConstants.PROCESS_TYPE_SINGLE && objectIn.visibleInterval != null) {\r\n if (sectionWidth < MathHelper.mmToMeters(parseInt(objectIn.visibleInterval.min))\r\n || sectionWidth > MathHelper.mmToMeters(parseInt(objectIn.visibleInterval.max))) {\r\n continue;\r\n }\r\n }\r\n\r\n let objectOut = {\r\n processType: objectIn.processType,\r\n id: parseInt(objectIn.id),\r\n type: objectIn.type,\r\n position: {\r\n x: 0,\r\n y: 0,\r\n z: MathHelper.mmToMeters(parseInt(objectIn.position.z))\r\n },\r\n rotation: {\r\n x: MathHelper.degreeToRad(parseInt(objectIn.rotation.x)),\r\n y: MathHelper.degreeToRad(parseInt(objectIn.rotation.y)),\r\n z: MathHelper.degreeToRad(parseInt(objectIn.rotation.z))\r\n }\r\n };\r\n \r\n if (objectIn.length != null) {\r\n if (typeof (objectIn.length) == \"object\") {\r\n if (objectIn.length.l == FormulaHelper.FILL_WIDTH) {\r\n objectOut.length = sectionWidth * parseFloat(objectIn.length.k);\r\n }\r\n else if (objectIn.length.l == FormulaHelper.FILL_HEIGHT) {\r\n objectOut.length = sectionHeight * parseFloat(objectIn.length.k);\r\n }\r\n } else {\r\n objectOut.length = MathHelper.mmToMeters(parseInt(objectIn.length));\r\n }\r\n }\r\n if (objectIn.useSegment) {\r\n objectOut.segmentHeight = MathHelper.mmToMeters(objectIn.segmentHeight);\r\n objectOut.segmentDirection = {\r\n x: objectIn.segmentDirection.x,\r\n y: objectIn.segmentDirection.y,\r\n z: objectIn.segmentDirection.z,\r\n };\r\n }\r\n if (objectIn.useSpline) {\r\n objectOut.points = [\r\n { x: 0, y: -(objectOut.length / 2), z: 0 },\r\n ...objectIn.points.map(p => ({\r\n x: MathHelper.mmToMeters(p.x),\r\n y: MathHelper.mmToMeters(p.y),\r\n z: MathHelper.mmToMeters(p.z)\r\n })),\r\n { x: 0, y: (objectOut.length / 2), z: 0 }\r\n ];\r\n }\r\n\r\n if (objectIn.tag == EditSketchConstants.PILLARA) {\r\n if (sectionIn.pillarA) {\r\n let stepX = sectionWidth / (parseInt(sectionIn.pillarACount) + 1);\r\n for (let pillarIndex = 0; pillarIndex < sectionIn.pillarACount; pillarIndex++) {\r\n let objectOutCopy = JSON.parse(JSON.stringify(objectOut));\r\n objectOutCopy.position.x = (pillarIndex + 1) * stepX;\r\n typeof (objectIn.position.y) == \"object\" ?\r\n objectOutCopy.position.y =\r\n sectionHeight * parseFloat(objectIn.position.y.k) + MathHelper.mmToMeters(parseInt(objectIn.position.y.offset))\r\n :\r\n objectOutCopy.position.y = MathHelper.mmToMeters(parseInt(objectIn.position.y));\r\n objectsOut.push(objectOutCopy);\r\n }\r\n }\r\n continue;\r\n }\r\n\r\n if (objectIn.processType == EditSketchConstants.PROCESS_TYPE_SINGLE) {\r\n objectOut.position.x =\r\n sectionWidth * parseFloat(objectIn.position.x.k) + MathHelper.mmToMeters(parseInt(objectIn.position.x.offset));\r\n typeof (objectIn.position.y) == \"object\" ?\r\n objectOut.position.y =\r\n sectionHeight * parseFloat(objectIn.position.y.k) + MathHelper.mmToMeters(parseInt(objectIn.position.y.offset))\r\n :\r\n objectOut.position.y = MathHelper.mmToMeters(parseInt(objectIn.position.y));\r\n } else if (objectIn.processType == EditSketchConstants.PROCESS_TYPE_COPY) {\r\n //use innerSections from pillarA\r\n for (let isi = 0; isi < innerSections.length; isi++) {\r\n const innerSection = innerSections[isi];\r\n if (objectIn.visibleInterval != null) {\r\n if (innerSection.width < MathHelper.mmToMeters(parseInt(objectIn.visibleInterval.min))\r\n || innerSection.width > MathHelper.mmToMeters(parseInt(objectIn.visibleInterval.max))) {\r\n continue;\r\n }\r\n }\r\n let isHorizontal = objectIn.copy.isHorizontal != null ? objectIn.copy.isHorizontal : true;\r\n let stepX = MathHelper.mmToMeters(parseInt(objectIn.copy.stepX));\r\n let stepY = objectIn.copy.stepY != null ? MathHelper.mmToMeters(parseInt(objectIn.copy.stepY)) : 0;\r\n let stepZ = objectIn.copy.stepZ != null ? MathHelper.mmToMeters(parseInt(objectIn.copy.stepZ)) : 0;\r\n let xOffset = MathHelper.mmToMeters(parseInt(objectIn.position.x.offset)) + innerSection.left;\r\n let yOffset = typeof (objectIn.position.y) == \"object\" ?\r\n MathHelper.mmToMeters(parseInt(objectIn.position.y.offset))\r\n :\r\n MathHelper.mmToMeters(parseInt(objectIn.position.y));\r\n let zOffset = MathHelper.mmToMeters(parseInt(objectIn.position.z));\r\n let firstIndent = MathHelper.mmToMeters(parseInt(objectIn.copy.left));\r\n let secondIndent = MathHelper.mmToMeters(parseInt(objectIn.copy.right));\r\n let multiplicity = objectIn.copy.multiplicity != null ? parseInt(objectIn.copy.multiplicity) : 1;\r\n let shift = objectIn.copy.shift != null ? parseInt(objectIn.copy.shift) : 0;\r\n let copyLenght;\r\n let count;\r\n if (isHorizontal) {\r\n copyLenght = innerSection.width - firstIndent - secondIndent;\r\n count = copyLenght / stepX;\r\n }\r\n else {\r\n copyLenght = sectionHeight - firstIndent - secondIndent;\r\n count = copyLenght / stepY;\r\n }\r\n if (count % 1.0 <= parseFloat(objectIn.copy.k)) {\r\n count = Math.floor(count);\r\n } else {\r\n count = Math.ceil(count);\r\n }\r\n isHorizontal ? stepX = copyLenght / count : stepY = copyLenght / count;\r\n if (objectIn.copy.offsetHalfStep) {\r\n count -= 1;\r\n firstIndent += isHorizontal ? stepX / 2 : stepY / 2;\r\n } else if (objectIn.copy.hideFirstLast) {\r\n count -= 2;\r\n firstIndent += isHorizontal ? stepX : stepY;\r\n }\r\n if (isHorizontal) {\r\n xOffset += firstIndent;\r\n }\r\n else {\r\n yOffset += secondIndent;\r\n }\r\n objectOut.position = {\r\n x: [],\r\n y: [],\r\n z: []\r\n };\r\n if (shift == 0) {\r\n objectOut.position.x.push(xOffset);\r\n objectOut.position.y.push(yOffset);\r\n objectOut.position.z.push(zOffset);\r\n }\r\n for (let i = 0; i < count; i++) {\r\n xOffset += stepX;\r\n yOffset += stepY;\r\n zOffset += stepZ;\r\n if (multiplicity == 1 || (i + 2 - shift) % multiplicity == 1) {\r\n objectOut.position.x.push(xOffset);\r\n objectOut.position.y.push(yOffset);\r\n objectOut.position.z.push(zOffset);\r\n }\r\n }\r\n let objectOutCopy = JSON.parse(JSON.stringify(objectOut));\r\n objectsOut.push(objectOutCopy);\r\n /*\r\n //OLD\r\n let copywidth = innerSection.width - left - right;\r\n let count = copywidth / stepX;\r\n if (count % 1.0 <= parseFloat(objectIn.copy.k)) {\r\n count = Math.floor(count);\r\n } else {\r\n count = Math.ceil(count);\r\n }\r\n stepX = copywidth / count;\r\n if (objectIn.copy.offsetHalfStep) {\r\n count -= 1;\r\n left += stepX / 2;\r\n } else if (objectIn.copy.hideFirstLast) {\r\n count -= 2;\r\n left += stepX;\r\n }\r\n let objectOutCopy = JSON.parse(JSON.stringify(objectOut));\r\n objectOutCopy.copy = {\r\n left: innerSection.left + left + xOffset,\r\n stepX: stepX,\r\n count: parseInt(count) + 1,\r\n };\r\n objectsOut.push(objectOutCopy);\r\n */\r\n }\r\n continue;\r\n }\r\n objectsOut.push(objectOut);\r\n }\r\n\r\n return {\r\n width: sectionWidth,\r\n sketch: {\r\n height: sectionHeight,\r\n objects: objectsOut\r\n }\r\n };\r\n }\r\n\r\n _buildTemplateSectionV3() {\r\n let objectsOut = [];\r\n\r\n this.sectionWidthExtra = 0;\r\n if ((this.sectionIn.pillar1 == false || this.sectionIn.pillar2 == false) && this.sketch.sectionRotation.pillarWidth != 0) {\r\n const pillarWidth = MathHelper.mmToMeters(parseInt(this.sketch.sectionRotation.pillarWidth));\r\n const objPillar1 = this.sketch.objects.find(o => o.tag == EditSketchConstants.PILLAR1);\r\n const objPillar2 = this.sketch.objects.find(o => o.tag == EditSketchConstants.PILLAR2);\r\n if (this.isFirstSection && this.sectionIn.pillar1 == false && objPillar1) {\r\n this.sectionWidthExtra += pillarWidth;\r\n }\r\n if (this.isLastSection && this.sectionIn.pillar2 == false && objPillar2) {\r\n this.sectionWidthExtra += pillarWidth;\r\n }\r\n }\r\n\r\n this.sectionWidth = MathHelper.mmToMeters(parseInt(this.sectionIn.length)) + this.sectionWidthExtra; \r\n\r\n this.sectionHeight = this.sectionIn.height != null ? MathHelper.mmToMeters(parseInt(this.sectionIn.height)) : MathHelper.mmToMeters(parseInt(this.sketch.height));\r\n this.userValues = {\r\n [FormulaHelper.FILL_WIDTH]: this.sectionWidth,\r\n [FormulaHelper.FILL_HEIGHT]: this.sectionHeight,\r\n [FormulaHelper.STEP]: 0,\r\n ...this._getExtraVars()\r\n };\r\n\r\n //split section to inner sections by pillar A\r\n this.innerSections = this._getInnerSections();\r\n\r\n const globalSteps = this._getGlobalStep();\r\n for (let i = 0; i < globalSteps.length; i++) {\r\n if (globalSteps[i]) {\r\n if (i == 0) {\r\n this.userValues[FormulaHelper.STEP] = globalSteps[i];\r\n } else {\r\n this.userValues[FormulaHelper.STEP + (i)] = globalSteps[i];\r\n }\r\n }\r\n }\r\n\r\n this._attachConstStepRemain();\r\n\r\n let complexCopy = [];\r\n\r\n let objects = [...this.sketch.objects];\r\n for (let i = 0; i < objects.length; i++) {\r\n let objectIn = objects[i];\r\n\r\n if (objectIn.tag == EditSketchConstants.PILLAR1 && (!this.sectionIn.pillar1 || this.hidePillar1)) {\r\n continue;\r\n }\r\n if (objectIn.tag == EditSketchConstants.PILLAR2 && !this.sectionIn.pillar2) {\r\n continue;\r\n }\r\n\r\n if (objectIn.processType == EditSketchConstants.PROCESS_TYPE_SINGLE && !objectIn.copyToInnerSection) {\r\n if (this._visibleCheck(objectIn, null, !this.sectionIn.floatHeight, 0)) {\r\n continue;\r\n }\r\n }\r\n\r\n if (objectIn.type == EditSketchConstants.OBJECT_TYPE_GROUP) {\r\n let arr = this._processGroup(objectIn);\r\n objectsOut.push(...arr);\r\n continue;\r\n }\r\n\r\n let objectOut = this._getObjectOutFromObjectIn(objectIn);\r\n\r\n if (objectIn.tag == EditSketchConstants.PILLARA) {\r\n this._processPillarA(objectOut, objectsOut);\r\n continue;\r\n }\r\n if (objectIn.pillarAAlternative) {\r\n if (this.innerSections.length > 1) {\r\n this._processPillarA(objectOut, objectsOut, true);\r\n }\r\n continue;\r\n }\r\n\r\n if (objectIn.copyToInnerSection) {\r\n let arr = this._processCopyToInnerSection(objectIn, objectOut);\r\n arr.forEach(item => {\r\n if (this._visibleCheck(objectIn, this.innerSections[0], !this.sectionIn.floatHeight, 0)) {\r\n } else {\r\n objectsOut.push(item);\r\n }\r\n });\r\n continue;\r\n }\r\n\r\n if (objectIn.processType == EditSketchConstants.PROCESS_TYPE_COPY) {\r\n if (objectIn.copy.shift2 != null) {\r\n objectIn.copy.shift2.map((item) => {\r\n let objectInNewShift = {\r\n ...objectIn,\r\n copy: {\r\n ...objectIn.copy,\r\n shift: item,\r\n shift2:null,\r\n }\r\n };\r\n objects.push(objectInNewShift);\r\n })\r\n }\r\n if (objectIn.copy.isComplex) {\r\n complexCopy.push(objectIn);\r\n continue;\r\n }\r\n let copyArr = this._processCopyItem(objectIn, objectOut);\r\n objectsOut.push(...copyArr);\r\n continue;\r\n }\r\n\r\n if (objectIn.isHandRails && this.hidePillar1 && this.sketch.sectionRotation.center == EditSketchConstants.ROTATE_SECTION_OUTER_ANGLE) {\r\n let xOffset = SectionHelper.getPillarOffset(this.sketch, this.rotateAngle);\r\n objectOut.position.x += xOffset / 2;\r\n objectOut.length -= xOffset;\r\n }\r\n if (objectIn.isHandRails && this.sectionWidthExtra != 0 && this.sketch.sectionRotation.center == EditSketchConstants.ROTATE_SECTION_OUTER_ANGLE) {\r\n objectOut.length -= this.sectionWidthExtra;\r\n if (this.sectionIn.pillar1 == false && this.sectionIn.pillar2 == true) {\r\n objectOut.position.x += this.sectionWidthExtra / 2;\r\n }\r\n if (this.sectionIn.pillar1 == true && this.sectionIn.pillar2 == false) {\r\n objectOut.position.x -= this.sectionWidthExtra / 2;\r\n }\r\n }\r\n\r\n objectsOut.push(objectOut);\r\n }\r\n\r\n if (complexCopy.length > 0) {\r\n let copyArr = this._processComplexCopyItem2(complexCopy);\r\n objectsOut.push(...copyArr);\r\n }\r\n\r\n //if (this.sectionIn.curveHeight && parseInt(this.sectionIn.curveHeight) != 0) {\r\n // this._makeSectionCurve(objectsOut);\r\n //}\r\n\r\n return {\r\n width: this.sectionWidth,\r\n sketch: {\r\n height: this.sectionHeight,\r\n objects: objectsOut\r\n }\r\n };\r\n }\r\n\r\n _visibleCheckCopy(stepx, stepY, visibleInterval, visibleIntervalY) {\r\n let flag = false;\r\n let array_flag = false;\r\n if (visibleInterval != null) {\r\n visibleInterval.map((item) => {\r\n if (stepx < MathHelper.mmToMeters(parseFloat(item.min))\r\n || stepx >= MathHelper.mmToMeters(parseFloat(item.max))) {\r\n flag = true;\r\n }\r\n else {\r\n array_flag = true;\r\n }\r\n });\r\n }\r\n if (visibleIntervalY != null) {\r\n visibleIntervalY.map((item) => {\r\n if (stepY < MathHelper.mmToMeters(parseFloat(item.min))\r\n || stepY >= MathHelper.mmToMeters(parseFloat(item.max))) {\r\n flag = true;\r\n }\r\n else {\r\n array_flag = true;\r\n }\r\n });\r\n }\r\n if (array_flag) {\r\n return false;\r\n }\r\n return flag;\r\n }\r\n\r\n _visibleCheck(objectIn, innerSection, skipY, alfa) {\r\n let flagSkip = false;\r\n let array_flag = false;\r\n if (objectIn.visibleInterval != null) {\r\n if (innerSection != null) {\r\n if (Array.isArray(objectIn.visibleInterval)) {\r\n const passIntervals = objectIn.visibleInterval.filter((item) => {\r\n if (innerSection.width < MathHelper.mmToMeters(parseInt(item.min))\r\n || innerSection.width > MathHelper.mmToMeters(parseInt(item.max))) {\r\n return false;\r\n } else\r\n return true;\r\n });\r\n if (passIntervals.length == 0) {\r\n flagSkip = true;\r\n }\r\n }\r\n else if (innerSection.width < MathHelper.mmToMeters(parseInt(objectIn.visibleInterval.min))\r\n || innerSection.width > MathHelper.mmToMeters(parseInt(objectIn.visibleInterval.max))) {\r\n flagSkip = true;\r\n }\r\n } else {\r\n if (Array.isArray(objectIn.visibleInterval)) {\r\n const passIntervals = objectIn.visibleInterval.filter((item) => {\r\n if (this.sectionWidth < MathHelper.mmToMeters(parseInt(item.min))\r\n || this.sectionWidth > MathHelper.mmToMeters(parseInt(item.max))) {\r\n return false;\r\n } else\r\n return true;\r\n });\r\n if (passIntervals.length == 0) {\r\n flagSkip = true;\r\n }\r\n }\r\n else if (this.sectionWidth < MathHelper.mmToMeters(parseInt(objectIn.visibleInterval.min))\r\n || this.sectionWidth > MathHelper.mmToMeters(parseInt(objectIn.visibleInterval.max))) {\r\n flagSkip = true;\r\n }\r\n }\r\n }\r\n if (!skipY && objectIn.visibleIntervalY != null) {\r\n if (Array.isArray(objectIn.visibleIntervalY)) {\r\n const passIntervals = objectIn.visibleIntervalY.filter((item) => {\r\n if (this.sectionHeight < MathHelper.mmToMeters(parseInt(item.min))\r\n || this.sectionHeight > MathHelper.mmToMeters(parseInt(item.max))) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n });\r\n if (passIntervals.length == 0) {\r\n flagSkip = true;\r\n }\r\n }\r\n else if (this.sectionHeight < MathHelper.mmToMeters(parseInt(objectIn.visibleIntervalY.min))\r\n || this.sectionHeight > MathHelper.mmToMeters(parseInt(objectIn.visibleIntervalY.max))) {\r\n flagSkip = true;\r\n }\r\n }\r\n if (objectIn.visibleIntervalA != null && alfa != null) {\r\n let deegre = MathHelper.radToDegree(alfa);\r\n const passIntervals = objectIn.visibleIntervalA.filter((item) => {\r\n if (deegre < parseInt(item.min)\r\n || deegre > parseInt(item.max)) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n });\r\n if (passIntervals.length == 0) {\r\n flagSkip = true;\r\n }\r\n }\r\n return flagSkip;\r\n }\r\n\r\n _getObjectOutFromObjectIn(objectIn) {\r\n let userValuesInnerSection = { ...this.userValues };\r\n if (objectIn.copyToInnerSection) {\r\n userValuesInnerSection[FormulaHelper.FILL_WIDTH] = this.innerSections[0].width;\r\n }\r\n let objectOut = {\r\n key: objectIn.key,\r\n isPillar: objectIn.tag == EditSketchConstants.PILLAR1 || objectIn.tag == EditSketchConstants.PILLAR2 ? true : false,\r\n skipCalculation: objectIn.noCalculate ? true : false,\r\n useCoeff: objectIn.useCoeff ? true : false,\r\n skipInMirror: objectIn.skipInMirror ? true : false,\r\n donotMirror: objectIn.donotMirror ? true : false,\r\n processType: objectIn.processType,\r\n id: parseInt(objectIn.id),\r\n type: objectIn.type,\r\n position: {\r\n x: FormulaHelper.calcValue(objectIn.position.x, this.userValues),\r\n y: FormulaHelper.calcValue(objectIn.position.y, this.userValues),\r\n z: FormulaHelper.calcValue(objectIn.position.z, this.userValues),\r\n y2: objectIn.position.y2 != null ? FormulaHelper.calcValue(objectIn.position.y2, this.userValues) : null,\r\n },\r\n rotation: {\r\n x: typeof (objectIn.rotation.x) == \"object\" ? FormulaHelper.calcValue(objectIn.rotation.x, userValuesInnerSection) : MathHelper.degreeToRad(parseFloat(objectIn.rotation.x)),\r\n y: typeof (objectIn.rotation.y) == \"object\" ? FormulaHelper.calcValue(objectIn.rotation.y, userValuesInnerSection) : MathHelper.degreeToRad(parseFloat(objectIn.rotation.y)),\r\n z: typeof (objectIn.rotation.z) == \"object\" ? FormulaHelper.calcValue(objectIn.rotation.z, userValuesInnerSection) : MathHelper.degreeToRad(parseFloat(objectIn.rotation.z))\r\n }\r\n };\r\n if (objectIn.rotation2 != null) {\r\n objectOut.rotation2 = {\r\n x: FormulaHelper.calcValue(objectIn.rotation2.x, this.userValues),\r\n y: FormulaHelper.calcValue(objectIn.rotation2.y, this.userValues),\r\n z: FormulaHelper.calcValue(objectIn.rotation2.z, this.userValues)\r\n }\r\n }\r\n if (objectIn.length != null && objectIn.type == EditSketchConstants.OBJECT_TYPE_METALL) {\r\n objectOut.length = FormulaHelper.calcValue(objectIn.length, this.userValues);\r\n }\r\n\r\n //apply segment/spline\r\n if (objectIn.useSegment) {\r\n objectOut.segmentHeight = MathHelper.mmToMeters(objectIn.segmentHeight);\r\n objectOut.segmentDirection = {\r\n x: objectIn.segmentDirection.x,\r\n y: objectIn.segmentDirection.y,\r\n z: objectIn.segmentDirection.z,\r\n };\r\n }\r\n if (objectIn.useSpline) {\r\n objectOut.points = [\r\n { x: 0, y: -(objectOut.length / 2), z: 0 },\r\n ...objectIn.points.map(p => ({\r\n x: MathHelper.mmToMeters(p.x),\r\n y: MathHelper.mmToMeters(p.y),\r\n z: MathHelper.mmToMeters(p.z)\r\n })),\r\n { x: 0, y: (objectOut.length / 2), z: 0 }\r\n ];\r\n }\r\n\r\n if (objectIn.autosize != null) {\r\n const end1 = MathHelper.mmToMeters(parseInt(objectIn.autosize.end1));\r\n const end2 = MathHelper.mmToMeters(parseInt(objectIn.autosize.end2));\r\n if (end1 != 0 || end2 != 0) {\r\n objectOut.autosize = {};\r\n if (end1 != 0)\r\n objectOut.autosize.end1 = end1;\r\n if (end2 != 0)\r\n objectOut.autosize.end2 = end2;\r\n }\r\n }\r\n\r\n if (objectIn.ends) {\r\n objectOut.ends = {};\r\n if (objectIn.ends.first) {\r\n if (objectIn.ends.first.type == EditSketchConstants.END_TYPE_CUT) {\r\n objectOut.ends.first = {\r\n cutLength: MathHelper.mmToMeters(parseInt(objectIn.ends.first.cutLength)),\r\n axis: objectIn.ends.first.axis\r\n };\r\n }\r\n if (objectIn.ends.first.type == EditSketchConstants.END_TYPE_ABC) {\r\n objectOut.ends.first = {\r\n a: MathHelper.mmToMeters(parseInt(objectIn.ends.first.a)),\r\n b: MathHelper.mmToMeters(parseInt(objectIn.ends.first.b)),\r\n c: MathHelper.mmToMeters(parseInt(objectIn.ends.first.c))\r\n };\r\n }\r\n }\r\n\r\n if (objectIn.ends.last) {\r\n if (objectIn.ends.last.type == EditSketchConstants.END_TYPE_CUT) {\r\n objectOut.ends.last = {\r\n cutLength: MathHelper.mmToMeters(parseInt(objectIn.ends.last.cutLength)),\r\n axis: objectIn.ends.last.axis\r\n };\r\n }\r\n if (objectIn.ends.last.type == EditSketchConstants.END_TYPE_ABC) {\r\n objectOut.ends.last = {\r\n a: MathHelper.mmToMeters(parseInt(objectIn.ends.last.a)),\r\n b: MathHelper.mmToMeters(parseInt(objectIn.ends.last.b)),\r\n c: MathHelper.mmToMeters(parseInt(objectIn.ends.last.c))\r\n };\r\n }\r\n } \r\n }\r\n\r\n if (objectIn.isBorder) {\r\n objectOut.isBorder = true;\r\n }\r\n if (objectIn.autofit) {\r\n objectOut.autofit = { type: objectIn.autofit.type, offset: MathHelper.mmToMeters(parseInt(objectIn.autofit.offset)) };\r\n objectOut.position.z += MathHelper.mmToMeters(parseInt(objectIn.autofit.offset));\r\n }\r\n /*if (objectIn.torsion) {\r\n \r\n }*/\r\n if (objectIn.torsions) {\r\n let firstTorsion = { ...objectIn.torsions[0] };\r\n const end = FormulaHelper.calcValue(firstTorsion.end, this.userValues);\r\n const start = FormulaHelper.calcValue(firstTorsion.start, this.userValues);\r\n objectOut.torsion = {\r\n angle: MathHelper.radToDegree(FormulaHelper.calcValue(firstTorsion.angle, this.userValues, { end: end, start: start })),\r\n end: end,\r\n start: start\r\n };\r\n objectOut.torsions = []\r\n objectIn.torsions.map((torsion) => {\r\n const end = FormulaHelper.calcValue(torsion.end, this.userValues);\r\n const start = FormulaHelper.calcValue(torsion.start, this.userValues);\r\n objectOut.torsions.push({\r\n angle: MathHelper.radToDegree(FormulaHelper.calcValue(torsion.angle, this.userValues, { end: end, start: start })),\r\n end: end,\r\n start: start\r\n });\r\n })\r\n }\r\n return objectOut;\r\n }\r\n\r\n _getGlobalStep() {\r\n const globalStepObjects = this.sketch.objects.filter(o => o.globalStep);\r\n let steps = [];\r\n\r\n let userValues = { ...this.userValues };\r\n userValues[FormulaHelper.FILL_WIDTH] = this.innerSections[0].width;\r\n\r\n for (let i = 0; i < globalStepObjects.length; i++) {\r\n const globalStepObject = globalStepObjects[i]; //this.sketch.objects.find(o => o.globalStep && (o.globalStepNumber == null || o.globalStepNumber <= 1));\r\n\r\n if (globalStepObject != null) {\r\n let isHorizontal = globalStepObject.copy.isHorizontal == true;\r\n\r\n let step = 0;\r\n let copyLenght = 0;\r\n let count = 0;\r\n //TODO: adding version support\r\n if (isHorizontal) {\r\n step = typeof (globalStepObject.copy.stepX) != 'object' ? MathHelper.mmToMeters(parseInt(globalStepObject.copy.stepX)) : FormulaHelper.calcValue(globalStepObject.copy.stepX, this.userValues);\r\n } else {\r\n step = typeof (globalStepObject.copy.stepY) != 'object' ? MathHelper.mmToMeters(parseInt(globalStepObject.copy.stepY)) : FormulaHelper.calcValue(globalStepObject.copy.stepY, this.userValues);\r\n }\r\n\r\n let firstIndent = FormulaHelper.calcValue(globalStepObject.copy.left, userValues);\r\n let secondIndent = FormulaHelper.calcValue(globalStepObject.copy.right, userValues); \r\n \r\n if (isHorizontal) {\r\n copyLenght = this.innerSections[0].width - firstIndent - secondIndent;\r\n } else {\r\n copyLenght = this.sectionHeight - firstIndent - secondIndent;\r\n }\r\n count = copyLenght / step;\r\n if (!globalStepObject.copy.constStep) {\r\n if (count % 1.0 <= parseFloat(globalStepObject.copy.k)) {\r\n count = Math.floor(count);\r\n } else {\r\n count = Math.ceil(count);\r\n }\r\n if (count == 0) {\r\n count = 1;\r\n }\r\n if (globalStepObject.copy.isEven && (count + 1) % 2 != 0) {\r\n count += 1;\r\n } else if (globalStepObject.copy.isOdd && (count + 1) % 2 != 1) {\r\n count += 1;\r\n }\r\n step = copyLenght / count;\r\n }\r\n let sindex = globalStepObject.globalStepNumber != null ? parseInt(globalStepObject.globalStepNumber) : 0;\r\n if (sindex == 1) {\r\n sindex = 0;\r\n }\r\n steps[sindex] = step;\r\n }\r\n }\r\n\r\n if (steps.length == 0) {\r\n steps[0] = 0;\r\n }\r\n\r\n return steps;\r\n }\r\n\r\n _attachConstStepRemain() {\r\n const constStepObjects = this.sketch.objects.filter(o => o.copy && o.copy.constStep && o.copy.constStepNumber);\r\n\r\n let userValues = { ...this.userValues };\r\n userValues[FormulaHelper.FILL_WIDTH] = this.innerSections[0].width;\r\n\r\n for (let i = 0; i < constStepObjects.length; i++) {\r\n const constStepObject = constStepObjects[i];\r\n\r\n let isHorizontal = constStepObject.copy.isHorizontal == true;\r\n let step = 0;\r\n let copyLenght = 0; \r\n if (isHorizontal) {\r\n step = typeof (constStepObject.copy.stepX) != 'object' ? MathHelper.mmToMeters(parseInt(constStepObject.copy.stepX)) : FormulaHelper.calcValue(constStepObject.copy.stepX, this.userValues);\r\n } else {\r\n step = typeof (constStepObject.copy.stepY) != 'object' ? MathHelper.mmToMeters(parseInt(constStepObject.copy.stepY)) : FormulaHelper.calcValue(constStepObject.copy.stepY, this.userValues);\r\n }\r\n\r\n let firstIndent = FormulaHelper.calcValue(constStepObject.copy.left, userValues);\r\n let secondIndent = FormulaHelper.calcValue(constStepObject.copy.right, userValues);\r\n\r\n if (isHorizontal) {\r\n copyLenght = this.innerSections[0].width - firstIndent - secondIndent;\r\n } else {\r\n copyLenght = this.sectionHeight - firstIndent - secondIndent;\r\n }\r\n\r\n const remain = ((copyLenght / step) % 1.0) * step;\r\n\r\n this.userValues[FormulaHelper.CONST_STEP_REMAIN + constStepObject.copy.constStepNumber] = remain;\r\n }\r\n }\r\n\r\n _getExtraVars() {\r\n if (this.sketch.extraVars == null)\r\n return {};\r\n\r\n let extraVarsObj = {};\r\n this.sketch.extraVars.forEach(item => {\r\n extraVarsObj[item.name] = MathHelper.mmToMeters(parseInt(item.val));\r\n });\r\n return extraVarsObj;\r\n }\r\n\r\n _getInnerSections() {\r\n let sectionsA = [];\r\n let innerSections = [];\r\n\r\n const pillarAWidth = (this.sketch.sectionRotation && this.sketch.sectionRotation.pillarAWidth) ? MathHelper.mmToMeters(parseInt(this.sketch.sectionRotation.pillarAWidth)) : 0;\r\n if (this.sectionIn.pillarA && this.sectionIn.pillarACount > 0) {\r\n const pillarACount = parseInt(this.sectionIn.pillarACount);\r\n \r\n let stepX = this.sectionWidth / (pillarACount + 1);\r\n if (pillarAWidth != 0) {\r\n stepX = (this.sectionWidth - pillarAWidth) / (pillarACount + 1);\r\n }\r\n for (let pillarIndex = 0; pillarIndex < pillarACount + 1; pillarIndex++) {\r\n sectionsA.push({\r\n left: pillarIndex * stepX,\r\n width: stepX + pillarAWidth,\r\n hasPillarA: pillarIndex != pillarACount\r\n });\r\n } \r\n } else {\r\n sectionsA.push({ left: 0, width: this.sectionWidth });\r\n }\r\n\r\n \r\n if (this.sketch.innerSectionWidthForSplitting) {\r\n const innerSectionWidthForSplitting = MathHelper.mmToMeters(parseInt(this.sketch.innerSectionWidthForSplitting));\r\n for (let si = 0; si < sectionsA.length; si++) {\r\n const sectionWidth = sectionsA[si].width;\r\n const pillarCount = Math.floor(sectionWidth / innerSectionWidthForSplitting);\r\n if (pillarCount == 0) {\r\n innerSections.push(sectionsA[si]);\r\n } else {\r\n let stepX = sectionWidth / (pillarCount + 1);\r\n if (pillarAWidth != 0) {\r\n stepX = (sectionWidth - pillarAWidth) / (pillarCount + 1);\r\n }\r\n for (let pillarIndex = 0; pillarIndex < pillarCount + 1; pillarIndex++) {\r\n innerSections.push({\r\n left: sectionsA[si].left + pillarIndex * stepX,\r\n width: stepX + pillarAWidth,\r\n hasPillarA: pillarIndex == pillarCount\r\n });\r\n } \r\n }\r\n }\r\n } else {\r\n innerSections = [...sectionsA];\r\n }\r\n\r\n this.innerSectionsA = sectionsA;\r\n\r\n return innerSections;\r\n }\r\n\r\n _processPillarA(objectOut, objectsOut, isAlternativePillarA) {\r\n let arr = [];\r\n if (this.sectionIn.pillarA || isAlternativePillarA) {\r\n const pillarAWidth = (this.sketch.sectionRotation && this.sketch.sectionRotation.pillarAWidth) ? MathHelper.mmToMeters(parseInt(this.sketch.sectionRotation.pillarAWidth)) : 0;\r\n for (let i = 0; i < this.innerSections.length - 1; i++) {\r\n if ((!isAlternativePillarA && this.innerSections[i].hasPillarA) ||\r\n (isAlternativePillarA && !this.innerSections[i].hasPillarA)) {\r\n let objectOutCopy = JSON.parse(JSON.stringify(objectOut));\r\n objectOutCopy.position.x = this.innerSections[i].left + this.innerSections[i].width - pillarAWidth / 2;\r\n objectOutCopy.isPillarA = true;\r\n objectOutCopy.isPillar = !isAlternativePillarA;\r\n objectsOut.push(objectOutCopy);\r\n arr.push(objectOutCopy);\r\n }\r\n }\r\n }\r\n return arr;\r\n }\r\n\r\n _processCopyToInnerSection(objectIn, objectOut) {\r\n let objectsOut = [];\r\n const pillarAWidth = (this.sketch.sectionRotation && this.sketch.sectionRotation.pillarAWidth) ? MathHelper.mmToMeters(parseInt(this.sketch.sectionRotation.pillarAWidth)) : 0;\r\n const pillarWidth = (this.sketch.sectionRotation && this.sketch.sectionRotation.pillarWidth) ? MathHelper.mmToMeters(parseInt(this.sketch.sectionRotation.pillarWidth)) : 0;\r\n\r\n let innerSections = this.innerSections;\r\n\r\n if (objectIn.notInnersectionIfNoPillarA) {\r\n innerSections = this.innerSectionsA;\r\n }\r\n\r\n for (let isi = 0; isi < innerSections.length; isi++) {\r\n const innerSection = {\r\n ...innerSections[isi]\r\n };\r\n if (innerSections.length > 1 && objectIn.rotation.z != Math.PI / 2 &&\r\n pillarAWidth != 0 && pillarWidth != 0 && pillarAWidth != pillarWidth) {\r\n const deltaPillar = pillarWidth - pillarAWidth; \r\n innerSection.width += (isi == 0 || isi == innerSections.length - 1) ? deltaPillar : deltaPillar * 2;\r\n if (isi != 0) { \r\n innerSection.left -= deltaPillar;\r\n }\r\n }\r\n\r\n if (this._visibleCheck(objectIn, innerSection, null, this.angleAlpha ? this.angleAlpha : 0)) {\r\n return [];\r\n }\r\n let innerSectionWidth = innerSection.width;\r\n let userValueForInnerSection = {\r\n ...this.userValues,\r\n [FormulaHelper.FILL_WIDTH]: innerSectionWidth\r\n }\r\n let x = FormulaHelper.calcValue(objectIn.position.x, userValueForInnerSection);\r\n let y = FormulaHelper.calcValue(objectIn.position.y, userValueForInnerSection);\r\n let z = FormulaHelper.calcValue(objectIn.position.z, userValueForInnerSection);\r\n let objectOutCopy = JSON.parse(JSON.stringify(objectOut));\r\n objectOutCopy.position = {\r\n x: innerSection.left + x,\r\n y: y,\r\n z: z,\r\n y2: objectOut.position.y2\r\n };\r\n //if (isi > 0) {\r\n // objectOutCopy.position.x -= pillarAWidth / 2;\r\n //}\r\n if (objectIn.length != null && objectIn.type == EditSketchConstants.OBJECT_TYPE_METALL) {\r\n objectOutCopy.length = FormulaHelper.calcValue(objectIn.length, userValueForInnerSection);\r\n }\r\n //mirror subsection\r\n if (this.sectionIn.isThroughOneMirror && isi % 2 == 1) {\r\n if (!objectIn.donotMirror) {\r\n objectOutCopy.rotation.y += Math.PI;\r\n }\r\n objectOutCopy.position.x = innerSection.left + (innerSection.width - x);\r\n }\r\n if (this.sectionIn.isThroughOneMirror && isi % 2 == 1 && objectIn.skipInMirror) {\r\n objectOutCopy = null;\r\n }\r\n\r\n if (objectOutCopy) {\r\n objectsOut.push(objectOutCopy);\r\n }\r\n }\r\n return objectsOut;\r\n }\r\n\r\n _processComplexCopyItem2(objectsIn) {\r\n let outArr = [];\r\n let mainObjects = objectsIn.filter(o => !o.copy.minorComplex);\r\n let minorObject = objectsIn.find(o => o.copy.minorComplex);\r\n let centerObject = mainObjects.find(o => o.copy.centerObject);\r\n let minusShiftObjects = mainObjects.filter(o => !o.copy.centerObject && o.copy.shift < 0);\r\n\r\n if (centerObject == null || minorObject == null) {\r\n return outArr;\r\n }\r\n\r\n const setObjectToStepArray = (item, stepArr, currentStepIndex) => {\r\n const stepLength = parseInt(item.copy.complexLength);\r\n if (stepLength <= 1 || currentStepIndex + parseInt((stepLength - 1) / 2) < stepArr.length) {\r\n stepArr[currentStepIndex].objectId.push(item.key);\r\n stepArr[currentStepIndex].isSet = true;\r\n\r\n //use item width\r\n if (stepLength > 1) {\r\n const oneWayCount = parseInt((stepLength - 1) / 2);\r\n for (let li = 1; li <= oneWayCount; li++) {\r\n if (stepArr[currentStepIndex - li] != null)\r\n stepArr[currentStepIndex - li].isSet = true;\r\n if (stepArr[currentStepIndex + li] != null)\r\n stepArr[currentStepIndex + li].isSet = true;\r\n }\r\n }\r\n }\r\n };\r\n\r\n\r\n let minorObjectOut = this._getObjectOutFromObjectIn(minorObject);\r\n let copyObjectsArr = this._processCopyItem(minorObject, minorObjectOut);\r\n for (let sectionIndex = 0; sectionIndex < copyObjectsArr.length; sectionIndex++) {\r\n let stepArr = copyObjectsArr[sectionIndex].position.x.map(x => ({\r\n objectId: [],\r\n isSet: false\r\n }));\r\n\r\n //main objects\r\n for (let objIndex = 0; objIndex < mainObjects.length; objIndex++) {\r\n const item = mainObjects[objIndex];\r\n const shift = parseInt(item.copy.shift);\r\n const multiplicity = parseInt(item.copy.multiplicity);\r\n\r\n let currentStepIndex = shift;\r\n while (currentStepIndex < stepArr.length) {\r\n if (currentStepIndex < 0) {\r\n currentStepIndex += multiplicity;\r\n continue;\r\n }\r\n\r\n setObjectToStepArray(item, stepArr, currentStepIndex);\r\n\r\n currentStepIndex += multiplicity;\r\n }\r\n }\r\n\r\n\r\n //make center\r\n let shiftStepsToRight = 0;\r\n let leftOffsetCurrent = stepArr.findIndex(step => step.objectId.find(i => i == centerObject.key) != null);\r\n let lastIndex = -1;\r\n for (let si = stepArr.length - 1; si >= 0; si--) {\r\n if (stepArr[si].objectId.find(i => i == centerObject.key) != null) {\r\n lastIndex = si;\r\n break;\r\n }\r\n }\r\n if (leftOffsetCurrent != -1 && lastIndex != -1) {\r\n let rightOffset = (stepArr.length - 1) - lastIndex;\r\n let leftOffsetNew = Math.ceil((leftOffsetCurrent + rightOffset) / 2);\r\n if (leftOffsetNew < leftOffsetCurrent) {\r\n let shiftCount = leftOffsetCurrent - leftOffsetNew;\r\n shiftStepsToRight = -shiftCount;\r\n for (let i = 0; i < shiftCount; i++) {\r\n stepArr.shift();\r\n stepArr.push({\r\n objectId: [],\r\n isSet: false\r\n });\r\n }\r\n } else if (leftOffsetNew > leftOffsetCurrent) {\r\n let shiftCount = leftOffsetNew - leftOffsetCurrent;\r\n shiftStepsToRight = shiftCount;\r\n for (let i = 0; i < shiftCount; i++) {\r\n stepArr.pop();\r\n stepArr.unshift({\r\n objectId: [],\r\n isSet: false\r\n });\r\n }\r\n }\r\n }\r\n\r\n\r\n //apply minusShiftObjects\r\n if (shiftStepsToRight > 0 && minusShiftObjects.length > 0) {\r\n for (let objIndex = 0; objIndex < minusShiftObjects.length; objIndex++) {\r\n let objShitf = minusShiftObjects[objIndex].copy.shift;\r\n if (shiftStepsToRight >= Math.abs(objShitf)) {\r\n setObjectToStepArray(minusShiftObjects[objIndex], stepArr, shiftStepsToRight - Math.abs(objShitf));\r\n }\r\n }\r\n }\r\n\r\n\r\n //fill with minor object\r\n for (let si = 0; si < stepArr.length; si++) {\r\n if (!stepArr[si].isSet) {\r\n stepArr[si].objectId.push(minorObject.key);\r\n stepArr[si].isSet = true;\r\n }\r\n }\r\n console.log(stepArr);\r\n\r\n\r\n //make outObjects\r\n for (let si = 0; si < stepArr.length; si++) {\r\n if (stepArr[si].objectId != null) {\r\n stepArr[si].objectId.forEach(item => {\r\n let o = objectsIn.find(oo => oo.key == item);\r\n let objectOut = this._getObjectOutFromObjectIn(o);\r\n objectOut.position = {\r\n x: copyObjectsArr[sectionIndex].position.x[si] + FormulaHelper.calcValue(o.position.x, this.userValues),\r\n y: objectOut.position.y,\r\n z: objectOut.position.z,\r\n y2: objectOut.position.y2\r\n };\r\n objectOut.processType = EditSketchConstants.PROCESS_TYPE_SINGLE;\r\n outArr.push(objectOut);\r\n });\r\n }\r\n }\r\n }\r\n\r\n return outArr;\r\n }\r\n\r\n _processCopyItem(objectIn, objectOut) {\r\n let userValues = { ...this.userValues };\r\n const pillarAWidth = (this.sketch.sectionRotation && this.sketch.sectionRotation.pillarAWidth) ? MathHelper.mmToMeters(parseInt(this.sketch.sectionRotation.pillarAWidth)) : 0;\r\n const pillarWidth = (this.sketch.sectionRotation && this.sketch.sectionRotation.pillarWidth) ? MathHelper.mmToMeters(parseInt(this.sketch.sectionRotation.pillarWidth)) : 0; \r\n //use innerSections from pillarA\r\n let outArr = []; \r\n for (let isi = 0; isi < this.innerSections.length; isi++) {\r\n const innerSection = {\r\n ...this.innerSections[isi]\r\n };\r\n if (this.innerSections.length > 1 && objectIn.rotation.z != Math.PI / 2 &&\r\n pillarAWidth != 0 && pillarWidth != 0 && pillarAWidth != pillarWidth) {\r\n const deltaPillar = pillarWidth - pillarAWidth;\r\n innerSection.width += (isi == 0 || isi == this.innerSections.length - 1) ? deltaPillar : deltaPillar * 2;\r\n if (isi != 0) {\r\n innerSection.left -= deltaPillar;\r\n }\r\n }\r\n\r\n if (this._visibleCheck(objectIn, innerSection, !this.sectionIn.floatHeight, this.angleAlpha == null ? 0 : null)) {\r\n continue;\r\n }\r\n userValues[FormulaHelper.FILL_WIDTH] = innerSection.width;\r\n let isHorizontal = objectIn.copy.isHorizontal != null ? objectIn.copy.isHorizontal : true;\r\n let stepX, stepY, stepZ;\r\n //TODO: add version support\r\n if (typeof (objectIn.copy.stepX) != 'object') {\r\n stepX = MathHelper.mmToMeters(parseInt(objectIn.copy.stepX));\r\n stepY = objectIn.copy.stepY != null ? MathHelper.mmToMeters(parseInt(objectIn.copy.stepY)) : 0;\r\n stepZ = objectIn.copy.stepZ != null ? MathHelper.mmToMeters(parseInt(objectIn.copy.stepZ)) : 0;\r\n }\r\n else {\r\n stepX = FormulaHelper.calcValue(objectIn.copy.stepX, userValues);\r\n stepY = FormulaHelper.calcValue(objectIn.copy.stepY, userValues);\r\n stepZ = FormulaHelper.calcValue(objectIn.copy.stepZ, userValues);\r\n\r\n }\r\n if (stepX == 0 && stepY == 0) {\r\n continue;\r\n }\r\n let curveX, curveY, curveZ;\r\n let stepForCurve, offsetCurve;\r\n let xOffset = objectOut.position.x + innerSection.left;\r\n let yOffset = objectOut.position.y;\r\n let zOffset = objectOut.position.z;\r\n let firstIndent = FormulaHelper.calcValue(objectIn.copy.left, userValues);\r\n let secondIndent = FormulaHelper.calcValue(objectIn.copy.right, userValues);\r\n \r\n let multiplicity = objectIn.copy.multiplicity != null ? parseInt(objectIn.copy.multiplicity) : 1;\r\n let shift = objectIn.copy.shift != null ? parseInt(objectIn.copy.shift) : 0;\r\n let copyLenght;\r\n let count;\r\n if (isHorizontal) {\r\n copyLenght = innerSection.width - firstIndent - secondIndent;\r\n count = copyLenght / stepX;\r\n }\r\n else {\r\n copyLenght = this.sectionHeight - firstIndent - secondIndent;\r\n count = copyLenght / stepY;\r\n }\r\n if (!objectIn.copy.constStep) {\r\n if (count % 1.0 <= parseFloat(objectIn.copy.k)) {\r\n count = Math.floor(count);\r\n } else {\r\n count = Math.ceil(count);\r\n }\r\n if (objectIn.copy.isEven && (count + 1) % 2 != 0) { //count+1 - number of items\r\n count += 1;\r\n } else if (objectIn.copy.isOdd && (count + 1) % 2 != 1) {\r\n count += 1;\r\n }\r\n isHorizontal ? stepX = copyLenght / count : stepY = copyLenght / count;\r\n }\r\n else {\r\n count = Math.floor(count);\r\n if (objectIn.copy.rightCorner == \"center\") {\r\n let indent = isHorizontal ? copyLenght - count * stepX : copyLenght - count * stepY;\r\n isHorizontal ? xOffset += indent / 2 : yOffset += indent / 2;\r\n }\r\n else if (objectIn.copy.rightCorner) {\r\n let indent = isHorizontal ? copyLenght - count * stepX : copyLenght - count * stepY;\r\n isHorizontal ? xOffset += indent : yOffset += indent;\r\n }\r\n }\r\n if (isHorizontal) {\r\n xOffset += firstIndent;\r\n offsetCurve = xOffset;\r\n stepForCurve = stepX;\r\n }\r\n else {\r\n yOffset += secondIndent;\r\n offsetCurve = yOffset;\r\n stepForCurve = stepY;\r\n }\r\n if (this._visibleCheckCopy(stepX, stepY, objectIn.visibleIntervalCopy, objectIn.visibleIntervalYCopy)) {\r\n continue;\r\n }\r\n curveX = FormulaHelper.getCurvePosition(objectIn.copy.stepX, userValues, count, stepForCurve);\r\n curveY = FormulaHelper.getCurvePosition(objectIn.copy.stepY, userValues, count, stepForCurve);\r\n curveZ = FormulaHelper.getCurvePosition(objectIn.copy.stepZ, userValues, count, stepForCurve);\r\n let objectOutCopy = JSON.parse(JSON.stringify(objectOut));\r\n objectOutCopy.position = {\r\n x: [],\r\n y: [],\r\n z: [],\r\n y2: objectOut.position.y2\r\n };\r\n let curveShiftX = 0;\r\n let curveShiftY = 0;\r\n let curveShiftZ = 0;\r\n if (curveX.length > 0) {\r\n curveShiftX = curveX[0].v;\r\n zOffset += curveY[0].offset;\r\n stepZ = curveX[0].xStepNew;\r\n }\r\n if (curveY.length > 0) {\r\n curveShiftY = curveY[0].v;\r\n xOffset += curveY[0].offset;\r\n stepX = curveY[0].xStepNew;\r\n }\r\n if (curveZ.length > 0) {\r\n curveShiftZ = curveZ[0].v;\r\n }\r\n if (shift == 0 && !objectIn.copy.hideFirstLast) {\r\n objectOutCopy.position.x.push(xOffset + curveShiftX);\r\n objectOutCopy.position.y.push(yOffset + curveShiftY);\r\n objectOutCopy.position.z.push(zOffset + curveShiftZ);\r\n }\r\n for (let i = 0; i < count; i++) {\r\n if (curveX.length >= i + 1) {\r\n curveShiftX = curveX[i + 1].v;\r\n }\r\n if (curveY.length >= i + 1) {\r\n curveShiftY = curveY[i + 1].v;\r\n }\r\n if (curveZ.length >= i + 1) {\r\n curveShiftZ = curveZ[i + 1].v;\r\n }\r\n xOffset += stepX;\r\n yOffset += stepY;\r\n zOffset += stepZ;\r\n if (objectIn.copy.hideFirstLast) {\r\n if (i == count - 1) {\r\n continue;\r\n }\r\n }\r\n if (multiplicity == 1 || (i + 2 - shift) % multiplicity == 1) {\r\n objectOutCopy.position.x.push(xOffset + curveShiftX);\r\n objectOutCopy.position.y.push(yOffset + curveShiftY);\r\n objectOutCopy.position.z.push(zOffset + curveShiftZ);\r\n }\r\n }\r\n if (typeof(objectIn.copy.stepX) == \"object\" && (objectIn.copy.stepY.perpendicular || objectIn.copy.stepX.perpendicular)) {\r\n let temp_x = [];\r\n let temp_y = [];\r\n let temp_z = [];\r\n for (let i = 0; i <= count; i++) {\r\n temp_x.push(objectOutCopy.rotation.x);\r\n temp_y.push(objectOutCopy.rotation.y);\r\n temp_z.push(objectOutCopy.rotation.z);\r\n }\r\n let coef = 1;\r\n if (objectIn.copy.stepY.v == \"-\") {\r\n coef = -1;\r\n }\r\n if (objectIn.copy.stepY.perpendicular) {\r\n curveY.forEach((item, itemIndex) => {\r\n temp_z[itemIndex] += item.a * coef;\r\n });\r\n }\r\n if (objectIn.copy.stepX.perpendicular) {\r\n curveX.forEach((item, itemIndex) => {\r\n temp_y[itemIndex] += item.a * coef;\r\n });\r\n }\r\n objectOutCopy.rotation.x = temp_x;\r\n objectOutCopy.rotation.y = temp_y;\r\n objectOutCopy.rotation.z = temp_z;\r\n }\r\n\r\n //mirror subsection\r\n if (this.sectionIn.isThroughOneMirror && isi % 2 == 1) {\r\n if (!objectIn.donotMirror) {\r\n if (typeof (objectOutCopy.rotation.y) == \"number\") {\r\n objectOutCopy.rotation.y += Math.PI;\r\n } else {\r\n objectOutCopy.rotation.y = objectOutCopy.rotation.y.map(yy => yy + Math.PI);\r\n }\r\n }\r\n objectOutCopy.position.x = objectOutCopy.position.x.map(xx => innerSection.left + (innerSection.left + innerSection.width - xx));\r\n }\r\n if (this.sectionIn.isThroughOneMirror && isi % 2 == 1 && objectIn.skipInMirror) {\r\n objectOutCopy = null;\r\n }\r\n\r\n if (objectOutCopy) {\r\n outArr.push(objectOutCopy);\r\n }\r\n }\r\n return outArr;\r\n }\r\n\r\n _processGroup(groupObjectIn, useStairsCorrection) {\r\n let objectsOut = [];\r\n let userValues = this.userValues;\r\n\r\n //build centers of each group\r\n let centerPositions = [];\r\n if (groupObjectIn.processType == EditSketchConstants.PROCESS_TYPE_SINGLE) {\r\n if (groupObjectIn.copyToInnerSection) {\r\n let groupObjectOut = this._getObjectOutFromObjectIn(groupObjectIn);\r\n let arr = this._processCopyToInnerSection(groupObjectIn, groupObjectOut);\r\n if (useStairsCorrection) {\r\n arr.forEach(item => this._correctStairsPositionY(item));\r\n }\r\n for (let i = 0; i < arr.length; i++) {\r\n centerPositions.push(arr[i].position);\r\n }\r\n userValues = {\r\n ...this.userValues,\r\n [FormulaHelper.FILL_WIDTH]: this.innerSections[0].width\r\n };\r\n } else {\r\n let pos = {\r\n x: FormulaHelper.calcValue(groupObjectIn.position.x, userValues),\r\n y: FormulaHelper.calcValue(groupObjectIn.position.y, userValues),\r\n z: FormulaHelper.calcValue(groupObjectIn.position.z, userValues)\r\n };\r\n if (useStairsCorrection) {\r\n pos.y = this._getCorrectionStairsY(pos.x, pos.y);\r\n }\r\n centerPositions.push(pos);\r\n }\r\n } else {\r\n let groupObjectOut = this._getObjectOutFromObjectIn(groupObjectIn);\r\n let copyArr = this._processCopyItem(groupObjectIn, groupObjectOut);\r\n for (let i = 0; i < copyArr.length; i++) {\r\n const position = copyArr[i].position;\r\n for (let pi = 0; pi < position.x.length; pi++) {\r\n let pos = {\r\n x: position.x[pi],\r\n y: position.y[pi],\r\n z: position.z[pi]\r\n };\r\n if (useStairsCorrection) {\r\n pos.y = this._getCorrectionStairsY(pos.x, pos.y);\r\n }\r\n centerPositions.push(pos);\r\n }\r\n }\r\n }\r\n\r\n const gRotationx = (typeof (groupObjectIn.rotation.x) == \"object\" ? FormulaHelper.calcValue(groupObjectIn.rotation.x, this.userValues) : MathHelper.degreeToRad(parseFloat(groupObjectIn.rotation.x)));\r\n const gRotationy = (typeof (groupObjectIn.rotation.y) == \"object\" ? FormulaHelper.calcValue(groupObjectIn.rotation.y, this.userValues) : MathHelper.degreeToRad(parseFloat(groupObjectIn.rotation.y)));\r\n const gRotationz = (typeof (groupObjectIn.rotation.z) == \"object\" ? FormulaHelper.calcValue(groupObjectIn.rotation.z, this.userValues) : MathHelper.degreeToRad(parseFloat(groupObjectIn.rotation.z)));\r\n\r\n let widthOrig = MathHelper.mmToMeters(parseFloat(groupObjectIn.sizeOriginal.x));\r\n let heightOrig = MathHelper.mmToMeters(parseFloat(groupObjectIn.sizeOriginal.y));\r\n let widthTarget = FormulaHelper.calcValue(groupObjectIn.sizeTarget.x, userValues);\r\n let heightTarget = FormulaHelper.calcValue(groupObjectIn.sizeTarget.y, userValues);\r\n let scaleX = widthTarget / widthOrig;\r\n let scaleY = heightTarget / heightOrig;\r\n\r\n //process items in each group\r\n for (let gi = 0; gi < centerPositions.length; gi++) {\r\n const gPosx = centerPositions[gi].x;\r\n const gPosy = centerPositions[gi].y;\r\n const gPosz = centerPositions[gi].z;\r\n for (let i = 0; i < groupObjectIn.objects.length; i++) {\r\n let objectIn = groupObjectIn.objects[i];\r\n let objectOut = this._getObjectOutFromObjectIn(objectIn, userValues);\r\n if (objectOut.type == EditSketchConstants.OBJECT_TYPE_METALL && (scaleX != 1 || scaleY != 1)) {\r\n this._scaleMetalSpline(objectOut, scaleX, scaleY);\r\n }\r\n objectOut.position.x += gPosx;\r\n objectOut.position.y += gPosy;\r\n\r\n objectOut.position.z += gPosz;\r\n objectOut.rotation.x += gRotationx;\r\n objectOut.rotation.y += gRotationy;\r\n objectOut.rotation.z += gRotationz;\r\n //rotation of group\r\n if (gRotationz != 0) {\r\n let pNew = this._rotatePoint(objectOut.position, { x: gPosx, y: gPosy }, gRotationz);\r\n objectOut.position.x = pNew.x;\r\n objectOut.position.y = pNew.y;\r\n }\r\n objectsOut.push(objectOut);\r\n }\r\n }\r\n return objectsOut;\r\n }\r\n\r\n _scaleMetalSpline(objectOut, scaleX, scaleY) {\r\n if (objectOut.points == null) {\r\n objectOut.points =\r\n [{ x: 0, y: -(objectOut.length / 2), z: 0 },\r\n { x: 0, y: (objectOut.length / 2), z: 0 }];\r\n }\r\n const angleRad = objectOut.rotation.z;\r\n let pointsNew = [];\r\n for (let i = 0; i < objectOut.points.length; i++) {\r\n const pOrig = objectOut.points[i];\r\n let rx = (pOrig.x * Math.cos(angleRad) - pOrig.y * Math.sin(angleRad)) * scaleX;\r\n let ry = (pOrig.x * Math.sin(angleRad) + pOrig.y * Math.cos(angleRad)) * scaleY;\r\n pointsNew.push({ x: rx, y: ry, z: pOrig.z });\r\n }\r\n let lastPoint = pointsNew[pointsNew.length - 1];\r\n let angleNewRad = 0;\r\n if (Math.sign(lastPoint.y) < 0) {\r\n angleNewRad = -1 * (Math.PI - Math.atan(lastPoint.x / lastPoint.y));\r\n } else {\r\n angleNewRad = Math.atan(lastPoint.x / lastPoint.y);\r\n }\r\n for (let i = 0; i < pointsNew.length; i++) {\r\n let p = pointsNew[i];\r\n let xn = p.x * Math.cos(angleNewRad) - p.y * Math.sin(angleNewRad);\r\n let yn = p.x * Math.sin(angleNewRad) + p.y * Math.cos(angleNewRad);\r\n p.x = xn;\r\n p.y = yn;\r\n }\r\n objectOut.points = pointsNew;\r\n objectOut.rotation.z = -angleNewRad;\r\n objectOut.length = -objectOut.points[0].y * 2;\r\n objectOut.position.x = objectOut.position.x * scaleX;\r\n objectOut.position.y = objectOut.position.y * scaleY;\r\n }\r\n\r\n _rotatePoint(point, center, angleRad) {\r\n var rotatedX = Math.cos(angleRad) * (point.x - center.x) - Math.sin(angleRad) * (point.y - center.y) + center.x;\r\n var rotatedY = Math.sin(angleRad) * (point.x - center.x) + Math.cos(angleRad) * (point.y - center.y) + center.y;\r\n return { x: rotatedX, y: rotatedY };\r\n }\r\n\r\n _makeSectionCurve(objectsOut) {\r\n const segmentHeight = MathHelper.mmToMeters(parseInt(this.sectionIn.curveHeight));\r\n\r\n for (let objectIndex = 0; objectIndex < objectsOut.length; objectIndex++) {\r\n const object = objectsOut[objectIndex];\r\n\r\n if (object.type == EditSketchConstants.OBJECT_TYPE_METALL\r\n && object.processType == EditSketchConstants.PROCESS_TYPE_SINGLE\r\n && object.rotation.z == Math.PI/2) {\r\n //TODO: correct with length\r\n object.segmentHeight = Math.abs(segmentHeight) * (object.length / this.sectionWidth);\r\n object.segmentDirection = { x: Math.sign(segmentHeight), y: 0, z: 0 };\r\n }\r\n\r\n\r\n }\r\n }\r\n\r\n //#region stairs\r\n\r\n buildTemplateSectionStairs(sectionIn, sketch, hidePillar1, hidePillar2) {\r\n this.sectionIn = sectionIn;\r\n this.sketch = sketch;\r\n this.hidePillar1 = hidePillar1;\r\n\r\n let objectsOut = [];\r\n this.l1 = MathHelper.mmToMeters(parseInt(this.sectionIn.l1));\r\n this.l2 = MathHelper.mmToMeters(parseInt(this.sectionIn.l2));\r\n this.l = MathHelper.mmToMeters(parseInt(this.sectionIn.length));\r\n this.hStairs = MathHelper.mmToMeters(parseInt(this.sectionIn.hStairs));\r\n if (this.hStairs < 0) {\r\n this.hStairs = Math.abs(this.hStairs);\r\n this.stairsReverse = true;\r\n }\r\n if (this.sectionIn.type == SectionHelper.SECTION_STAIRS2) {\r\n this.stairsCount = parseInt(this.sectionIn.stairsCount) - 1;\r\n this.hStairSingle = this.hStairs / (this.stairsCount + 1);\r\n this.widthStairSingle = this.l / this.stairsCount;\r\n this.l1 -= this.widthStairSingle / 2;\r\n this.l2 -= this.widthStairSingle / 2;\r\n this.l += this.widthStairSingle;\r\n }\r\n this.sectionWidth = this.l1 + this.l + this.l2;\r\n this.sectionHeight = this.sectionIn.height != null ? MathHelper.mmToMeters(parseInt(this.sectionIn.height)) : MathHelper.mmToMeters(parseInt(this.sketch.height));\r\n this.angleAlpha = Math.atan(this.hStairs / this.l);\r\n\r\n this.userValues = {\r\n [FormulaHelper.FILL_WIDTH]: this.sectionWidth,\r\n [FormulaHelper.FILL_HEIGHT]: this.sectionHeight,\r\n [FormulaHelper.STEP]: 0,\r\n [FormulaHelper.STAIR_HEIGHT]: this.hStairSingle,\r\n ...this._getExtraVars()\r\n };\r\n\r\n this.heightRail = FormulaHelper.calcValue(this.sketch.heightRail, this.userValues);\r\n this.heightRailPerpendicular = this.heightRail * Math.cos(this.angleAlpha);\r\n\r\n if (this.sectionIn.type == SectionHelper.SECTION_STAIRS2) {\r\n this._buildStairs(objectsOut);\r\n }\r\n\r\n\r\n\r\n //split section to inner sections by pillar A\r\n this.innerSections = this._getInnerSections();\r\n if (this.sectionIn.type == SectionHelper.SECTION_STAIRS2) {\r\n this._correctInnerSectionsForStairs();\r\n }\r\n\r\n const globalSteps = this._getGlobalStep();\r\n for (let i = 0; i < globalSteps.length; i++) {\r\n if (globalSteps[i]) {\r\n if (i == 0) {\r\n this.userValues[FormulaHelper.STEP] = globalSteps[i];\r\n } else {\r\n this.userValues[FormulaHelper.STEP + (i)] = globalSteps[i];\r\n }\r\n }\r\n }\r\n\r\n this._attachConstStepRemain();\r\n\r\n let complexCopy = [];\r\n\r\n let objects = [...this.sketch.objects];\r\n for (let i = 0; i < objects.length; i++) {\r\n let objectIn = objects[i];\r\n\r\n if (objectIn.tag == EditSketchConstants.PILLAR1 && (!this.sectionIn.pillar1 || this.hidePillar1)) {\r\n continue;\r\n }\r\n if (objectIn.tag == EditSketchConstants.PILLAR2 && (!this.sectionIn.pillar2 || hidePillar2)) {\r\n continue;\r\n }\r\n\r\n //if (objectIn.copyToInnerSection && objectIn.notInnersectionIfNoPillarA\r\n // && (!this.sectionIn.pillarA || this.sectionIn.pillarACount <= 0)) {\r\n // objectIn.copyToInnerSection = false;\r\n //}\r\n\r\n if (objectIn.processType == EditSketchConstants.PROCESS_TYPE_SINGLE && !objectIn.copyToInnerSection) {\r\n if (this._visibleCheck(objectIn, null, !this.sectionIn.floatHeight, this.angleAlpha)) {\r\n continue;\r\n }\r\n }\r\n\r\n if (objectIn.type == EditSketchConstants.OBJECT_TYPE_GROUP) {\r\n let arr = this._processGroup(objectIn, true);\r\n objectsOut.push(...arr);\r\n continue;\r\n }\r\n\r\n let objectOut = this._getObjectOutFromObjectIn(objectIn);\r\n\r\n //special horizontal metall\r\n if (objectIn.isStairsHorizontal) {\r\n if (objectIn.copyToInnerSection) {\r\n if (this._visibleCheck(objectIn, this.innerSections[0], null, this.angleAlpha ? this.angleAlpha : 0)) {\r\n continue;\r\n }\r\n }\r\n this._processHorizontalSegments(objectOut, objectsOut, objectIn);\r\n continue;\r\n }\r\n if (objectIn.type == EditSketchConstants.OBJECT_TYPE_METALL && objectOut.rotation.z == Math.PI / 2) {\r\n const pillarWidth = (this.sketch.sectionRotation && this.sketch.sectionRotation.pillarWidth) ? MathHelper.mmToMeters(parseInt(this.sketch.sectionRotation.pillarWidth)) : 0;\r\n const sectionWidth = this.sectionWidth - pillarWidth * 2;\r\n if (sectionWidth * 0.90 <= objectOut.length && objectOut.length <= this.sectionWidth * 1.10) {\r\n if (objectIn.copyToInnerSection) {\r\n if (this._visibleCheck(objectIn, this.innerSections[0], null, this.angleAlpha ? this.angleAlpha : 0)) {\r\n continue;\r\n }\r\n }\r\n this._processHorizontalSegments(objectOut, objectsOut, objectIn);\r\n continue;\r\n }\r\n }\r\n\r\n if (objectIn.tag == EditSketchConstants.PILLARA) {\r\n let pillarAArr = this._processPillarA(objectOut, objectsOut);\r\n pillarAArr.forEach(item => this._correctStairsPositionY(item));\r\n continue;\r\n }\r\n if (objectIn.pillarAAlternative) {\r\n if (this.innerSections.length > 1\r\n && (!this.sectionIn.pillarA || this.sectionIn.pillarACount <= 0)) { \r\n let pillarAArr = this._processPillarA(objectOut, objectsOut, true);\r\n pillarAArr.forEach(item => this._correctStairsPositionY(item));\r\n }\r\n continue;\r\n }\r\n\r\n if (objectIn.processType == EditSketchConstants.PROCESS_TYPE_SINGLE) {\r\n this._correctStairsPositionY(objectOut,\r\n objectIn.isPerpendicular && objectIn.processType == EditSketchConstants.PROCESS_TYPE_SINGLE && !objectIn.copyToInnerSection,\r\n objectOut.position.y2,\r\n objectIn.ladderAngle);\r\n }\r\n\r\n if (this.l1 < 0 && objectIn.tag == EditSketchConstants.PILLAR1) { //correct to floor\r\n let dy = objectOut.position.y - objectOut.length / 2;\r\n objectOut.length += dy;\r\n objectOut.position.y -= dy / 2;\r\n }\r\n\r\n\r\n if (objectIn.copyToInnerSection) {\r\n let arr = this._processCopyToInnerSection(objectIn, objectOut);\r\n arr.forEach(item => this._correctStairsPositionY(item, objectIn.isPerpendicular, null, false));\r\n objectsOut.push(...arr);\r\n continue;\r\n }\r\n\r\n if (objectIn.processType == EditSketchConstants.PROCESS_TYPE_COPY) {\r\n if (objectIn.copy.shift2 != null) {\r\n objectIn.copy.shift2.map((item) => {\r\n let objectInNewShift = {\r\n ...objectIn,\r\n copy: {\r\n ...objectIn.copy,\r\n shift: item,\r\n shift2: null,\r\n }\r\n };\r\n objects.push(objectInNewShift);\r\n })\r\n }\r\n if (objectIn.copy.isComplex) {\r\n complexCopy.push(objectIn);\r\n continue;\r\n }\r\n if (objectIn.isPerpendicular == true) {\r\n let copyArr = this._processCopyItemStairsSegment(objectIn, objectOut);\r\n objectsOut.push(...copyArr);\r\n } else {\r\n let copyArr = this._processCopyItem(objectIn, objectOut);\r\n let filtredCopy = [];\r\n copyArr.forEach((item) => filtredCopy.push(this._visibleCheckAlfaForSimpleCopy(objectIn, item)));\r\n copyArr = filtredCopy;\r\n if (objectIn.type == EditSketchConstants.OBJECT_TYPE_METALL) {\r\n copyArr = this._splitCopyArr(copyArr);\r\n }\r\n copyArr.forEach(item => this._correctStairsPositionY(item, null, item.position.y2, objectIn.ladderAngle));\r\n objectsOut.push(...copyArr);\r\n }\r\n continue;\r\n }\r\n\r\n objectsOut.push(objectOut);\r\n }\r\n\r\n if (complexCopy.length > 0) {\r\n let copyArr = this._processComplexCopyItem2(complexCopy);\r\n copyArr.forEach(item => this._correctStairsPositionY(item, null, item.position.y2, item.ladderAngle));\r\n objectsOut.push(...copyArr);\r\n }\r\n\r\n return {\r\n width: this.sectionWidth,\r\n sketch: {\r\n height: this.sectionHeight,\r\n objects: objectsOut\r\n }\r\n };\r\n }\r\n\r\n _splitCopyArr(copyArr) {\r\n let arr = [];\r\n copyArr.forEach(item => {\r\n for (let i = 0; i < item.position.x.length; i++) {\r\n let copyItem = JSON.parse(JSON.stringify(item));\r\n copyItem.position = {\r\n x: item.position.x[i],\r\n y: item.position.y[i],\r\n z: item.position.z[i],\r\n y2: item.position.y2,\r\n };\r\n copyItem.processType = EditSketchConstants.PROCESS_TYPE_SINGLE;\r\n arr.push(copyItem);\r\n }\r\n });\r\n return arr;\r\n }\r\n\r\n _visibleCheckAlfaForSimpleCopy(objectIn, objectOut) {\r\n let objectOutNew = {\r\n ...objectOut, position: {\r\n x: [...objectOut.position.x],\r\n y: [...objectOut.position.y],\r\n z: [...objectOut.position.z],\r\n y2: objectOut.position.y2\r\n }\r\n }; \r\n if (objectIn.visibleIntervalA != null) { \r\n let xArr = [];\r\n let yArr = [];\r\n let zArr = [];\r\n objectOutNew.position.x.forEach((item, index) => {\r\n let deegre = 0;\r\n if (this.l1 < item && item < this.l1 + this.l) {\r\n deegre = MathHelper.radToDegree(this.angleAlpha);\r\n }\r\n let passIntervals = objectIn.visibleIntervalA.filter((intv) => {\r\n if (parseInt(intv.min) <= deegre && deegre <= parseInt(intv.max)) {\r\n return true;\r\n }\r\n return false;\r\n });\r\n if (passIntervals.length > 0) {\r\n xArr.push(objectOutNew.position.x[index]);\r\n yArr.push(objectOutNew.position.y[index]);\r\n zArr.push(objectOutNew.position.z[index]);\r\n }\r\n });\r\n\r\n objectOutNew.position.x = xArr;\r\n objectOutNew.position.y = yArr;\r\n objectOutNew.position.z = zArr;\r\n }\r\n return objectOutNew;\r\n }\r\n\r\n _correctStairsPositionY(objectOut, isPerpendicular, yPos2, isLadderAngle) {\r\n let stairsCoeff = (this.heightRail / this.sectionHeight);\r\n if (typeof (objectOut.position.x) == \"number\") {\r\n if (objectOut.type == EditSketchConstants.OBJECT_TYPE_METALL && objectOut.points == null) {\r\n const xPos = objectOut.position.x;\r\n if (this.l1 <= xPos && xPos < this.l1 + this.l && isLadderAngle) {\r\n objectOut.rotation.z += this.angleAlpha;\r\n }\r\n let xSDelta = (this.sectionHeight - this.heightRail) / Math.tan(this.angleAlpha);\r\n let lenTop1 = this.l1 + xSDelta;\r\n let lenTop2 = this.l1 + this.l + xSDelta;\r\n if (xPos <= this.l1) {\r\n } else if (this.l1 < xPos && xPos < lenTop1) {\r\n let dy = (xPos - this.l1) * Math.tan(this.angleAlpha);\r\n dy *= objectOut.length / this.sectionHeight;\r\n objectOut.length -= dy;\r\n objectOut.position.y += dy / 2;\r\n } else if (lenTop1 <= xPos && xPos <= this.l1 + this.l) {\r\n objectOut.position.y = this._getCorrectionStairsY(objectOut.position.x, objectOut.position.y, null, null, yPos2);\r\n objectOut.length *= stairsCoeff;\r\n\r\n } else if (this.l1 + this.l < xPos && xPos < lenTop2) {\r\n let dy = (lenTop2 - xPos) * Math.tan(this.angleAlpha);\r\n dy *= objectOut.length / this.sectionHeight;\r\n objectOut.length -= dy;\r\n objectOut.position.y += !this.stairsReverse ? (this.hStairs - dy / 2) : -(this.hStairs - dy / 2);\r\n } else if (xPos >= lenTop2) {\r\n objectOut.position.y += !this.stairsReverse ? this.hStairs : -this.hStairs;\r\n }\r\n } else {\r\n let outParams = {};\r\n objectOut.position.y = this._getCorrectionStairsY(objectOut.position.x, objectOut.position.y, false, outParams, yPos2);\r\n if (isPerpendicular && outParams.isStairsSegment) {\r\n objectOut.rotation.z += this.angleAlpha;\r\n }\r\n }\r\n\r\n } else {\r\n let rotationZ = [];\r\n let rotationX = [];\r\n let rotationY = [];\r\n let rotationType = false;\r\n if (typeof (objectOut.rotation.z) == \"object\") {\r\n rotationType = true;\r\n }\r\n for (let i = 0; i < objectOut.position.x.length; i++) {\r\n if (isLadderAngle) {\r\n if (rotationType) {\r\n if (this.l1 <= objectOut.position.x[i] && objectOut.position.x[i] < this.l1 + this.l && isLadderAngle) {\r\n objectOut.rotation.z[i] += this.angleAlpha;\r\n }\r\n } else {\r\n rotationX.push(objectOut.rotation.x);\r\n rotationY.push(objectOut.rotation.y);\r\n if (this.l1 <= objectOut.position.x[i] && objectOut.position.x[i] < this.l1 + this.l && isLadderAngle) {\r\n rotationZ.push(objectOut.rotation.z + this.angleAlpha);\r\n }\r\n else {\r\n rotationZ.push(objectOut.rotation.z);\r\n }\r\n }\r\n }\r\n objectOut.position.y[i] = this._getCorrectionStairsY(objectOut.position.x[i], objectOut.position.y[i], null, null, yPos2);\r\n }\r\n if (!rotationType && isLadderAngle) {\r\n objectOut.rotation = { x: rotationX, y: rotationY, z: rotationZ };\r\n }\r\n }\r\n }\r\n\r\n _getCorrectionStairsY(xPos, yPos, isPerpendicular, outParams, yPos2) {\r\n let pYStairs = yPos2 != null ? yPos2 : (this.heightRail / this.sectionHeight) * yPos;\r\n let yDelta = yPos - pYStairs;\r\n let length1 = this.l1 + yDelta / Math.tan(this.angleAlpha);\r\n\r\n if (isPerpendicular) {\r\n let hhStairs = (xPos - this.l1) * Math.tan(this.angleAlpha);\r\n return yPos + hhStairs;\r\n }\r\n\r\n if (xPos <= length1) {\r\n if (outParams) outParams.isStairsSegment = false;\r\n return yPos;\r\n } else if (xPos >= (length1 + this.l)) {\r\n if (outParams) outParams.isStairsSegment = false;\r\n return !this.stairsReverse ? yPos + this.hStairs : yPos - this.hStairs;\r\n } else {\r\n if (outParams) outParams.isStairsSegment = true;\r\n let hhStairs = (xPos - this.l1) * Math.tan(this.angleAlpha); \r\n return !this.stairsReverse ? pYStairs + hhStairs : pYStairs - hhStairs;\r\n }\r\n }\r\n\r\n _processHorizontalSegments(objectOut, objectsOut, objectIn) {\r\n let y = objectOut.position.y;\r\n let y2 = objectOut.position.y2 != null ? objectOut.position.y2 : objectOut.position.y;\r\n let pYStairs = objectOut.position.y2 != null ? objectOut.position.y2 : (this.heightRail / this.sectionHeight) * y2;\r\n let yDelta = y - pYStairs;\r\n let sideHalfB = objectIn.length.b ? MathHelper.mmToMeters(parseInt(objectIn.length.b)) / 2 : 0;\r\n\r\n let o1 = JSON.parse(JSON.stringify(objectOut));\r\n o1.length = this.l1 + (yDelta / Math.tan(this.angleAlpha)) * (!this.stairsReverse ? 1 : -1);\r\n o1.position.x = o1.length / 2; \r\n\r\n let o3 = JSON.parse(JSON.stringify(objectOut));\r\n o3.length = this.l2 - (yDelta / Math.tan(this.angleAlpha)) * (!this.stairsReverse ? 1 : -1);\r\n o3.position.x = this.sectionWidth - o3.length / 2;\r\n o3.position.y += this.hStairs * (!this.stairsReverse ? 1 : -1); \r\n\r\n let o2 = JSON.parse(JSON.stringify(objectOut));\r\n let l = this.l;\r\n if (o3.length < 0) {\r\n l += o3.length;\r\n }\r\n o2.length = l / Math.cos(this.angleAlpha);\r\n o2.position.x = o1.length + l / 2;\r\n o2.position.y = pYStairs + (this.hStairs / 2) * (!this.stairsReverse ? 1 : -1) + yDelta;\r\n if (o3.length < 0) {\r\n o2.position.y -= (this.l - l) / 2 * Math.tan(this.angleAlpha);\r\n }\r\n if (o1.length < 0) {\r\n o2.length -= Math.abs(o1.length) / Math.cos(this.angleAlpha);\r\n o2.position.x += Math.abs(o1.length) / 2;\r\n o2.position.y += (Math.abs(o1.length) * Math.tan(this.angleAlpha)) / 2;\r\n }\r\n o2.rotation.z += this.angleAlpha * (!this.stairsReverse ? 1 : -1);\r\n\r\n if (sideHalfB != 0) {\r\n o1.length += sideHalfB;\r\n o1.position.x -= sideHalfB / 2;\r\n o3.length += sideHalfB;\r\n o3.position.x += sideHalfB / 2;\r\n\r\n let dl1Cos = 0; let dl3Cos = 0;\r\n if (o1.length < 0) {\r\n dl1Cos = - o1.length / Math.cos(this.angleAlpha);\r\n }\r\n if (o3.length < 0) {\r\n dl3Cos = - o3.length / Math.cos(this.angleAlpha);\r\n }\r\n if (dl1Cos != 0 || dl3Cos != 0) {\r\n o2.length -= (dl1Cos + dl3Cos);\r\n o2.position.x += (-o1.length / 2) - (-o3.length / 2);\r\n o2.position.y += (-o1.length * Math.tan(this.angleAlpha)) / 2 - (-o3.length * Math.tan(this.angleAlpha)) / 2\r\n }\r\n }\r\n\r\n if (o1.length >= 0.001) {\r\n objectsOut.push(o1);\r\n }\r\n if (o3.length >= 0.001) {\r\n objectsOut.push(o3);\r\n }\r\n \r\n if (!objectIn.copyToInnerSection || this.innerSections.length <= 1) {\r\n objectsOut.push(o2);\r\n } else { \r\n const pillarAWidth = (this.sketch.sectionRotation && this.sketch.sectionRotation.pillarAWidth) ? MathHelper.mmToMeters(parseInt(this.sketch.sectionRotation.pillarAWidth)) : 0;\r\n let lenHo2f = o2.length * Math.cos(this.angleAlpha);\r\n let x1o2f = o2.position.x - lenHo2f / 2;\r\n let x2o2f = o2.position.x + lenHo2f / 2;\r\n let lastYo2f = o1.position.y;\r\n for (let si = 0; si < this.innerSections.length; si++) {\r\n let o2copy = JSON.parse(JSON.stringify(o2));\r\n objectsOut.push(o2copy);\r\n\r\n let lenH = this.innerSections[si].width;\r\n let xo2 = this.innerSections[si].left + lenH / 2;\r\n if (si == 0) {\r\n lenH -= x1o2f;\r\n xo2 = x1o2f + lenH / 2;\r\n }\r\n if (si == this.innerSections.length - 1) {\r\n lenH = x2o2f - this.innerSections[si].left;\r\n xo2 = this.innerSections[si].left + lenH / 2;\r\n }\r\n let len = lenH / Math.cos(this.angleAlpha);\r\n let heighto2 = lenH * Math.tan(this.angleAlpha);\r\n o2copy.length = len;\r\n o2copy.position.x = xo2;\r\n o2copy.position.y = lastYo2f + (heighto2 / 2) * (!this.stairsReverse ? 1 : -1);\r\n lastYo2f += (heighto2 - pillarAWidth * Math.tan(this.angleAlpha)) * (!this.stairsReverse ? 1 : -1);\r\n }\r\n }\r\n }\r\n\r\n _processCopyItemStairsSegment(objectIn, objectOut) {\r\n let outArr = [];\r\n\r\n let userValues = { ...this.userValues, [FormulaHelper.FILL_HEIGHT]: this.heightRailPerpendicular };\r\n let posYViaPerpendicular = FormulaHelper.calcValue(objectIn.position.y2 ? objectIn.position.y2 : objectIn.position.y, userValues) / Math.cos(this.angleAlpha);\r\n let pYStairs = (this.heightRail / this.sectionHeight) * objectOut.position.y;\r\n let yDelta = objectOut.position.y - pYStairs;\r\n const lengthSegment1 = this.l1 + yDelta / Math.tan(this.angleAlpha);\r\n const lengthSegment3 = this.l2 - yDelta / Math.tan(this.angleAlpha);\r\n const xSegment2 = lengthSegment1;\r\n const xSegment3 = this.sectionWidth - lengthSegment3;\r\n \r\n const corner = objectIn.copy.rightCorner == \"center\" ? \"center\" :\r\n (objectIn.copy.rightCorner ? \"right\" : \"left\");\r\n\r\n let innerSections = this.innerSections;\r\n\r\n for (let isi = 0; isi < innerSections.length; isi++) {\r\n const innerSection = innerSections[isi];\r\n if (this._visibleCheck(objectIn, innerSection, !this.sectionIn.floatHeight, innerSection.rotationZ)) {\r\n continue;\r\n }\r\n let isHorizontal = true;\r\n let stepX = FormulaHelper.calcValue(objectIn.copy.stepX, this.userValues);\r\n let stepXOblique = stepX;\r\n let stepY = 0;\r\n if (stepX == 0) {\r\n continue;\r\n }\r\n let xOffset = objectOut.position.x + innerSection.left;\r\n let yOffset = objectOut.position.y;\r\n let zOffset = objectOut.position.z;\r\n let firstIndent = FormulaHelper.calcValue(objectIn.copy.left, this.userValues);\r\n let secondIndent = FormulaHelper.calcValue(objectIn.copy.right, this.userValues);\r\n let multiplicity = objectIn.copy.multiplicity != null ? parseInt(objectIn.copy.multiplicity) : 1;\r\n let shift = objectIn.copy.shift != null ? parseInt(objectIn.copy.shift) : 0;\r\n let copyLenght;\r\n let count;\r\n\r\n let sectionWidthFull = 0;\r\n let obliqueWidth = innerSection.width;\r\n if (innerSection.left < xSegment2) {\r\n sectionWidthFull += lengthSegment1;\r\n obliqueWidth -= lengthSegment1;\r\n }\r\n if (innerSection.left + innerSection.width > xSegment3) {\r\n sectionWidthFull += lengthSegment3;\r\n obliqueWidth -= lengthSegment3;\r\n }\r\n let obliqueWidthFull = obliqueWidth / Math.cos(this.angleAlpha);\r\n sectionWidthFull += obliqueWidthFull; \r\n\r\n copyLenght = sectionWidthFull - firstIndent - secondIndent;\r\n count = copyLenght / stepX;\r\n\r\n if (!objectIn.copy.constStep) {\r\n if (count % 1.0 <= parseFloat(objectIn.copy.k)) {\r\n count = Math.floor(count);\r\n } else {\r\n count = Math.ceil(count);\r\n }\r\n if (objectIn.copy.isEven && (count + 1) % 2 != 0) { //count+1 - number of items\r\n count += 1;\r\n } else if (objectIn.copy.isOdd && (count + 1) % 2 != 1) {\r\n count += 1;\r\n }\r\n isHorizontal ? stepX = copyLenght / count : stepY = copyLenght / count;\r\n }\r\n else {\r\n count = Math.floor(count);\r\n if (corner == \"center\") {\r\n let indent = isHorizontal ? copyLenght - count * stepX : copyLenght - count * stepY;\r\n isHorizontal ? xOffset += indent / 2 : yOffset += indent / 2;\r\n }\r\n else if (corner == \"right\") {\r\n let indent = isHorizontal ? copyLenght - count * stepX : copyLenght - count * stepY;\r\n isHorizontal ? xOffset += indent : yOffset += indent;\r\n }\r\n }\r\n stepXOblique = stepX * Math.cos(this.angleAlpha);\r\n\r\n xOffset += firstIndent;\r\n\r\n let objectOutCopy = JSON.parse(JSON.stringify(objectOut));\r\n objectOutCopy.position = {\r\n x: [],\r\n y: [],\r\n z: [],\r\n y2: objectOut.position.y2\r\n };\r\n\r\n objectOutCopy.rotation = {\r\n x: [],\r\n y: [],\r\n z: []\r\n }\r\n\r\n if (shift == 0 && !objectIn.copy.hideFirstLast) {\r\n let isOnOblique = ((xOffset) >= xSegment2 && (xOffset) <= xSegment3);\r\n yOffset = isOnOblique ? posYViaPerpendicular : objectOut.position.y;\r\n objectOutCopy.position.x.push(xOffset);\r\n objectOutCopy.position.y.push(this._getCorrectionStairsY(xOffset, yOffset, false));\r\n objectOutCopy.position.z.push(zOffset);\r\n objectOutCopy.rotation.x.push(objectOut.rotation.x);\r\n objectOutCopy.rotation.y.push(objectOut.rotation.y);\r\n objectOutCopy.rotation.z.push(objectOut.rotation.z + isOnOblique ? this.angleAlpha * (!this.stairsReverse ? 1 : -1) : 0);\r\n }\r\n for (let i = 0; i < count; i++) {\r\n let isOnOblique = ((xOffset + stepX) >= xSegment2 && (xOffset + stepX) <= xSegment3);\r\n xOffset += isOnOblique ? stepXOblique : stepX;\r\n yOffset = isOnOblique ? posYViaPerpendicular : objectOut.position.y;\r\n if (objectIn.copy.hideFirstLast) {\r\n if (i == count - 1) {\r\n continue;\r\n }\r\n }\r\n if (multiplicity == 1 || (i + 2 - shift) % multiplicity == 1) {\r\n objectOutCopy.position.x.push(xOffset);\r\n objectOutCopy.position.y.push(this._getCorrectionStairsY(xOffset, yOffset, false));\r\n objectOutCopy.position.z.push(zOffset);\r\n objectOutCopy.rotation.x.push(objectOut.rotation.x);\r\n objectOutCopy.rotation.y.push(objectOut.rotation.y);\r\n objectOutCopy.rotation.z.push(objectOut.rotation.z + isOnOblique ? this.angleAlpha * (!this.stairsReverse ? 1 : -1) : 0);\r\n }\r\n }\r\n outArr.push(objectOutCopy);\r\n }\r\n return outArr;\r\n }\r\n\r\n _buildStairs(objectsOut) {\r\n const metallId = window.location.host == 'simplicad.com' ? 42 : 18;\r\n let horStair = {\r\n id: metallId,\r\n position: { x: [], y: [], z: [] },\r\n rotation: { x: 0, y: 0, z: MathHelper.degreeToRad(90) },\r\n length: this.widthStairSingle,\r\n processType: EditSketchConstants.PROCESS_TYPE_COPY,\r\n skipCalculation: true,\r\n type: EditSketchConstants.OBJECT_TYPE_METALL\r\n };\r\n\r\n let vertStair = {\r\n id: metallId,\r\n position: { x: [], y: [], z: [] },\r\n rotation: { x: 0, y: 0, z: 0 },\r\n length: this.hStairSingle,\r\n processType: EditSketchConstants.PROCESS_TYPE_COPY,\r\n skipCalculation: true,\r\n type: EditSketchConstants.OBJECT_TYPE_METALL\r\n };\r\n\r\n for (let i = 0; i < this.stairsCount; i++) {\r\n horStair.position.x.push(this.l1 + (i + 1) * this.widthStairSingle);\r\n horStair.position.y.push(((i + 1) * this.hStairSingle) * (!this.stairsReverse ? 1.0 : -1.0));\r\n horStair.position.z.push(0);\r\n\r\n vertStair.position.x.push(this.l1 + (i + 1) * this.widthStairSingle - this.widthStairSingle / 2);\r\n vertStair.position.y.push(((i + 1) * this.hStairSingle - this.hStairSingle / 2) * (!this.stairsReverse ? 1.0 : -1.0));\r\n vertStair.position.z.push(0);\r\n }\r\n vertStair.position.x.push(this.l1 + (this.stairsCount + 1) * this.widthStairSingle - this.widthStairSingle / 2);\r\n vertStair.position.y.push(((this.stairsCount + 1) * this.hStairSingle - this.hStairSingle / 2) * (!this.stairsReverse ? 1.0 : -1.0));\r\n vertStair.position.z.push(0);\r\n\r\n objectsOut.push(horStair);\r\n objectsOut.push(vertStair);\r\n\r\n objectsOut.push({\r\n id: metallId,\r\n position: {\r\n x: (this.l1 + this.widthStairSingle / 2) / 2,\r\n y: 0,\r\n z: 0\r\n },\r\n rotation: { x: 0, y: 0, z: MathHelper.degreeToRad(90) },\r\n length: this.l1 + this.widthStairSingle / 2,\r\n processType: EditSketchConstants.PROCESS_TYPE_SINGLE,\r\n skipCalculation: true,\r\n type: EditSketchConstants.OBJECT_TYPE_METALL\r\n });\r\n\r\n objectsOut.push({\r\n id: metallId,\r\n position: {\r\n x: this.sectionWidth - (this.l2 + this.widthStairSingle / 2) / 2,\r\n y: !this.stairsReverse ? this.hStairs : -this.hStairs,\r\n z: 0\r\n },\r\n rotation: { x: 0, y: 0, z: MathHelper.degreeToRad(90) },\r\n length: this.l2 + this.widthStairSingle / 2,\r\n processType: EditSketchConstants.PROCESS_TYPE_SINGLE,\r\n skipCalculation: true,\r\n type: EditSketchConstants.OBJECT_TYPE_METALL\r\n });\r\n }\r\n\r\n _correctInnerSectionsForStairs() {\r\n if (this.innerSections.length < 2)\r\n return;\r\n for (let i = 0; i < this.innerSections.length; i++) {\r\n let currentInnerSection = this.innerSections[i];\r\n let right = currentInnerSection.left + currentInnerSection.width;\r\n if (this.l1 < right && right < this.l1 + this.l) {\r\n let rightNew = Math.round((right - this.l1) / this.widthStairSingle) * this.widthStairSingle + this.l1;\r\n let dx = rightNew - right;\r\n currentInnerSection.width += dx;\r\n if (i + 1 < this.innerSections.length) {\r\n this.innerSections[i + 1].left += dx;\r\n this.innerSections[i + 1].width -= dx;\r\n }\r\n }\r\n }\r\n }\r\n //#endregion\r\n}","import React from 'react';\r\nimport './InfoView.css';\r\nimport { Row, Col } from 'reactstrap';\r\nimport PropTypes from 'prop-types';\r\nimport { isMobile } from 'react-device-detect';\r\nimport { Link } from 'react-router-dom';\r\n\r\nclass InfoView extends React.Component { \r\n render() {\r\n const { showIcon, title, line1, line2, linkText, linkTo, className } = this.props;\r\n\r\n return (\r\n
\r\n {showIcon ?\r\n \r\n {!isMobile &&\r\n \r\n \r\n \r\n }\r\n \r\n {isMobile &&\r\n \r\n }\r\n {!!title &&\r\n
{title}
\r\n }\r\n
{line1}
\r\n
\r\n {line2} \r\n {linkTo && linkText &&\r\n {linkText}\r\n }\r\n
\r\n \r\n
\r\n :\r\n <>\r\n {!!title &&\r\n
{title}
\r\n }\r\n
{line1}
\r\n
\r\n {line2} \r\n {linkTo && linkText &&\r\n {linkText}\r\n }\r\n
\r\n \r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\nInfoView.propTypes = {\r\n showIcon: PropTypes.bool,\r\n title: PropTypes.string,\r\n line1: PropTypes.string,\r\n line2: PropTypes.string\r\n}\r\n\r\nexport default InfoView;","import React from 'react';\r\nimport objectToGetParams from 'react-share/es/utils/objectToGetParams';\r\nimport createShareButton from 'react-share/es/hocs/createShareButton';\r\nimport { sendAmplitudeData, amplitudeTypes } from '../../utils/amplitude';\r\nimport {\r\n //EmailShareButton, \r\n FacebookShareButton,\r\n InstapaperShareButton,\r\n LineShareButton,\r\n LinkedinShareButton,\r\n LivejournalShareButton,\r\n MailruShareButton,\r\n OKShareButton,\r\n PinterestShareButton,\r\n PocketShareButton,\r\n RedditShareButton,\r\n TelegramShareButton,\r\n TumblrShareButton,\r\n TwitterShareButton,\r\n ViberShareButton,\r\n VKShareButton,\r\n WhatsappShareButton,\r\n WorkplaceShareButton,\r\n} from \"react-share\";\r\nimport {\r\n EmailIcon,\r\n FacebookIcon,\r\n InstapaperIcon,\r\n LineIcon,\r\n LinkedinIcon,\r\n LivejournalIcon,\r\n MailruIcon,\r\n OKIcon,\r\n PinterestIcon,\r\n PocketIcon,\r\n RedditIcon,\r\n TelegramIcon,\r\n TumblrIcon,\r\n TwitterIcon,\r\n ViberIcon,\r\n VKIcon,\r\n WeiboIcon,\r\n WhatsappIcon,\r\n WorkplaceIcon,\r\n} from \"react-share\";\r\n\r\nfunction emailLink(url, _a) {\r\n var subject = _a.subject, body = _a.body, separator = _a.separator;\r\n return 'mailto:' + objectToGetParams({ subject: subject, body: body ? body + separator + url : url });\r\n}\r\n\r\nvar EmailBlankTargetShareButton = createShareButton('email', emailLink, function (props) {\r\n return ({\r\n subject: props.subject,\r\n body: props.body,\r\n separator: props.separator || ' ',\r\n });\r\n}, {\r\n openShareDialogOnClick: false,\r\n onClick: function (_, link) {\r\n sendAmplitudeData(amplitudeTypes.SHARE_CLICK, 'email');\r\n // you should put here the code that opens the link in a new window. \r\n // something like this :\r\n window.open(link, \"_blank\");\r\n },\r\n});\r\n\r\nexport default class SharePopUp extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n const { link, itemName, className, t } = this.props;\r\n return (\r\n
\r\n \r\n \r\n \r\n sendAmplitudeData(amplitudeTypes.SHARE_CLICK, 'linkedin')}>\r\n \r\n \r\n sendAmplitudeData(amplitudeTypes.SHARE_CLICK, 'facebook')}>\r\n \r\n \r\n sendAmplitudeData(amplitudeTypes.SHARE_CLICK, 'telegram')}>\r\n \r\n \r\n \r\n sendAmplitudeData(amplitudeTypes.SHARE_CLICK, 'twitter')}>\r\n \r\n \r\n sendAmplitudeData(amplitudeTypes.SHARE_CLICK, 'viber')}>\r\n \r\n \r\n
\r\n );\r\n }\r\n}","import axios from \"axios\";\r\nimport * as types from './types';\r\n\r\nexport const getMySketches = () => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.get(`api/AutoBuild/GetMySketches`)\r\n .then((response) => {\r\n dispatch({\r\n type: types.GET_MYSKETCHES_SUCCESS,\r\n payload: response.data\r\n });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n })\r\n}\r\n\r\nexport const getEditorState = (productId, callback) => (dispatch) => {\r\n if (!callback) {\r\n dispatch({ type: types.REQUEST });\r\n }\r\n return axios.get(`api/AutoBuild/GetProductEditorState?productId=${productId}`)\r\n .then((response) => {\r\n if (callback) {\r\n callback(response.data);\r\n } else {\r\n dispatch({\r\n type: types.GET_PRODUCT_EDITOR_STATE_SUCCESS,\r\n payload: response.data\r\n });\r\n }\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n })\r\n}\r\n\r\nexport const saveSketch = (data) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.post(`api/AutoBuild/SaveSketch`, data)\r\n .then((response) => {\r\n dispatch({\r\n type: types.SAVE_SKETCH_SUCCESS,\r\n payload: response.data\r\n });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n })\r\n}\r\n\r\nexport const copySketch = (data, callback) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.post(`api/AutoBuild/CopySketch`, JSON.stringify(data), {\r\n headers: {\r\n 'content-type': 'application/json',\r\n },\r\n })\r\n .then((response) => {\r\n dispatch({\r\n type: types.COPY_SKETCH_SUCCESS\r\n });\r\n callback(true, response.data);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n callback(false);\r\n })\r\n}\r\n\r\nexport const getSketchData = (sketchId) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.get(`api/AutoBuild/GetSketchDetails?sketchId=${sketchId}`)\r\n .then((response) => {\r\n dispatch({\r\n type: types.GET_SKETCH_DATA_SUCCESS,\r\n payload: response.data\r\n });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n })\r\n}\r\n\r\nexport const getTemplates = () => (dispatch) => {\r\n dispatch({ type: types.REQUEST_TEMPLATE });\r\n return axios.get('api/AutoBuild/GetAllEditorTemplates')\r\n .then((response) => {\r\n dispatch({\r\n type: types.GET_TEMPLATE_SUCCESS,\r\n payload: response.data\r\n });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n })\r\n}\r\n\r\nexport const getMetals = () => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.get('api/AutoBuild/GetSketchMetals')\r\n .then((response) => {\r\n dispatch({\r\n type: types.GET_SKETCH_METALS_SUCCESS,\r\n payload: response.data\r\n });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n })\r\n}\r\n\r\nexport const deleteSketch = (sketchId, callback) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.post(`api/AutoBuild/DeleteSketch?sketchId=${sketchId}`)\r\n .then((response) => {\r\n dispatch({\r\n type: types.DELETE_SKETCH_SUCCESS,\r\n payload: response.data\r\n });\r\n if (callback)\r\n callback(true);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n if (callback)\r\n callback(false);\r\n })\r\n}\r\n\r\nexport const saveEnd = () => (dispatch) => {\r\n dispatch({ type: types.SAVE_END });\r\n}\r\n\r\nexport const getMyAutoBuildTemplates = () => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.get(`api/AutoBuild/GetMyTemplates`)\r\n .then((response) => {\r\n dispatch({\r\n type: types.GET_MYTEMPLATES_SUCCESS,\r\n payload: response.data\r\n });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n })\r\n}\r\n\r\nexport const saveAutoBuildTemplate = (data, callback) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.post(`api/AutoBuild/SaveTemplate`, data)\r\n .then((response) => {\r\n dispatch({\r\n type: types.SAVE_AUTOBUILD_TEMPLATE_SUCCESS\r\n });\r\n if (callback) callback(true);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n if (callback) callback(false);\r\n })\r\n}\r\n\r\nexport const getAutoBuildTemplateDetails = (id) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.get(`api/AutoBuild/GetTemplateDetails?id=${id}`)\r\n .then((response) => {\r\n dispatch({\r\n type: types.GET_AUTOBUILD_TEMPLATE_DETAILS_SUCCESS,\r\n payload: response.data\r\n });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n })\r\n}\r\n\r\nexport const deleteAutoBuildTemplate = (id, callback) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.post(`api/AutoBuild/DeleteTemplate?id=${id}`)\r\n .then((response) => {\r\n dispatch({\r\n type: types.DELETE_AUTOBUILD_TEMPLATE_SUCCESS\r\n });\r\n if (callback)\r\n callback(true);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n if (callback)\r\n callback(false);\r\n })\r\n}\r\n\r\nexport const generateHiddenProduct = (data, callback) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.post(`api/AutoBuild/GenerateHiddenProduct`, data)\r\n .then((response) => {\r\n dispatch({\r\n type: types.GENERATE_HIDDEN_PRODUCT\r\n });\r\n if (callback)\r\n callback(true, response.data.productId);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n if (callback)\r\n callback(false);\r\n })\r\n}\r\n\r\nexport const moveProductToNewProject = (productId, callback) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.get(`api/AutoBuild/MoveProductToNewProject?productId=${productId}`)\r\n .then((response) => {\r\n dispatch({\r\n type: types.MOVE_PRODUCT_TO_NEW_PROJECT\r\n });\r\n if (callback)\r\n callback(true, response.data.projectId);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n if (callback)\r\n callback(false);\r\n })\r\n}","export const titleChanger = (title, description, keywords) => {\r\n if (title != null) {\r\n document.title = title;\r\n document.querySelector('meta[name=\"description\"]').setAttribute(\"content\", description ? description : '');\r\n document.querySelector('meta[name=\"keywords\"]').setAttribute(\"content\", keywords ? keywords : '');\r\n }\r\n}","export const PublicationTypes = {\r\n Design: \"Design\",\r\n Production: \"Production\",\r\n Installation: \"Installation\",\r\n All: \"All\"\r\n};","import React, { Component } from \"react\";\r\nimport * as actions from '../actions';\r\nimport { withTranslation } from \"react-i18next\";\r\nimport { connect } from \"react-redux\";\r\nimport FullPageLoader from \"../../components/loaders/FullPageLoader/FullPageLoader\";\r\nimport './ManufacturerPriceList.css';\r\nimport { Button } from \"reactstrap\";\r\nimport { RegisterPopup } from \"./RegisterPopup\";\r\nimport { registerUser } from \"../../register/registerSimple/actions\";\r\nimport { sendSms, verificateAccount } from \"../../verify/actions\";\r\nimport Helper from \"../../utils/helper\";\r\nimport { toastr } from \"react-redux-toastr\";\r\nimport { getInnerRegionIdByIp } from \"../../utils/languageDetector\";\r\nimport { getRegions } from \"../../projects/newproject/actions\";\r\nimport ImageScroller from \"../../components/imageScroller/ImageScroller\";\r\nimport { uniqueId } from \"lodash\";\r\nimport { sendAmplitudeData, amplitudeTypes } from \"../../utils/amplitude\";\r\nimport { isMobile } from \"react-device-detect\";\r\n\r\nclass ManufacturerPriceList extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n const selectedRegionId = localStorage.getItem(\"selectedRegionId\");\r\n\r\n this.state = {\r\n contactSelectedManufacturer: null,\r\n isBecomeManufacturerClick: false,\r\n selectedRegionId: selectedRegionId ? parseInt(selectedRegionId) : -1,\r\n isRegionListShow: false,\r\n previewImages: null,\r\n logoItemId: null,\r\n logoImg: null\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n //this.props.getPriceManufacturers(null, this.props.productId);\r\n if (this.props.regions == null || this.props.regions.length == 0) {\r\n this.props.getRegions();\r\n } else {\r\n this.buildRegions();\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (this.props.productId !== prevProps.productId) {\r\n this.props.getPriceManufacturers(this.state.selectedRegionId != -1 ? this.state.selectedRegionId : null, this.props.productId);\r\n }\r\n if (this.props.regions !== prevProps.regions) {\r\n this.buildRegions();\r\n }\r\n if (this.props.regionId !== prevProps.regionId) {\r\n this.setState({\r\n selectedRegionId: this.props.regionId\r\n });\r\n this.props.getPriceManufacturers(this.props.regionId != -1 ? this.props.regionId : null, this.props.productId);\r\n }\r\n }\r\n\r\n buildRegions() {\r\n if (!localStorage.getItem(\"selectedRegionId\")) {\r\n getInnerRegionIdByIp((regionId) => {\r\n this.setState({ selectedRegionId: regionId });\r\n this.props.getPriceManufacturers(regionId != -1 ? regionId : null, this.props.productId);\r\n localStorage.setItem(\"selectedRegionId\", regionId);\r\n });\r\n } else {\r\n this.props.getPriceManufacturers(this.state.selectedRegionId != -1 ? this.state.selectedRegionId : null, this.props.productId);\r\n }\r\n }\r\n\r\n onRegionLabelClick = () => {\r\n this.setState({ isRegionListShow: true });\r\n }\r\n\r\n onRegionItemClick = (regionId) => {\r\n this.setState({\r\n selectedRegionId: regionId,\r\n isRegionListShow: false\r\n });\r\n this.props.getPriceManufacturers(regionId != -1 ? regionId : null, this.props.productId);\r\n localStorage.setItem(\"selectedRegionId\", regionId);\r\n }\r\n\r\n onPortfolioClick = (userItem) => {\r\n if (userItem.portfolio && userItem.portfolio.length != 0) {\r\n this.setState({\r\n previewImages: userItem.portfolio.map(img => ({ id: uniqueId(), image: img }))\r\n });\r\n }\r\n }\r\n\r\n hidePorfolio = () => {\r\n this.setState({\r\n previewImages: null\r\n });\r\n }\r\n\r\n onManufacturerSelect = (id, e) => {\r\n e.stopPropagation();\r\n sendAmplitudeData(amplitudeTypes.CONTACT_MANUFACTURER, null);\r\n this.setState({\r\n contactSelectedManufacturer: id\r\n });\r\n }\r\n\r\n onRegisterPopupHide = (userPhone) => {\r\n if (this.state.contactSelectedManufacturer) {\r\n const manufactorId = this.state.contactSelectedManufacturer;\r\n this.setState({ contactSelectedManufacturer: null });\r\n const data = {\r\n userPhone: userPhone,\r\n priceManufacturer: this.props.priceManufacturers.find(m => m.executerId == manufactorId),\r\n sketchLink: window.location.href,\r\n userProductLink: this.props.productId ? Helper.editorPreviewLink(this.props.productId) : null\r\n };\r\n this.props.sendContactRequest(data, (isOk) => {\r\n if (isOk) {\r\n toastr.success('', this.props.t('manufacturer.contactRequestSent'));\r\n }\r\n });\r\n } else if (this.state.isBecomeManufacturerClick) {\r\n this.setState({ isBecomeManufacturerClick: false });\r\n this.props.becomeManufacturerRequest({ userPhone: userPhone }, (isOk) => {\r\n if (isOk) {\r\n toastr.success('', this.props.t('manufacturer.becomeManufacturerSent'));\r\n }\r\n });\r\n }\r\n }\r\n\r\n onCloseRegisterPopupClick = () => {\r\n this.setState({\r\n contactSelectedManufacturer: null,\r\n isBecomeManufacturerClick: false\r\n });\r\n }\r\n\r\n onBecomeManufacturerClick = () => {\r\n sendAmplitudeData(amplitudeTypes.BECOME_MANUFACTURER, null);\r\n this.setState({ isBecomeManufacturerClick: true });\r\n }\r\n\r\n onMouseEnterLogo = (item) => {\r\n if (item.portfolio && item.portfolio.length > 0) {\r\n this.setState({\r\n logoItemId: item.executerId,\r\n logoImg: item.portfolio[0]\r\n });\r\n let imgIndex = 0;\r\n this.logoInterval = setInterval(() => {\r\n imgIndex++;\r\n if (imgIndex >= item.portfolio.length)\r\n imgIndex = 0;\r\n this.setState({\r\n logoImg: item.portfolio[imgIndex]\r\n });\r\n }, 2000);\r\n }\r\n }\r\n\r\n onMouseLeaveLogo = (item) => {\r\n if (this.logoInterval) {\r\n clearInterval(this.logoInterval);\r\n }\r\n this.setState({\r\n logoItemId: null,\r\n logoImg: null\r\n });\r\n }\r\n\r\n\r\n render() {\r\n const { loading, failed, t, priceManufacturers, isActiveExecutor, hideRegion } = this.props;\r\n const { contactSelectedManufacturer, isBecomeManufacturerClick, selectedRegionId, isRegionListShow, previewImages,\r\n logoImg, logoItemId } = this.state;\r\n let priceCoeff = this.props.priceCoeff ? this.props.priceCoeff : 1;\r\n \r\n const regions = [{ id: -1, name: t('manufacturer.regionAll') }, ...this.props.regions];\r\n\r\n let regionLabel = t('manufacturer.regionAll');\r\n if (selectedRegionId != -1) {\r\n const region = regions.find(r => r.id == selectedRegionId);\r\n if (region) {\r\n regionLabel = region.name;\r\n }\r\n }\r\n\r\n return (\r\n
\r\n {loading &&\r\n \r\n } \r\n
\r\n {t('manufacturer.pmanufacturers')}\r\n {!hideRegion &&\r\n {regionLabel}\r\n }\r\n
\r\n {isRegionListShow &&\r\n
\r\n {regions && regions.map(regionItem => (\r\n
this.onRegionItemClick(regionItem.id)}>\r\n {regionItem.name}\r\n
\r\n ))}\r\n
\r\n }\r\n
\r\n {priceManufacturers && priceManufacturers.map(item => (\r\n
this.onPortfolioClick(item)}\r\n >\r\n
\r\n this.onMouseEnterLogo(item)}\r\n onMouseLeave={() => this.onMouseLeaveLogo(item)}\r\n />\r\n
\r\n
{item.name}
\r\n {item.address &&\r\n
{item.address}
\r\n }\r\n {item.price &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {item.price.installationPrice != 0 &&\r\n \r\n \r\n \r\n \r\n }\r\n {item.price.concretingPrice != 0 &&\r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n
{t('manufacturer.production')}{(item.price.productionPrice * priceCoeff).toFixed(0)}{t('currencyUah')}
{t('manufacturer.painting')}{(item.price.paintingPrice * priceCoeff).toFixed(0)}{t('currencyUah')}
{t('manufacturer.delivery')}{(item.price.shippingPrice).toFixed(0)}{t('currencyUah')}
{t('manufacturer.installation')}{(item.price.installationPrice * priceCoeff).toFixed(0)}{t('currencyUah')}
{t('manufacturer.concreting')}{(item.price.concretingPrice * priceCoeff).toFixed(0)}{t('currencyUah')}
{t('manufacturer.totalPrice')}\r\n \r\n {((item.price.productionPrice + item.price.paintingPrice + item.price.installationPrice\r\n + item.price.concretingPrice) * priceCoeff + item.price.shippingPrice).toFixed(0)}\r\n {t('currencyUah')}\r\n \r\n
\r\n }\r\n \r\n
\r\n ))}\r\n {!isActiveExecutor &&\r\n
\r\n \r\n
\r\n }\r\n
\r\n {(contactSelectedManufacturer || isBecomeManufacturerClick) &&\r\n \r\n }\r\n {previewImages &&\r\n img.image}\r\n altBuilder={img => \"\"}\r\n onHide={() => this.hidePorfolio()}\r\n />\r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n ...state.manufacturer,\r\n isAuthenticated: state.login.isAuthenticated,\r\n isExecutor: state.login.user.isExecutor,\r\n regions: state.createProject.regions,\r\n countries: state.createProject.countries,\r\n})\r\n\r\nconst mapDispatchToProps = {\r\n getPriceManufacturers: actions.getPriceManufacturers,\r\n sendContactRequest: actions.sendContactRequest,\r\n becomeManufacturerRequest: actions.becomeManufacturerRequest,\r\n registerUser: registerUser,\r\n sendSmsVerification: sendSms,\r\n verificateAccount: verificateAccount,\r\n getRegions: getRegions\r\n}\r\n\r\nexport default withTranslation()(connect(\r\n mapStateToProps,\r\n mapDispatchToProps,\r\n)(ManufacturerPriceList));","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { useTranslation } from 'react-i18next';\r\n\r\n\r\nimport './style.sass';\r\nimport * as uniqueId from 'lodash/uniqueId';\r\n\r\nconst CheckBox = ({ className, label, name, value, onChange, style }) => {\r\n const { t } = useTranslation();\r\n const id = uniqueId(name);\r\n return (\r\n
\r\n \r\n \r\n
\r\n )\r\n}\r\n\r\nCheckBox.propTypes = {\r\n name: PropTypes.string.isRequired,\r\n value: PropTypes.bool.isRequired,\r\n label: PropTypes.string.isRequired,\r\n onChange: PropTypes.func.isRequired,\r\n}\r\n\r\nexport default CheckBox;","import { FormulaHelper } from \"./FormulaHelper\";\r\nimport * as uniqueId from \"lodash/uniqueId\";\r\nimport MathHelper from \"../utils/MathHelper\";\r\n\r\nexport class EditSketchConstants {\r\n static CURRENT_VERSION = 6.0;\r\n static PROCESS_TYPE_SINGLE = \"single\";\r\n static PROCESS_TYPE_COPY = \"copy\";\r\n static OBJECT_TYPE_METALL = \"metalrolling\";\r\n static OBJECT_TYPE_ELEMENT = \"element\";\r\n static OBJECT_TYPE_TEMPLATE = \"template\";\r\n static OBJECT_TYPE_GROUP = \"group\";\r\n\r\n static AUTOFIT_TYPE_INSIDE = \"inside\";\r\n static AUTOFIT_TYPE_OUTSIDE = \"outside\";\r\n \r\n static PILLAR1 = \"pillar1\";\r\n static PILLAR2 = \"pillar2\";\r\n static PILLARA = \"pillarA\";\r\n\r\n static COPY_X = \"x\";\r\n static COPY_Y = \"y\";\r\n static COPY_Z = \"z\";\r\n\r\n static VISIBLE_STANDART = 1;\r\n static VISIBLE_COPY = 2;\r\n static VISIBLE_ALFA = 3;\r\n \r\n static ROTATE_SECTION_OUTER_ANGLE = 1;\r\n static ROTATE_SECTION_PILLAR = 2;\r\n\r\n static END_TYPE_CUT = \"type_cut\";\r\n static END_TYPE_ABC = \"type_abc\";\r\n\r\n static getNewRow = () => {\r\n return {\r\n processType: EditSketchConstants.PROCESS_TYPE_SINGLE,\r\n id: 0,\r\n type: EditSketchConstants.OBJECT_TYPE_METALL,\r\n position: {\r\n x: FormulaHelper.getObjectByType(FormulaHelper.TYPE_CONSTANT),\r\n y: FormulaHelper.getObjectByType(FormulaHelper.TYPE_CONSTANT),\r\n z: FormulaHelper.getObjectByType(FormulaHelper.TYPE_CONSTANT),\r\n },\r\n rotation: {\r\n x: FormulaHelper.getObjectByType(FormulaHelper.TYPE_CONSTANT_ANGLE),\r\n y: FormulaHelper.getObjectByType(FormulaHelper.TYPE_CONSTANT_ANGLE),\r\n z: FormulaHelper.getObjectByType(FormulaHelper.TYPE_CONSTANT_ANGLE)\r\n },\r\n rotation2: null,\r\n length: FormulaHelper.getObjectByType(FormulaHelper.TYPE_CONSTANT),\r\n tag: null,\r\n globalStep: false,\r\n copyToInnerSection: false,\r\n useSegment: false,\r\n useSpline: false,\r\n noCalculate: false,\r\n useRotation2: false,\r\n donotMirror: false,\r\n visibleInterval: null,\r\n visibleIntervalY: null,\r\n visibleIntervalA: null,\r\n torsions:null,\r\n key: uniqueId('or-')\r\n };\r\n }\r\n\r\n static convertToLatestVerion = (objects, version) => {\r\n if (version < EditSketchConstants.CURRENT_VERSION) {\r\n let arr = [];\r\n for (let i = 0; i < objects.length; i++) {\r\n let objectOld = objects[i];\r\n let object = { ...objectOld };\r\n object.position = { ...object.position };\r\n object.copy = { ...object.copy };\r\n object.rotation = { ...object.rotation };\r\n arr.push(object);\r\n if (version < 3) {\r\n if (typeof (object.length) == \"object\") {\r\n object.length = {\r\n type: FormulaHelper.TYPE_LINEAR,\r\n v: objectOld.length.l,\r\n a: objectOld.length.k,\r\n b: objectOld.length.offset\r\n };\r\n } else {\r\n object.length = {\r\n type: FormulaHelper.TYPE_CONSTANT,\r\n v: objectOld.length\r\n };\r\n }\r\n if (typeof (object.position.x) == \"object\") {\r\n object.position.x = {\r\n type: FormulaHelper.TYPE_LINEAR,\r\n v: objectOld.position.x.l,\r\n a: objectOld.position.x.k,\r\n b: objectOld.position.x.offset\r\n };\r\n } else {\r\n object.position.x = {\r\n type: FormulaHelper.TYPE_CONSTANT,\r\n v: objectOld.position.x\r\n };\r\n }\r\n if (typeof (object.position.y) == \"object\") {\r\n object.position.y = {\r\n type: FormulaHelper.TYPE_LINEAR,\r\n v: objectOld.position.y.l,\r\n a: objectOld.position.y.k,\r\n b: objectOld.position.y.offset\r\n };\r\n } else {\r\n object.position.y = {\r\n type: FormulaHelper.TYPE_CONSTANT,\r\n v: objectOld.position.y\r\n };\r\n }\r\n object.position.z = {\r\n type: FormulaHelper.TYPE_CONSTANT,\r\n v: objectOld.position.z\r\n };\r\n if (object.copy != null && JSON.stringify(object.copy) != '{}') {\r\n object.copy.left = {\r\n type: FormulaHelper.TYPE_CONSTANT,\r\n v: objectOld.copy.left\r\n };\r\n object.copy.right = {\r\n type: FormulaHelper.TYPE_CONSTANT,\r\n v: objectOld.copy.right\r\n };\r\n }\r\n }\r\n if (version < 4) {\r\n if (object.copy != null && typeof (object.copy.stepX) != 'object') {\r\n object.copy.stepX = {\r\n type: FormulaHelper.TYPE_CONSTANT,\r\n v: object.copy.stepX\r\n };\r\n object.copy.stepY = {\r\n type: FormulaHelper.TYPE_CONSTANT,\r\n v: object.copy.stepY\r\n };\r\n object.copy.stepZ = {\r\n type: FormulaHelper.TYPE_CONSTANT,\r\n v: object.copy.stepZ\r\n };\r\n }\r\n }\r\n if (version < 5) {\r\n if (typeof (object.rotation.x) != 'object') {\r\n object.rotation.x = {\r\n type: FormulaHelper.TYPE_CONSTANT_ANGLE,\r\n v: object.rotation.x\r\n };\r\n object.rotation.y = {\r\n type: FormulaHelper.TYPE_CONSTANT_ANGLE,\r\n v: object.rotation.y\r\n };\r\n object.rotation.z = {\r\n type: FormulaHelper.TYPE_CONSTANT_ANGLE,\r\n v: object.rotation.z\r\n };\r\n }\r\n }\r\n if (version < 5.1) {\r\n if (object.visibleInterval != null) {\r\n object.visibleInterval = [object.visibleInterval];\r\n }\r\n if (object.visibleIntervalY != null) {\r\n object.visibleIntervalY = [object.visibleIntervalY];\r\n }\r\n }\r\n if (version < 6) {\r\n if (object.torsion != null) {\r\n object.torsions = [{\r\n angle: {\r\n type: FormulaHelper.TYPE_CONSTANT_ANGLE,\r\n v: object.torsion.angle\r\n },\r\n end: {\r\n type: FormulaHelper.TYPE_CONSTANT,\r\n v: object.torsion.end\r\n },\r\n start: {\r\n type: FormulaHelper.TYPE_CONSTANT,\r\n v: object.torsion.start\r\n }\r\n }];\r\n object.torsion = null;\r\n }\r\n }\r\n }\r\n return arr;\r\n }\r\n else {\r\n return objects;\r\n }\r\n }\r\n\r\n static loadStateDataToGroup = (editorData, itemOld) => {\r\n console.log(editorData);\r\n console.log(itemOld);\r\n\r\n const objects = editorData[0].children.filter(o => o.type).map(o => {\r\n let objOut = this.getNewRow();\r\n objOut.id = o.id;\r\n objOut.type = o.type;\r\n objOut.length.v = MathHelper.metersToMm(o.length);\r\n objOut.skipCalculation = o.skipCalculation;\r\n objOut.position.x.v = MathHelper.metersToMm(o.position.x);\r\n objOut.position.y.v = MathHelper.metersToMm(o.position.y);\r\n objOut.position.z.v = MathHelper.metersToMm(o.position.z);\r\n objOut.rotation.x.v = MathHelper.radToDegree(o.rotation.x);\r\n objOut.rotation.y.v = MathHelper.radToDegree(o.rotation.y);\r\n objOut.rotation.z.v = MathHelper.radToDegree(o.rotation.z);\r\n if (o.points != null && o.points.length > 2) {\r\n objOut.useSpline = true;\r\n objOut.length.v = MathHelper.metersToMm(Math.abs(o.points[0].y)) * 2;\r\n objOut.points = o.points\r\n .filter((p, pi) => pi != 0 && pi != (o.points.length - 1))\r\n .map(p => ({\r\n x: MathHelper.metersToMm(p.x),\r\n y: MathHelper.metersToMm(p.y),\r\n z: MathHelper.metersToMm(p.z),\r\n key: uniqueId('pid-')\r\n }));\r\n }\r\n if (o.ends != null) {\r\n objOut.ends = {};\r\n\r\n if (o.ends.first != null) {\r\n if (o.ends.first.cutLength != null) {\r\n objOut.ends.first = {\r\n type: this.END_TYPE_CUT,\r\n cutLength: MathHelper.metersToMm(o.ends.first.cutLength),\r\n axis: o.ends.first.axis\r\n };\r\n } else if (o.ends.first.a != null) {\r\n objOut.ends.first = {\r\n type: this.END_TYPE_ABC,\r\n a: MathHelper.metersToMm(o.ends.first.a),\r\n b: MathHelper.metersToMm(o.ends.first.b),\r\n c: MathHelper.metersToMm(o.ends.first.c)\r\n };\r\n }\r\n }\r\n\r\n if (o.ends.last != null) {\r\n if (o.ends.last.cutLength != null) {\r\n objOut.ends.last = {\r\n type: this.END_TYPE_CUT,\r\n cutLength: MathHelper.metersToMm(o.ends.last.cutLength),\r\n axis: o.ends.last.axis\r\n };\r\n } else if (o.ends.last.a != null) {\r\n objOut.ends.last = {\r\n type: this.END_TYPE_ABC,\r\n a: MathHelper.metersToMm(o.ends.last.a),\r\n b: MathHelper.metersToMm(o.ends.last.b),\r\n c: MathHelper.metersToMm(o.ends.last.c)\r\n };\r\n }\r\n }\r\n\r\n }\r\n return objOut;\r\n });\r\n\r\n let item = {\r\n ...itemOld,\r\n objects: objects\r\n };\r\n\r\n return item;\r\n }\r\n}","import axios from \"axios\";\r\nimport * as types from './types';\r\n\r\nexport const getTransactionData = () => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.get(`api/SiteCompany/GetTransactionData`)\r\n .then((response) => {\r\n dispatch({\r\n type: types.GET_TRANSACTION_DATA,\r\n payload: response.data\r\n });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n })\r\n}\r\n\r\nexport const sendToModeration = (callback) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.post(`api/SiteCompany/SendMyCompanySiteToModeration`)\r\n .then((response) => {\r\n dispatch({ type: types.SUCCESS });\r\n if (callback) callback(true);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n if (callback) callback(false, err.response.data);\r\n })\r\n}\r\n\r\nexport const getMyCompanySite = () => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.get(`api/SiteCompany/GetMyCompanySite`)\r\n .then((response) => {\r\n dispatch({\r\n type: types.GET_MY_COMPANY_SITE,\r\n payload: response.data\r\n });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n })\r\n}\r\n\r\nexport const getProductsForCompany = (data, callback) => (dispatch) => {\r\n dispatch({ type: types.REQUEST_PRODUCTS });\r\n return axios.post(`api/SiteCompany/GetProductsForCS`, data)\r\n .then((response) => {\r\n dispatch({\r\n type: types.SUCCESS_PRODUCT_LOAD,\r\n payload: response.data\r\n }); if (callback) callback(true);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({\r\n type: types.FAILURE,\r\n });\r\n if (callback) callback(false, err.response.data);\r\n })\r\n}\r\n\r\nexport const createSite = (data,callback) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.get(`api/SiteCompany/CreateSite?name=`+data)\r\n .then((response) => {\r\n dispatch({\r\n type: types.CREATE_SITE,\r\n payload: response.data\r\n });\r\n if (callback) callback(true, response.data);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({\r\n type: types.CREATE_SITE_FAILURE,\r\n });\r\n if (callback) callback(false, err.response.data);\r\n })\r\n}\r\n\r\nexport const getProductDetails = (data, callback) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.post(`api/SiteCompany/GetProductsDetails`, data)\r\n .then((response) => {\r\n dispatch({\r\n type: types.LOAD_DETAILS,\r\n payload: response.data\r\n });\r\n if (callback) callback(true);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({\r\n type: types.FAILURE,\r\n });\r\n if (callback) callback(false, err.response.data);\r\n })\r\n}\r\n\r\nexport const loadSite = (data, callback) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.get(`api/SiteCompany/LoadCompanySite?companyName=` + data)\r\n .then((response) => {\r\n dispatch({\r\n type: types.LOAD_SITE,\r\n payload: response.data\r\n });\r\n if (callback) callback(true);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({\r\n type: types.LOAD_SITE_FAILURE,\r\n payload: err.response.data,\r\n });\r\n if (callback) callback(false, err.response.data);\r\n })\r\n}\r\n\r\nexport const updateCompanySite = (data, callback) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.post(`api/SiteCompany/UpdateCompanySite`, data)\r\n .then((response) => {\r\n dispatch({\r\n type: types.UPDATE_SITE,\r\n payload: response.data\r\n });\r\n if (callback) callback(true);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({\r\n type: types.UPDATE_SITE_FAILURE,\r\n });\r\n if (callback) callback(false, err.response.data);\r\n })\r\n}\r\n\r\nexport const getBGI = () => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.get(`api/SiteCompany/GetBackgroundImages`)\r\n .then((response) => {\r\n dispatch({\r\n type: types.SUCCESS_BGI_LOAD,\r\n payload: response.data\r\n });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({\r\n type: types.FAILURE,\r\n });\r\n })\r\n}\r\n\r\nexport const loadLogo = (data, callback) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.post(`api/SiteCompany/LoadLogo`, data)\r\n .then((response) => {\r\n dispatch({\r\n type: types.SUCCESS_LOGO_LOAD,\r\n payload: response.data\r\n });\r\n if (callback) callback(true, response.data);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({\r\n type: types.FAILURE,\r\n });\r\n if (callback) callback(false, err);\r\n })\r\n}\r\n\r\nexport const loadImage = (data, callback) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.post(`api/SiteCompany/ImageLoad`, data)\r\n .then((response) => {\r\n dispatch({ type: types.SUCCESS });\r\n if (callback) callback(true, response.data);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({\r\n type: types.FAILURE,\r\n });\r\n if (callback) callback(false, err);\r\n })\r\n}\r\n\r\nexport const deleteImage = (data, callback) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.post(`api/SiteCompany/DeleteImage`, data)\r\n .then((response) => {\r\n dispatch({ type: types.SUCCESS });\r\n if (callback) callback(true, response.data);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({\r\n type: types.FAILURE,\r\n });\r\n if (callback) callback(false, err.response.data);\r\n })\r\n}","import React, { Component } from \"react\";\r\nimport { Input, Button } from \"reactstrap\";\r\nimport { Dropdown, DropdownMenu, DropdownToggle, FormGroup, FormFeedback } from \"reactstrap\";\r\nimport { LazyLoadImage } from 'react-lazy-load-image-component';\r\nimport { AiFillEdit } from \"react-icons/ai\";\r\nimport './filtView.css';\r\nimport { IoIosCloseCircle, IoIosCamera, IoMdArrowDropdown, IoMdArrowDropup } from 'react-icons/io';\r\nimport { isMobile } from \"react-device-detect\";\r\nimport { MdFilterList } from \"react-icons/md\";\r\n\r\nexport default class FiltrView extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n show: this.props.show,\r\n selectedItem: this.props.startId ? this.props.startId : -1,\r\n }\r\n }\r\n\r\n toggle = () => {\r\n this.setState({ show: !this.state.show });\r\n }\r\n\r\n toggleDD = () => {\r\n if (this.state.selectedItem > 0 && this.state.show) {\r\n this.toggle();\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.startId != this.props.startId) {\r\n this.setState({ selectedItem: this.props.startId });\r\n }\r\n }\r\n\r\n onClick = (id, url) => {\r\n if (this.props.onChangeFiltr) {\r\n this.props.onChangeFiltr(id, url);\r\n }\r\n this.setState({ show: !this.state.show, selectedItem: id });\r\n }\r\n\r\n render() {\r\n const { t, items, showInHeader } = this.props;\r\n const { show, selectedItem } = this.state;\r\n let singleClassName = !isMobile ? \"filt-single-container\" : \"filt-single-container-mobile\";\r\n return (\r\n <>\r\n \r\n \r\n \r\n {!showInHeader ?\r\n {!show ? : \"\"}{t('catalogFiltr.title')}\r\n :\r\n \r\n \r\n \r\n }\r\n \r\n {show &&\r\n
\r\n
\r\n {t('catalogFiltr.title')}\r\n
\r\n
\r\n {items &&\r\n items.map((item, itemIndex) => (\r\n this.onClick(item.id, this.props.host + (item.url ? '/' + item.url : \"\"))}\r\n >\r\n \r\n {item.name}\r\n
\r\n ))\r\n }\r\n
\r\n
\r\n }\r\n \r\n\r\n \r\n \r\n\r\n );\r\n }\r\n\r\n}","import React, { Component } from \"react\";\r\nimport { Button, Input } from \"reactstrap\";\r\nimport CheckBox from \"../../components/fields/checkbox/CheckBox\";\r\nimport './TemplateList.css';\r\nimport { toastr } from \"react-redux-toastr\";\r\nimport HistoryStorage from \"../../utils/HistoryStorage\";\r\nimport { isMobile } from \"react-device-detect\";\r\n\r\nexport default class TemplateList extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n selectedId: -1,\r\n isOpen: false,\r\n params: []\r\n };\r\n }\r\n\r\n static LastSelectedTemlates = {};\r\n\r\n static wasDetailsApplied = false;\r\n static isFromProductDetails = () => {\r\n if (HistoryStorage.historyArray.length >= 2\r\n && HistoryStorage.historyArray[HistoryStorage.historyArray.length - 2].indexOf(\"/home/productDetails\") == 0) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (this.props.templates !== prevProps.templates || this.props.selectedProductType !== prevProps.selectedProductType) {\r\n const arr = this.props.templates.filter(t => t.productTypeId == this.props.selectedProductType);\r\n let selectedItem = arr.length != 0 ? arr[arr.length - 1] : null;\r\n if (TemplateList.LastSelectedTemlates[this.props.selectedProductType]) {\r\n selectedItem = arr.find(t => t.id == TemplateList.LastSelectedTemlates[this.props.selectedProductType]);\r\n }\r\n const isAutoShow = !this.props.autoShowFirstTime || !TemplateList.wasDetailsApplied;\r\n if (selectedItem != null && !TemplateList.isFromProductDetails() && isAutoShow) {\r\n this.onTemplateSelect(selectedItem);\r\n }\r\n }\r\n\r\n if (this.state.selectedId != prevState.selectedId || this.state.isOpen != prevState.isOpen) {\r\n if (isMobile && !this.props.isSigleRow) {\r\n const el = document.getElementById(\"abTemplateParamDiv\");\r\n if (el) {\r\n const clientRect = el.getBoundingClientRect();\r\n let left = (window.innerWidth - clientRect.width) / 2;\r\n left -= clientRect.x;\r\n el.style.left = left + \"px\";\r\n }\r\n }\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.templates && this.props.selectedProductType) {\r\n const arr = this.props.templates.filter(t => t.productTypeId == this.props.selectedProductType);\r\n let selectedItem = arr.length != 0 ? arr[arr.length - 1] : null;\r\n if (TemplateList.LastSelectedTemlates[this.props.selectedProductType]) {\r\n selectedItem = arr.find(t => t.id == TemplateList.LastSelectedTemlates[this.props.selectedProductType]);\r\n }\r\n const isAutoShow = !this.props.autoShowFirstTime || !TemplateList.wasDetailsApplied;\r\n if (selectedItem != null && !TemplateList.isFromProductDetails() && isAutoShow) {\r\n this.onTemplateSelect(selectedItem);\r\n }\r\n }\r\n }\r\n\r\n onTemplateSelect(item) {\r\n if (item.id != this.state.selectedId) { \r\n this.setState({\r\n selectedId: item.id,\r\n isOpen: true,\r\n params: this.getParams(item)\r\n });\r\n TemplateList.LastSelectedTemlates[this.props.selectedProductType] = item.id;\r\n } else {\r\n this.setState({\r\n isOpen: !this.state.isOpen\r\n });\r\n }\r\n }\r\n\r\n getParams(template) {\r\n const d = JSON.parse(template.template);\r\n const sessionParam = JSON.parse(sessionStorage.getItem(\"template-\" + template.id));\r\n if (sessionParam != null && sessionParam.params.length > 0) {\r\n return sessionParam.params;\r\n }\r\n return d.userVars;\r\n }\r\n\r\n onParamValueChange = (value, index) => {\r\n if (parseInt(value) > 20000) {\r\n toastr.warning('', this.props.t('editSketch.lengError'));\r\n return;\r\n }\r\n\r\n let params = [...this.state.params];\r\n params[index] = {\r\n ...params[index],\r\n val: value\r\n };\r\n if (params[index].useForPillarACount) {\r\n const pillarAIndex = params.findIndex(p => p.name == params[index].useForPillarACount);\r\n if (pillarAIndex >= 0) {\r\n let innerSectionWidth = this.props.innerSectionWidth ? parseInt(this.props.innerSectionWidth) : 2500;\r\n let pillarACount = Math.floor(parseInt(value) / innerSectionWidth);\r\n params[pillarAIndex].val = pillarACount;\r\n }\r\n }\r\n this.setState({\r\n params: params\r\n });\r\n }\r\n\r\n onApplyClick = () => {\r\n TemplateList.wasDetailsApplied = true;\r\n const templateItem = this.props.templates.find(t => t.id == this.state.selectedId);\r\n const templateObj = JSON.parse(templateItem.template);\r\n let sections = templateObj.sections;\r\n const params = this.state.params;\r\n sessionStorage.setItem(\"template-\" + this.state.selectedId, JSON.stringify({ params }));\r\n for (let i = 0; i < sections.length; i++) {\r\n let section = sections[i];\r\n for (let prop in section.userVars) {\r\n let userVarsObj = section.userVars[prop];\r\n let userValueItem = params.find(p => p.name == userVarsObj.v);\r\n if (userValueItem != null) {\r\n if (userValueItem.type == \"TYPE_NUMBER\") {\r\n section[prop] = parseFloat(userVarsObj.a) * userValueItem.val + parseFloat(userVarsObj.b);\r\n } else {\r\n section[prop] = userValueItem.val;\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.setState({\r\n isOpen: false\r\n });\r\n\r\n this.props.onApply(sections);\r\n }\r\n\r\n render() {\r\n const { selectedId, isOpen } = this.state;\r\n const { t, templates, selectedProductType, isSigleRow } = this.props;\r\n const filteredTemplates = templates.filter(t => t.productTypeId == selectedProductType);\r\n\r\n return (\r\n
\r\n {filteredTemplates.length > 0 &&\r\n
{t('autoBuildProduct.selectTemplateH')}{t('autoBuildProduct.selectTemplate')}
\r\n }\r\n
\r\n {filteredTemplates.map(item => (\r\n \r\n
this.onTemplateSelect(item)}>\r\n \r\n
\r\n {isOpen && item.id == selectedId && this.renderParams(item)}\r\n
\r\n ))}\r\n {this.props.extraButtonClick &&\r\n \r\n }\r\n
\r\n \r\n );\r\n }\r\n\r\n renderParams(template) {\r\n const params = this.state.params.filter(p => p.isShownUser);\r\n let lang = this.props.currentLang;\r\n if (lang == 'uk') lang = 'ua';\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n {this.state.params.map((userVar, vIndex) => {\r\n return userVar.isShownUser ?\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n : <>\r\n })}\r\n \r\n
\r\n {userVar[\"label_\" + lang]}\r\n \r\n {userVar.type == \"TYPE_NUMBER\" ?\r\n this.onParamValueChange(parseFloat(e.target.value), vIndex)}\r\n style={{ width: isMobile ? \"100px\" : \"200px\" }} type=\"number\" />\r\n :\r\n this.onParamValueChange(e.target.checked, vIndex)}\r\n label=''\r\n />\r\n }\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}","import React, { Component } from \"react\";\r\nimport { withTranslation } from \"react-i18next\";\r\nimport { connect } from \"react-redux\";\r\nimport * as actions from '../actions';\r\nimport FullPageLoader from \"../../components/loaders/FullPageLoader/FullPageLoader\";\r\nimport { Row, Input, Button, FormFeedback, FormGroup, Label } from \"reactstrap\";\r\nimport \"./ProposeSketch.css\";\r\nimport { MdImage } from \"react-icons/md\";\r\nimport PhoneInput from \"react-phone-input-2\";\r\nimport 'react-phone-input-2/lib/style.css'\r\nimport { isMobile } from \"react-device-detect\";\r\n\r\nclass ProposeSketch extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading: false,\r\n imageBase64: null,\r\n email: '',\r\n phone: '',\r\n errorimageBase64: false,\r\n erroremail: false,\r\n errorphone: false\r\n };\r\n }\r\n\r\n onImageSelect = (e) => {\r\n let file = e.target.files[0];\r\n let reader = new FileReader();\r\n reader.onloadend = () => {\r\n this.setState({\r\n imageBase64: reader.result,\r\n errorimageBase64: false\r\n });\r\n };\r\n reader.readAsDataURL(file);\r\n }\r\n\r\n onInputChange = (e) => {\r\n this.setState({\r\n [e.target.name]: e.target.value,\r\n ['error' + e.target.name]: false\r\n });\r\n }\r\n\r\n onUserPhoneChange = (phone) => {\r\n if (phone == \"3800\") {\r\n phone = \"380\";\r\n }\r\n this.setState({\r\n phone: phone,\r\n errorphone: false\r\n });\r\n }\r\n\r\n onSendClick = () => {\r\n if (this.state.imageBase64 == null || this.state.phone == '') {\r\n this.setState({\r\n errorimageBase64: this.state.imageBase64 == null,\r\n errorphone: this.state.phone == ''\r\n });\r\n return;\r\n }\r\n\r\n this.setState({ loading: true });\r\n this.props.proposeSketchImage({\r\n imageBase64: this.state.imageBase64,\r\n email: this.state.phone\r\n }, isOk => {\r\n this.setState({ loading: false });\r\n });\r\n }\r\n\r\n render() {\r\n const { loading, phone, errorphone, errorimageBase64, imageBase64 } = this.state;\r\n const { t } = this.props;\r\n\r\n return (\r\n
\r\n {loading &&\r\n \r\n }\r\n
{t('autoBuildProduct.psTitle')}
\r\n
\r\n \r\n \r\n {errorimageBase64 &&\r\n {t('requiredField')}\r\n }\r\n
\r\n
{t('autoBuildProduct.psPhoneNumber')}
\r\n
\r\n \r\n {errorphone &&\r\n {t('requiredField')}\r\n }\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n})\r\n\r\nconst mapDispatchToProps = {\r\n proposeSketchImage: actions.proposeSketchImage\r\n}\r\n\r\n\r\nexport default withTranslation()(connect(\r\n mapStateToProps,\r\n mapDispatchToProps,\r\n)(ProposeSketch));","import React, { Component } from \"react\";\r\nimport { getInfoVideo } from \"../../home/actions\";\r\nimport { MdPlayCircleOutline } from \"react-icons/md\";\r\nimport { IoIosCloseCircle } from \"react-icons/io\";\r\nimport './VideoInfoView.css';\r\nimport { isMobile } from \"react-device-detect\";\r\nimport { withTranslation } from \"react-i18next\";\r\nimport { connect } from \"react-redux\";\r\n\r\nclass VideoInfoView extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n videoCode: null,\r\n showFullscreenVideo: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.getInfoVideo(this.props.videoKey, (code) => {\r\n this.setState({\r\n videoCode: code\r\n });\r\n });\r\n }\r\n\r\n hideFullscreenVideo = () => {\r\n this.setState({ showFullscreenVideo: false });\r\n }\r\n\r\n onVideoPlayClick = () => {\r\n this.setState({ showFullscreenVideo: true });\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n {this.state.videoCode &&\r\n
\r\n \r\n \r\n
\r\n }\r\n {this.state.showFullscreenVideo &&\r\n
\r\n \r\n \r\n
\r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n})\r\n\r\nconst mapDispatchToProps = {\r\n getInfoVideo: getInfoVideo\r\n}\r\n\r\nexport default withTranslation()(connect(\r\n mapStateToProps,\r\n mapDispatchToProps,\r\n)(VideoInfoView));","import React from 'react';\r\nimport Linkify from 'react-linkify';\r\nimport Helper from '../../utils/helper';\r\nimport '../ChatPage.css';\r\n\r\nexport default class MessageItem extends React.Component {\r\n render() {\r\n const { t, text, userName, date, isMy } = this.props;\r\n const color = isMy ? \"secondary\" : \"primary\";\r\n\r\n let dateStr = null;\r\n if (typeof (date) == \"string\") {\r\n dateStr = date.indexOf(\"Z\") > 0 ? date : date + \"Z\";\r\n dateStr = new Date(dateStr).toLocaleString();\r\n } else {\r\n dateStr = date.toLocaleString();\r\n }\r\n \r\n return (\r\n
\r\n \r\n {isMy ? t('chat.me') : userName}\r\n
\r\n {text}\r\n
\r\n {dateStr}\r\n
\r\n
\r\n )\r\n }}","export const REQUEST = 'siteCompany/REQUEST';\r\nexport const FAILURE = 'siteCompany/FAILURE';\r\nexport const SUCCESS = 'siteCompany/SUCCESS';\r\n\r\nexport const LOAD_DETAILS = 'siteCompany/LOAD_DETAILS';\r\n\r\nexport const SUCCESS_LOGO_LOAD = 'siteCompany/SUCCESS_LOGO_LOAD';\r\n\r\nexport const SUCCESS_BGI_LOAD = 'siteCompany/SUCCESS_BGI_LOAD';\r\n\r\nexport const SUCCESS_PRODUCT_LOAD = 'siteCompany/SUCCESS_PRODUCT_LOAD';\r\n\r\nexport const GET_MY_COMPANY_SITE = 'siteCompany/GET_MY_COMPANY_SITE';\r\n\r\nexport const GET_TRANSACTION_DATA = 'siteCompany/GET_TRANSACTION_DATA';\r\n\r\nexport const UPDATE_SITE = 'siteCompany/UPDATE_SITE';\r\nexport const UPDATE_SITE_FAILURE = 'siteCompany/UPDATE_SITE_FAILURE';\r\n\r\nexport const LOAD_SITE = 'siteCompany/LOAD_SITE';\r\nexport const LOAD_SITE_FAILURE = 'siteCompany/LOAD_SITE_FAILURE';\r\n\r\nexport const CREATE_SITE = 'siteCompany/CREATE_SITE';\r\nexport const CREATE_SITE_FAILURE = 'siteCompany/CREATE_SITE_FAILURE';\r\n\r\nexport const REQUEST_PRODUCTS = 'siteCompany/REQUEST_PRODUCTS';","import axios from \"axios\";\r\nimport * as types from './types';\r\n\r\nexport const getInstructionType = (data) => (dispatch) => {\r\n dispatch({ type: types.GET_INSTUCTION_TYPE_REQUEST });\r\n return axios.get(`api/instruction/getInstructionType`)\r\n .then((response) => {\r\n dispatch({\r\n type: types.GET_INSTUCTION_TYPE_SUCCESS,\r\n payload: response.data\r\n });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.GET_INSTUCTION_TYPE_FAILURE });\r\n })\r\n}\r\n\r\nexport const getAllInstruction = (data) => (dispatch) => {\r\n dispatch({ type: types.GET_ALL_INSTRUCTIONS_REQUEST });\r\n return axios.get(`api/instruction/getAllInstruction?isInstruction=true`)\r\n .then((response) => {\r\n dispatch({\r\n type: types.GET_ALL_INSTRUCTIONS_SUCCESS,\r\n payload: response.data\r\n });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.GET_ALL_INSTRUCTIONS_FAILURE });\r\n })\r\n}\r\n\r\nexport const getAllBlog = (data) => (dispatch) => {\r\n dispatch({ type: types.GET_ALL_BLOG_REQUEST });\r\n return axios.get(`api/instruction/getAllInstruction?isInstruction=false`)\r\n .then((response) => {\r\n //console.log(response.data);\r\n dispatch({\r\n type: types.GET_ALL_BLOG_SUCCESS,\r\n payload: response.data\r\n });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.GET_ALL_BLOG_FAILURE });\r\n })\r\n}\r\n\r\nexport const getLatestBlog = (data) => (dispatch) => {\r\n dispatch({ type: types.GET_LAST_BLOG_REQUEST });\r\n return axios.get(`api/instruction/getLastBlogs`)\r\n .then((response) => {\r\n dispatch({\r\n type: types.GET_LAST_BLOG_SUCCESS,\r\n payload: response.data\r\n });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.GET_LAST_BLOG_FAILURE });\r\n })\r\n}\r\n\r\nexport const getInstructionDetails = (Id) => (dispatch) => {\r\n dispatch({ type: types.GET_SINGLE_INSTRUCTION_REQUEST });\r\n return axios.get(`api/instruction/instruction?id=${Id}`)\r\n .then((response) => {\r\n dispatch({\r\n type: types.GET_SINGLE_INSTRUCTION_SUCCESS,\r\n payload: response.data\r\n });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.GET_SINGLE_INSTRUCTION_FAILURE });\r\n })\r\n}","import amplitude from 'amplitude-js/amplitude';\r\nimport * as lodash from \"lodash-uuid\";\r\n\r\nexport const amplitudeTypes = {\r\n OPEN_WEBSITE: 'open-website',\r\n REGISTER: 'register',\r\n REGISTER_START: 'register_start',\r\n PROJECT_CREATE: 'project_create',\r\n PROJECT_CREATE_START: 'project_create_start',\r\n PROJECT_CLOSE: 'project_close',\r\n PUBLICATION: 'publication',\r\n CONTRACT: 'contract',\r\n OPEN_DEMO_EDITOR: 'open_demo_editor',\r\n\r\n CLICK_ABOUT_US: 'click_about_us',\r\n CLICK_FOR_BUSINESS: 'click_for_business',\r\n CLICK_HOW_TO_ORDER: 'click_how_to_order',\r\n CLICK_MORE_PRODUCTS: 'click_more_products',\r\n CLICK_MORE_GOODS: 'click_more_goods',\r\n CLICK_MORE_ELEMENTS: 'click_more_elements',\r\n CLICK_PRIVACY: 'click_privacy',\r\n CLICK_TERMS_OF_USE: 'click_terms_of_use',\r\n CLICK_TARIFFS: 'click_tariffs',\r\n CLICK_PROJECT_CREATE_HOMEPAGE: 'click_project_create_homepage',\r\n CLICK_PROJECT_CREATE_DEMO: 'click_project_create_demo',\r\n CLICK_PROJECT_CANCEL_DEMO: 'click_project_cancel_demo',\r\n CLICK_OPEN_EDITOR: 'click_open_editor',\r\n CLICK_GOOGLE_PLAY: 'click_google_play',\r\n OPEN_CATALOG_PRODUCTS: 'open_catalog_producs',\r\n OPEN_CATALOG_GOODS: 'open_catalog_goods',\r\n OPEN_DEMO_FROM_PRODUCT: 'open_demo_from_product',\r\n OPEN_CATALOG_PRODUCTS_BY_ID: 'open_catalog_products_by_id',\r\n OPEN_SOLUTION_MAIN: 'open_solution_main',\r\n\r\n CREATE_NEW_PRODUCT: 'create_new_product',\r\n CREATE_NEW_OPTION: 'create_new_option',\r\n CREATE_NEW_PRODUCT_OBJECT: 'create_new_product_object',\r\n CALCULATE_SERVICE_USAGE: 'calculate_service_usage',\r\n DOWNLOAD_DESIGN: 'download_design',\r\n CONSTRUCTOR_OPEN: 'constructor_open',\r\n SHARE_CLICK: 'share_click',\r\n CATALOG_APPLY_CLICK: 'catalog_apply_click',\r\n MY_PROFILE_OPEN: 'my_profile_open',\r\n CALCULATE_PRICE_KOEF_USAGE: 'calculate_price_koef_usage',\r\n CALCULATE_PRICE_KOEF_SAVE: 'calculate_price_koef_save',\r\n SAVE_NEW_PRODUCT: 'save_new_product',\r\n APPLY_TEMPLATE_ON_SKETCH_DETAILS: 'APPLY_TEMPLATE_ON_SKETCH_DETAILS',\r\n CONTACT_MANUFACTURER: 'CONTACT_MANUFACTURER',\r\n BECOME_MANUFACTURER: 'BECOME_MANUFACTURER',\r\n\r\n OPEN_INSTRUCTION_PAGE: 'open_instruction_page',\r\n OPEN_SOLUTION_BY_ID: 'open_solution_main_by_id',\r\n\r\n CREATE_COMPANY_SITE: 'create_company_site',\r\n CREATE_EMBEDDING_SITE: 'create_embedding_site'\r\n\r\n};\r\n\r\nexport const initAmplitude = () => {\r\n amplitude.getInstance().init('593c38efe18d5b8d399fc977cc3437cf');\r\n let deviceId = localStorage.getItem(\"amplitudeDeviceId\");\r\n if (!deviceId) {\r\n deviceId = lodash.uuid();\r\n localStorage.setItem(\"amplitudeDeviceId\", deviceId);\r\n }\r\n amplitude.getInstance().setDeviceId(deviceId);\r\n};\r\n\r\nexport const setAmplitudeUserId = userId => { \r\n if (window.location.host.indexOf('simplicad') >= 0) {\r\n amplitude.getInstance().setUserId(userId);\r\n //amplitude.getInstance().regenerateDeviceId();\r\n }\r\n};\r\n\r\nexport const setAmplitudeUser = (userName) => {\r\n if (window.location.host.indexOf('simplicad') >= 0) {\r\n var identify = new amplitude.Identify().set('userName', userName);\r\n amplitude.getInstance().identify(identify);\r\n }\r\n};\r\n\r\nexport const sendAmplitudeData = (eventType, eventProperties) => {\r\n if (window.location.host.indexOf('simplicad') >= 0) {\r\n amplitude.getInstance().logEvent(eventType, eventProperties);\r\n }\r\n};","export const GET_MYELEMENTS_REQUEST = 'myelements/GET_MYELEMENTS_REQUEST';\r\nexport const GET_MYELEMENTS_SUCCESS = 'myelements/GET_MYELEMENTS_SUCCESS';\r\nexport const GET_MYELEMENTS_FAILURE = 'myelements/GET_MYELEMENTS_FAILURE';\r\n\r\n\r\nexport const GET_MYELEMENT_REQUEST = 'myelements/GET_MYELEMENT_REQUEST';\r\nexport const GET_MYELEMENT_SUCCESS = 'myelements/GET_MYELEMENT_SUCCESS';\r\nexport const GET_MYELEMENT_FAILURE = 'myelements/GET_MYELEMENT_FAILURE';\r\n\r\n\r\nexport const GET_CATEGORIES_REQUEST = 'myelements/GET_CATEGORIES_REQUEST';\r\nexport const GET_CATEGORIES_SUCCESS = 'myelements/GET_CATEGORIES_SUCCESS';\r\nexport const GET_CATEGORIES_FAILURE = 'myelements/GET_CATEGORIES_FAILURE';\r\n\r\nexport const GET_ELEMENTFORM_REQUEST = 'myelements/GET_ELEMENTFORM_REQUEST';\r\nexport const GET_ELEMENTFORM_SUCCESS = 'myelements/GET_ELEMENTFORM_SUCCESS';\r\nexport const GET_ELEMENTFORM_FAILURE = 'myelements/GET_ELEMENTFORM_FAILURE';\r\n\r\nexport const GET_ELEMENTTEXTURES_REQUEST = 'myelements/GET_ELEMENTTEXTURES_REQUEST';\r\nexport const GET_ELEMENTTEXTURES_SUCCESS = 'myelements/GET_ELEMENTTEXTURES_SUCCESS';\r\nexport const GET_ELEMENTTEXTURES_FAILURE = 'myelements/GET_ELEMENTTEXTURES_FAILURE';\r\n\r\nexport const UPDATE_ELEMENT_REQUEST = 'myelements/UPDATE_ELEMENT_REQUEST';\r\nexport const UPDATE_ELEMENT_SUCCESS = 'myelements/UPDATE_ELEMENT_SUCCESS';\r\nexport const UPDATE_ELEMENT_FAILURE = 'myelements/UPDATE_ELEMENT_FAILURE';\r\n\r\nexport const UPLOAD_THREEDMODEL_REQUEST = 'myelements/UPLOAD_THREEDMODEL_REQUEST';\r\nexport const UPLOAD_THREEDMODEL_SUCCESS = 'myelements/UPLOAD_THREEDMODEL_SUCCESS';\r\nexport const UPLOAD_THREEDMODEL_FAILURE = 'myelements/UPLOAD_THREEDMODEL_FAILURE';\r\n\r\nexport const UPLOAD_ELEMENTFORM_REQUEST = 'myelements/UPLOAD_ELEMENTFORM_REQUEST';\r\nexport const UPLOAD_ELEMENTFORM_SUCCESS = 'myelements/UPLOAD_ELEMENTFORM_SUCCESS';\r\nexport const UPLOAD_ELEMENTFORM_FAILURE = 'myelements/UPLOAD_ELEMENTFORM_FAILURE';\r\n\r\nexport const UPLOAD_ELEMENTTEXTURE_REQUEST = 'myelements/UPLOAD_ELEMENTTEXTURE_REQUEST';\r\nexport const UPLOAD_ELEMENTTEXTURE_SUCCESS = 'myelements/UPLOAD_ELEMENTTEXTURE_SUCCESS';\r\nexport const UPLOAD_ELEMENTTEXTURE_FAILURE = 'myelements/UPLOAD_ELEMENTTEXTURE_FAILURE';\r\n\r\nexport const DELETE_ELEMENT_REQUEST = 'myelements/DELETE_ELEMENT_REQUEST';\r\nexport const DELETE_ELEMENT_SUCCESS = 'myelements/DELETE_ELEMENT_SUCCESS';\r\nexport const DELETE_ELEMENT_FAILURE = 'myelements/DELETE_ELEMENT_FAILURE';\r\n\r\nexport const UPLOAD_BULKELEMENTS_REQUEST = 'myelements/UPLOAD_BULKELEMENTS_REQUEST';\r\nexport const UPLOAD_BULKELEMENTS_SUCCESS = 'myelements/UPLOAD_BULKELEMENTS_SUCCESS';\r\nexport const UPLOAD_BULKELEMENTS_FAILURE = 'myelements/UPLOAD_BULKELEMENTS_FAILURE';\r\n\r\nexport const CHANGE_AVAILABILITY_REQUEST = 'myelements/CHANGE_AVAILABILITY_REQUEST';\r\nexport const CHANGE_AVAILABILITY_SUCCESS = 'myelements/CHANGE_AVAILABILITY_SUCCESS';\r\nexport const CHANGE_AVAILABILITY_FAILURE = 'myelements/CHANGE_AVAILABILITY_FAILURE';\r\n\r\nexport const REQUEST = 'myelements/REQUEST';\r\nexport const GET_LOADED_IMAGE_SUCCESS = 'myelements/GET_LOADED_IMAGE_SUCCESS';\r\nexport const DELETE_IMAGE_SUCCESS = 'myelements/DELETE_IMAGE_SUCCESS';\r\nexport const FAILURE = 'myelements/FAILURE';\r\nexport const CHANGE_WRAPPER_SUCCESS = 'myelements/CHANGE_WRAPPER_SUCCESS';\r\n\r\nexport const GET_CODE_GROUPS = 'myelements/GET_CODE_GROUPS';\r\nexport const SAVE_CODE_GROUP = 'myelements/SAVE_CODE_GROUP';\r\nexport const SAVE_CODE = 'myelements/SAVE_CODE';","export const GET_REGIONS_REQUEST = 'createproject/GET_REGIONS_REQUEST';\r\nexport const GET_REGIONS_SUCCESS = 'createproject/GET_REGIONS_SUCCESS';\r\nexport const GET_REGIONS_FAILURE = 'createproject/GET_REGIONS_FAILURE';\r\n\r\nexport const GET_CITIES_REQUEST = 'createproject/GET_CITIES_REQUEST';\r\nexport const GET_CITIES_SUCCESS = 'createproject/GET_CITIES_SUCCESS';\r\nexport const GET_CITIES_FAILURE = 'createproject/GET_CITIES_FAILURE';\r\n\r\nexport const UPLOAD_IMAGE_REQUEST = 'createproject/UPLOAD_IMAGE_REQUEST';\r\nexport const UPLOAD_IMAGE_SUCCESS = 'createproject/UPLOAD_IMAGE_SUCCESS';\r\nexport const UPLOAD_IMAGE_FAILURE = 'createproject/UPLOAD_IMAGE_FAILURE';\r\n\r\nexport const DELETE_IMAGE = 'createproject/DELETE_IMAGE';\r\n\r\nexport const GET_PRODUCT_TYPES_REQUEST = 'createproject/GET_PRODUCT_TYPES_REQUEST';\r\nexport const GET_PRODUCT_TYPES_SUCCESS = 'createproject/GET_PRODUCT_TYPES_SUCCESS';\r\nexport const GET_PRODUCT_TYPES_FAILURE = 'createproject/GET_PRODUCT_TYPES_FAILURE';\r\n\r\nexport const CREATE_PROJECT_REQUEST = 'createproject/CREATE_PROJECT_REQUEST';\r\nexport const CREATE_PROJECT_SUCCESS = 'createproject/CREATE_PROJECT_SUCCESS';\r\nexport const CREATE_PROJECT_FAILURE = 'createproject/CREATE_PROJECT_FAILURE';\r\n\r\nexport const RESET = 'createproject/RESET';\r\n\r\nexport const GET_PROJECT_DETAILS_REQUEST = 'createproject/GET_PROJECT_DETAILS_REQUEST';\r\nexport const GET_PROJECT_DETAILS_SUCCESS = 'createproject/GET_PROJECT_DETAILS_SUCCESS';\r\nexport const GET_PROJECT_DETAILS_FAILURE = 'createproject/GET_PROJECT_DETAILS_FAILURE';\r\n","export const GET_DETAILS_REQUEST = 'projectdetails/GET_DETAILS_REQUEST';\r\nexport const GET_DETAILS_SUCCESS = 'projectdetails/GET_DETAILS_SUCCESS';\r\nexport const GET_DETAILS_FAILURE = 'projectdetails/GET_DETAILS_FAILURE';\r\n\r\nexport const SET_PRODUCT_DIMENTION_REQUEST = 'projectdetails/SET_PRODUCT_DIMENTION_REQUEST';\r\nexport const SET_PRODUCT_DIMENTION_SUCCESS = 'projectdetails/SET_PRODUCT_DIMENTION_SUCCESS';\r\nexport const SET_PRODUCT_DIMENTION_FAILURE = 'projectdetails/SET_PRODUCT_DIMENTION_FAILURE';\r\n\r\nexport const SET_DIMENTION_DONE_REQUEST = 'projectdetails/SET_DIMENTION_DONE_REQUEST';\r\nexport const SET_DIMENTION_DONE_SUCCESS = 'projectdetails/SET_DIMENTION_DONE_SUCCESS';\r\nexport const SET_DIMENTION_DONE_FAILURE = 'projectdetails/SET_DIMENTION_DONE_FAILURE';\r\n\r\nexport const CREATE_PUBLICATION_REQUEST = 'projectdetails/CREATE_PUBLICATION_REQUEST';\r\nexport const CREATE_PUBLICATION_SUCCESS = 'projectdetails/CREATE_PUBLICATION_SUCCESS';\r\nexport const CREATE_PUBLICATION_FAILURE = 'projectdetails/CREATE_PUBLICATION_FAILURE';\r\n\r\nexport const FIND_EXECUTERS_REQUEST = 'projectdetails/FIND_EXECUTERS_REQUEST';\r\nexport const FIND_EXECUTERS_SUCCESS = 'projectdetails/FIND_EXECUTERS_SUCCESS';\r\nexport const FIND_EXECUTERS_FAILURE = 'projectdetails/FIND_EXECUTERS_FAILURE';\r\n\r\nexport const SET_DESIGN_VIEW_MODE = 'projectdetails/SET_DESIGN_VIEW_MODE';\r\n\r\nexport const GET_PROPOSITIONS_REQUEST = 'projectdetails/GET_PROPOSITIONS_REQUEST';\r\nexport const GET_PROPOSITIONS_SUCCESS = 'projectdetails/GET_PROPOSITIONS_SUCCESS';\r\nexport const GET_PROPOSITIONS_FAILURE = 'projectdetails/GET_PROPOSITIONS_FAILURE';\r\n\r\nexport const ACCEPT_PROPOSITION_REQUEST = 'projectdetails/ACCEPT_PROPOSITION_REQUEST';\r\nexport const ACCEPT_PROPOSITION_SUCCESS = 'projectdetails/ACCEPT_PROPOSITION_SUCCESS';\r\nexport const ACCEPT_PROPOSITION_FAILURE = 'projectdetails/ACCEPT_PROPOSITION_FAILURE';\r\n\r\nexport const SET_CONTRACT_DONE_REQUEST = 'projectdetails/SET_CONTRACT_DONE_REQUEST';\r\nexport const SET_CONTRACT_DONE_SUCCESS = 'projectdetails/SET_CONTRACT_DONE_SUCCESS';\r\nexport const SET_CONTRACT_DONE_FAILURE = 'projectdetails/SET_CONTRACT_DONE_FAILURE';\r\n\r\nexport const RETURN_BACK_CONTRACT_REQUEST = 'projectdetails/RETURN_BACK_CONTRACT_REQUEST';\r\nexport const RETURN_BACK_CONTRACT_SUCCESS = 'projectdetails/RETURN_BACK_CONTRACT_SUCCESS';\r\nexport const RETURN_BACK_CONTRACT_FAILURE = 'projectdetails/RETURN_BACK_CONTRACT_FAILURE';\r\n\r\nexport const SET_SELF_DESIGN_REQUEST = 'projectdetails/SET_SELF_DESIGN_REQUEST';\r\nexport const SET_SELF_DESIGN_SUCCESS = 'projectdetails/SET_SELF_DESIGN_SUCCESS';\r\nexport const SET_SELF_DESIGN_FAILURE = 'projectdetails/SET_SELF_DESIGN_FAILURE';\r\n\r\nexport const SET_DESIGN_DONE_REQUEST = 'projectdetails/SET_DESIGN_DONE_REQUEST';\r\nexport const SET_DESIGN_DONE_SUCCESS = 'projectdetails/SET_DESIGN_DONE_SUCCESS';\r\nexport const SET_DESIGN_DONE_FAILURE = 'projectdetails/SET_DESIGN_DONE_FAILURE';\r\n\r\nexport const SET_PRODUCTION_DONE_REQUEST = 'projectdetails/SET_PRODUCTION_DONE_REQUEST';\r\nexport const SET_PRODUCTION_DONE_SUCCESS = 'projectdetails/SET_PRODUCTION_DONE_SUCCESS';\r\nexport const SET_PRODUCTION_DONE_FAILURE = 'projectdetails/SET_PRODUCTION_DONE_FAILURE';\r\n\r\nexport const SET_INSTALLATION_DONE_REQUEST = 'projectdetails/SET_INSTALLATION_DONE_REQUEST';\r\nexport const SET_INSTALLATION_DONE_SUCCESS = 'projectdetails/SET_INSTALLATION_DONE_SUCCESS';\r\nexport const SET_INSTALLATION_DONE_FAILURE = 'projectdetails/SET_INSTALLATION_DONE_FAILURE';\r\n\r\nexport const SET_FORCE_DIMENTION = 'projectdetails/SET_FORCE_DIMENTION';","import React from 'react';\r\nimport { Link, Redirect } from 'react-router-dom';\r\nimport { Media, Row, Col, Button, UncontrolledPopover, PopoverBody, Modal, ModalBody, ModalFooter } from 'reactstrap';\r\nimport { MdFavoriteBorder, MdFavorite, MdShare } from \"react-icons/md\";\r\nimport { toastr } from 'react-redux-toastr'\r\nimport ProjectsExecuterHelper from '../../projectsExecuter/helper';\r\nimport LabelWithMoreText from '../../components/labelWithMoreText/LabelWithMoreText';\r\nimport Helper from '../../utils/helper';\r\nimport FavotireHelper from '../../utils/favoriteHelper';\r\nimport SharePopUp from '../catalog/SharePopUp';\r\nimport ImageScroller from '../../components/imageScroller/ImageScroller';\r\nimport { isMobile } from 'react-device-detect';\r\n\r\nexport default class ProductCard extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n let isFavoriteChange = false;\r\n let isFavorite = false;\r\n if (!this.props.isAuthenticated) {\r\n const productId = parseInt(this.props.item.id);\r\n isFavoriteChange = true;\r\n const productIds = FavotireHelper.getFavoriteProducts();\r\n if (productIds.indexOf(productId) != -1)\r\n isFavorite = true;\r\n }\r\n\r\n this.state = {\r\n selectedImageIndex: 0,\r\n isRedirectToRegister: false,\r\n isFavoriteChange: isFavoriteChange,\r\n isFavorite: isFavorite,\r\n showAfterDemoPopup: false,\r\n showPopUp: false,\r\n showImagesPopup: false,\r\n logoImg: null,\r\n showTopManufacturers: true\r\n };\r\n }\r\n\r\n onFavoriteClick = (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (!this.isFavorite()) {\r\n if (this.props.isAuthenticated) {\r\n this.props.addFavorites({\r\n productIds: [this.props.item.id]\r\n });\r\n } else {\r\n FavotireHelper.addFavoriteProduct(this.props.item.id);\r\n this.props.loadFavoriteLocal();\r\n }\r\n this.setState({\r\n isFavoriteChange: true,\r\n isFavorite: true\r\n });\r\n } else {\r\n if (this.props.isAuthenticated) {\r\n this.props.removeFavorites({\r\n productIds: [this.props.item.id]\r\n });\r\n } else {\r\n FavotireHelper.removeFavoriteProduct(this.props.item.id);\r\n this.props.loadFavoriteLocal();\r\n }\r\n this.setState({\r\n isFavoriteChange: true,\r\n isFavorite: false\r\n });\r\n }\r\n }\r\n\r\n onConstructorOpenClickHandler = (e, id) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (this.props.isAuthenticated == true) {\r\n this.props.onConstructorOpenClick(id);\r\n }\r\n else {\r\n this.setState({\r\n showAfterDemoPopup: true\r\n });\r\n }\r\n }\r\n\r\n onCreateProjectWithSketch = (e, sketchId) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n\r\n }\r\n\r\n cancelAfterDemo = () => {\r\n this.hideAfterDemoPopup();\r\n }\r\n\r\n hideAfterDemoPopup = () => {\r\n this.setState({\r\n showAfterDemoPopup: false\r\n });\r\n }\r\n\r\n isFavorite = () => {\r\n return (this.state.isFavoriteChange || this.props.item == null) ? this.state.isFavorite : this.props.item.isFavorite;\r\n }\r\n showpopup = (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.setState({ showPopUp: !this.state.showPopUp });\r\n }\r\n hidepopup = (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.setState({ showPopUp: false });\r\n }\r\n\r\n onImageClick = (e) => {\r\n e.stopPropagation();\r\n this.setState({\r\n showImagesPopup: true\r\n });\r\n }\r\n\r\n hideImagesPopup = (e) => {\r\n if(e) e.stopPropagation();\r\n this.setState({\r\n showImagesPopup: false\r\n });\r\n }\r\n\r\n onMouseEnterLogo = () => {\r\n const item = this.props.item;\r\n if (item.productImages.length > 0) {\r\n this.setState({ \r\n logoImg: item.productImages[0].image\r\n });\r\n let imgIndex = 0;\r\n this.logoInterval = setInterval(() => {\r\n imgIndex++;\r\n if (imgIndex >= item.productImages.length)\r\n imgIndex = 0;\r\n this.setState({\r\n logoImg: item.productImages[imgIndex].image\r\n });\r\n }, 2000);\r\n }\r\n }\r\n\r\n onMouseLeaveLogo = () => {\r\n if (this.logoInterval) {\r\n clearInterval(this.logoInterval);\r\n }\r\n this.setState({\r\n logoImg: null\r\n });\r\n }\r\n\r\n onMouseEnterSelf = () => {\r\n this.setState({ showTopManufacturers: false });\r\n }\r\n\r\n onMouseLeaveSelf = () => {\r\n this.setState({ showTopManufacturers: true });\r\n }\r\n\r\n render() {\r\n const { item, t, isSelected, productType, dimention, isHomeCard } = this.props;\r\n const { logoImg, showTopManufacturers } = this.state;\r\n let link = window.location.origin;\r\n link += \"/home/productDetails/\" + item.id;\r\n\r\n const manufacturers = item.priceManufacturers ?\r\n (showTopManufacturers ? item.priceManufacturers.slice(0, 2) : item.priceManufacturers.slice(0, 5))\r\n : [];\r\n\r\n return (\r\n
\r\n
\r\n {item.imageAlt}\r\n\r\n
\r\n {item.executorProductImagesModerationCount > 0 &&\r\n
{item.executorProductImagesModerationCount + t('catalogPage.photo')}
\r\n }\r\n {!isMobile &&\r\n <>\r\n
\r\n
{item.name} {(item.isNoContent ? \"Д\" : \"\") + item.id}
\r\n
\r\n {dimention && productType &&\r\n
{t('catalogPage.turnkey')} {dimention}{productType.generalUnits}
\r\n }\r\n {manufacturers.map(m => (\r\n
\r\n {m.price &&\r\n <>\r\n {((m.price.productionPrice + m.price.paintingPrice + m.price.installationPrice + m.price.concretingPrice) * dimention + m.price.shippingPrice).toFixed(0)}{t('currencyUah')}  \r\n \r\n }\r\n {m.name}\r\n
\r\n ))}\r\n\r\n {item.isNoContent &&\r\n
{t('catalogPage.bottomPricev3')}
\r\n }\r\n {!isHomeCard &&\r\n
\r\n {isMobile ?\r\n \r\n :\r\n
\r\n }\r\n
\r\n {item.productImages.length > 0 &&\r\n \r\n }\r\n {this.state.showPopUp ?\r\n
\r\n \r\n
\r\n :\r\n null\r\n }\r\n \r\n {this.isFavorite() ?\r\n \r\n :\r\n \r\n }\r\n
\r\n
\r\n }\r\n \r\n }\r\n {this.state.showAfterDemoPopup &&\r\n \r\n \r\n
{t('productInfo.tryDemoText')}
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n }\r\n {this.state.showImagesPopup &&\r\n img.image}\r\n altBuilder={img => \"\"}\r\n onHide={(e) => this.hideImagesPopup(e)}\r\n />\r\n }\r\n
\r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { getInnerRegionIdByIp } from \"../../utils/languageDetector\";\r\n\r\nexport default class RegionSelect extends Component {\r\n static getRegionId(onRegionFetched) {\r\n let selectedRegionId = localStorage.getItem(\"selectedRegionId\");\r\n if (selectedRegionId) {\r\n onRegionFetched(selectedRegionId);\r\n return;\r\n }\r\n\r\n getInnerRegionIdByIp((regionId) => { \r\n localStorage.setItem(\"selectedRegionId\", regionId);\r\n onRegionFetched(regionId);\r\n });\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n const selectedRegionId = localStorage.getItem(\"selectedRegionId\");\r\n this.state = {\r\n selectedRegionId: selectedRegionId ? parseInt(selectedRegionId) : -1,\r\n isRegionListShow: false,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.regions == null || this.props.regions.length == 0) {\r\n this.props.getRegions();\r\n } else {\r\n this.buildRegions();\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (this.props.regions !== prevProps.regions) {\r\n this.buildRegions();\r\n }\r\n }\r\n\r\n buildRegions() {\r\n if (!localStorage.getItem(\"selectedRegionId\")) {\r\n getInnerRegionIdByIp((regionId) => {\r\n this.setState({ selectedRegionId: regionId });\r\n this.props.onRegionSelected(regionId);\r\n localStorage.setItem(\"selectedRegionId\", regionId);\r\n });\r\n } else {\r\n this.props.onRegionSelected(this.state.selectedRegionId);\r\n }\r\n }\r\n\r\n onRegionLabelClick = () => {\r\n this.setState({ isRegionListShow: true });\r\n }\r\n\r\n onRegionItemClick = (regionId) => {\r\n this.setState({\r\n selectedRegionId: regionId,\r\n isRegionListShow: false\r\n });\r\n this.props.onRegionSelected(regionId);\r\n localStorage.setItem(\"selectedRegionId\", regionId);\r\n }\r\n\r\n render() {\r\n const { selectedRegionId, isRegionListShow } = this.state;\r\n const { t } = this.props;\r\n const regions = [{ id: -1, name: t('manufacturer.regionAll') }, ...this.props.regions];\r\n\r\n let regionLabel = t('manufacturer.regionAll');\r\n if (selectedRegionId != -1 && regions) {\r\n const region = regions.find(r => r.id == selectedRegionId);\r\n if (region) {\r\n regionLabel = region.name;\r\n }\r\n }\r\n\r\n return (\r\n
\r\n
\r\n {this.props.topLabel ? this.props.topLabel : t('manufacturer.pmanufacturers')}\r\n {regionLabel}\r\n
\r\n {\r\n isRegionListShow &&\r\n
\r\n {regions && regions.map(regionItem => (\r\n
this.onRegionItemClick(regionItem.id)}>\r\n {regionItem.name}\r\n
\r\n ))}\r\n
\r\n }\r\n
\r\n );\r\n }\r\n}","export const GET_MESSAGES_REQUEST = 'feedback/GET_MESSAGES_REQUEST';\r\nexport const GET_MESSAGES_SUCCESS = 'feedback/GET_MESSAGES_SUCCESS';\r\nexport const GET_MESSAGES_FAILURE = 'feedback/GET_MESSAGES_FAILURE';\r\n\r\nexport const GET_MYFEEDBACKS_REQUEST = 'feedback/GET_MYFEEDBACKS_REQUEST';\r\nexport const GET_MYFEEDBACKS_SUCCESS = 'feedback/GET_MYFEEDBACKS_SUCCESS';\r\nexport const GET_MYFEEDBACKS_FAILURE = 'feedback/GET_MYFEEDBACKS_FAILURE';\r\n\r\nexport const SEND_MESSAGE_REQUEST = 'feedback/SEND_MESSAGE_REQUEST';\r\nexport const SEND_MESSAGE_SUCCESS = 'feedback/SEND_MESSAGE_SUCCESS';\r\nexport const SEND_MESSAGE_FAILURE = 'feedback/SEND_MESSAGE_FAILURE';\r\n\r\n\r\nexport const GET_LIVE_SUPPORT_MESSAGES_REQUEST = 'feedback/GET_LIVE_SUPPORT_MESSAGES_REQUEST';\r\nexport const GET_LIVE_SUPPORT_MESSAGES_SUCCESS = 'feedback/GET_LIVE_SUPPORT_MESSAGES_SUCCESS';\r\nexport const GET_LIVE_SUPPORT_MESSAGES_FAILURE = 'feedback/GET_LIVE_SUPPORT_MESSAGES_FAILURE';\r\n\r\nexport const SEND_LIVE_SUPPORT_MESSAGE_REQUEST = 'feedback/SEND_LIVE_SUPPORT_MESSAGE_REQUEST';\r\nexport const SEND_LIVE_SUPPORT_MESSAGE_SUCCESS = 'feedback/SEND_LIVE_SUPPORT_MESSAGE_SUCCESS';\r\nexport const SEND_LIVE_SUPPORT_MESSAGE_FAILURE = 'feedback/SEND_LIVE_SUPPORT_MESSAGE_FAILURE';\r\n\r\nexport const ATTACH_ADMIN_LIVE_SUPPORT_MESSAGE = 'feedback/ATTACH_ADMIN_LIVE_SUPPORT_MESSAGE';\r\n\r\nexport const GET_IS_ADMIN_ONLINE = \"feedback/GET_IS_ADMIN_ONLINE\";\r\n","import axios from \"axios\";\r\n\r\nexport default class MySpecialtyService {\r\n static getMySpecialty() {\r\n return axios.get(`api/profile/getServices`)\r\n };\r\n static getRegions(){\r\n return axios.get(`api/region/get`)\r\n }\r\n static saveMySpecialty(model){\r\n return axios.post(`api/profile/savemyservices`,model)\r\n }\r\n}","import MySpecialtyService from './mySpecialtyService';\r\nimport { toastr } from 'react-redux-toastr'\r\nimport axios from \"axios\";\r\nimport * as types from './types';\r\nimport jwt from 'jsonwebtoken';\r\nimport { saveAuthToken } from '../../utils/lsMethods';\r\nimport setAuthorizationToken from '../../utils/setAuthorizationToken';\r\nimport { loginActions, rolesIdentity } from '../../login/actions';\r\n\r\nconst mySpecialtyActions = {\r\n // For select info\r\n getMySpecialtyStarted: () => {\r\n return {\r\n type: types.GET_MYSPECIALTY_REQUEST\r\n }\r\n },\r\n getMySpecialtySuccess: (data) => {\r\n return {\r\n type: types.GET_MYSPECIALTY_SUCCESS,\r\n payload: data\r\n }\r\n },\r\n getMySpecialtyFailed: () => {\r\n return {\r\n type: types.GET_MYSPECIALTY_FAILURE,\r\n }\r\n },\r\n\r\n // For edit my info\r\n saveMySpecialtyStarted: () => {\r\n return {\r\n type: types.SAVE_MYSPECIALTY_REQUEST,\r\n }\r\n },\r\n saveMySpecialtySuccess: () => {\r\n return {\r\n type: types.SAVE_MYSPECIALTY_SUCCESS,\r\n }\r\n },\r\n saveMySpecialtyFailed: (response) => {\r\n return {\r\n type: types.SAVE_MYSPECIALTY_FAILURE,\r\n errors: response.data\r\n }\r\n },\r\n\r\n\r\n editmySpecialty: (data) => {\r\n return {\r\n type: types.EDIT_MYSPECIALTY,\r\n payload:data\r\n }\r\n },\r\n}\r\n\r\nexport const getMySpecialty = () => (dispatch) => {\r\n dispatch(mySpecialtyActions.getMySpecialtyStarted());\r\n return MySpecialtyService.getMySpecialty()\r\n .then((response) => {\r\n dispatch(mySpecialtyActions.getMySpecialtySuccess(response.data));\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch(mySpecialtyActions.getMySpecialtyFailed());\r\n })\r\n}\r\n\r\nexport const saveMySpecialty = (data) => (dispatch) => {\r\n dispatch(mySpecialtyActions.saveMySpecialtyStarted());\r\n return MySpecialtyService.saveMySpecialty(data)\r\n .then((response) => {\r\n dispatch(mySpecialtyActions.saveMySpecialtySuccess());\r\n const authToken=response.data.authToken;\r\n const decode=jwt.decode(authToken);\r\n const isConfirmed=decode.phone;\r\n const roles=decode[rolesIdentity]; \r\n var user = {\r\n roles,\r\n isConfirmed,\r\n name: decode.ownname,\r\n isExecutor: decode.isExecutor == \"True\"\r\n };\r\n if (!Array.isArray(user.roles)) {\r\n user.roles = Array.of(user.roles);\r\n }\r\n // Set auth in localstorage\r\n saveAuthToken(authToken);\r\n \r\n setAuthorizationToken(authToken);\r\n dispatch(loginActions.setCurrentUser(user));\r\n\r\n toastr.success('Успіх', 'Інформація збережена');\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch(mySpecialtyActions.saveMySpecialtyFailed(err.response));\r\n toastr.error('Помилка', err.response);\r\n })\r\n}\r\n\r\nexport const changeInfo=(name,value)=>(dispatch)=>{\r\n dispatch(mySpecialtyActions.editmySpecialty({name,value}));\r\n}\r\n\r\nexport const makeExecutor = (callback) => (dispatch) => {\r\n return axios.post(`api/profile/makeExecutor`, {})\r\n .then((response) => {\r\n const authToken = response.data.authToken;\r\n const decode = jwt.decode(authToken);\r\n const isConfirmed = decode.phone;\r\n const roles = decode[rolesIdentity];\r\n var user = {\r\n roles,\r\n isConfirmed,\r\n name: decode.ownname,\r\n isExecutor: decode.isExecutor == \"True\"\r\n };\r\n if (!Array.isArray(user.roles)) {\r\n user.roles = Array.of(user.roles);\r\n }\r\n // Set auth in localstorage\r\n saveAuthToken(authToken);\r\n\r\n setAuthorizationToken(authToken);\r\n dispatch(loginActions.setCurrentUser(user));\r\n\r\n if (callback) callback(true);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n if (callback) callback(false);\r\n })\r\n}","export const GET_ALL_INSTRUCTIONS_REQUEST = 'instruction/GET_ALL_INSTRUCTIONS_REQUEST';\r\nexport const GET_ALL_INSTRUCTIONS_SUCCESS = 'instruction/GET_ALL_INSTRUCTIONS_SUCCESS';\r\nexport const GET_ALL_INSTRUCTIONS_FAILURE = 'instruction/GET_ALL_INSTRUCTIONS_FAILURE';\r\n\r\nexport const GET_ALL_BLOG_REQUEST = 'instruction/GET_ALL_BLOG_REQUEST';\r\nexport const GET_ALL_BLOG_SUCCESS = 'instruction/GET_ALL_BLOG_SUCCESS';\r\nexport const GET_ALL_BLOG_FAILURE = 'instruction/GET_ALL_BLOG_FAILURE';\r\n\r\nexport const GET_SINGLE_INSTRUCTION_REQUEST = 'instruction/GET_SINGLE_INSTRUCTION_REQUEST';\r\nexport const GET_SINGLE_INSTRUCTION_SUCCESS = 'instruction/GET_SINGLE_INSTRUCTION_SUCCESS';\r\nexport const GET_SINGLE_INSTRUCTION_FAILURE = 'instruction/GET_SINGLE_INSTRUCTION_FAILURE';\r\n\r\nexport const GET_LAST_BLOG_REQUEST = 'instruction/GET_LAST_BLOG_REQUEST';\r\nexport const GET_LAST_BLOG_SUCCESS = 'instruction/GET_LAST_BLOG_SUCCESS';\r\nexport const GET_LAST_BLOG_FAILURE = 'instruction/GET_LAST_BLOG_FAILURE';\r\n\r\nexport const GET_INSTUCTION_TYPE_REQUEST = 'instruction/GET_INSTUCTION_TYPE_REQUEST';\r\nexport const GET_INSTUCTION_TYPE_SUCCESS = 'instruction/GET_INSTUCTION_TYPE_SUCCESS';\r\nexport const GET_INSTUCTION_TYPE_FAILURE = 'instruction/GET_INSTUCTION_TYPE_FAILURE';\r\n","import { ProductTypes } from '../constants/productTypes';\r\nimport { PublicationTypes } from '../constants/publicationTypes';\r\n\r\nexport default class ProjectsExecuterHelper {\r\n static getProducatSizeText = (product) => {\r\n if (product.dimention == null) {\r\n return \"\";\r\n }\r\n\r\n switch (product.subTypeKey) {\r\n case ProductTypes.SubtypeBalcon_P:\r\n return product.dimention.depth + \"x\" + product.dimention.width;\r\n case ProductTypes.SubtypeBalcon_French:\r\n return product.dimention.depth + \"x\" + product.dimention.width;\r\n }\r\n if (product.dimention != null) {\r\n return product.dimention.depth + \"x\" + product.dimention.width + \"x\" + product.dimention.height;\r\n }\r\n return \"\";\r\n }\r\n}","import React from 'react';\r\nimport { UncontrolledPopover, PopoverBody } from 'reactstrap';\r\nimport { MdKeyboardArrowDown } from \"react-icons/md\";\r\nimport uniqueId from 'lodash/uniqueId';\r\n\r\nexport default class LabelWithMoreText extends React.Component {\r\n render() {\r\n const { text, shortLength } = this.props;\r\n let textShort = text.length > shortLength ? text.substring(0, shortLength) + '...' : text;\r\n let id = 'lmt' + uniqueId();\r\n return (\r\n <>\r\n {textShort}\r\n \r\n \r\n \r\n {text}\r\n \r\n \r\n \r\n )\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { Media, Row, Col, Button, Input, Dropdown, DropdownMenu, DropdownToggle, FormGroup, FormFeedback } from 'reactstrap';\r\nimport Helper from \"../../utils/helper\";\r\nimport { Md3DRotation } from \"react-icons/md\";\r\nimport { toastr } from \"react-redux-toastr\";\r\nimport { LazyLoadImage } from 'react-lazy-load-image-component';\r\n\r\nimport ImageScroller from \"../../components/imageScroller/ImageScroller\";\r\nimport { isMobile } from 'react-device-detect';\r\n\r\nexport default class ElementCard extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n input_number_container: this.props.item.count ? this.props.item.count : 1,\r\n showPhoto: false\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.item !== this.props.item && this.props.item.count) {\r\n this.setState({\r\n input_number_container: this.props.item.count\r\n });\r\n }\r\n }\r\n\r\n toggle = () => {\r\n this.setState({ showPhoto: !this.state.showPhoto });\r\n }\r\n\r\n onAddToBasket = (e) => {\r\n e.stopPropagation();\r\n this.props.addElementsToBasket({\r\n id: this.props.item.id,\r\n count: this.state.input_number_container\r\n });\r\n toastr.success('', this.props.t('goodsView.addedToBasket'));\r\n }\r\n\r\n onCountChange = (event) => {\r\n //event.stopPropagation();\r\n let val = event.target.value != '' && event.target.value != '0' ? event.target.value.replace(/\\D/, '') : '1';\r\n this.setState({\r\n input_number_container: val\r\n });\r\n if (this.props.onCountChange) {\r\n this.props.onCountChange(val);\r\n }\r\n }\r\n\r\n render() {\r\n const { item, t, show3d, useWholesale } = this.props;\r\n let threedSrc = Helper.editorLinkElementPreview(item.id);\r\n //if (item.file3d != null) {\r\n // threedSrc = `/viewer3d?src=${item.file3d}`;\r\n //}\r\n let imagesCount = 0;\r\n if (item.elementImages != null) {\r\n imagesCount = item.elementImages.length;\r\n }\r\n let is;\r\n let viewTwoPrice = false;\r\n if (window.location.href.indexOf(\"/kovanie-elementi-kovki\") != -1) {\r\n viewTwoPrice = true;\r\n }\r\n return (\r\n
0 ? () => is.maxWidth(item.elementImages[0].id) : () => console.log(\"No images\")} >\r\n
\r\n
\r\n {item.uniqueCode}\r\n {imagesCount > 0 &&\r\n <>\r\n img.image} altBuilder={(img) => { return \"\" }} ref={ref => is = ref} />\r\n
is.maxWidth(item.elementImages[0].id)}*/>{imagesCount + t('catalogPage.photo')}
\r\n \r\n }\r\n
\r\n\r\n <>\r\n {show3d && threedSrc != null ?\r\n
\r\n e.stopPropagation()}\r\n />\r\n
\r\n :\r\n
\r\n {item.textureImage &&\r\n
\r\n \r\n
\r\n }\r\n {item.alt}\r\n {(item.hasContent || item.file3d) &&\r\n { e.stopPropagation(); this.props.on3dClick(); }} />\r\n\r\n }\r\n
\r\n }\r\n \r\n
\r\n {item.name}\r\n
\r\n
\r\n {item.weight} {t('myProfile.elements.weightDimen')}\r\n
\r\n
\r\n {viewTwoPrice ?\r\n <>\r\n {t('element_item.retail')}\r\n {item.priceRetail} {t('currencyUah')}\r\n
\r\n {t('element_item.wholesale')}\r\n {item.priceWholesale} {t('currencyUah')}\r\n \r\n :\r\n <>\r\n {(useWholesale && item.priceWholesale) ? t('element_item.wholesale') : t('element_item.retail')}\r\n {(useWholesale && item.priceWholesale) ? item.priceWholesale : item.priceRetail} {t('currencyUah')}\r\n \r\n }\r\n
\r\n
\r\n
\r\n e.stopPropagation()}\r\n onChange={this.onCountChange} />\r\n {t('element_item.basket')}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n","export const GET_MYINVITATIONS_REQUEST = 'projectsExecuter/GET_MYINVITATIONS_REQUEST';\r\nexport const GET_MYINVITATIONS_SUCCESS = 'projectsExecuter/GET_MYINVITATIONS_SUCCESS';\r\nexport const GET_MYINVITATIONS_FAILURE = 'projectsExecuter/GET_MYINVITATIONS_FAILURE';\r\n\r\nexport const GET_PROJECTDETAILS_REQUEST = 'projectsExecuter/GET_PROJECTDETAILS_REQUEST';\r\nexport const GET_PROJECTDETAILS_SUCCESS = 'projectsExecuter/GET_PROJECTDETAILS_SUCCESS';\r\nexport const GET_PROJECTDETAILS_FAILURE = 'projectsExecuter/GET_PROJECTDETAILS_FAILURE';\r\n\r\nexport const SEND_PROPOSITION_REQUEST = 'projectsExecuter/SEND_PROPOSITION_REQUEST';\r\nexport const SEND_PROPOSITION_SUCCESS = 'projectsExecuter/SEND_PROPOSITION_SUCCESS';\r\nexport const SEND_PROPOSITION_FAILURE = 'projectsExecuter/SEND_PROPOSITION_FAILURE';\r\n\r\nexport const FIND_PROJECTS_REQUEST = 'projectsExecuter/FIND_PROJECTS_REQUEST';\r\nexport const FIND_PROJECTS_SUCCESS = 'projectsExecuter/FIND_PROJECTS_SUCCESS';\r\nexport const FIND_PROJECTS_FAILURE = 'projectsExecuter/FIND_PROJECTS_FAILURE';\r\n\r\nexport const GET_PRODUCT_TYPES_REQUEST = 'projectsExecuter/GET_PRODUCT_TYPES_REQUEST';\r\nexport const GET_PRODUCT_TYPES_SUCCESS = 'projectsExecuter/GET_PRODUCT_TYPES_SUCCESS';\r\nexport const GET_PRODUCT_TYPES_FAILURE = 'projectsExecuter/GET_PRODUCT_TYPES_FAILURE';\r\n\r\nexport const GET_MYPROPOSITIONS_REQUEST = 'projectsExecuter/GET_MYPROPOSITIONS_REQUEST';\r\nexport const GET_MYPROPOSITIONS_SUCCESS = 'projectsExecuter/GET_MYPROPOSITIONS_SUCCESS';\r\nexport const GET_MYPROPOSITIONS_FAILURE = 'projectsExecuter/GET_MYPROPOSITIONS_FAILURE';\r\n\r\nexport const GET_CUSTOMER_DETAILS_REQUEST = 'projectsExecuter/GET_CUSTOMER_DETAILS_REQUEST';\r\nexport const GET_CUSTOMER_DETAILS_SUCCESS = 'projectsExecuter/GET_CUSTOMER_DETAILS_SUCCESS';\r\nexport const GET_CUSTOMER_DETAILS_FAILURE = 'projectsExecuter/GET_CUSTOMER_DETAILS_FAILURE';\r\n\r\nexport const GET_MYCONTRACTS_REQUEST = 'projectsExecuter/GET_MYCONTRACTS_REQUEST';\r\nexport const GET_MYCONTRACTS_SUCCESS = 'projectsExecuter/GET_MYCONTRACTS_SUCCESS';\r\nexport const GET_MYCONTRACTS_FAILURE = 'projectsExecuter/GET_MYCONTRACTS_FAILURE';\r\n\r\nexport const GET_CONTRACT_DETAILS_REQUEST = 'projectsExecuter/GET_CONTRACT_DETAILS_REQUEST';\r\nexport const GET_CONTRACT_DETAILS_SUCCESS = 'projectsExecuter/GET_CONTRACT_DETAILS_SUCCESS';\r\nexport const GET_CONTRACT_DETAILS_FAILURE = 'projectsExecuter/GET_CONTRACT_DETAILS_FAILURE';\r\n\r\nexport const SEND_CONTRACT_TO_REVIEW_REQUEST = 'projectsExecuter/SEND_CONTRACT_TO_REVIEW_REQUEST';\r\nexport const SEND_CONTRACT_TO_REVIEW_SUCCESS = 'projectsExecuter/SEND_CONTRACT_TO_REVIEW_SUCCESS';\r\nexport const SEND_CONTRACT_TO_REVIEW_FAILURE = 'projectsExecuter/SEND_CONTRACT_TO_REVIEW_FAILURE';","import axios from \"axios\";\r\n\r\nexport default class RegionsService {\r\n static getRegions(){\r\n return axios.get(`api/region/get`)\r\n }\r\n}","import * as types from './types';\r\nimport RegionsService from './regionsService';\r\n\r\nconst regionsActions={\r\n // Get regions\r\n getRegionsStarted: () => {\r\n return {\r\n type: types.GET_REGIONS_REQUEST\r\n }\r\n },\r\n getRegionsSuccess: (data) => {\r\n return {\r\n type: types.GET_REGIONS_SUCCESS,\r\n payload: data\r\n }\r\n },\r\n getRegionsFailed: () => {\r\n return {\r\n type: types.GET_REGIONS_FAILURE,\r\n }\r\n }\r\n}\r\n\r\n\r\nexport const getRegions=()=>(dispatch)=>{\r\n dispatch(regionsActions.getRegionsStarted());\r\n return RegionsService.getRegions()\r\n .then((response) => {\r\n dispatch(regionsActions.getRegionsSuccess(response.data));\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch(regionsActions.getRegionsFailed(err.response));\r\n })\r\n}","// Auth token\r\nexport const getAuthToken=()=>{\r\n return getLocalStorageItem('authToken');\r\n}\r\n\r\nexport const saveAuthToken=(token)=> {\r\n localStorage.setItem('authToken', token);\r\n}\r\n\r\n\r\n// Refresh token\r\nexport const getRefreshToken=()=> {\r\n return getLocalStorageItem('refreshToken');\r\n}\r\n\r\nexport const saveRefreshToken=(token)=> {\r\n localStorage.setItem('refreshToken', token);\r\n}\r\n\r\n\r\n// Verif token\r\nexport const getVerificationToken=()=> {\r\n return getLocalStorageItem('verToken');\r\n}\r\nexport const saveVerificationToken=(token)=> {\r\n localStorage.setItem('verToken', token);\r\n}\r\n\r\n\r\n//Remove token\r\nexport const removeVerificationToken=()=> {\r\n return removeStorageItem('verToken');\r\n}\r\n\r\nexport const removeRefreshToken=()=> {\r\n return removeStorageItem('refreshToken');\r\n}\r\n\r\nexport const removeAuthToken=()=> {\r\n return removeStorageItem('authToken');\r\n}\r\n\r\n\r\n// For all\r\nconst getLocalStorageItem=(name)=>{\r\n return localStorage.getItem(name);\r\n}\r\n\r\nconst removeStorageItem=(name)=>{\r\n return localStorage.removeItem(name);\r\n}\r\n\r\n","export const REFRESH_BASKET = 'basket/REFRESH_BASKET';\r\nexport const REFRESH_BASKET_WITHOUT_PAGE_UPDATE = 'basket/REFRESH_BASKET_WITHOUT_PAGE_UPDATE';\r\n\r\nexport const REQUEST = 'basket/REQUEST';\r\nexport const FAILURE = 'basket/FAILURE';\r\n\r\nexport const GET_GOODS_BY_IDS_SUCCESS = 'basket/GET_GOODS_BY_IDS_SUCCESS';\r\nexport const MAKE_ORDER_SUCCESS = 'basket/MAKE_ORDER_SUCCESS';\r\n\r\n\r\nexport const GET_ELEMENTS_BY_IDS_SUCCESS = 'basket/GET_ELEMENTS_BY_IDS_SUCCESS';\r\nexport const MAKE_ELEMENTS_ORDER_SUCCESS = 'basket/MAKE_ELEMENTS_ORDER_SUCCESS';","export const REQUEST = \"calculationFactors/REQUEST\";\r\nexport const FAILURE = \"calculationFactors/FAILURE\";\r\n\r\nexport const ADD_CALCULATEFACTORS_REQUEST = \"calculationFactors/ADD_CALCULATEFACTORS_REQUEST\";\r\nexport const ADD_CALCULATEFACTORS_SUCCESS = \"calculationFactors/ADD_CALCULATEFACTORS_SUCCESS\";\r\nexport const ADD_CALCULATEFACTORS_FAILURE = \"calculationFactors/ADD_CALCULATEFACTORS_FAILURE\";\r\n\r\nexport const GET_CALCULATEFACTORS_REQUEST = \"calculationFactors/GET_CALCULATEFACTORS_REQUEST\";\r\nexport const GET_CALCULATEFACTORS_SUCCESS = \"calculationFactors/GET_CALCULATEFACTORS_SUCCESS\";\r\nexport const GET_CALCULATEFACTORS_FAILURE = \"calculationFactors/GET_CALCULATEFACTORS_FAILURE\";\r\n\r\nexport const ADD_PAINTINGSPRICE_REQUEST = \"calculationFactors/ADD_PAINTINGSPRICE_REQUEST\";\r\nexport const ADD_PAINTINGSPRICE_SUCCESS = \"calculationFactors/ADD_PAINTINGSPRICE_SUCCESS\";\r\nexport const ADD_PAINTINGSPRICE_FAILURE = \"calculationFactors/ADD_PAINTINGSPRICE_FAILURE\";\r\n\r\nexport const GET_PAINTINGPRICES_REQUEST = \"calculationFactors/GET_PAINTINGPRICES_REQUEST\";\r\nexport const GET_PAINTINGPRICES_SUCCESS = \"calculationFactors/GET_PAINTINGPRICES_SUCCESS\";\r\nexport const GET_PAINTINGPRICES_FAILURE = \"calculationFactors/GET_PAINTINGPRICES_FAILURE\";\r\n\r\nexport const UPDATE_PAINTINGPRICES_REQUEST = \"calculationFactors/UPDATE_PAINTINGPRICES_REQUEST\";\r\nexport const UPDATE_PAINTINGPRICES_SUCCESS = \"calculationFactors/UPDATE_PAINTINGPRICES_SUCCESS\";\r\nexport const UPDATE_PAINTINGPRICES_FAILURE = \"calculationFactors/UPDATE_PAINTINGPRICES_FAILURE\";\r\n\r\nexport const DELETE_PAINTINGPRICES_REQUEST = \"calculationFactors/DELETE_PAINTINGPRICES_REQUEST\";\r\nexport const DELETE_PAINTINGPRICES_SUCCESS = \"calculationFactors/DELETE_PAINTINGPRICES_SUCCESS\";\r\nexport const DELETE_PAINTINGPRICES_FAILURE = \"calculationFactors/DELETE_PAINTINGPRICES_FAILURE\";\r\n\r\nexport const SET_DEFAULT_PAINTINGPRICE_SUCCESS = \"calculationFactors/SET_DEFAULT_PAINTINGPRICE_SUCCESS\";\r\nexport const GET_INSTALL_PRICE_SUCCESS = \"calculationFactors/GET_INSTALL_PRICE_SUCCESS\";\r\nexport const UPDATE_INSTALL_PRICE_SUCCESS = \"calculationFactors/UPDATE_INSTALL_PRICE_SUCCESS\";\r\n\r\nexport const GET_REGION_FACTORS_SUCCESS = \"calculationFactors/GET_REGION_FACTORS_SUCCESS\";\r\nexport const SEND_REGION_FACTORS_SUCCESS = \"calculationFactors/SEND_REGION_FACTORS_SUCCESS\";\r\n","export default class MathHelper {\r\n static metersToMm(m) {\r\n return parseInt(m * 1000);\r\n }\r\n\r\n static mmToMeters(mm) {\r\n return mm / 1000.0;\r\n }\r\n\r\n static radToDegree(rad) {\r\n return parseInt(rad * (180 / Math.PI));\r\n }\r\n\r\n static degreeToRad(degree) {\r\n return degree * (Math.PI / 180.0);\r\n }\r\n}","export const GET_MYPORTFOLIO_REQUEST = 'myportfolio/GET_MYPORTFOLIO_REQUEST';\r\nexport const GET_MYPORTFOLIO_SUCCESS = 'myportfolio/GET_MYPORTFOLIO_SUCCESS';\r\nexport const GET_MYPORTFOLIO_FAILURE = 'myportfolio/GET_MYPORTFOLIO_FAILURE';\r\n\r\nexport const GET_MYPORTFOLIOITEM_REQUEST = 'myportfolio/GET_MYPORTFOLIOITEM_REQUEST';\r\nexport const GET_MYPORTFOLIOITEM_SUCCESS = 'myportfolio/GET_MYPORTFOLIOITEM_SUCCESS';\r\nexport const GET_MYPORTFOLIOITEM_FAILURE = 'myportfolio/GET_MYPORTFOLIOITEM_FAILURE';\r\n\r\nexport const UPLOAD_PORTFOLIOIMAGE_REQUEST = 'myportfolio/UPLOAD_PORTFOLIOIMAGE_REQUEST';\r\nexport const UPLOAD_PORTFOLIOIMAGE_SUCCESS = 'myportfolio/UPLOAD_PORTFOLIOIMAGE_SUCCESS';\r\nexport const UPLOAD_PORTFOLIOIMAGE_FAILURE = 'myportfolio/UPLOAD_PORTFOLIOIMAGE_FAILURE';\r\n\r\nexport const DELETE_PORTFOLIOIMAGE_REQUEST = 'myportfolio/DELETE_PORTFOLIOIMAGE_REQUEST';\r\nexport const DELETE_PORTFOLIOIMAGE_SUCCESS = 'myportfolio/DELETE_PORTFOLIOIMAGE_SUCCESS';\r\nexport const DELETE_PORTFOLIOIMAGE_FAILURE = 'myportfolio/DELETE_PORTFOLIOIMAGE_FAILURE';\r\n\r\nexport const UPDATE_PORTFOLIOITEM_REQUEST = \"myportfolio/UPDATE_PORTFOLIOITEM_REQUEST\";\r\nexport const UPDATE_PORTFOLIOITEM_SUCCESS = 'myportfolio/UPDATE_PORTFOLIOITEM_SUCCESS';\r\nexport const UPDATE_PORTFOLIOITEM_FAILURE = 'myportfolio/UPDATE_PORTFOLIOITEM_FAILURE';\r\n\r\nexport const UPLOAD_PORTFOLIOMODEL_REQUEST = \"myportfolio/UPLOAD_PORTFOLIOMODEL_REQUEST\";\r\nexport const UPLOAD_PORTFOLIOMODEL_SUCCESS = 'myportfolio/UPLOAD_PORTFOLIOMODEL_SUCCESS';\r\nexport const UPLOAD_PORTFOLIOMODEL_FAILURE = 'myportfolio/UPLOAD_PORTFOLIOMODEL_FAILURE';\r\n\r\nexport const DELETE_PORTFOLIO_REQUEST = \"myportfolio/DELETE_PORTFOLIO_REQUEST\";\r\nexport const DELETE_PORTFOLIO_SUCCESS = 'myportfolio/DELETE_PORTFOLIO_SUCCESS';\r\nexport const DELETE_PORTFOLIO_FAILURE = 'myportfolio/DELETE_PORTFOLIO_FAILURE';\r\n\r\nexport const EDIT_MYPORTFOLIO = \"myportfolio/EDIT_PORTFOLIO\";\r\n\r\n","export const GET_FAVORITES_PRODUCTS_REQUEST = 'home/GET_FAVORITES_PRODUCTS_REQUEST';\r\nexport const GET_FAVORITES_PRODUCTS_SUCCESS = 'home/GET_FAVORITES_PRODUCTS_SUCCESS';\r\nexport const GET_FAVORITES_PRODUCTS_FAILURE = 'home/GET_FAVORITES_PRODUCTS_FAILURE';\r\n\r\nexport const ADD_FAVORITES_REQUEST = 'home/ADD_FAVORITES_REQUEST';\r\nexport const ADD_FAVORITES_SUCCESS = 'home/ADD_FAVORITES_SUCCESS';\r\nexport const ADD_FAVORITES_FAILURE = 'home/ADD_FAVORITES_FAILURE';\r\n\r\nexport const REMOVE_FAVORITES_REQUEST = 'home/REMOVE_FAVORITES_REQUEST';\r\nexport const REMOVE_FAVORITES_SUCCESS = 'home/REMOVE_FAVORITES_SUCCESS';\r\nexport const REMOVE_FAVORITES_FAILURE = 'home/REMOVE_FAVORITES_FAILURE';\r\n\r\nexport const GET_FAVORITES_REQUEST = 'home/GET_FAVORITES_REQUEST';\r\nexport const GET_FAVORITES_SUCCESS = 'home/GET_FAVORITES_SUCCESS';\r\nexport const GET_FAVORITES_FAILURE = 'home/GET_FAVORITES_FAILURE';\r\n\r\nexport const LOAD_FAVORITES_LOCAL = 'home/LOAD_FAVORITES_LOCAL';","export const REQUEST = 'manufacturer/REQUEST';\r\nexport const FAILURE = 'manufacturer/FAILURE';\r\n\r\nexport const GET_MANUFACTORERS_SUCCESS = 'manufacturer/GET_MANUFACTORERS_SUCCESS';\r\nexport const GET_PRICE_MANUFACTORERS_SUCCESS = 'manufacturer/GET_PRICE_MANUFACTORERS_SUCCESS';\r\nexport const SEND_CONTACT_REQUEST_SUCCESS = 'manufacturer/SEND_CONTACT_REQUEST_SUCCESS';\r\nexport const BECOME_MANUFACTURER_REQUEST_SUCCESS = 'manufacturer/BECOME_MANUFACTURER_REQUEST_SUCCESS';\r\n","import React from 'react';\r\nimport * as UserRoles from '../constants/specialty';\r\nimport { ProductTypes } from '../constants/productTypes';\r\nimport isEmpty from 'lodash/isEmpty';\r\n\r\nexport default class Helper {\r\n static AndroidMobileApp = 'https://play.google.com/store/apps/details?id=com.emaginaria.emaginariamobile';\r\n static EditorTimeParam = new Date().getTime();\r\n static ElementWholesaleLimit = 5000;\r\n\r\n static roleToLocalString = (role, t) => {\r\n switch (role) {\r\n case UserRoles.designElements:\r\n return t('projects.services.design');\r\n case UserRoles.productionElements:\r\n return t('projects.services.manufacture');\r\n case UserRoles.setupElements:\r\n return t('projects.services.install');\r\n }\r\n return '';\r\n }\r\n\r\n static getProducatSizeText = (product) => {\r\n if (product.dimention == null || isEmpty(product.dimention)) {\r\n return \"\";\r\n }\r\n\r\n switch (product.subTypeKey) {\r\n case ProductTypes.SubtypeBalcon_P:\r\n return product.dimention.depth + \"x\" + product.dimention.width;\r\n case ProductTypes.SubtypeBalcon_French:\r\n return product.dimention.depth + \"x\" + product.dimention.width;\r\n }\r\n if (product.dimention != null) {\r\n let str = '';\r\n if (product.dimention.depth != null && product.dimention.depth != 0) {\r\n str += product.dimention.depth;\r\n }\r\n if (product.dimention.width != null && product.dimention.width != 0) {\r\n if (str.length != 0) {\r\n str += \"x\";\r\n }\r\n str += product.dimention.width;\r\n }\r\n if (product.dimention.height != null && product.dimention.height != 0) {\r\n if (str.length != 0) {\r\n str += \"x\";\r\n }\r\n str += product.dimention.height;\r\n }\r\n return str;\r\n }\r\n return \"\";\r\n }\r\n\r\n static formatWithNewLine = (text) => {\r\n if (text == null)\r\n return '';\r\n let tarr = text.split('\\n');\r\n return tarr.map((item, index) =>\r\n (\r\n <>\r\n {item}\r\n {(index != tarr.length - 1) &&
}\r\n \r\n )\r\n )\r\n }\r\n\r\n static isShow3dOnDemand = () => {\r\n return window.navigator.deviceMemory == null || window.navigator.deviceMemory < 3;\r\n }\r\n\r\n static getEmbeddingLink = (key, lang, productType) => {\r\n return `${window.location.protocol}//${window.location.host}/embedding/${key}/${lang}/${productType ? productType : ''}`;\r\n return `${window.location.protocol}//${window.location.host}/embedding/key=${key}&lang=${lang}`;\r\n \r\n }\r\n\r\n static getMyCompanySiteLink = (name) => {\r\n return `${window.location.protocol}//${window.location.host}/company/${name}`;\r\n }\r\n \r\n static getMyCompanySiteLinkEdit = (name) => {\r\n return `${window.location.protocol}//${window.location.host}/companyedit/${name}`;\r\n }\r\n \r\n static editorPreviewLink = (productId) => {\r\n return `${window.location.protocol}//editor.${window.location.host}?productId=${productId}&nocontrols=true&time=${Helper.EditorTimeParam}`;\r\n //return `https://editor.user8945.realhost-free.net/?productId=${productId}&nocontrols=true&time=${Helper.EditorTimeParam}`;\r\n }\r\n\r\n static editorEditLink = (productId) => {\r\n return `${window.location.protocol}//editor.${window.location.host}?productId=${productId}&time=${Helper.EditorTimeParam}`;\r\n }\r\n\r\n static editorLinkAutoBuild = (autorotate) => {\r\n return `${window.location.protocol}//editor.${window.location.host}?autoBuildPreview=true&nocontrols=true${(autorotate ? '' : '&norotation=true')}&time=${Helper.EditorTimeParam}`;\r\n //return `https://editor.user8945.realhost-free.net/?autoBuildPreview=true&nocontrols=true${(autorotate ? '' : '&norotation=true')}`;\r\n //return 'https://editor.simplicad.com/?autoBuildPreview=true&nocontrols=true&norotation=true';\r\n }\r\n\r\n static editorLinkElementPreview = (elementId) => {\r\n return `${window.location.protocol}//editor.${window.location.host}?elementId=${elementId}&nocontrols=true&time=${Helper.EditorTimeParam}`;\r\n //return `https://editor.user8945.realhost-free.net/?elementId=${elementId}&nocontrols=true&time=${Helper.EditorTimeParam}`;\r\n }\r\n\r\n static saveDemoProductId = (product) => {\r\n window.localStorage.setItem(\"demoProductId\", product.id);\r\n window.localStorage.setItem(\"demoProductTypeId\", product.productTypeId);\r\n }\r\n\r\n static getSiteCompanyImgPath = (img) => {\r\n return \"api/Content/SiteCompany/\" + img;\r\n }\r\n\r\n static getBase64 = (file, callback) => {\r\n const reader = new FileReader();\r\n reader.addEventListener('load', () => callback(reader.result));\r\n reader.readAsDataURL(file);\r\n }\r\n\r\n static getDemoProductId = () => {\r\n return window.localStorage.getItem(\"demoProductId\");\r\n }\r\n static getDemoProductTypeId = () => {\r\n return window.localStorage.getItem(\"demoProductTypeId\");\r\n }\r\n\r\n static deleteDemoProductId = () => {\r\n window.localStorage.removeItem(\"demoProductId\");\r\n }\r\n}","export const REQUEST = 'embedding/REQUEST';\r\nexport const FAILURE = 'embedding/FAILURE';\r\n\r\nexport const REQUEST_PRODUCTS = 'embedding/REQUEST_PRODUCTS';\r\n\r\nexport const GET_PRODUCTS_FOR_PROFILE_SUCCESS = 'embedding/GET_PRODUCTS_FOR_PROFILE_SUCCESS';\r\nexport const SAVE_EXECUTOR_PRODUCT_SELECTION = 'embedding/SAVE_EXECUTOR_PRODUCT_SELECTION';\r\n\r\nexport const GENERATE_KEY = 'embedding/GENERATE_KEY';\r\nexport const GET_EXISTING_KEY = 'embedding/GET_EXISTING_KEY';\r\nexport const GET_PRICE_INFO = 'embedding/GET_PRICE_INFO';\r\nexport const GENERATE_KEY_FAILURE = 'embedding/GENERATE_KEY_FAILURE';\r\n\r\nexport const GET_PRODUCT_TYPES = 'embedding/GET_PRODUCT_TYPES';\r\nexport const GET_PRODUCTS_FOR_EMBEDDING = 'embedding/GET_PRODUCTS_FOR_EMBEDDING';\r\nexport const GET_PRODUCTS_FOR_EMBEDDING_FAILURE = 'embedding/GET_PRODUCTS_FOR_EMBEDDING_FAILURE';\r\nexport const GET_PRODUCT_DETAILS = 'embedding/GET_PRODUCT_DETAILS';\r\n\r\nexport const GET_LOADED_IMAGE_SUCCESS = 'embedding/GET_LOADED_IMAGE_SUCCESS';\r\nexport const DELETE_IMAGE_SUCCESS = 'embedding/DELETE_IMAGE_SUCCESS';\r\nexport const CHANGE_WRAPPER_SUCCESS = 'embedding/CHANGE_WRAPPER_SUCCESS';\r\n\r\n","export const LOGIN_POST_REQUEST = \"login/LOGIN_POST_REQUEST \";\r\nexport const LOGIN_POST_SUCCESS = \"login/LOGIN_POST_SUCCESS\";\r\nexport const LOGIN_POST_FAILED = \"login/LOGIN_POST_FAILED\";\r\n\r\nexport const LOGIN_SET_CURRENT_USER = \"login/LOGIN_SET_CURRENT_USER\";\r\n\r\nexport const LOGOUT_POST_REQUEST = \"login/LOGOUT_POST_REQUEST\";\r\n\r\nexport const LOGIN_SOCIAL_REQUEST = \"login/LOGIN_SOCIAL_REQUEST\";\r\nexport const LOGIN_SOCIAL_SUCCESS = \"login/LOGIN_SOCIAL_SUCCESS\";\r\nexport const LOGIN_SOCIAL_FAILED = \"login/LOGIN_SOCIAL_FAILED\";","import axios from \"axios\";\r\nimport * as types from './types';\r\nimport Helper from '../utils/helper';\r\nimport { sendAmplitudeData, amplitudeTypes } from \"../utils/amplitude\";\r\n\r\nconst actionList = {\r\n\r\n //#region getClosedProjects\r\n getClosedProjectsStarted: () => {\r\n return {\r\n type: types.GET_CLOSEDPROJECTS_REQUEST\r\n }\r\n },\r\n getClosedProjectsSuccess: (data) => {\r\n return {\r\n type: types.GET_CLOSEDPROJECTS_SUCCESS,\r\n payload: data\r\n }\r\n },\r\n getClosedProjectsFailed: () => {\r\n return {\r\n type: types.GET_CLOSEDPROJECTS_FAILURE,\r\n }\r\n },\r\n //#endregion\r\n\r\n //#region getProjectDetails\r\n getProjectDetailsStarted: () => {\r\n return {\r\n type: types.GET_PROJECTDETAILS_REQUEST\r\n }\r\n },\r\n getProjectDetailsSuccess: (data) => {\r\n return {\r\n type: types.GET_PROJECTDETAILS_SUCCESS,\r\n payload: data\r\n }\r\n },\r\n getProjectDetailsFailed: () => {\r\n return {\r\n type: types.GET_PROJECTDETAILS_FAILURE,\r\n }\r\n },\r\n //#endregion\r\n\r\n //#region sendOrderToSeller\r\n sendOrderToSellerStarted: () => {\r\n return {\r\n type: types.SEND_ORDERTOSELLER_REQUEST\r\n }\r\n },\r\n sendOrderToSellerSuccess: () => {\r\n return {\r\n type: types.SEND_ORDERTOSELLER_SUCCESS\r\n }\r\n },\r\n sendOrderToSellerFailed: () => {\r\n return {\r\n type: types.SEND_ORDERTOSELLER_FAILURE\r\n }\r\n },\r\n //#endregion\r\n\r\n //#region getHomeData\r\n getHomeDataStarted: () => {\r\n return {\r\n type: types.GET_HOMEDATA_REQUEST\r\n }\r\n },\r\n getHomeDataSuccess: (data) => {\r\n return {\r\n type: types.GET_HOMEDATA_SUCCESS,\r\n payload: data\r\n }\r\n },\r\n getHomeDataFailed: () => {\r\n return {\r\n type: types.GET_HOMEDATA_FAILURE,\r\n }\r\n },\r\n //#endregion\r\n\r\n //#region getClosedProducts\r\n getClosedProductsStarted: () => {\r\n return {\r\n type: types.GET_CLOSEDPROJECTS_REQUEST\r\n }\r\n },\r\n getClosedProductsSuccess: (data) => {\r\n return {\r\n type: types.GET_CLOSEDPRODUCTS_SUCCESS,\r\n payload: data\r\n }\r\n },\r\n getClosedProductsFailed: () => {\r\n return {\r\n type: types.GET_CLOSEDPRODUCTS_FAILURE,\r\n }\r\n },\r\n //#endregion\r\n\r\n //#region getCatalogProductDetails\r\n getCatalogProductDetailsStarted: () => {\r\n return {\r\n type: types.GET_PRODUCTTDETAILS_REQUEST\r\n }\r\n },\r\n getCatalogProductDetailsSuccess: (data) => {\r\n return {\r\n type: types.GET_PRODUCTTDETAILS_SUCCESS,\r\n payload: data\r\n }\r\n },\r\n getCatalogProductDetailsFailed: () => {\r\n return {\r\n type: types.GET_PRODUCTTDETAILS_FAILURE,\r\n }\r\n },\r\n //#endregion\r\n ThreeDTimeOut: () => {\r\n return {\r\n type: types.THREED_TIME_OUT,\r\n }\r\n },\r\n ThreeDTimeOutFlush: () => {\r\n return {\r\n type: types.THREED_TIME_OUT_FLUSH,\r\n }\r\n },\r\n}\r\n\r\nexport const getTexturedMetalsList = () => (dispatch) => {\r\n dispatch({ type: types.REQUEST_METALS_LIST });\r\n return axios.get(`api/home/gettexturedmetalslist`)\r\n .then((response) => {\r\n dispatch({\r\n type: types.GET_TEXTURED_METALS_LIST_SUCCESS,\r\n payload: response.data\r\n });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE_METALS_LIST });\r\n })\r\n}\r\n\r\nexport const getClosedProjects = () => (dispatch) => {\r\n dispatch(actionList.getClosedProjectsStarted());\r\n return axios.get(`api/project/searchclosedprojects`)\r\n .then((response) => {\r\n dispatch(actionList.getClosedProjectsSuccess(response.data));\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch(actionList.getClosedProjectsFailed());\r\n })\r\n}\r\n\r\nexport const getProjectDetails = (id) => (dispatch) => {\r\n dispatch(actionList.getProjectDetailsStarted());\r\n return axios.get(`api/project/getclosedprojectdetails/${id}`)\r\n .then((response) => {\r\n dispatch(actionList.getProjectDetailsSuccess(response.data));\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch(actionList.getProjectDetailsFailed());\r\n })\r\n}\r\n\r\nexport const sendOrderToSeller = (productIds, callback) => (dispatch) => {\r\n dispatch(actionList.sendOrderToSellerStarted());\r\n return axios.post(`api/project/sendProductOrderToSeller`, productIds)\r\n .then((response) => {\r\n dispatch(actionList.sendOrderToSellerSuccess());\r\n if (callback) callback(true, response.data);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch(actionList.sendOrderToSellerFailed());\r\n if (callback) callback(false);\r\n })\r\n}\r\n\r\nexport const sendOrderToSeller2 = (productIds, callback) => (dispatch) => {\r\n dispatch(actionList.sendOrderToSellerStarted());\r\n return axios.post(`api/project/sendProductOrderToSeller2`, productIds)\r\n .then((response) => {\r\n dispatch(actionList.sendOrderToSellerSuccess());\r\n if (callback) callback(true, response.data);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch(actionList.sendOrderToSellerFailed());\r\n if (callback) callback(false);\r\n })\r\n}\r\n\r\nexport const getHomeData = () => (dispatch) => {\r\n dispatch(actionList.getHomeDataStarted());\r\n return axios.get(`api/home/getHomeData`)\r\n .then((response) => {\r\n dispatch(actionList.getHomeDataSuccess(response.data));\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch(actionList.getHomeDataFailed());\r\n })\r\n}\r\n\r\nexport const getClosedProducts = (data) => (dispatch) => {\r\n dispatch(actionList.getClosedProductsStarted());\r\n return axios.post(`api/home/getClosedProducts`, data)\r\n .then((response) => {\r\n dispatch(actionList.getClosedProductsSuccess(response.data));\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch(actionList.getClosedProductsFailed());\r\n })\r\n}\r\n\r\nexport const getCatalogProductDetails = (productId) => (dispatch) => {\r\n dispatch(actionList.getCatalogProductDetailsStarted());\r\n return axios.get(`api/home/getCatalogProductDetails?productId=${productId}`)\r\n .then((response) => {\r\n dispatch(actionList.getCatalogProductDetailsSuccess(response.data));\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch(actionList.getCatalogProductDetailsFailed());\r\n })\r\n}\r\n\r\nexport const makeDemoProduct = (callback) => (dispatch) => {\r\n return axios.get(`api/home/makeDemoProduct`)\r\n .then((response) => {\r\n if (checkLastDate()) {\r\n callback(true, response.data);\r\n }\r\n else {\r\n throw { error: -1 };\r\n }\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n callback(false, null);\r\n })\r\n}\r\n\r\nconst checkLastDate = () => {\r\n let date = Number(localStorage.getItem(\"lastSessionDate\"));\r\n const date_now = Date.now();\r\n if (date_now > date + 60000) {\r\n localStorage.setItem(\"lastSessionDate\", date_now);\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n}\r\n\r\nexport const flush3dError = () => (dispatch) => {\r\n dispatch(actionList.ThreeDTimeOutFlush());\r\n}\r\n\r\nexport const constructorOpenClick = (id) => (dispatch) => {\r\n sendAmplitudeData(amplitudeTypes.OPEN_DEMO_FROM_PRODUCT, { \"productId\": id });\r\n return axios.get(`api/home/productToDemo?productId=` + id)\r\n .then((response) => {\r\n if (checkLastDate()) {\r\n window.open(Helper.editorEditLink(response.data.id), '_blank');\r\n window.location.pathname = \"projectn/myprojects\";\r\n }\r\n else {\r\n throw { error: -1 };\r\n }\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n if (err[\"error\"] == -1)\r\n dispatch(actionList.ThreeDTimeOut());\r\n console.log(err);\r\n })\r\n}\r\n\r\nexport const getInfoVideo = (key, callback) => (dispatch) => {\r\n return axios.get(`api/home/GetInfoVideo?key=${key}`)\r\n .then((response) => {\r\n callback(response.data.code);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n })\r\n}\r\n\r\nexport const getElementsForProduct = (productId) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.get(`api/elements/GetElementsForProduct?productId=` + productId)\r\n .then((response) => {\r\n dispatch({\r\n type: types.GET_ELEMENTS_FOR_PRODUCT_SUCCESS,\r\n payload: response.data\r\n });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n })\r\n}\r\n\r\nexport const getListElementsAndMetalsForProduct = (productId) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.get(`api/elements/GetListElementsAndMetalsForProduct?productId=` + productId)\r\n .then((response) => {\r\n dispatch({\r\n type: types.GET_LIST_ELEMENTS_AND_METALS_FOR_PRODUCT_SUCCESS,\r\n payload: response.data\r\n });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n })\r\n}\r\n\r\nexport const getProductTypesV2 = () => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.get(`api/project/getproducttypesv2`)\r\n .then((response) => {\r\n dispatch({\r\n type: types.GET_PRODUCT_TYPES_SUCCESS,\r\n payload: response.data\r\n });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n })\r\n}\r\n\r\nexport const sendProductCatalogSketchRequest = (data, callback) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.post(`api/home/SendProductCatalogSketchRequest`, data)\r\n .then((response) => {\r\n dispatch({\r\n type: types.SUCCESS,\r\n payload: response.data\r\n });\r\n if (callback) callback(true);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n if (callback) callback(false);\r\n })\r\n}\r\n\r\nexport const sendProductCatalogSketchRequestv4 = (data, callback) => (dispatch) => {\r\n dispatch({ type: types.REQUEST });\r\n return axios.post(`api/home/SendProductCatalogSketchRequestv4`, data)\r\n .then((response) => {\r\n dispatch({\r\n type: types.SUCCESS,\r\n payload: response.data\r\n });\r\n if (callback) callback(true);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.FAILURE });\r\n if (callback) callback(false);\r\n })\r\n}","import axios from \"axios\";\r\n\r\nexport default class LoginService {\r\n static login(model) {\r\n return axios.post(`api/account/login`,model)\r\n };\r\n\r\n static logout(model) {\r\n return axios.post(`api/account/logout`, model)\r\n };\r\n}","import { push } from 'connected-react-router';\r\nimport LoginService from './loginService';\r\nimport jwt from 'jsonwebtoken';\r\nimport * as types from './types';\r\nimport axios from \"axios\";\r\nimport setAuthorizationToken from '../utils/setAuthorizationToken';\r\nimport { sendAmplitudeData, setAmplitudeUserId, amplitudeTypes } from '../utils/amplitude';\r\n\r\n\r\nimport { removeAuthToken, removeRefreshToken, saveAuthToken, saveRefreshToken, saveVerificationToken, removeVerificationToken, getRefreshToken } from '../utils/lsMethods';\r\n\r\nexport const rolesIdentity = \"http://schemas.microsoft.com/ws/2008/06/identity/claims/role\";\r\nexport const nameIdentity = \"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name\";\r\n\r\nexport const loginActions = {\r\n loginStarted: () => {\r\n return { \r\n type: types.LOGIN_POST_REQUEST \r\n }\r\n },\r\n loginSuccess: () => {\r\n return {\r\n type: types.LOGIN_POST_SUCCESS\r\n }\r\n },\r\n loginFailed: (response) => {\r\n return {\r\n type: types.LOGIN_POST_FAILED,\r\n errors: response.data\r\n }\r\n },\r\n setCurrentUser: (user) => {\r\n return {\r\n type: types.LOGIN_SET_CURRENT_USER,\r\n user\r\n }\r\n },\r\n logoutStarted: () => {\r\n return {\r\n type: types.LOGOUT_POST_REQUEST\r\n }\r\n },\r\n}\r\n\r\n\r\nexport const loginPost = (model) => {\r\n return (dispatch) => {\r\n dispatch(loginActions.loginStarted());\r\n LoginService.login(model)\r\n .then((response) => {\r\n dispatch(loginActions.loginSuccess());\r\n loginByJWT(response.data, dispatch);\r\n\r\n const tokenData = jwt.decode(response.data.authToken);\r\n setAmplitudeUserId(tokenData[nameIdentity]);\r\n sendAmplitudeData(amplitudeTypes.OPEN_WEBSITE, { 'registered': true }); \r\n }, err => { throw err; })\r\n .catch(err => {\r\n dispatch(loginActions.loginFailed(err.response));\r\n });\r\n }\r\n}\r\n\r\nexport const loginSocial = (model) => (dispatch) => {\r\n dispatch({ type: types.LOGIN_SOCIAL_REQUEST });\r\n axios.post('api/account/loginSocial', model)\r\n .then((response) => { \r\n loginByJWT(response.data, dispatch);\r\n\r\n const tokenData = jwt.decode(response.data.authToken);\r\n setAmplitudeUserId(tokenData[nameIdentity]);\r\n sendAmplitudeData(amplitudeTypes.OPEN_WEBSITE, { 'registered': true }); \r\n\r\n dispatch({ type: types.LOGIN_SOCIAL_SUCCESS });\r\n }, err => { throw err; })\r\n .catch(err => {\r\n dispatch({ type: types.LOGIN_SOCIAL_FAILED });\r\n });\r\n}\r\n\r\n\r\nexport function logout() {\r\n return dispatch => {\r\n logoutByJWT(dispatch);\r\n sendAmplitudeData(amplitudeTypes.OPEN_WEBSITE, { 'registered': false });\r\n };\r\n}\r\n\r\n// Login with localstorage\r\n\r\nexport const loginByJWT = (tokens, dispatch) => {\r\n const { authToken, refreshToken } = tokens;\r\n const decode=jwt.decode(authToken);\r\n const isConfirmed=decode.phone;\r\n const roles = decode[rolesIdentity];\r\n var user = {\r\n roles,\r\n isConfirmed,\r\n name: decode.ownname,\r\n isExecutor: decode.isExecutor == \"True\"\r\n };\r\n if (!Array.isArray(user.roles)) {\r\n user.roles = Array.of(user.roles);\r\n }\r\n // Set auth and refresh token in localstorage\r\n if(!!refreshToken)\r\n {\r\n saveAuthToken(authToken);\r\n saveRefreshToken(refreshToken)\r\n }\r\n else{\r\n saveVerificationToken(authToken);\r\n }\r\n\r\n\r\n\r\n setAuthorizationToken(authToken);\r\n dispatch(loginActions.setCurrentUser(user));\r\n}\r\n\r\nexport const logoutByJWT = (dispatch) => {\r\n dispatch(loginActions.logoutStarted());\r\n LoginService.logout({ refreshToken: getRefreshToken() })\r\n .then((response) => {\r\n // Remove tokens\r\n removeAuthToken();\r\n removeRefreshToken();\r\n removeVerificationToken();\r\n\r\n\r\n //Set null to header axios\r\n setAuthorizationToken(false);\r\n dispatch(loginActions.setCurrentUser({}));\r\n dispatch(push(\"/\"));\r\n }, err => { throw err; })\r\n .catch(err => { \r\n // Remove tokens\r\n removeAuthToken();\r\n removeRefreshToken();\r\n removeVerificationToken();\r\n\r\n //Set null to header axios\r\n setAuthorizationToken(false);\r\n dispatch(loginActions.setCurrentUser({}));\r\n dispatch(push(\"/\"));\r\n });\r\n}\r\n\r\nexport const passwordRecoveryRequest = (data, callback) => {\r\n axios.post(`api/account/passwordrecoveryrequest`, data)\r\n .then((response) => {\r\n if (callback) callback(true);\r\n }, err => { throw err; })\r\n .catch(err => {\r\n if (callback) callback(false);\r\n });\r\n}\r\n\r\nexport const passwordRecoveryFinish = (data, callback) => {\r\n axios.post(`api/account/passwordrecoveryfinish`, data)\r\n .then((response) => {\r\n if (callback) callback(true);\r\n }, err => { throw err; })\r\n .catch(err => {\r\n if (callback) callback(false);\r\n });\r\n}\r\n","export const GET_MYSPECIALTY_REQUEST = 'myspecialty/GET_MYSPECIALTY_REQUEST';\r\nexport const GET_MYSPECIALTY_SUCCESS = 'myspecialty/GET_MYSPECIALTY_SUCCESS';\r\nexport const GET_MYSPECIALTY_FAILURE = 'myspecialty/GET_MYSPECIALTY_FAILURE';\r\n\r\n\r\nexport const SAVE_MYSPECIALTY_REQUEST = 'myspecialty/SAVE_MYSPECIALTY_REQUEST';\r\nexport const SAVE_MYSPECIALTY_SUCCESS = 'myspecialty/SAVE_MYSPECIALTY_SUCCESS';\r\nexport const SAVE_MYSPECIALTY_FAILURE = 'myspecialty/SAVE_MYSPECIALTY_FAILURE';\r\n\r\nexport const EDIT_MYSPECIALTY=\"myspecialty/EDIT_MYSPECIALTY\";","export const REQUEST = 'autoBuild/REQUEST';\r\nexport const FAILURE = 'autoBuild/FAILURE';\r\n\r\nexport const GET_SKETCHES_SUCCESS = 'autoBuild/GET_SKETCHES_SUCCESS';\r\nexport const GET_SKETCH_DETAILS_SUCCESS = 'autoBuild/GET_SKETCH_DETAILS_SUCCESS';\r\n\r\nexport const GET_TEMPLATES_SUCCESS = 'autoBuild/GET_TEMPLATES_SUCCESS';\r\n","export const VERIFY_ACCOUNT_REQUEST='verifyaccount/VERIFY_ACCOUNT_REQUEST';\r\nexport const VERIFY_ACCOUNT_SUCCESS='verifyaccount/VERIFY_ACCOUNT_SUCCESS';\r\nexport const VERIFY_ACCOUNT_FAILURE='verifyaccount/VERIFY_ACCOUNT_FAILURE';\r\n\r\nexport const SEND_SMS_REQUEST='verifyaccount/SEND_SMS_REQUEST';\r\nexport const SEND_SMS_SUCCESS='verifyaccount/SEND_SMS_SUCCESS';\r\nexport const SEND_SMS_FAILURE='verifyaccount/SEND_SMS_FAILURE';\r\n\r\nexport const SET_TIMER_REQUEST='verifyaccount/SET_TIMER_REQUEST';","import React, { Component } from \"react\";\r\nimport { MdChat, MdSend, MdClose } from \"react-icons/md\";\r\nimport { withTranslation } from \"react-i18next\";\r\nimport { connect } from \"react-redux\";\r\nimport { InputGroup, Input, InputGroupAddon, Button } from \"reactstrap\";\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport * as actions from '../actions';\r\nimport './LiveSupport.css';\r\nimport MessageItem from \"../../chat/components/MessageItem\";\r\nimport { isMobile } from \"react-device-detect\";\r\nimport * as uniqueId from \"lodash/uniqueId\";\r\n\r\n\r\nclass LiveSupport extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isChatVisible: false,\r\n textToSend: '',\r\n localMessages: []\r\n };\r\n\r\n this.sessionId = null;\r\n }\r\n\r\n componentDidMount() {\r\n this.props.getIsAdminOnline();\r\n\r\n this.questionTimeout = setTimeout(() => {\r\n this.setState({\r\n //isChatVisible: true,\r\n localMessages: [{\r\n id: -2,\r\n isAuthorizedUser: false,\r\n isSupportRead: true,\r\n isUserSender: false,\r\n text: this.props.t('feedback.timeoutQuestion'),\r\n time: new Date().toISOString(),\r\n userSessionId: \"\"\r\n }]\r\n });\r\n }, 60 * 1000);\r\n }\r\n\r\n componentWillUnmount() {\r\n this.stopTimer();\r\n }\r\n\r\n startTimer = () => {\r\n this.timerInterval = setInterval(() => {\r\n this.props.getLiveSupportMessages(true, this.getSessionId());\r\n }, 2000);\r\n }\r\n\r\n stopTimer() {\r\n if (this.timerInterval != null) {\r\n clearInterval(this.timerInterval);\r\n this.timerInterval = null;\r\n }\r\n }\r\n\r\n keydownHandler = (e) => {\r\n if (e.keyCode === 13)\r\n this.onSendMessage();\r\n }\r\n\r\n componentDidUpdate() {\r\n if (this.state.isChatVisible) {\r\n this.scrollToBottom();\r\n }\r\n }\r\n\r\n onChatToggle = () => {\r\n if (!this.state.isChatVisible) {\r\n this.props.getLiveSupportMessages(false, this.getSessionId());\r\n this.startTimer();\r\n } else {\r\n this.stopTimer();\r\n }\r\n clearTimeout(this.questionTimeout);\r\n this.setState({\r\n isChatVisible: !this.state.isChatVisible\r\n });\r\n }\r\n\r\n scrollToBottom = () => {\r\n this.messagesEnd.scrollIntoView({ behavior: \"smooth\" });\r\n }\r\n\r\n handleMessageTextChange = (e) => {\r\n this.setState({\r\n textToSend: e.target.value\r\n });\r\n }\r\n\r\n getSessionId = () => {\r\n if (this.sessionId != null)\r\n return this.sessionId;\r\n\r\n this.sessionId = window.localStorage.getItem(\"liveSupportSession\");\r\n if (this.sessionId == null) {\r\n this.sessionId = uuidv4();\r\n window.localStorage.setItem(\"liveSupportSession\", this.sessionId);\r\n }\r\n return this.sessionId;\r\n }\r\n\r\n onSendMessage = () => {\r\n if (this.state.textToSend != '') {\r\n this.props.sendLiveSupportMessage({\r\n sessionId: this.getSessionId(),\r\n text: this.state.textToSend\r\n });\r\n this.setState({\r\n textToSend: ''\r\n });\r\n if (!this.props.isAdminOnline) {\r\n var t = new Date();\r\n t.setSeconds(t.getSeconds() + 3);\r\n\r\n this.props.attachAdminLiveSupportMessage({\r\n id: \"local-\" + uniqueId(),\r\n userSessionId: this.getSessionId(),\r\n text: this.props.t('feedback.adminOfflineMessage'),\r\n time: t,\r\n isUserSender: false,\r\n isTempAdmin: true\r\n });\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n const { isChatVisible, textToSend } = this.state;\r\n const { isAdminOnline, t } = this.props;\r\n const messages = [...this.state.localMessages, ...this.props.messages];\r\n let containerStyle = \"ls-icon-container\";\r\n let svgStyle = \"ls-icon-chat\";\r\n if (isAdminOnline) {\r\n containerStyle += \" animation-container\";\r\n svgStyle += \" animation-svg\";\r\n }\r\n return (\r\n
\r\n {isChatVisible &&\r\n
\r\n
\r\n {isAdminOnline ?\r\n
\r\n
\r\n Online\r\n
\r\n :\r\n
\r\n
\r\n Offline\r\n
\r\n }\r\n \r\n
\r\n
\r\n {\r\n messages.map((message) => (\r\n \r\n ))\r\n }\r\n
{ this.messagesEnd = el; }}>\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n }\r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n messages: state.feedback.liveSupportMessages,\r\n isAdminOnline: state.feedback.liveSupportIsAdminOnline\r\n})\r\n\r\nconst mapDispatchToProps = {\r\n sendLiveSupportMessage: actions.sendLiveSupportMessage,\r\n getLiveSupportMessages: actions.getLiveSupportMessages,\r\n attachAdminLiveSupportMessage: actions.attachAdminLiveSupportMessage,\r\n getIsAdminOnline: actions.getIsAdminOnline\r\n}\r\n\r\nexport default withTranslation()(connect(\r\n mapStateToProps,\r\n mapDispatchToProps,\r\n)(LiveSupport));","import React, { Component } from \"react\";\r\nimport { withTranslation } from \"react-i18next\";\r\nimport { connect } from \"react-redux\";\r\nimport CookieBanner from 'react-cookie-banner';\r\nimport Cookies from \"js-cookie\";\r\nimport { isMobile } from \"react-device-detect\";\r\n\r\nclass CookiesBanner extends Component {\r\n\r\n render() {\r\n const { t } = this.props;\r\n let styleMessage = isMobile ?\r\n { fontWeight: 400, display: \"block\", marginLeft : \"10%\", fontSize: \"75%\", width: \"60%\", textAlign: \"left\", lineHeight: \"25px\" }\r\n :\r\n { fontWeight: 400, fontSize: \"125%\", display: \"inline-block\", width: \"80%\", textAlign: \"left\" };\r\n let styleButton = isMobile ?\r\n { backgroundColor: \"#00d17b\", color: \"white\" }\r\n :\r\n { backgroundColor: \"#00d17b\", color: \"white\", transform: \"scale(1.5)\" };\r\n return (\r\n
\r\n {t(\"cookies.link\")}}\r\n onAccept={() => { Cookies.set('user-has-accepted-cookies', true); }}\r\n dismissOnScroll={false}\r\n cookie=\"user-has-accepted-cookies\" />\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n})\r\n\r\nconst mapDispatchToProps = {\r\n}\r\n\r\nexport default withTranslation()(connect(\r\n mapStateToProps,\r\n mapDispatchToProps,\r\n)(CookiesBanner));","import * as React from 'react'\r\nimport FlagIconFactory from 'react-flag-icon-css'\r\n \r\nconst FlagIcon = FlagIconFactory(React, { useCssModules: false })\r\n \r\nexport default FlagIcon","import React from 'react';\r\nimport { Modal, ModalBody, ModalFooter, Button, Input, Spinner } from 'reactstrap';\r\nimport { withTranslation } from 'react-i18next';\r\nimport { connect } from 'react-redux';\r\nimport { callMeasurer, getProjectsWithoutMeasurer } from '../myprojects/actions';\r\nimport { toastr } from 'react-redux-toastr';\r\n\r\nclass CallMeasurerPopup extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n selectedProjectId: props.projectsWithoutMeasurer[0].id\r\n };\r\n }\r\n\r\n onSendClick = () => {\r\n this.props.callMeasurer(this.state.selectedProjectId, (isOk) => {\r\n if (isOk) {\r\n toastr.success('', this.props.t('projects.myprojects.infoText1'));\r\n this.props.getProjectsWithoutMeasurer();\r\n this.props.onHideClick();\r\n }\r\n });\r\n }\r\n\r\n onProjectSelect = (id) => {\r\n this.setState({\r\n selectedProjectId: id\r\n });\r\n }\r\n\r\n render() {\r\n const { t, onHideClick, projectsWithoutMeasurer, loading } = this.props;\r\n const { selectedProjectId } = this.state;\r\n\r\n return (\r\n \r\n \r\n
{t('projects.callMeasurerPopup.title')}
\r\n {projectsWithoutMeasurer.map((item) => (\r\n
this.onProjectSelect(item.id)}>\r\n {item.name}\r\n
\r\n ))}\r\n {loading &&\r\n
\r\n \r\n
\r\n }\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n loading: state.myProjects.loading,\r\n projectsWithoutMeasurer: state.myProjects.projectsWithoutMeasurer \r\n});\r\n\r\nconst mapDispatchToProps = {\r\n callMeasurer: callMeasurer,\r\n getProjectsWithoutMeasurer: getProjectsWithoutMeasurer\r\n};\r\n\r\nexport default withTranslation()(connect(mapStateToProps, mapDispatchToProps)(CallMeasurerPopup))","import React, { Component } from 'react';\r\nimport { NavItem, Nav, DropdownToggle, UncontrolledDropdown, DropdownMenu, DropdownItem } from \"reactstrap\";\r\nimport { Link, NavLink } from \"react-router-dom\";\r\nimport { withTranslation } from 'react-i18next';\r\nimport { connect } from \"react-redux\";\r\nimport './MyProfileSideBar.css';\r\nimport { MdFavorite, MdPlayCircleOutline } from 'react-icons/md';\r\nimport { getFavorites, loadFavoriteLocal } from '../../favorites/actions';\r\nimport { isMobile } from 'react-device-detect';\r\nimport { getLatestBlog } from '../../instruction/actions';\r\nimport { makeExecutor } from '../../myprofile/myspecialty/actions';\r\nimport { toastr } from 'react-redux-toastr';\r\nimport FullPageLoader from '../loaders/FullPageLoader/FullPageLoader';\r\n\r\nexport class MyProfileSideBar extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n popupVideoId: null,\r\n isLoading: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n\r\n }\r\n\r\n getFavoriteCount = () => {\r\n if (this.props.favoritesData != null) {\r\n return this.props.favoritesData.productIds.length;\r\n }\r\n return '';\r\n }\r\n\r\n getFavoriteProductCount = () => {\r\n if (this.props.favoritesData != null) {\r\n return this.props.favoritesData.productIds.length;\r\n }\r\n return '';\r\n }\r\n\r\n\r\n makeExecutor = () => {\r\n this.setState({ isLoading: true });\r\n this.props.makeExecutor((isOk) => {\r\n if (isOk) {\r\n toastr.success('', this.props.t('myProfile.services.youBecomeExecutor'));\r\n }\r\n this.setState({ isLoading: false });\r\n });\r\n }\r\n\r\n render() {\r\n const { t, isAuthenticated, roles } = this.props;\r\n const isSketchEditor = roles.includes(\"SketchBuilder\");\r\n\r\n return (\r\n
\r\n {this.state.isLoading &&\r\n \r\n }\r\n {isAuthenticated &&\r\n <>\r\n
{t('sidebar.tMyProfile')}
\r\n {t('sidebar.generalInfo')}\r\n {this.props.isExecutor ?\r\n {t('sidebar.services')}\r\n :\r\n {t('sidebar.makeExecutor')}\r\n }\r\n {/*\r\n {t('sidebar.portfolio')}\r\n */}\r\n {this.props.isSeller && isSketchEditor &&\r\n {t('sidebar.elements')}\r\n }\r\n {t('sidebar.support')}\r\n {t('sidebar.sessionEditors')}\r\n {this.props.isManufactor &&\r\n {t('sidebar.calculationFactors')}\r\n }\r\n\r\n {this.props.isExecutor &&\r\n {t('sidebar.mycatalog')}\r\n }\r\n\r\n {t('sidebar.mycompanysite')}\r\n\r\n {/*{t('sidebar.balance')}*/}\r\n \r\n }\r\n
\r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n loading: state.language.loading,\r\n isAuthenticated: state.login.isAuthenticated,\r\n isConfirmed: state.login.isConfirmed,\r\n isExecutor: state.login.user.isExecutor,\r\n isShowPortfolio: state.login.user.roles.includes(\"Manufacturer\") ||\r\n state.login.user.roles.includes(\"Installer\") ||\r\n state.login.user.roles.includes(\"Designer\"),\r\n isSeller: state.login.user.roles.includes(\"Seller\"),\r\n isManufactor: state.login.user.roles.includes(\"Manufacturer\"),\r\n roles: state.login.user.roles,\r\n favoritesData: state.favorite.favoritesData,\r\n LastBlogs: state.instructions.LastBlogs\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n getFavorites: getFavorites,\r\n loadFavoriteLocal: loadFavoriteLocal,\r\n getLatestBlog: getLatestBlog,\r\n makeExecutor: makeExecutor\r\n}\r\n\r\nexport default withTranslation()(connect(mapStateToProps, mapDispatchToProps)(MyProfileSideBar))\r\n","import React from 'react';\r\nimport {\r\n Collapse, Container, Navbar, NavbarBrand, NavbarToggler, NavItem, NavLink,\r\n DropdownToggle, UncontrolledDropdown, DropdownMenu, DropdownItem, Button\r\n} from 'reactstrap';\r\nimport { Link } from 'react-router-dom';\r\nimport { withTranslation } from 'react-i18next';\r\nimport { connect } from \"react-redux\";\r\n\r\nimport { FiUser } from \"react-icons/fi\";\r\nimport { MdChat, MdShoppingCart, MdFavorite } from \"react-icons/md\";\r\nimport axios from \"axios\";\r\nimport './NavMenu.css';\r\nimport FlagIcon from './flags/FlagIcon';\r\n\r\nimport { setLanguage } from '../store/language/actions';\r\nimport { logout } from '../login/actions';\r\nimport { getRegions } from '../regions/actions';\r\nimport { getProjectsWithoutMeasurer } from '../projects/myprojects/actions';\r\nimport * as UserRoles from '../constants/specialty';\r\n\r\nimport FeedbackPopup from '../feedback/FeedbackPopup';\r\n\r\nimport { getCountryByIp } from '../utils/languageDetector';\r\nimport CallMeasurerPopup from '../projects/callMeasurerPopup/CallMeasurerPopup';\r\nimport MyProfileSideBar from './sidebar/MyProfileSideBar';\r\nimport { isMobile } from 'react-device-detect';\r\nimport HistoryStorage from '../utils/HistoryStorage';\r\n\r\nexport class NavMenu extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isOpen: false,\r\n i18n: props.i18n,\r\n isFeedbackOpen: false,\r\n isCallMeasurerOpen: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n if (localStorage.getItem(\"isLangFirstTime\") != \"1\") {\r\n getCountryByIp(countryCode => {\r\n localStorage.setItem(\"isLangFirstTime\", \"1\");\r\n switch (countryCode) {\r\n case 'ua':\r\n this.changeLanguage('ua');\r\n break;\r\n case 'ru':\r\n this.changeLanguage('ru');\r\n break;\r\n default:\r\n this.changeLanguage('en');\r\n break;\r\n }\r\n });\r\n }\r\n if (!this.props.projectsWithoutMeasurerRequested && this.props.isAuthenticated) {\r\n this.props.getProjectsWithoutMeasurer();\r\n }\r\n }\r\n\r\n\r\n onShowFeedbackClick = () => {\r\n this.setState({\r\n isFeedbackOpen: true\r\n });\r\n }\r\n\r\n onHideFeedbackClick = () => {\r\n this.setState({\r\n isFeedbackOpen: false\r\n });\r\n }\r\n\r\n onCallMeasurerClick = () => {\r\n this.setState({\r\n isCallMeasurerOpen: true\r\n });\r\n }\r\n\r\n onHideCallMeasurerClick = () => {\r\n this.setState({\r\n isCallMeasurerOpen: false\r\n });\r\n }\r\n\r\n\r\n\r\n changeLanguage = lng => {\r\n this.state.i18n.changeLanguage(lng).then((t) => {\r\n this.props.setLanguage(lng).then((res) => {\r\n window.location.reload();\r\n });\r\n });;\r\n };\r\n\r\n toggle = () => {\r\n this.setState({\r\n isOpen: !this.state.isOpen\r\n });\r\n }\r\n\r\n handleChange = (lang) => {\r\n this.changeLanguage(lang);\r\n }\r\n\r\n logOut = () => {\r\n this.props.logout();\r\n }\r\n\r\n onOpenConstructor = () => {\r\n HistoryStorage.isRedirectToConstructor = true;\r\n }\r\n\r\n render() {\r\n const { t, roles, hasProjectsWithoutMeasurer, isAuthenticated } = this.props;\r\n const { language } = this.props.i18n;\r\n let userName = this.props.userName;\r\n\r\n if (userName != null && userName.length > 10) {\r\n userName = userName.substring(0, 8) + \"...\";\r\n }\r\n\r\n let code = language.substring(0, 2);\r\n if (language === \"uk\" || language === \"uk-UA\") {\r\n code = \"ua\";\r\n }\r\n if (language == \"en\") {\r\n code = \"gb\";\r\n }\r\n\r\n let isHomePage = (window.location.pathname == \"/\");\r\n let isCustomer = roles.includes(UserRoles.customer);\r\n const isSketchEditor = roles.includes(\"SketchBuilder\");\r\n let basketCount = this.props.basket.goods.length + this.props.basket.elements.length;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n SimpliCAD\r\n \r\n \r\n
    \r\n \r\n \r\n {t('sidebar.tCatalog')}\r\n \r\n \r\n \r\n {t('sidebar.products')}\r\n \r\n {/*\r\n \r\n {t('sidebar.products')}(V2)\r\n \r\n \r\n {t('sidebar.products')}(V3)\r\n \r\n */}\r\n \r\n {t('sidebar.productsv4')}\r\n \r\n \r\n \r\n {t('sidebar.elements_catalog')}\r\n \r\n \r\n {t('sidebar.goods')}\r\n \r\n {/*\r\n \r\n {t('navbar.manufacturers')}\r\n \r\n */}\r\n \r\n \r\n\r\n \r\n \r\n {t('navbar.info')}\r\n \r\n \r\n \r\n {t('solutions')}\r\n \r\n \r\n {t('sidebar.instructions')}\r\n \r\n \r\n {t('navbar.delivery')}\r\n \r\n \r\n {t('sidebar.articles')}\r\n \r\n \r\n {t('home.title')}\r\n \r\n \r\n \r\n\r\n {(!this.props.isAuthenticated || !this.props.isConfirmed) &&\r\n \r\n {t('navbar.login')}\r\n \r\n }\r\n {(!this.props.isAuthenticated || !this.props.isConfirmed) &&\r\n \r\n {t('navbar.register')}\r\n \r\n }\r\n\r\n {(this.props.isAuthenticated || this.props.isConfirmed) &&\r\n <>\r\n \r\n \r\n {userName}\r\n \r\n \r\n \r\n {t('sidebar.myProjects2')}\r\n \r\n {isSketchEditor &&\r\n <>\r\n \r\n {t('sidebar.myGoods')}\r\n \r\n \r\n {t('sidebar.sketchAutoBuild')}\r\n \r\n \r\n {t('sidebar.templatesAutoBuild')}\r\n \r\n \r\n }\r\n {/*this.props.isExecutor &&\r\n <>\r\n \r\n {t('sidebar.myGoods')}\r\n \r\n \r\n }\r\n {isSketchEditor &&\r\n \r\n {t('sidebar.sketchAutoBuild')}\r\n \r\n }\r\n {isSketchEditor &&\r\n \r\n {t('sidebar.templatesAutoBuild')}\r\n \r\n */}\r\n \r\n \r\n {t('navbar.myprofile')}\r\n \r\n \r\n this.logOut()}>\r\n {t('navbar.logout')}\r\n \r\n \r\n \r\n \r\n }\r\n\r\n \r\n \r\n {language.substring(0, 2).toUpperCase()}\r\n \r\n \r\n this.handleChange(\"uk\")}>\r\n UK\r\n \r\n this.handleChange(\"ru\")}>\r\n RU\r\n \r\n this.handleChange(\"en\")}>\r\n EN\r\n \r\n \r\n \r\n\r\n \r\n
    \r\n \r\n
    \r\n \r\n\r\n \r\n
    \r\n \r\n {basketCount != 0 &&\r\n
    {basketCount}
    \r\n }\r\n
    \r\n \r\n\r\n {!isHomePage &&\r\n \r\n }\r\n {isMobile && window.location.pathname.includes(\"myprofile\") &&\r\n
    \r\n \r\n
    \r\n }\r\n
\r\n
\r\n
\r\n
\r\n\r\n {this.state.isFeedbackOpen &&\r\n \r\n }\r\n\r\n {this.state.isCallMeasurerOpen &&\r\n \r\n }\r\n\r\n
\r\n\r\n );\r\n }\r\n}\r\n\r\n\r\nconst mapStateToProps = (state) => ({\r\n loading: state.language.loading,\r\n isAuthenticated: state.login.isAuthenticated,\r\n isConfirmed: state.login.isConfirmed,\r\n isExecutor: state.login.user.isExecutor,\r\n roles: state.login.user.roles,\r\n userName: state.login.user.name,\r\n hasProjectsWithoutMeasurer: state.myProjects.projectsWithoutMeasurer.length != 0,\r\n projectsWithoutMeasurerRequested: state.myProjects.projectsWithoutMeasurerRequested,\r\n basket: state.basket.basket\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n setLanguage: setLanguage,\r\n logout: logout,\r\n getProjectsWithoutMeasurer: getProjectsWithoutMeasurer\r\n};\r\n\r\n\r\nexport default withTranslation()(connect(mapStateToProps, mapDispatchToProps)(NavMenu))","import React from 'react';\r\nimport { withTranslation } from 'react-i18next';\r\n\r\nclass BannerColumn extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n const { t } = this.props;\r\n return (\r\n
\r\n
{t('banner.t1')}
\r\n \r\n
{t('banner.t2')}
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(BannerColumn);","import React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { withTranslation } from 'react-i18next';\r\nimport { connect } from 'react-redux';\r\nimport { Container, Row, Col } from 'reactstrap';\r\nimport './FooterLayout.css';\r\nimport FeedbackPopup from '../../feedback/FeedbackPopup';\r\nimport Helper from '../../utils/helper';\r\nimport { sendAmplitudeData, amplitudeTypes } from '../../utils/amplitude';\r\n\r\n\r\nclass FooterLayout extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isFeedbackOpen: false\r\n };\r\n }\r\n\r\n onOpenGooglePlay = () => {\r\n sendAmplitudeData(amplitudeTypes.CLICK_GOOGLE_PLAY, null);\r\n }\r\n\r\n onARSupportClick = () => {\r\n window.open(\"https://developers.google.com/ar/discover/supported-devices\", '_blank');\r\n }\r\n\r\n onShowFeedbackClick = () => {\r\n this.setState({\r\n isFeedbackOpen: true\r\n });\r\n }\r\n\r\n onHideFeedbackClick = () => {\r\n this.setState({\r\n isFeedbackOpen: false\r\n });\r\n }\r\n\r\n render() {\r\n const { t } = this.props;\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n SimpliCAD\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
{t('footer.contactPhone')}
\r\n \r\n \r\n \r\n \r\n {t('homeProject.arMobile')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
{t('homeProject.arSupport')}
\r\n
\r\n \r\n
\r\n
\r\n
© 2019-2020 SimpliCAD
\r\n
\r\n\r\n {this.state.isFeedbackOpen &&\r\n \r\n }\r\n\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({ \r\n isAuthenticated: state.login.isAuthenticated \r\n});\r\n\r\nexport default withTranslation()(connect(mapStateToProps, null)(FooterLayout))","import React from 'react';\r\nimport NavMenu from '../NavMenu';\r\nimport { Container, Row, Col } from \"reactstrap\";\r\nimport BannerColumn from '../../aboutProject/BannerColumn';\r\nimport FooterLayout from '../footer/FooterLayout';\r\nimport './MainLayout.css'\r\nimport { isMobile } from 'react-device-detect';\r\n\r\n\r\nexport default props => (\r\n
\r\n \r\n \r\n {props.children}\r\n \r\n \r\n
\r\n);\r\n","import React from 'react';\r\nimport NavMenu from '../NavMenu';\r\nimport { Container, Row, Col } from \"reactstrap\";\r\nimport SideBar from '../sidebar/MyProfileSideBar';\r\nimport BannerColumn from '../../aboutProject/BannerColumn';\r\nimport FooterLayout from '../footer/FooterLayout';\r\nimport './MainLayout.css'\r\nimport { isMobile } from 'react-device-detect';\r\nimport { connect } from \"react-redux\";\r\n\r\nclass MyProfileSideBar extends React.Component {\r\n render() {\r\n return (\r\n
\r\n \r\n \r\n {(!isMobile) ?\r\n \r\n \r\n \r\n \r\n \r\n {this.props.children}\r\n \r\n \r\n :\r\n <>\r\n {this.props.children}\r\n \r\n }\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({ \r\n isAuthenticated: state.login.isAuthenticated \r\n});\r\n\r\nexport default connect(mapStateToProps, null)(MyProfileSideBar);\r\n","import React from 'react';\r\nimport NavMenu from '../NavMenu';\r\nimport { Container, Row, Col } from \"reactstrap\";\r\nimport './MainLayout.css'\r\nimport FooterLayout from '../footer/FooterLayout';\r\n\r\nexport default props => {\r\n return (\r\n
\r\n \r\n
\r\n {props.children}\r\n
\r\n \r\n
\r\n );\r\n}\r\n","import React from 'react';\r\n\r\nimport {\r\n Collapse, Container, Navbar, NavbarBrand, NavbarToggler, NavItem, NavLink,\r\n DropdownToggle, UncontrolledDropdown, DropdownMenu, DropdownItem, Button, Input\r\n} from 'reactstrap';\r\n\r\nimport { withTranslation } from 'react-i18next';\r\nimport { connect } from \"react-redux\";\r\n\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { setLanguage } from '../../../store/language/actions';\r\n\r\nimport { loadLogo } from '../../actions';\r\n\r\nimport { MdShoppingCart } from \"react-icons/md\";\r\n\r\nimport Helper from \"../../../utils/helper\";\r\n\r\nimport * as UserRoles from '../../../constants/specialty';\r\n\r\nimport { AiFillEdit } from \"react-icons/ai\";\r\n\r\nimport ReactTooltip from \"react-tooltip\";\r\n\r\nexport class CompanyNavMenu extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isOpen: false,\r\n //i18n: props.i18n,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n }\r\n\r\n toggle = () => {\r\n this.setState({\r\n isOpen: !this.state.isOpen\r\n });\r\n }\r\n\r\n /*handleChange = (lang) => {\r\n this.changeLanguage(lang);\r\n }\r\n\r\n changeLanguage = lng => {\r\n this.state.i18n.changeLanguage(lng).then((t) => {\r\n this.props.setLanguage(lng).then((res) => {\r\n window.location.reload();\r\n });\r\n });;\r\n };*/\r\n\r\n loadLogo(selectorFiles: FileList) {\r\n for (let i = 0; i < selectorFiles.length; i++) {\r\n let file = selectorFiles[i];\r\n Helper.getBase64(file, (base64) => {\r\n this.props.loadLogo({ logo: base64, companyId: this.props.companySite.id });\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n const { t, roles, isAuthenticated, companySite } = this.props;\r\n\r\n const { language } = this.props.i18n;\r\n\r\n let basketCount = this.props.basket.goods.length + this.props.basket.elements.length;\r\n\r\n let pathSplit = window.location.pathname.split('/');\r\n let pathNameFirst = pathSplit[1];\r\n let isEdit = pathNameFirst == \"companyedit\";\r\n let pathToView = '/company';\r\n pathSplit.map((item, index) => {\r\n if (index > 1) {\r\n pathToView += '/' + item;\r\n }\r\n });\r\n\r\n let code = language.substring(0, 2);\r\n if (language === \"uk\" || language === \"uk-UA\") {\r\n code = \"ua\";\r\n }\r\n if (language == \"en\") {\r\n code = \"gb\";\r\n }\r\n\r\n const logoImage = companySite != null && companySite.logo != null && companySite.logo != \"\" ? Helper.getSiteCompanyImgPath(companySite.logo) : \"/img/logo.png\";\r\n\r\n return (\r\n
\r\n {companySite != null &&\r\n \r\n \r\n \r\n \r\n \r\n {isEdit &&\r\n
\r\n this.loadLogo(e.target.files)} />\r\n \r\n \r\n {t('siteCompany.loadLogo')}\r\n \r\n
\r\n }\r\n \r\n \r\n
    \r\n \r\n \r\n {t('siteCompany.about')}\r\n \r\n \r\n <>\r\n {companySite.isManufactoring &&\r\n <>\r\n \r\n \r\n {t('siteCompany.portfolio')}\r\n \r\n \r\n \r\n {t('siteCompany.prices')}\r\n \r\n \r\n }\r\n {/*(companySite.isTrading || companySite.isManufactoring) ?\r\n \r\n \r\n {t('siteCompany.3dconstructor')}\r\n \r\n \r\n {companySite.isManufactoring &&\r\n \r\n \r\n {t('siteCompany.products')}\r\n \r\n \r\n }\r\n {companySite.isTrading &&\r\n \r\n \r\n {t('siteCompany.elements')}\r\n \r\n \r\n }\r\n \r\n \r\n : <>\r\n */}\r\n \r\n \r\n \r\n {t('siteCompany.contacts')}\r\n \r\n \r\n {/*\r\n \r\n {language.substring(0, 2).toUpperCase()}\r\n \r\n \r\n this.handleChange(\"uk\")}>\r\n UK\r\n \r\n this.handleChange(\"ru\")}>\r\n RU\r\n \r\n this.handleChange(\"en\")}>\r\n EN\r\n \r\n \r\n */}\r\n {/*companySite != null && companySite.isTrading &&\r\n \r\n
    \r\n \r\n {basketCount != 0 &&\r\n
    {basketCount}
    \r\n }\r\n
    \r\n \r\n */}\r\n {isEdit ?\r\n \r\n {t('siteCompany.toView')}\r\n \r\n :\r\n
    \r\n }\r\n
\r\n
\r\n
\r\n
\r\n\r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n loading: state.language.loading,\r\n basket: state.basket.basket,\r\n companySite: state.siteCompany.companySite\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n setLanguage: setLanguage,\r\n loadLogo: loadLogo\r\n};\r\n\r\n\r\nexport default withTranslation()(connect(mapStateToProps, mapDispatchToProps)(CompanyNavMenu))","import React from 'react';\r\nimport CompanyNavMenu from './CompanyNavMenu';\r\nimport { Container, Row, Col } from \"reactstrap\";\r\n\r\nimport './CompanyLayout.css'\r\nimport { isMobile } from 'react-device-detect';\r\n\r\nexport default props => {\r\n return (\r\n
\r\n \r\n \r\n {props.children}\r\n \r\n
\r\n );\r\n}","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { Route, Redirect } from \"react-router\";\r\nimport { connect } from \"react-redux\";\r\nimport * as UserRoles from '../../constants/specialty';\r\n\r\nconst GuestRoute = ({ iAuthentificated, roles, layout: Layout, component: Component, left, right, ...rest }) => {\r\n return (\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n )\r\n};\r\nGuestRoute.propTypes = {\r\n component: PropTypes.any.isRequired,\r\n iAuthentificated: PropTypes.bool.isRequired\r\n};\r\nfunction mapStateToProps(state) {\r\n return {\r\n iAuthentificated: state.login.isAuthenticated,\r\n roles: state.login.user.roles\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(GuestRoute);\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { Route, Redirect } from \"react-router\";\r\nimport { connect } from \"react-redux\";\r\n\r\nconst UserRoute = ({ iAuthentificated, layout:Layout,isConfirmed , component: Component, ...rest }) => (\r\n \r\n iAuthentificated && isConfirmed ? \r\n \r\n \r\n \r\n : \r\n !isConfirmed ? :\r\n \r\n }\r\n />\r\n);\r\nUserRoute.propTypes = {\r\n component: PropTypes.any.isRequired,\r\n iAuthentificated: PropTypes.bool.isRequired\r\n};\r\nfunction mapStateToProps(state) {\r\n return {\r\n iAuthentificated: state.login.isAuthenticated,\r\n isConfirmed: state.login.isConfirmed\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(UserRoute);\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { Route, Redirect } from \"react-router\";\r\nimport { connect } from \"react-redux\";\r\n\r\nconst UserRouteExecutor = ({ isAuthenticated, isExecutor , layout:Layout, isConfirmed , component: Component, ...rest }) => (\r\n \r\n isAuthenticated && isExecutor && isConfirmed ? \r\n \r\n \r\n \r\n : \r\n !isConfirmed ? :\r\n \r\n }\r\n />\r\n);\r\nUserRouteExecutor.propTypes = {\r\n component: PropTypes.any.isRequired,\r\n isAuthenticated: PropTypes.bool.isRequired\r\n};\r\nfunction mapStateToProps(state) {\r\n return {\r\n isAuthenticated: state.login.isAuthenticated,\r\n isConfirmed: state.login.isConfirmed,\r\n isExecutor: state.login.user.isExecutor\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(UserRouteExecutor);\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { Route, Redirect } from \"react-router\";\r\nimport { connect } from \"react-redux\";\r\n\r\nconst UserRoutePortfolio = ({ isAuthenticated, isPortfolio , layout:Layout,isConfirmed , component: Component, ...rest }) => (\r\n \r\n isAuthenticated && isPortfolio && isConfirmed ? \r\n \r\n \r\n \r\n : \r\n !isConfirmed ? :\r\n \r\n }\r\n />\r\n);\r\nUserRoutePortfolio.propTypes = {\r\n component: PropTypes.any.isRequired,\r\n isAuthenticated: PropTypes.bool.isRequired\r\n};\r\nfunction mapStateToProps(state) {\r\n return {\r\n isAuthenticated: state.login.isAuthenticated,\r\n isConfirmed: state.login.isConfirmed,\r\n isPortfolio: state.login.user.roles.includes(\"Manufacturer\") ||\r\n state.login.user.roles.includes(\"Installer\") ||\r\n state.login.user.roles.includes(\"Designer\"),\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(UserRoutePortfolio);\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { Route, Redirect } from \"react-router\";\r\nimport { connect } from \"react-redux\";\r\nimport { getVerificationToken } from \"../../utils/lsMethods\";\r\nimport jwt from 'jsonwebtoken';\r\n\r\n\r\nconst UnConfirmAccountRoute = ({ isConfirmed, layout: Layout, component: Component, ...rest }) => (\r\n \r\n isConfirmed ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n )\r\n }\r\n />\r\n);\r\nUnConfirmAccountRoute.propTypes = {\r\n component: PropTypes.any.isRequired,\r\n isConfirmed: PropTypes.bool.isRequired\r\n};\r\nfunction mapStateToProps(state) {\r\n var token = jwt.decode(getVerificationToken());\r\n const refreshThreshold = (Math.round(Date.now() / 1000));\r\n var isConfirmed=false;\r\n if(token && refreshThreshold < token.exp){\r\n isConfirmed=true\r\n }\r\n return {\r\n isConfirmed:isConfirmed\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(UnConfirmAccountRoute);\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { Route, Redirect } from \"react-router\";\r\nimport { connect } from \"react-redux\";\r\n\r\nconst UserRouteSeller = ({ isAuthenticated, isSeller , layout:Layout,isConfirmed , component: Component, ...rest }) => (\r\n \r\n isAuthenticated && isSeller && isConfirmed ? \r\n \r\n \r\n \r\n : \r\n !isConfirmed ? :\r\n \r\n }\r\n />\r\n);\r\nUserRouteSeller.propTypes = {\r\n component: PropTypes.any.isRequired,\r\n isAuthenticated: PropTypes.bool.isRequired\r\n};\r\nfunction mapStateToProps(state) {\r\n return {\r\n isAuthenticated: state.login.isAuthenticated,\r\n isConfirmed: state.login.isConfirmed,\r\n isSeller: state.login.user.roles.includes(\"Seller\")\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(UserRouteSeller);\r\n","import i18n from 'i18next';\r\nimport { initReactI18next } from 'react-i18next';\r\nimport LanguageDetector from 'i18next-browser-languagedetector';\r\n//import Cache from 'i18next-localstorage-cache';\r\n\r\nimport Backend from 'i18next-xhr-backend';\r\n// not like to use this?\r\n// have a look at the Quick start guide \r\n// for passing in lng and translations on init\r\n\r\n\r\ni18n\r\n // load translation using xhr -> see /public/locales\r\n // learn more: https://github.com/i18next/i18next-xhr-backend\r\n .use(Backend)\r\n .use(LanguageDetector)\r\n //.use(Cache)\r\n // pass the i18n instance to react-i18next.\r\n .use(initReactI18next)\r\n // init i18next\r\n // for all options read: https://www.i18next.com/overview/configuration-options\r\n .init({\r\n fallbackLng: 'uk',\r\n debug: false,\r\n interpolation: {\r\n escapeValue: false, // not needed for react as it escapes by default\r\n },\r\n //detection: {\r\n // order: ['cookie'],\r\n // lookupCookie: '.AspNetCore.Culture',\r\n // caches: ['cookie'],\r\n //}\r\n });\r\n\r\n\r\nexport default i18n;","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withTranslation } from 'react-i18next';\r\nimport { Link } from 'react-router-dom';\r\nimport { Alert, Row, Col, Button, Modal, ModalBody, ModalFooter } from 'reactstrap';\r\nimport { MdFavoriteBorder, MdFavorite, MdLocationOn, MdShare, MdChevronLeft, MdChevronRight } from \"react-icons/md\";\r\nimport * as actions from '../actions';\r\nimport FullPageLoader from '../../components/loaders/FullPageLoader/FullPageLoader';\r\nimport './ProductDetails.css';\r\nimport InfoView from '../../components/infoView/InfoView';\r\nimport Helper from '../../utils/helper';\r\nimport { Redirect } from 'react-router-dom';\r\nimport { toastr } from 'react-redux-toastr';\r\nimport FavotireHelper from '../../utils/favoriteHelper';\r\nimport { addFavorites, removeFavorites, loadFavoriteLocal } from '../../favorites/actions';\r\nimport { isMobile } from 'react-device-detect';\r\nimport SharePopUp from '../catalog/SharePopUp';\r\nimport { sendAmplitudeData, amplitudeTypes } from '../../utils/amplitude';\r\nimport TemplateList from '../../autoBuild/createProduct/TemplateList';\r\nimport { getTemplates, getSketchDetails } from '../../autoBuild/actions';\r\nimport SectionHelper from '../../autoBuild/createProduct/sections/SectionHelper';\r\nimport { generateHiddenProduct, moveProductToNewProject } from '../../autoBuildEdit/actions';\r\nimport ElementCard from '../../elements/elementslist/ElementItem';\r\nimport '../../elements/elementslist/ElementPage.css';\r\nimport { addElementsToBasket } from '../../basket/actions';\r\nimport { AiOutlineFullscreen, AiOutlineFullscreenExit } from 'react-icons/ai';\r\nimport ManufacturerPriceList from '../../manufacturer/manufacturerPriceList/ManufacturerPriceList';\r\nimport HistoryStorage from '../../utils/HistoryStorage';\r\nimport { registerUser } from '../../register/registerSimple/actions';\r\nimport { verificateAccount, sendSms } from '../../verify/actions';\r\nimport { RegisterPopup } from '../../manufacturer/manufacturerPriceList/RegisterPopup';\r\nimport PhoneInput from 'react-phone-input-2';\r\nimport 'react-phone-input-2/lib/style.css';\r\nimport * as debounce from 'lodash/debounce';\r\n\r\nclass ProductDetailsV3 extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.sections = [];\r\n\r\n this.state = {\r\n selectedImageIndex: 0,\r\n isRedirectToRegister: false,\r\n showAfterDemoPopup: false,\r\n showPopUp: false,\r\n sections: [],\r\n loading: false,\r\n currentEditorProductId: null,\r\n productIdForPrice: null,\r\n show3dElementIndex: -1,\r\n elementsForProduct: [],\r\n elementsAndMetals: null,\r\n showAuthPopup: false,\r\n isFullscreenMode: false,\r\n selectedVariantId: -1,\r\n isShowRegisterFromOpenEditor: false,\r\n isRedirectToConstructor: false,\r\n isRedirectToBasket: false,\r\n userPhone: '',\r\n selectedTopScreenMobile: 0,\r\n showTopHeader: false,\r\n sketch: null\r\n };\r\n\r\n this.isMobile = false;\r\n\r\n this.pdItemsData = [\r\n { id: \"pdItem1\", title: this.props.t('productInfo.manufaturersTitle') },\r\n { id: \"pdItem2\", title: this.props.t('productInfo.previewTitle') },\r\n { id: \"pdItem3\", title: this.props.t('productInfo.templateTitle') }\r\n ];\r\n this.autoScrollIntervalLoopCount = 0;\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.productId) {\r\n if (!this.props.productItem || !this.props.productItem.isNoContent) {\r\n this.props.getCatalogProductDetails(this.props.productId);\r\n this.props.getListElementsAndMetalsForProduct(this.props.productId);\r\n //this.props.getElementsForProduct(this.props.productId);\r\n }\r\n this.props.getTemplates();\r\n this.props.getTexturedMetalsList();\r\n this.showTimeSpinner();\r\n }\r\n window.addEventListener(\"message\", this.onMessageFromFrame);\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener(\"message\", this.onMessageFromFrame);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (this.props.productId !== prevProps.productId) {\r\n if (!this.props.productItem || !this.props.productItem.isNoContent) {\r\n this.props.getCatalogProductDetails(this.props.productId);\r\n this.props.getListElementsAndMetalsForProduct(this.props.productId);\r\n //this.props.getElementsForProduct(this.props.productId);\r\n this.needInitialScroll = true;\r\n this.setState({\r\n sections: [],\r\n productIdForPrice: null\r\n }, () => {\r\n this.showTimeSpinner();\r\n if (isMobile) {\r\n this.onSelectTopScreenMobile(0);\r\n }\r\n }); \r\n }\r\n }\r\n if (this.props.product !== prevProps.product && this.props.product != null) {\r\n //sendAmplitudeData(amplitudeTypes.OPEN_CATALOG_PRODUCTS_BY_ID, { \"productId\": this.props.match.params.id, \"sketchId\": this.props.product.sketchId });\r\n if (this.props.product.sketchId) {\r\n this.props.getSketchDetails(this.props.product.sketchId);\r\n }\r\n }\r\n if (this.props.elementsAndMetals !== prevProps.elementsAndMetals) {\r\n this.setState({\r\n elementsAndMetals: this.props.elementsAndMetals\r\n });\r\n }\r\n if (this.props.elementsForProduct !== prevProps.elementsForProduct) {\r\n this.setState({\r\n elementsForProduct: this.props.elementsForProduct\r\n });\r\n }\r\n if (this.props.autoBuildTemplates !== prevProps.autoBuildTemplates) {\r\n this.needInitialScroll = true;\r\n }\r\n\r\n if (this.props.sketchDetails != prevProps.sketchDetails) {\r\n this.setState({\r\n sketch: {\r\n ...this.props.sketchDetails.sketch,\r\n variants: [\r\n ...(this.props.sketchDetails.sketch.variants ? this.props.sketchDetails.sketch.variants : []),\r\n SectionHelper.addNewVariant(this.props.sketchDetails.sketch, this.props.texturedMetalList, this.props.t(\"editSketch.texturedVariant\"))\r\n ]\r\n }\r\n })\r\n }\r\n }\r\n\r\n showTimeSpinner() {\r\n this.setState({ loading: true });\r\n setTimeout(() => {\r\n this.setState({ loading: false });\r\n this.startAutoScrollMobile();\r\n }, 3000);\r\n }\r\n\r\n onImageSelected = (index) => {\r\n this.setState({\r\n selectedImageIndex: index\r\n });\r\n }\r\n\r\n onBuyClick = () => {\r\n if (this.props.isAuthenticated) {\r\n let productId = this.props.product.id;\r\n this.props.sendOrderToSeller({ productIds: [productId] }, (isOk, data) => {\r\n if (isOk) {\r\n //this.props.addToBasket(data);\r\n toastr.success('', this.props.t('homeProject.buyElementSuccess'));\r\n } else {\r\n toastr.error('', this.props.t('homeProject.buyElementFail'));\r\n }\r\n\r\n });\r\n } else {\r\n this.setState({ isRedirectToRegister: true });\r\n }\r\n }\r\n\r\n onConstructorOpenClick = (id) => {\r\n if (this.props.isAuthenticated == true) {\r\n this.props.constructorOpenClick(id);\r\n }\r\n else {\r\n this.setState({\r\n showAfterDemoPopup: true\r\n });\r\n }\r\n }\r\n\r\n\r\n showpopup = (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.setState({ showPopUp: true });\r\n }\r\n hidepopup = (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.setState({ showPopUp: false });\r\n }\r\n\r\n flush3DError = () => {\r\n this.props.flush3dError();\r\n }\r\n\r\n openCreateProject = () => {\r\n HistoryStorage.isRedirectToConstructor = true;\r\n this.setState({\r\n isRedirectToConstructor: true\r\n });\r\n }\r\n\r\n //#region preview\r\n onAutobuildTemplateApply = (sections) => {\r\n sendAmplitudeData(amplitudeTypes.APPLY_TEMPLATE_ON_SKETCH_DETAILS, null);\r\n\r\n this.setState({\r\n sections: sections\r\n });\r\n\r\n if (this.isFrameReady) {\r\n this.renderSections(sections);\r\n }\r\n\r\n const pdContainer = document.getElementById(\"pdContainer\");\r\n const pdItem = document.getElementById(\"pdItem2\");\r\n this.isProgrammScroll = true;\r\n pdContainer.scrollTo({\r\n top: 0,\r\n left: pdItem.offsetLeft,\r\n behavior: 'smooth'\r\n });\r\n }\r\n\r\n renderSections = (sections) => {\r\n if (sections.length != 0) {\r\n this.sections = sections;\r\n let template = SectionHelper.buildTemplate(sections, this.state.sketch, this.state.selectedVariantId);\r\n let frame = window.frames[window.frames.length - 1];\r\n frame.postMessage({\r\n message: \"render\",\r\n data: template\r\n }, '*');\r\n }\r\n this.setState({ loading: true });\r\n }\r\n\r\n onMessageFromFrame = (e) => {\r\n if (e.data.message == 'ready') {\r\n this.isFrameReady = true;\r\n this.renderSections(this.state.sections);\r\n }\r\n if (e.data.message == 'renderready') {\r\n setTimeout(() => {\r\n const data = {\r\n template: JSON.stringify(this.sections),\r\n sketchId: this.props.product.sketchId,\r\n productTypeId: this.props.product.productTypeId\r\n };\r\n this.props.generateHiddenProduct(data, (isOk, productId) => {\r\n if (isOk) {\r\n window.localStorage.setItem(\"elementsHiddenProductId\", productId);\r\n this.setState({ currentEditorProductId: productId });\r\n let frame = window.frames[window.frames.length - 1];\r\n frame.postMessage({\r\n message: \"save\",\r\n productId: productId\r\n }, '*');\r\n }\r\n });\r\n }, 1000);\r\n //this.setState({ loading: false, currentEditorProductId: 1057 });\r\n //this.props.getElementsForProduct(1057);\r\n }\r\n if (e.data.message == 'savedone') {\r\n setTimeout(() => {\r\n this.setState({ loading: false, productIdForPrice: this.state.currentEditorProductId });\r\n this.props.getElementsForProduct(this.state.currentEditorProductId);\r\n this.props.getListElementsAndMetalsForProduct(this.state.currentEditorProductId);\r\n }, 1000);\r\n }\r\n }\r\n\r\n saveProductState = () => {\r\n let frame = window.frames[window.frames.length - 1];\r\n frame.postMessage({\r\n message: \"save\",\r\n productId: this.props.createdProductId\r\n }, '*');\r\n }\r\n\r\n onVariantSelect = (id) => {\r\n this.setState({\r\n selectedVariantId: id\r\n }, () => {\r\n this.renderSections(this.state.sections);\r\n });\r\n }\r\n //#endregion\r\n\r\n on3dClick = (index) => {\r\n this.setState({ show3dElementIndex: index });\r\n }\r\n\r\n onElementCountChange = (index, count) => {\r\n let elementsForProduct = [...this.state.elementsForProduct];\r\n elementsForProduct[index] = { ...elementsForProduct[index], count: count };\r\n this.setState({\r\n elementsForProduct: elementsForProduct\r\n });\r\n }\r\n\r\n onBuyElementsFromEditorProduct = () => {\r\n this.state.elementsForProduct.forEach((item) => {\r\n this.props.addElementsToBasket({\r\n id: item.id,\r\n count: item.count\r\n });\r\n });\r\n toastr.success('', this.props.t('goodsView.addedToBasket'));\r\n this.setState({\r\n isRedirectToBasket: true\r\n });\r\n }\r\n\r\n hideAuthPopup = () => {\r\n this.setState({ showAuthPopup: false });\r\n }\r\n\r\n toggleFullScreen = () => {\r\n this.setState({ isFullscreenMode: !this.state.isFullscreenMode });\r\n }\r\n\r\n onOpenEditorClick = () => {\r\n if (this.props.isAuthenticated) {\r\n this.openEditor();\r\n } else {\r\n this.setState({\r\n isShowRegisterFromOpenEditor: true\r\n });\r\n }\r\n }\r\n\r\n openEditor() {\r\n this.props.moveProductToNewProject(this.state.currentEditorProductId, () => {\r\n window.open(Helper.editorEditLink(this.state.currentEditorProductId), \"_blank\");\r\n });\r\n }\r\n\r\n onRegisterDone = () => {\r\n this.setState({\r\n isShowRegisterFromOpenEditor: false\r\n });\r\n this.openEditor();\r\n }\r\n\r\n onCloseRegisterPopupClick = () => {\r\n this.setState({\r\n isShowRegisterFromOpenEditor: false\r\n });\r\n }\r\n\r\n onContainerTouch = (e) => {\r\n if (isMobile) {\r\n window.clearInterval(this.autoScrollInterval);\r\n window.clearInterval(this.timeoutAutoScrollInterval);\r\n if (e.type == \"touchend\") {\r\n this.timeoutAutoScrollInterval = setTimeout(() => {\r\n this.startAutoScrollMobile();\r\n }, 5000);\r\n }\r\n }\r\n }\r\n\r\n onContainerScroll = (e) => {\r\n if (isMobile) {\r\n window.clearTimeout(this.isScrolling);\r\n this.isScrolling = setTimeout(() => {\r\n if (this.isProgrammScroll) {\r\n this.isProgrammScroll = false;\r\n return;\r\n }\r\n const pdContainer = document.getElementById(\"pdContainer\");\r\n const currentLeft = pdContainer.scrollLeft;\r\n const currentRight = pdContainer.scrollLeft + pdContainer.clientWidth;\r\n\r\n let scrollToItem = null;\r\n let scrollLeft = 0;\r\n let scrollToItemIndex = -1;\r\n for (let i = 1; i < this.pdItemsData.length; i++) {\r\n const pdItem = document.getElementById(this.pdItemsData[i].id);\r\n if (currentLeft < pdItem.offsetLeft && pdItem.offsetLeft < currentRight) {\r\n if ((pdItem.offsetLeft - currentLeft) < (currentRight - pdItem.offsetLeft)) {\r\n scrollToItem = this.pdItemsData[i];\r\n scrollLeft = pdItem.offsetLeft;\r\n scrollToItemIndex = i;\r\n } else { \r\n scrollToItem = this.pdItemsData[i - 1];\r\n scrollLeft = pdItem.offsetLeft - pdContainer.clientWidth;\r\n scrollToItemIndex = i - 1;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n if (scrollToItem) {\r\n this.isProgrammScroll = true;\r\n pdContainer.scrollTo({\r\n top: 0,\r\n left: scrollLeft,\r\n behavior: 'smooth'\r\n });\r\n this.onSelectTopScreenMobile(scrollToItemIndex);\r\n } else {\r\n for (let i = 0; i < this.pdItemsData.length; i++) {\r\n const pdItem = document.getElementById(this.pdItemsData[i].id);\r\n if (pdItem.offsetLeft <= currentLeft && currentLeft <= pdItem.offsetLeft + pdItem.clientWidth) {\r\n this.onSelectTopScreenMobile(i);\r\n break;\r\n }\r\n }\r\n }\r\n }, 600);\r\n }\r\n }\r\n\r\n startAutoScrollMobile() {\r\n if (!isMobile || this.autoScrollIntervalLoopCount >= 2)\r\n return;\r\n window.clearInterval(this.autoScrollInterval);\r\n this.autoScrollInterval = setInterval(() => {\r\n let selectedTopScreenMobile = this.state.selectedTopScreenMobile + 1;\r\n if (selectedTopScreenMobile >= this.pdItemsData.length) {\r\n selectedTopScreenMobile = 0;\r\n this.autoScrollIntervalLoopCount++;\r\n if (this.autoScrollIntervalLoopCount >= 2) {\r\n window.clearInterval(this.autoScrollInterval);\r\n }\r\n }\r\n const pdContainer = document.getElementById(\"pdContainer\");\r\n const pdItem = document.getElementById(this.pdItemsData[selectedTopScreenMobile].id);\r\n this.isProgrammScroll = true;\r\n pdContainer.scrollTo({\r\n top: 0,\r\n left: pdItem.offsetLeft,\r\n behavior: 'smooth'\r\n });\r\n this.onSelectTopScreenMobile(selectedTopScreenMobile);\r\n }, 3000);\r\n }\r\n\r\n onSelectTopScreenMobile(index) {\r\n this.setState({\r\n selectedTopScreenMobile: index,\r\n showTopHeader: true\r\n });\r\n setTimeout(() => {\r\n this.setState({\r\n showTopHeader: false\r\n });\r\n }, 1000);\r\n }\r\n\r\n render() {\r\n const { t, loading, failed, product, isAuthenticated, isExecutor, productItem, userDimention } = this.props;\r\n const { elementsForProduct, isFullscreenMode, elementsAndMetals, selectedVariantId, isRedirectToConstructor, isRedirectToBasket,\r\n selectedTopScreenMobile, showTopHeader } = this.state;\r\n const totalPrice = (product != null && product.price) ? product.price.productionPrice + product.price.paintingPrice + product.price.installationPrice : 0;\r\n const editorSrc = product != null ? Helper.editorPreviewLink(product.id) : null;\r\n const priceCoeff = (product != null && userDimention && this.state.sections.length == 0) ? (userDimention / product.generalDimentionNumb) : 1.0;\r\n\r\n if (isRedirectToConstructor) {\r\n return ();\r\n }\r\n if (isRedirectToBasket) {\r\n return ();\r\n }\r\n\r\n const variants = this.state.sketch ? this.state.sketch.variants : null;\r\n\r\n if (this.state.isRedirectToRegister) {\r\n return ;\r\n }\r\n\r\n if (productItem && productItem.isNoContent) {\r\n return this.renderNoContent();\r\n }\r\n\r\n return (\r\n
\r\n {(loading || this.state.loading) &&\r\n \r\n }\r\n {failed &&\r\n \r\n {t('errorDataLoad')}\r\n \r\n }\r\n {product != null &&\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n {!isFullscreenMode ?\r\n \r\n :\r\n \r\n }\r\n
\r\n
{t('productInfo.modelSample')}
\r\n {!isMobile && elementsAndMetals != null &&\r\n
\r\n {elementsAndMetals[\"Metals\"].map(item => (item + \", \"))}\r\n
\r\n }\r\n {!isMobile && this.renderVariants()}\r\n
\r\n
\r\n {isMobile && this.renderVariants()}\r\n
\r\n
\r\n {isMobile && elementsAndMetals != null &&\r\n
\r\n {elementsAndMetals[\"Metals\"].map(item => (item + \", \"))}\r\n
\r\n }\r\n
\r\n\r\n
\r\n {this.props.autoBuildTemplates && product.sketchId != null &&\r\n \r\n }\r\n
\r\n
\r\n }\r\n {isMobile &&\r\n
\r\n {this.pdItemsData.map((item, index) => (\r\n
\r\n ))}\r\n
\r\n }\r\n {showTopHeader &&\r\n
{this.pdItemsData[selectedTopScreenMobile].title}
\r\n }\r\n\r\n {this.state.isShowRegisterFromOpenEditor &&\r\n \r\n }\r\n
\r\n );\r\n }\r\n\r\n renderVariants() {\r\n const variants = this.state.sketch ? this.state.sketch.variants : null;\r\n return (\r\n <>\r\n {this.state.sections.length != 0 && variants && variants.length != 0 &&\r\n
\r\n
{this.props.t('editSketch.variants')}
\r\n this.onVariantSelect(-1)}\r\n >\r\n {this.props.t('editSketch.mainVariant')}\r\n
\r\n {variants.map((item, index) => (\r\n
this.onVariantSelect(item.id)}\r\n style={{ display: 'flex' }}\r\n >\r\n {item.name}\r\n
\r\n ))}\r\n \r\n }\r\n \r\n );\r\n }\r\n\r\n onUserPhoneChange = (phone) => {\r\n if (phone == \"3800\") {\r\n phone = \"380\";\r\n }\r\n this.setState({\r\n userPhone: phone\r\n });\r\n }\r\n\r\n onSendProductCatalogSketchRequest = () => {\r\n if (this.state.userPhone != '') {\r\n const data = {\r\n userPhone: this.state.userPhone,\r\n catalogProductId: this.props.productItem.id\r\n };\r\n this.props.sendProductCatalogSketchRequest(data, (isOk) => {\r\n if (isOk) {\r\n toastr.success('', this.props.t('productInfo.requestSent'));\r\n }\r\n });\r\n }\r\n }\r\n\r\n renderNoContent() {\r\n const { t, productItem } = this.props;\r\n return (\r\n
\r\n
\r\n \r\n
{t('productInfo.emptyProductTitle')}
\r\n \r\n \r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n loading: state.home.loading,\r\n failed: state.home.failed,\r\n product: state.home.catalogProductDetails,\r\n isAuthenticated: state.login.isAuthenticated,\r\n isExecutor: state.login.user.isExecutor,\r\n threeDTimeError: state.home.threeDTimeError,\r\n autoBuildTemplates: state.autoBuild.autoBuildTemplates,\r\n sketchDetails: state.autoBuild.sketchDetails,\r\n elementsForProduct: state.home.elementsForProduct,\r\n elementsAndMetals: state.home.elementsAndMetals,\r\n texturedMetalList: state.home.texturedMetalList\r\n})\r\n\r\nconst mapDispatchToProps = {\r\n getCatalogProductDetails: actions.getCatalogProductDetails,\r\n sendOrderToSeller: actions.sendOrderToSeller,\r\n addFavorites: addFavorites,\r\n removeFavorites: removeFavorites,\r\n loadFavoriteLocal: loadFavoriteLocal,\r\n constructorOpenClick: actions.constructorOpenClick,\r\n flush3dError: actions.flush3dError,\r\n getTemplates: getTemplates,\r\n getSketchDetails: getSketchDetails,\r\n generateHiddenProduct: generateHiddenProduct,\r\n moveProductToNewProject: moveProductToNewProject,\r\n getElementsForProduct: actions.getElementsForProduct,\r\n addElementsToBasket: addElementsToBasket,\r\n getListElementsAndMetalsForProduct: actions.getListElementsAndMetalsForProduct,\r\n getTexturedMetalsList: actions.getTexturedMetalsList,\r\n registerUser: registerUser,\r\n sendSmsVerification: sendSms,\r\n verificateAccount: verificateAccount,\r\n sendProductCatalogSketchRequest: actions.sendProductCatalogSketchRequest\r\n}\r\n\r\nexport default withTranslation()(connect(\r\n mapStateToProps,\r\n mapDispatchToProps,\r\n)(ProductDetailsV3));","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { push } from \"connected-react-router\";\r\nimport { withTranslation } from 'react-i18next';\r\nimport { Link } from 'react-router-dom';\r\nimport { Alert, Row, Col, Input, Button } from 'reactstrap';\r\nimport FullPageLoader from '../../components/loaders/FullPageLoader/FullPageLoader';\r\nimport ProductCard from './ProductCard';\r\nimport * as actions from '../actions';\r\nimport './CatalogPage.css';\r\nimport { addFavorites, removeFavorites, loadFavoriteLocal } from '../../favorites/actions';\r\nimport { sendAmplitudeData, amplitudeTypes } from '../../utils/amplitude';\r\nimport ProposeSketch from '../../autoBuild/ProposeSketch/ProposeSketch';\r\nimport FiltrView from '../../components/filtrView/filtView';\r\nimport ProductDetailsV3 from './ProductDetailsV3';\r\nimport { isMobile } from 'react-device-detect';\r\nimport VideoInfoView from '../../components/infoView/VideoInfoView';\r\nimport { MdClose } from 'react-icons/md';\r\nimport { getRegions } from '../../projects/newproject/actions';\r\nimport RegionSelect from '../../manufacturer/manufacturerPriceList/RegionSelect';\r\nimport InfoView from '../../components/infoView/InfoView';\r\n\r\nclass CatalogPageV3 extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n productType: -1,\r\n selectedItemId: -1,\r\n dimentionStr: '10',\r\n dimention: null,\r\n selectedRegionId: -1\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.getProductTypes();\r\n\r\n sendAmplitudeData(amplitudeTypes.OPEN_CATALOG_PRODUCTS, null);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (this.props.catalogProducts !== prevProps.catalogProducts && this.props.catalogProducts.length > 0) { \r\n const id = this.props.match.params.productId ? parseInt(this.props.match.params.productId) : this.props.catalogProducts[0].id;\r\n this.onItemSelect(id);\r\n }\r\n if (this.state.approximateFlag == true) {\r\n this.setState({ lastApproximate: this.state.approximateSize, approximateFlag: false });\r\n }\r\n }\r\n\r\n onProductTypeChangeV2 = (id, url) => {\r\n if (id != this.state.productType) {\r\n /*if (window.location.pathname!=url) {\r\n window.location.pathname = url;\r\n }*/\r\n this.props.push(url);\r\n //else {\r\n if (id == -1) {\r\n this.setState({ approximateSize: 0 });\r\n }\r\n this.setState({\r\n productType: id,\r\n dimention: null,\r\n dimentionStr: (id == 6 || id == 9 || id == 10 || id == 11 || id == 13) ? '1' : '10',\r\n selectedItemId: -1\r\n });\r\n }\r\n }\r\n\r\n onInputChange = (e) => {\r\n this.setState({\r\n [e.target.name]: e.target.value\r\n });\r\n }\r\n\r\n onConstructorOpenClick(id) {\r\n this.props.constructorOpenClick(id);\r\n }\r\n\r\n onItemSelect = (itemId) => {\r\n this.setState({\r\n selectedItemId: itemId\r\n }, () => {\r\n });\r\n }\r\n\r\n onCloseDetails = () => {\r\n this.setState({\r\n selectedItemId: -1\r\n });\r\n }\r\n\r\n showCatalogClick = (e) => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n this.setState({\r\n dimention: parseFloat(this.state.dimentionStr)\r\n });\r\n this.props.getClosedProducts({\r\n productType: this.state.productType,\r\n includeCatalogProducts: true,\r\n manufacturerRegionId: this.state.selectedRegionId\r\n });\r\n }\r\n\r\n onChangeDimentionClick = () => {\r\n this.setState({\r\n dimention: null,\r\n dimentionStr: this.state.dimention,\r\n selectedItemId: -1\r\n });\r\n }\r\n\r\n onRegionSelected = (regionId) => {\r\n this.setState({ selectedRegionId: regionId });\r\n if (this.state.dimention) {\r\n this.props.getClosedProducts({\r\n productType: this.state.productType,\r\n includeCatalogProducts: true,\r\n manufacturerRegionId: regionId\r\n });\r\n }\r\n }\r\n\r\n\r\n\r\n render() {\r\n const { t, loading, failed, catalogProducts, isAuthenticated, productTypes, isForMyProject } = this.props;\r\n const { selectedItemId, dimention } = this.state;\r\n productTypes.map((item) => { //TODO: change on didupdate\r\n if (item.url && item.url == this.props.match.params.productType) {\r\n if (this.state.productType != item.id) {\r\n let url = '/kovanie-izdeliya-ceni' + (item.url ? '/' + item.url : \"\");\r\n if (this.props.match.params.productId) {\r\n url += \"/\" + this.props.match.params.productId;\r\n }\r\n this.onProductTypeChangeV2(item.id, url);\r\n }\r\n }\r\n });\r\n let pTypes = productTypes;\r\n\r\n return (\r\n
\r\n {loading &&\r\n \r\n }\r\n {failed &&\r\n \r\n {t('errorDataLoad')}\r\n \r\n }\r\n \r\n\r\n {!isMobile ?\r\n
\r\n
\r\n {this.renderCatalog()}\r\n
\r\n {selectedItemId != -1 && !isMobile &&\r\n
\r\n p.id == selectedItemId)}\r\n userDimention={dimention}\r\n regionId={this.state.selectedRegionId}\r\n />\r\n
\r\n }\r\n
\r\n :\r\n
\r\n {selectedItemId != -1 &&\r\n
\r\n p.id == selectedItemId)}\r\n userDimention={dimention}\r\n regionId={this.state.selectedRegionId}\r\n />\r\n
\r\n }\r\n
\r\n {this.renderCatalog()}\r\n
\r\n
\r\n }\r\n\r\n
\r\n );\r\n }\r\n\r\n renderCatalog() {\r\n const { t, isAuthenticated, productTypes } = this.props;\r\n const { selectedItemId, dimentionStr, dimention } = this.state;\r\n const catalogProductsFiltered = this.props.catalogProducts;\r\n const pTypes = [{ id: -1, name: t('catalogPage.all') }, ...productTypes];\r\n let selectedType = pTypes.find((t) => t.id == this.state.productType);\r\n\r\n return (\r\n <>\r\n {(!isMobile || !dimention) &&\r\n <>\r\n

\r\n {t('catalogPage.catalogHeader')} {selectedType && ' - ' + selectedType.name}\r\n {selectedType && dimention &&\r\n <>\r\n ({dimention}{selectedType.generalUnits})\r\n \r\n \r\n }\r\n

\r\n\r\n \r\n \r\n }\r\n\r\n {!dimention ?\r\n
\r\n
{t('catalogPage.enterDimention')}
\r\n \r\n
{selectedType && selectedType.generalUnits}
\r\n {t('catalogPage.showButton')}\r\n
\r\n :\r\n
\r\n {!isMobile &&\r\n \r\n }\r\n
\r\n {catalogProductsFiltered.map((item, index) => (\r\n
this.onItemSelect(item.id)}>\r\n t.id == item.productTypeId)}\r\n dimention={dimention}\r\n />\r\n
\r\n ))}\r\n \r\n
\r\n {!isMobile &&\r\n
\r\n \r\n
\r\n }\r\n
\r\n }\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n ...state.home,\r\n isAuthenticated: state.login.isAuthenticated,\r\n productTypes: state.home.productTypes,\r\n regions: state.createProject.regions,\r\n})\r\n\r\nconst mapDispatchToProps = {\r\n getClosedProducts: actions.getClosedProducts,\r\n getProductTypes: actions.getProductTypesV2,\r\n addFavorites: addFavorites,\r\n removeFavorites: removeFavorites,\r\n loadFavoriteLocal: loadFavoriteLocal,\r\n constructorOpenClick: actions.constructorOpenClick,\r\n flush3dError: actions.flush3dError,\r\n push: push,\r\n getRegions: getRegions\r\n}\r\n\r\nexport default withTranslation()(connect(\r\n mapStateToProps,\r\n mapDispatchToProps,\r\n)(CatalogPageV3));","import React, { Component } from \"react\";\r\nimport { withTranslation } from \"react-i18next\";\r\nimport { titleChanger } from \"./utils/TitleHelper\"\r\n\r\nclass AppTitleHelper extends Component {\r\n componentDidMount() {\r\n this.changeTitle(this.props.history.location);\r\n this.unlisten = this.props.history.listen((location, action) => {\r\n this.changeTitle(location);\r\n });\r\n }\r\n\r\n changeTitle(location) {\r\n const path = location.pathname;//.replace('/', '');\r\n let ptitle = this.props.t('seo.title.' + path);\r\n let pdesc = this.props.t('seo.desc.' + path);\r\n let pkeywords = this.props.t('seo.keywords.' + path);\r\n if (ptitle == 'seo.title.' + path) {\r\n ptitle = this.props.t('mainTitle');\r\n }\r\n if (pdesc == 'seo.desc.' + path) {\r\n pdesc = this.props.t('mainDescription');\r\n }\r\n if (pkeywords == 'seo.keywords.' + path) {\r\n pkeywords = null;\r\n }\r\n\r\n titleChanger(ptitle, pdesc, pkeywords);\r\n //console.log(location);\r\n //console.log(this.props.t('seo.title.' + location.pathname));\r\n //console.log(this.props.t('seo.desc.' + location.pathname));\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.unlisten)\r\n this.unlisten();\r\n }\r\n\r\n render() {\r\n return ;\r\n }\r\n}\r\n\r\nexport default withTranslation()(AppTitleHelper);","import React from 'react';\r\nimport NavMenu from '../NavMenu';\r\nimport { Container, Row, Col } from \"reactstrap\";\r\nimport BannerColumn from '../../aboutProject/BannerColumn';\r\nimport FooterLayout from '../footer/FooterLayout';\r\nimport './MainLayout.css'\r\nimport { isMobile } from 'react-device-detect';\r\n\r\n\r\nexport default props => (\r\n
\r\n \r\n \r\n {props.children}\r\n \r\n \r\n
\r\n);\r\n","import React, { Component } from \"react\";\r\nimport { MdErrorOutline } from \"react-icons/md\";\r\nimport axios from \"axios\";\r\nimport StackTrace from 'stacktrace-js';\r\n\r\nexport class ErrorBoundary extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = { hasError: false };\r\n }\r\n\r\n static getDerivedStateFromError(error) { \r\n return { hasError: true };\r\n }\r\n\r\n componentDidCatch(error, errorInfo) {\r\n if (window.location.host.indexOf('localhost') == -1) {\r\n axios.post('api/ErrorHandle/SaveError', {\r\n appVersion: 'web',\r\n platfrom: window.location.host,\r\n date: new Date().toISOString(),\r\n errorText: error.toString()\r\n });\r\n\r\n StackTrace.fromError(error)\r\n .then(err => {\r\n let errText = error.message + '\\n';\r\n errText += err.map(e => `${e.functionName}(${e.fileName}:${e.lineNumber}:${e.columnNumber})\\n`).join('');\r\n //console.log(errText);\r\n\r\n axios.post('api/ErrorHandle/SaveError', {\r\n appVersion: 'web',\r\n platfrom: window.location.host,\r\n date: new Date().toISOString(),\r\n errorText: errText\r\n }).finally(() => {\r\n window.location.reload();\r\n });\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n if (this.state.hasError) { \r\n return (\r\n
\r\n \r\n

Обновите страницу

\r\n
\r\n );\r\n }\r\n\r\n return this.props.children;\r\n }\r\n}","import React from 'react';\r\n\r\nconst NubmerOfTries = 3;\r\n\r\nexport default function loadlazy(importFunc) {\r\n return React.lazy(() => componentLoader(importFunc, NubmerOfTries));\r\n}\r\n\r\nexport function componentLoader(lazyComponent, attemptsLeft) {\r\n return new Promise((resolve, reject) => {\r\n lazyComponent()\r\n .then(resolve)\r\n .catch((error) => {\r\n setTimeout(() => {\r\n if (attemptsLeft === 1) {\r\n reject(error);\r\n return;\r\n }\r\n componentLoader(lazyComponent, attemptsLeft - 1).then(resolve, reject);\r\n }, 500);\r\n });\r\n });\r\n}","import React, { Suspense } from 'react';\r\nimport { Route } from 'react-router';\r\nimport './App.css';\r\n\r\nimport LiveSupport from './feedback/liveSupport/LiveSupport';\r\nimport CookiesBanner from './cookies/CookiesBanner';\r\n\r\n// Loader\r\nimport { FullPageLoaderNoText } from './components/loaders/FullPageLoader/FullPageLoader';\r\n\r\n\r\n// Layouts\r\nimport MainLayout from './components/layouts/MainLayout';\r\nimport MyProfileLayout from './components/layouts/MyProfileLayout';\r\nimport MainLayoutHome from './components/layouts/MainLayoutHome';\r\nimport MyCompanyLayout from './siteCompany/components/menu/CompanyLayout';\r\n\r\n// Routes\r\nimport GuestRoute from './components/routes/GuestRoute';\r\nimport UserRoute from './components/routes/UserRoute';\r\nimport UserRouteExecutor from './components/routes/UserRouteExecutor'\r\nimport UserRoutePortfolio from './components/routes/UserRoutePortfolio';\r\nimport UnConfirmAccountRoute from './components/routes/UnConfirmAccountRoute';\r\nimport UserRouteSeller from './components/routes/UserRouteSeller';\r\n\r\n// import { loadReCaptcha } from 'react-recaptcha-google'\r\n\r\nimport './i18n';\r\nimport HomeCatalogPageV23 from './home/catalogv23/CatalogPageV3';\r\nimport TitleHelper from './utils/TitleHelper';\r\nimport AppTitleHelper from './AppTitleHelper';\r\nimport MainLayoutFullWidth from './components/layouts/MainLayoutFullWidth';\r\nimport HistoryStorage from './utils/HistoryStorage';\r\nimport { ErrorBoundary } from './errorBoundary';\r\nimport loadlazy from './utils/componentLoader';\r\n\r\n// Pages\r\n\r\nconst AboutProject = loadlazy(() => import('./aboutProject/AboutProject'));\r\nconst HomePage = loadlazy(() => import('./home/homePage/HomePage'));\r\nconst HomeCatalogPage = loadlazy(() => import('./home/catalog/CatalogPage'));\r\nconst HomeCatalogPageV2 = loadlazy(() => import('./home/catalogv2/CatalogPageV2'));\r\nconst HomeCatalogPageV3 = loadlazy(() => import('./home/catalogv3/CatalogPageV3'));\r\nconst HomeCatalogPageV4 = loadlazy(() => import('./home/catalogv4/CatalogPageV4'));\r\n\r\nconst CatalogProductPage = loadlazy(() => import('./home/catalogProductDetails/ProductDetails'));\r\nconst HomeProjectsPage = loadlazy(() => import('./home/homeProjects/HomeProjectsPage'));\r\nconst HomeProjectDetailsPage = loadlazy(() => import('./home/projectDetails/HomeProjectDetailsPage'));\r\nconst GoodsListPage = loadlazy(() => import('./goods/goodslist/GoodsListPage'));\r\nconst ManufacturersPage = loadlazy(() => import('./manufacturer/ManufacturersPage'));\r\nconst GoodsDetailsPage = loadlazy(() => import('./goods/goodsdetails/GoodsDetailsPage'));\r\nconst ElementsListPage = loadlazy(() => import('./elements/elementslist/ElementsListPage'));\r\n\r\nconst ForBusinessPage = loadlazy(() => import('./aboutProject/ForBusinessPage'));\r\nconst HowToOrderPage = loadlazy(() => import('./static/howToOrder/HowToOrder'));\r\n\r\nconst SolutionFooter = loadlazy(() => import('./solutions/static/SolutionFooter'));\r\n/*\r\nconst PrivacyPage = loadlazy(() => import('./static/privacy/PrivacyPage'));\r\nconst TermsOfUsePage = loadlazy(() => import('./static/terms/TermsOfUse'));\r\nconst TariffsPage = loadlazy(() => import('./static/tariffs/Tariffs'));\r\n*/\r\nconst RegisterPage = loadlazy(() => import('./register/registerSimple/RegisterPage'));\r\nconst CustomerPage = loadlazy(() => import('./register/registerCustomer/scenes/index'));\r\nconst RegisterExecutorStepOne = loadlazy(() => import('./register/registerExecutor/scenes/registerExecutorStepOne/index'));\r\nconst LoginPage = loadlazy(() => import('./login/scenes'));\r\nconst RecoverPasswordPage = loadlazy(() => import('./login/scenes/RecoverPasswordPage'));\r\nconst MyInfoPage = loadlazy(() => import('./myprofile/myinfo/scenes'));\r\nconst MySpecialtyPage = loadlazy(() => import('./myprofile/myspecialty/scenes/index'));\r\nconst ListMyPortfolioPage = loadlazy(() => import('./myprofile/myportfolio/scenes/index'));\r\nconst PortfolioItemPage = loadlazy(() => import('./myprofile/myportfolio/scenes/scenes/index'));\r\nconst VerificateAccountPage = loadlazy(() => import('./verify/scenes/index'));\r\nconst MyElementsPage = loadlazy(() => import('./myprofile/myelements/scenes/index'));\r\nconst MyElementPage = loadlazy(() => import('./myprofile/myelements/scenes/MyElementPage/index'));\r\nconst BulkUploadInfoPage = loadlazy(() => import('./myprofile/bulkuploadinfo/BulkUploadInfoPage'));\r\nconst MyEditorSessions = loadlazy(() => import('./myprofile/editorSessions/MyEditorSessions'));\r\nconst MyGoods = loadlazy(() => import('./myprofile/goods/myGoods/MyGoods'));\r\nconst AddGoods = loadlazy(() => import('./myprofile/goods/addGoods/AddGoods'));\r\nconst MyFeedbacksPage = loadlazy(() => import('./feedback/MyFeedbacksPage'));\r\nconst FeedbackChatPage = loadlazy(() => import('./feedback/FeedbackChatPage'));\r\n\r\nconst CreateProjectPage = loadlazy(() => import('./projects/newproject/scenes/CreateProjectPage'));\r\nconst MyProjectsPage = loadlazy(() => import('./projects/myprojects/MyProjectsPage'));\r\nconst MyProjectsPageV2 = loadlazy(() => import('./projects/myprojects/MyProjectsPageV2'));\r\nconst MyProjectDetailsPage = loadlazy(() => import('./projects/projectdetails/MyProjectDetailsPage'));\r\nconst ExecuterPage = loadlazy(() => import('./projects/executerdetails/ExecuterPage'));\r\nconst ExecuterMyInvitationsPage = loadlazy(() => import('./projectsExecuter/myinvitations/MyInvitationsPage'));\r\nconst ExecuterProjectDetailsPage = loadlazy(() => import('./projectsExecuter/projectdetails/ProjectDetailsPage'));\r\nconst ExecuterProjectFindProjectsPage = loadlazy(() => import('./projectsExecuter/findprojects/FindProjectsPage'));\r\nconst ExecuterProjectMyPropositionsPage = loadlazy(() => import('./projectsExecuter/mypropositions/MyPropositionsPage'));\r\nconst ECustomerPage = loadlazy(() => import('./projectsExecuter/customerdetails/CustomerPage'));\r\nconst ExecuterMyContractsPage = loadlazy(() => import('./projectsExecuter/mycontracts/MyContractsPage'));\r\nconst ExecuterContractDetailsPage = loadlazy(() => import('./projectsExecuter/contractdetails/ContractDetailsPage'));\r\nconst CalculateFactorsPage = loadlazy(() => import('./myprofile/calculationfactors/scenes/CalculationFactorsPage'));\r\n\r\nconst AllInstructionsPage = loadlazy(() => import('./instruction/global/AllInstructionsPage'));\r\nconst InstructionPage = loadlazy(() => import('./instruction/details/InstructionPage'));\r\n\r\nconst ChatPage = loadlazy(() => import('./chat/ChatPage'));\r\nconst FavoriteProductsPage = loadlazy(() => import('./favorites/favoriteProducts/FavoriteProductsPage'));\r\nconst BasketPage = loadlazy(() => import('./basket/basketPage/BasketPage'));\r\n\r\n\r\nconst MySketchesPage = loadlazy(() => import('./autoBuildEdit/sketches/MySketches'));\r\nconst EditSketchPage = loadlazy(() => import('./autoBuildEdit/editSketch/EditSketchPage'));\r\nconst MyAutoBuildTemplatesPage = loadlazy(() => import('./autoBuildEdit/templates/MyTemplates'));\r\nconst EditAutoBuildTemplatePage = loadlazy(() => import('./autoBuildEdit/editTemplate/EditTemplatePage'));\r\n\r\nconst AutoBuildCreateProduct = loadlazy(() => import('./autoBuild/createProduct/CreateProductPage'));\r\n\r\nconst EmptyPage = loadlazy(() => import('./EmptyPage'));\r\n\r\nconst MainSolutionPage = loadlazy(() => import('./solutions/Solution'));\r\nconst SolutionPage = loadlazy(() => import('./solutions/SolutionById'));\r\n\r\nconst BalancePage = loadlazy(() => import('./myprofile/balance/Balance'));\r\n\r\nconst ExecutorSettingsPage = loadlazy(() => import('./embedding/executorSettings/ExecutorSettingsPage'));\r\nconst EmbedingCatalogPage = loadlazy(() => import('./embedding/userPage/EmbedingCatalogPage'));\r\nconst EmbeddingDetailsPage = loadlazy(() => import('./embedding/userPage/EmbeddingDetailsPage'));\r\n\r\nconst SiteCompanyServicePage = loadlazy(() => import('./siteCompany/siteCompanyService/SiteCompanyServicePage'));\r\n\r\nconst CompanyPage = loadlazy(() => import('./siteCompany/company/CompanyPage'));\r\n//const CompanyPageAbout = loadlazy(() => import('./siteCompany/company/About'));\r\nconst CompanyPage3dCatalog = loadlazy(() => import('./siteCompany/company/3dCatalog'));\r\nconst CompanyPageContacts = loadlazy(() => import('./siteCompany/company/Contacts'));\r\nconst CompanyPagePortfolio = loadlazy(() => import('./siteCompany/company/Portfolio'));\r\nconst CompanyPageProductsDetails = loadlazy(() => import('./siteCompany/components/catalog/CompanyProductDetailsPage'));\r\n\r\n\r\nexport class App extends React.Component {\r\n componentDidMount() {\r\n // loadReCaptcha();\r\n //this.titleHelper = new TitleHelper();\r\n this.unlisten = this.props.history.listen((location, action) => {\r\n //console.log(this.props);\r\n //this.titleHelper.onRouteChange(location, action);\r\n window.scrollTo(0, 0);\r\n if (action == \"PUSH\") {\r\n HistoryStorage.push(location.pathname);\r\n }\r\n });\r\n }\r\n componentWillUnmount() {\r\n if (this.unlisten)\r\n this.unlisten();\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n console.log(this.props);\r\n }\r\n\r\n render() {\r\n let showLiveSup = true;\r\n showLiveSup &= window.location.pathname.indexOf(\"/embedding/\") == -1;\r\n showLiveSup &= window.location.pathname.indexOf(\"/company/\") == -1;\r\n showLiveSup &= window.location.pathname.indexOf(\"/companyedit/\") == -1;\r\n const showCookieBanner = window.location.pathname.indexOf(\"/embedding/\") == -1;\r\n return (\r\n }>\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/*\r\n \r\n */}\r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n {/**/}\r\n \r\n \r\n \r\n \r\n \r\n {/**/}\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n {showCookieBanner &&\r\n \r\n }\r\n \r\n {showLiveSup ?\r\n :
\r\n }\r\n \r\n\r\n {/* \r\n \r\n\r\n */}\r\n \r\n \r\n )\r\n }\r\n}\r\n\r\nexport default App;\r\n","import Immutable from 'seamless-immutable';\r\nimport isEmpty from 'lodash/isEmpty';\r\n\r\nimport * as types from './types.js';\r\n\r\nconst initialState = Immutable({\r\n post: {\r\n loading: false,\r\n success: false,\r\n failed: false,\r\n errors: {}\r\n },\r\n social: {\r\n loading: false,\r\n success: false,\r\n failed: false,\r\n },\r\n isAuthenticated: false,\r\n isConfirmed:false,\r\n user: {\r\n id: '',\r\n name: '',\r\n //image:'',\r\n roles: []\r\n }\r\n});\r\n\r\nexport const loginReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case types.LOGIN_POST_REQUEST: { \r\n return initialState.merge({\r\n post:{\r\n ...initialState.post,\r\n loading:true\r\n }\r\n });\r\n }\r\n case types.LOGIN_SET_CURRENT_USER: {\r\n return state.merge({\r\n isAuthenticated: !isEmpty(action.user),\r\n isConfirmed: (action.user.isConfirmed===\"True\"),\r\n user: isEmpty(action.user) ? initialState.user : action.user\r\n });\r\n }\r\n case types.LOGIN_POST_SUCCESS: {\r\n return state.merge({\r\n post:{\r\n ...initialState.post,\r\n loading:false,\r\n success:true\r\n }\r\n });\r\n }\r\n case types.LOGIN_POST_FAILED: {\r\n return state.merge({\r\n post:{\r\n ...initialState.post,\r\n loading:false,\r\n failed:true,\r\n errors:action.errors\r\n }\r\n });\r\n }\r\n case types.LOGIN_SOCIAL_REQUEST: {\r\n return state.merge({\r\n social: { \r\n failed: false,\r\n success: false,\r\n loading: true,\r\n }\r\n });\r\n }\r\n case types.LOGIN_SOCIAL_SUCCESS: {\r\n return state.merge({\r\n social: {\r\n ...initialState.social,\r\n loading: false,\r\n success: true,\r\n }\r\n });\r\n }\r\n case types.LOGIN_SOCIAL_FAILED: {\r\n return state.merge({\r\n social: {\r\n ...initialState.social,\r\n loading: false,\r\n failed: true\r\n }\r\n });\r\n }\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import Immutable from 'seamless-immutable';\r\nimport * as actionTypes from './types';\r\n\r\nconst initialState = Immutable({\r\n loading:false\r\n});\r\n\r\nexport default (state = initialState, action) => {\r\n switch (action.type) {\r\n case actionTypes.SET_LANGUAGE_REQUEST:\r\n return state.merge({\r\n loading: true\r\n });\r\n case actionTypes.SET_LANGUAGE_SUCCESS:\r\n return state.merge({\r\n loading: false\r\n });\r\n case actionTypes.SET_LANGUAGE_FAILURE:\r\n return state.merge({\r\n loading: false\r\n });\r\n default:\r\n return state;\r\n }\r\n};\r\n","import axios from \"axios\";\r\nimport { getAuthToken, getRefreshToken } from \"../utils/lsMethods\";\r\n\r\nexport default class RefreshService {\r\n static RefreshToken = () => {\r\n return axios.post(`api/account/refreshToken`, { authToken: getAuthToken(), refreshToken: getRefreshToken() });\r\n }\r\n}","import jwt from 'jsonwebtoken';\r\nimport { refreshToken } from '../../refreshToken/actions';\r\nimport { getAuthToken } from '../../utils/lsMethods';\r\n\r\nexport default function refreshTokenMiddleware(){\r\n return ({ dispatch, getState }) => next => action => {\r\n if (typeof action === 'function' && !getState().refreshToken.loading) {\r\n const token = jwt.decode(getAuthToken());\r\n const refreshThreshold = (Math.round(Date.now() / 1000));\r\n if (token && refreshThreshold > token.exp) {\r\n refreshToken(dispatch).then(() => {\r\n return next(action)\r\n }, err=> { throw err; })\r\n .catch((err) => {\r\n return next(action)\r\n });\r\n }\r\n else{\r\n return next(action);\r\n }\r\n }\r\n else{\r\n return next(action);\r\n }\r\n \r\n }\r\n}","import RefreshService from './refreshService';\r\nimport * as loginActions from '../login/actions';\r\n\r\nimport * as types from './types.js';\r\n\r\nexport const refreshStarted = () => ({ type: types.REFRESH_STARTED });\r\nexport const refreshSuccess = () => ({ type: types.REFRESH_SUCCESS });\r\nexport const refreshFailed = () => ({ type: types.REFRESH_FAILED });\r\n\r\nexport const refreshToken = (dispatch) => {\r\n dispatch(refreshStarted())\r\n return RefreshService.RefreshToken()\r\n .then((response) => {\r\n dispatch(refreshSuccess());\r\n loginActions.loginByJWT(response.data, dispatch);\r\n return Promise.resolve(response);\r\n }, err=> { throw err; })\r\n .catch((err) => {\r\n dispatch(refreshFailed());\r\n loginActions.logoutByJWT(dispatch);\r\n return Promise.reject(err);\r\n })\r\n}","export const REFRESH_STARTED = 'REFRESH_STARTED';\r\nexport const REFRESH_SUCCESS = 'REFRESH_SUCCESS';\r\nexport const REFRESH_FAILED = 'REFRESH_FAILED';","import Immutable from 'seamless-immutable';\r\n\r\nimport * as types from './types.js';\r\n\r\nconst initialState = Immutable({\r\n get: {\r\n data:{\r\n name: '',\r\n description: '',\r\n youtubeLink: ''\r\n },\r\n loading: false,\r\n success: false,\r\n failed: false,\r\n },\r\n edit: {\r\n loading: false,\r\n success: false,\r\n failed: false,\r\n },\r\n emailConfirm: {\r\n loading: false,\r\n success: false,\r\n failed: false,\r\n }\r\n});\r\n\r\nexport const myInfoReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case types.GET_MYINFO_REQUEST: { \r\n return initialState.merge({\r\n get:{\r\n ...initialState.get,\r\n loading:true\r\n }\r\n });\r\n }\r\n case types.GET_MYINFO_SUCCESS: {\r\n return state.merge({\r\n get:{\r\n ...state.get,\r\n loading:false,\r\n success:true,\r\n data:action.payload\r\n }\r\n });\r\n }\r\n case types.GET_MYINFO_FAILURE: {\r\n return state.merge({\r\n get:{\r\n ...initialState.get,\r\n loading:false,\r\n failed:true\r\n }\r\n });\r\n }\r\n\r\n\r\n case types.SAVE_MYINFO_REQUEST: { \r\n return initialState.merge({\r\n ...state,\r\n edit:{\r\n ...initialState.edit,\r\n loading:true\r\n }\r\n });\r\n }\r\n case types.SAVE_MYINFO_SUCCESS: {\r\n return state.merge({\r\n ...state,\r\n edit:{\r\n ...state.edit,\r\n loading:false,\r\n success:true,\r\n data:action.payload\r\n }\r\n });\r\n }\r\n case types.SAVE_MYINFO_FAILURE: {\r\n return state.merge({\r\n ...state,\r\n edit:{\r\n ...state.edit,\r\n loading:false,\r\n failed:true,\r\n errors:action.errors\r\n }\r\n });\r\n }\r\n\r\n case types.EDIT_MYINFO:{\r\n return state.merge({\r\n ...state,\r\n get:{\r\n ...state.get,\r\n data:{\r\n ...state.get.data,\r\n [action.payload.name]:action.payload.value\r\n }\r\n\r\n }\r\n });\r\n }\r\n\r\n //#region SEND_EMAILCONFIRMATION\r\n case types.SEND_EMAILCONFIRMATION_REQUEST: {\r\n return state.merge({\r\n ...state,\r\n emailConfirm: {\r\n ...state.emailConfirm,\r\n loading: true\r\n }\r\n });\r\n }\r\n case types.SEND_EMAILCONFIRMATION_SUCCESS: {\r\n return state.merge({\r\n ...state,\r\n emailConfirm: {\r\n ...state.emailConfirm,\r\n loading: false,\r\n success: true\r\n }\r\n });\r\n }\r\n case types.SEND_EMAILCONFIRMATION_FAILURE: {\r\n return state.merge({\r\n ...state,\r\n emailConfirm: {\r\n ...state.emailConfirm,\r\n loading: false,\r\n failed: true\r\n }\r\n });\r\n }\r\n //#endregion\r\n\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import Immutable from 'seamless-immutable';\r\n\r\nimport * as types from './types.js';\r\nimport * as specialtyTypes from '../../constants/specialty';\r\n\r\nconst initialState = Immutable({\r\n get: {\r\n data:{\r\n specialty: [\r\n {\r\n text: \"registerExecuterStepOne.services.sellElem\",\r\n name: specialtyTypes.sellElements,\r\n value: false\r\n },\r\n {\r\n text: \"registerExecuterStepOne.services.prodElem\",\r\n name: specialtyTypes.productionElements,\r\n value: false\r\n },\r\n {\r\n text: \"registerExecuterStepOne.services.settingElem\",\r\n name: specialtyTypes.setupElements,\r\n value: false\r\n },\r\n {\r\n text: \"registerExecuterStepOne.services.design\",\r\n name: specialtyTypes.designElements,\r\n value: false\r\n }\r\n ],\r\n regOfDest: [],\r\n regOfServiced:[]\r\n },\r\n regions:[],\r\n loading: false,\r\n success: false,\r\n failed: false,\r\n errors:{}\r\n },\r\n edit: {\r\n loading: false,\r\n success: false,\r\n failed: false,\r\n errors:{}\r\n },\r\n});\r\n\r\n\r\nexport const mySpecialtyReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case types.GET_MYSPECIALTY_REQUEST: { \r\n return initialState.merge({\r\n get:{\r\n ...initialState.get,\r\n loading:true\r\n }\r\n });\r\n }\r\n case types.GET_MYSPECIALTY_SUCCESS: {\r\n var tempTypes = Object.assign([], action.payload.specialty);\r\n for (let i = 0; i < tempTypes.length; i++) {\r\n tempTypes[i].text = state.get.data.specialty[i].text;\r\n }\r\n\r\n return state.merge({\r\n get:{\r\n ...state.get,\r\n loading:false,\r\n success:true,\r\n data:{\r\n ...action.payload,\r\n specialty: tempTypes\r\n }\r\n }\r\n });\r\n }\r\n case types.GET_MYSPECIALTY_FAILURE: {\r\n return state.merge({\r\n get:{\r\n ...initialState.get,\r\n loading:false,\r\n failed:true\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n case types.SAVE_MYSPECIALTY_REQUEST: { \r\n return initialState.merge({\r\n ...state,\r\n edit:{\r\n ...initialState.edit,\r\n loading:true\r\n }\r\n });\r\n }\r\n case types.SAVE_MYSPECIALTY_SUCCESS: {\r\n return state.merge({\r\n ...state,\r\n edit:{\r\n ...state.edit,\r\n loading:false,\r\n success:true,\r\n data:action.payload\r\n }\r\n });\r\n }\r\n case types.SAVE_MYSPECIALTY_FAILURE: {\r\n return state.merge({\r\n ...state,\r\n edit:{\r\n ...state.edit,\r\n loading:false,\r\n failed:true,\r\n errors:action.errors\r\n }\r\n });\r\n }\r\n\r\n case types.EDIT_MYSPECIALTY:{\r\n return state.merge({\r\n ...state,\r\n get:{\r\n ...state.get,\r\n data:{\r\n ...state.get.data,\r\n [action.payload.name]:action.payload.value\r\n }\r\n\r\n }\r\n });\r\n }\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import Immutable from 'seamless-immutable';\r\n\r\nimport * as types from './types.js';\r\n\r\n\r\nconst initialState = Immutable({\r\n success: false,\r\n failed: false,\r\n loading: false,\r\n flag:false\r\n})\r\n\r\nexport const refreshReducer = (state = initialState, action) => {\r\n switch(action.type){\r\n case types.REFRESH_STARTED: {\r\n return initialState.merge({ loading: true });\r\n }\r\n case types.REFRESH_SUCCESS: {\r\n return state.merge({ success: true, loading: false });\r\n }\r\n case types.REFRESH_FAILED: {\r\n return state.merge({ failed: true, loading: false });\r\n }\r\n default: {\r\n return state\r\n }\r\n };\r\n}","import Immutable from 'seamless-immutable';\r\n\r\nimport * as types from './types.js';\r\n\r\nconst initialState = Immutable({\r\n get: {\r\n data:{\r\n items:[]\r\n },\r\n loading: false,\r\n success: false,\r\n failed: false,\r\n errors:{}\r\n },\r\n edit: {\r\n loading: false,\r\n success: false,\r\n failed: false,\r\n data:{\r\n images:[]\r\n },\r\n errors:{}\r\n },\r\n});\r\n\r\n\r\nexport const myPortfolioReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n //#region Get Portfolio\r\n case types.GET_MYPORTFOLIO_REQUEST: { \r\n return initialState.merge({\r\n get:{\r\n ...initialState.get,\r\n loading:true\r\n }\r\n });\r\n }\r\n case types.GET_MYPORTFOLIO_SUCCESS: {\r\n return state.merge({\r\n get:{\r\n ...state.get,\r\n loading:false,\r\n success:true,\r\n data:action.payload\r\n }\r\n });\r\n }\r\n case types.GET_MYPORTFOLIO_FAILURE: {\r\n return state.merge({\r\n get:{\r\n ...initialState.get,\r\n loading:false,\r\n failed:true\r\n }\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region Get PortfolioItem\r\n case types.GET_MYPORTFOLIOITEM_REQUEST: { \r\n return initialState.merge({\r\n edit:{\r\n ...initialState.get,\r\n loading:true\r\n }\r\n });\r\n }\r\n case types.GET_MYPORTFOLIOITEM_SUCCESS: {\r\n return state.merge({\r\n edit:{\r\n ...state.get,\r\n loading:false,\r\n data:action.payload\r\n }\r\n });\r\n }\r\n case types.GET_MYPORTFOLIOITEM_FAILURE: {\r\n return state.merge({\r\n edit:{\r\n ...initialState.get,\r\n loading:false,\r\n failed:true\r\n }\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region Upload image\r\n case types.UPLOAD_PORTFOLIOIMAGE_REQUEST: { \r\n return initialState.merge({\r\n edit:{\r\n ...state.edit,\r\n loading:true\r\n }\r\n });\r\n }\r\n case types.UPLOAD_PORTFOLIOIMAGE_SUCCESS: {\r\n return state.merge({\r\n edit:{\r\n ...state.edit,\r\n loading:false,\r\n data:{\r\n ...state.edit.data,\r\n images:[...state.edit.data.images,action.payload]\r\n }\r\n }\r\n });\r\n }\r\n case types.UPLOAD_PORTFOLIOIMAGE_FAILURE: {\r\n return state.merge({\r\n edit:{\r\n ...state.edit,\r\n loading:false,\r\n failed:true\r\n }\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region Delete photo\r\n case types.DELETE_PORTFOLIOIMAGE_REQUEST: { \r\n return initialState.merge({\r\n edit:{\r\n ...state.edit,\r\n loading:true\r\n }\r\n });\r\n }\r\n case types.DELETE_PORTFOLIOIMAGE_SUCCESS: {\r\n return state.merge({\r\n edit:{\r\n ...state.edit,\r\n loading:false,\r\n data:{\r\n ...state.edit.data,\r\n images:state.edit.data.images.filter(item => item.id !== parseInt(action.payload))\r\n }\r\n }\r\n });\r\n }\r\n case types.DELETE_PORTFOLIOIMAGE_FAILURE: {\r\n return state.merge({\r\n edit:{\r\n ...state.edit,\r\n loading:false,\r\n failed:true\r\n }\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region Update portfolio item \r\n case types.UPDATE_PORTFOLIOITEM_REQUEST: { \r\n return initialState.merge({\r\n edit:{\r\n ...state.edit,\r\n loading:true\r\n }\r\n });\r\n }\r\n case types.UPDATE_PORTFOLIOITEM_SUCCESS: {\r\n return state.merge({\r\n edit:{\r\n ...state.edit,\r\n loading:false,\r\n success:true,\r\n data:{}\r\n }\r\n });\r\n }\r\n case types.UPDATE_PORTFOLIOITEM_FAILURE: {\r\n return state.merge({\r\n edit:{\r\n ...state.edit,\r\n loading:false,\r\n failed:true\r\n }\r\n });\r\n }\r\n\r\n //#endregion\r\n\r\n\r\n //#region Upload model\r\n\r\n case types.UPLOAD_PORTFOLIOMODEL_REQUEST: { \r\n return initialState.merge({\r\n edit:{\r\n ...state.edit,\r\n loading:true\r\n }\r\n });\r\n }\r\n case types.UPLOAD_PORTFOLIOMODEL_SUCCESS: {\r\n return state.merge({\r\n edit:{\r\n ...state.edit,\r\n loading:false,\r\n data:{\r\n ...state.edit.data,\r\n threedmodel:action.payload\r\n }\r\n }\r\n });\r\n }\r\n case types.UPLOAD_PORTFOLIOMODEL_FAILURE: {\r\n return state.merge({\r\n edit:{\r\n ...state.edit,\r\n loading:false,\r\n failed:true\r\n }\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region Delete portfolio\r\n\r\n case types.DELETE_PORTFOLIO_REQUEST: { \r\n return initialState.merge({\r\n get:{\r\n ...state.get,\r\n loading:true\r\n }\r\n });\r\n }\r\n case types.DELETE_PORTFOLIO_SUCCESS: {\r\n return state.merge({\r\n get:{\r\n ...state.get,\r\n loading:false,\r\n success:true,\r\n data:{\r\n items:state.get.data.items.filter(item=>item.id!=action.payload)\r\n }\r\n }\r\n });\r\n }\r\n case types.DELETE_PORTFOLIO_FAILURE: {\r\n return state.merge({\r\n get:{\r\n ...state.get,\r\n loading:false,\r\n failed:true\r\n }\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region Edit info\r\n case types.EDIT_MYPORTFOLIO:{\r\n return state.merge({\r\n ...state,\r\n get:{\r\n ...state.get,\r\n data:{\r\n ...state.get.data,\r\n [action.payload.name]:action.payload.value\r\n }\r\n\r\n }\r\n });\r\n }\r\n //#endregion\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import Immutable from 'seamless-immutable';\r\n\r\nimport * as types from './types.js';\r\n\r\nconst initialState = Immutable({\r\n loading: false,\r\n success: false,\r\n failed: false,\r\n errors: {}\r\n});\r\n\r\nexport const registerReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case types.REGISTER_SIMPLE_REQUEST: {\r\n return initialState.merge({\r\n loading: true\r\n });\r\n }\r\n case types.REGISTER_SIMPLE_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true\r\n });\r\n }\r\n case types.REGISTER_SIMPLE_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n errors: action.payload\r\n });\r\n }\r\n\r\n\r\n case types.SET_DEMO_REQUEST: {\r\n return state.merge({\r\n loading: true\r\n });\r\n }\r\n\r\n case types.SET_DEMO_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true\r\n });\r\n }\r\n case types.SET_DEMO_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true\r\n });\r\n }\r\n\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import Immutable from 'seamless-immutable';\r\n\r\nimport * as types from './types.js';\r\n\r\nconst initialState = Immutable({\r\n edit: {\r\n loading: false,\r\n success: false,\r\n failed: false,\r\n errors:{}\r\n },\r\n});\r\n\r\nexport const registerCustomerReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case types.REGISTER_CUSTOMER_REQUEST: { \r\n return initialState.merge({\r\n edit:{\r\n ...initialState.edit,\r\n loading:true\r\n }\r\n });\r\n }\r\n case types.REGISTER_CUSTOMER_SUCCESS: {\r\n return state.merge({\r\n edit:{\r\n ...state.edit,\r\n loading:false,\r\n success:true\r\n }\r\n });\r\n }\r\n case types.REGISTER_CUSTOMER_FAILURE: {\r\n return state.merge({\r\n edit:{\r\n ...initialState.edit,\r\n loading:false,\r\n failed:true,\r\n errors:action.payload\r\n }\r\n });\r\n }\r\n\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import Immutable from 'seamless-immutable';\r\n\r\nimport * as types from './types.js';\r\n\r\nconst initialState = Immutable({\r\n get:{\r\n regions:[]\r\n },\r\n edit: {\r\n loading: false,\r\n success: false,\r\n failed: false,\r\n errors:{},\r\n },\r\n});\r\n\r\nexport const registerExecutorReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case types.REGISTER_EXECUTOR_REQUEST: { \r\n return initialState.merge({\r\n edit:{\r\n ...initialState.edit,\r\n loading:true\r\n }\r\n });\r\n }\r\n case types.REGISTER_EXECUTOR_SUCCESS: {\r\n return state.merge({\r\n edit:{\r\n ...state.edit,\r\n loading:false,\r\n success:true\r\n }\r\n });\r\n }\r\n case types.REGISTER_EXECUTOR_FAILURE: {\r\n return state.merge({\r\n edit:{\r\n ...initialState.edit,\r\n loading:false,\r\n failed:true,\r\n errors:action.payload\r\n }\r\n });\r\n }\r\n\r\n\r\n case types.GETREGIONS_EXECUTOR_REQUEST: { \r\n return initialState.merge({\r\n edit:{\r\n ...initialState.edit,\r\n loading:true\r\n }\r\n });\r\n }\r\n case types.GETREGIONS_EXECUTOR_SUCCESS: {\r\n return state.merge({\r\n edit:{\r\n ...state.edit,\r\n loading:false,\r\n },\r\n get:{\r\n regions:action.payload.regions\r\n }\r\n });\r\n }\r\n case types.GETREGIONS_EXECUTOR_FAILURE: {\r\n return state.merge({\r\n edit:{\r\n ...initialState.edit,\r\n loading:false,\r\n failed:true,\r\n errors:action.payload\r\n }\r\n });\r\n }\r\n\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import Immutable from 'seamless-immutable';\r\n\r\nimport * as types from './types.js';\r\n\r\nconst initialState = Immutable({\r\n get:{\r\n loading: false,\r\n success: false,\r\n failed: false,\r\n errors:{},\r\n expiredCode: undefined,\r\n phone: ''\r\n },\r\n confirm: {\r\n loading: false,\r\n success: false,\r\n failed: false,\r\n errors:{},\r\n confirmationCode:'', \r\n },\r\n});\r\n\r\nexport const verifyAccountReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case types.SEND_SMS_REQUEST: { \r\n return initialState.merge({\r\n get:{\r\n ...initialState.get,\r\n loading:true\r\n }\r\n });\r\n }\r\n case types.SEND_SMS_SUCCESS: {\r\n return state.merge({\r\n get:{\r\n ...state.get,\r\n loading:false,\r\n success:true,\r\n expiredCode: action.payload.expired,\r\n phone: action.payload.phone\r\n }\r\n });\r\n }\r\n case types.SEND_SMS_FAILURE: {\r\n return state.merge({\r\n get:{\r\n ...initialState.get,\r\n loading:false,\r\n failed:true,\r\n errors:action.payload,\r\n expiredCode: action.payload.expired,\r\n phone: action.payload.phone\r\n }\r\n });\r\n }\r\n\r\n\r\n case types.VERIFY_ACCOUNT_REQUEST: { \r\n return state.merge({\r\n confirm:{\r\n ...initialState.confirm,\r\n loading:true\r\n }\r\n });\r\n }\r\n case types.VERIFY_ACCOUNT_SUCCESS: {\r\n return state.merge({\r\n confirm:{\r\n ...state.confirm,\r\n loading:false,\r\n success:true,\r\n },\r\n });\r\n }\r\n case types.VERIFY_ACCOUNT_FAILURE: {\r\n return state.merge({\r\n confirm:{\r\n ...state.confirm,\r\n loading:false,\r\n failed:true,\r\n errors:action.payload\r\n }\r\n });\r\n }\r\n\r\n case types.SET_TIMER_REQUEST:{\r\n return state.merge({\r\n get:{\r\n ...state.get,\r\n expiredCode:action.payload\r\n }\r\n });\r\n }\r\n\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import Immutable from 'seamless-immutable';\r\n\r\nimport * as types from './types.js';\r\nimport { data } from 'jquery';\r\n\r\nconst initialState = Immutable({\r\n get: {\r\n data:{\r\n items:[]\r\n },\r\n loading: false,\r\n success: false,\r\n failed: false,\r\n bulkUploadErrors: null,\r\n codeGroups: []\r\n },\r\n element:{\r\n get:{\r\n loading: false,\r\n success: false,\r\n failed: false,\r\n categories: [],\r\n forms: [],\r\n textures: [],\r\n },\r\n edit: {\r\n loading: false,\r\n success: false,\r\n failed: false,\r\n data:{\r\n category:undefined,\r\n id:undefined,\r\n description:'',\r\n name: '',\r\n customElementFormId: null,\r\n customElementTextureId: null,\r\n },\r\n },\r\n }\r\n \r\n});\r\n\r\nexport const myElementsReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n //#region Get Elements\r\n case types.GET_MYELEMENTS_REQUEST: { \r\n return initialState.merge({\r\n get:{\r\n ...initialState.get,\r\n loading:true\r\n }\r\n });\r\n }\r\n case types.GET_MYELEMENTS_SUCCESS: {\r\n return state.merge({\r\n get:{\r\n ...state.get,\r\n loading:false,\r\n success:true,\r\n data:{\r\n items:action.payload\r\n }\r\n }\r\n });\r\n }\r\n case types.GET_MYELEMENTS_FAILURE: {\r\n return state.merge({\r\n get:{\r\n ...state.get,\r\n loading:false,\r\n failed:true\r\n }\r\n });\r\n }\r\n //#endregion\r\n\r\n\r\n //#region Get one element\r\n case types.GET_MYELEMENT_REQUEST: {\r\n return state.merge({\r\n element: {\r\n ...state.element,\r\n edit:{\r\n ...state.element.edit,\r\n loading: true,\r\n },\r\n }\r\n });\r\n }\r\n case types.GET_MYELEMENT_SUCCESS: {\r\n return state.merge({\r\n element:{\r\n ...state.element,\r\n get:{\r\n ...state.element.get,\r\n success:true,\r\n },\r\n edit:{\r\n ...state.element.edit,\r\n loading: false,\r\n data:action.payload\r\n },\r\n }\r\n });\r\n }\r\n case types.GET_MYELEMENT_FAILURE: {\r\n return state.merge({\r\n element:{\r\n ...state.element,\r\n edit:{\r\n ...state.element.edit,\r\n loading: false,\r\n failed:true,\r\n },\r\n }\r\n });\r\n }\r\n //#endregion\r\n \r\n\r\n //#region Get Categories\r\n case types.GET_CATEGORIES_REQUEST: { \r\n return initialState.merge({\r\n element:{\r\n ...initialState.element,\r\n get:{\r\n ...state.element.get,\r\n loading: true,\r\n\r\n },\r\n }\r\n });\r\n }\r\n case types.GET_CATEGORIES_SUCCESS: {\r\n return state.merge({\r\n element:{\r\n ...state.element,\r\n get:{\r\n ...state.element.get,\r\n loading: false,\r\n success:true,\r\n categories:action.payload.items\r\n },\r\n }\r\n });\r\n }\r\n case types.GET_CATEGORIES_FAILURE: {\r\n return state.merge({\r\n element:{\r\n ...state.element,\r\n get:{\r\n ...state.element.get,\r\n loading: false,\r\n failed:true,\r\n },\r\n }\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region Get Forms\r\n case types.GET_ELEMENTFORM_REQUEST: {\r\n return state.merge({\r\n element: {\r\n ...state.element,\r\n get: {\r\n ...state.element.get,\r\n loading: true,\r\n forms: initialState.element.get.forms\r\n },\r\n }\r\n });\r\n }\r\n case types.GET_ELEMENTFORM_SUCCESS: {\r\n return state.merge({\r\n element: {\r\n ...state.element,\r\n get: {\r\n ...state.element.get,\r\n loading: false,\r\n success: true,\r\n forms: action.payload.items\r\n },\r\n }\r\n });\r\n }\r\n case types.GET_ELEMENTFORM_FAILURE: {\r\n return state.merge({\r\n element: {\r\n ...state.element,\r\n get: {\r\n ...state.element.get,\r\n loading: false,\r\n failed: true,\r\n },\r\n }\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region Get textures\r\n case types.GET_ELEMENTTEXTURES_REQUEST: {\r\n return state.merge({\r\n element: {\r\n ...state.element,\r\n get: {\r\n ...state.element.get,\r\n loading: true,\r\n textures: initialState.element.get.textures\r\n },\r\n }\r\n });\r\n }\r\n case types.GET_ELEMENTTEXTURES_SUCCESS: {\r\n return state.merge({\r\n element: {\r\n ...state.element,\r\n get: {\r\n ...state.element.get,\r\n loading: false,\r\n success: true,\r\n textures: action.payload.items\r\n },\r\n }\r\n });\r\n }\r\n case types.GET_ELEMENTTEXTURES_FAILURE: {\r\n return state.merge({\r\n element: {\r\n ...state.element,\r\n get: {\r\n ...state.element.get,\r\n loading: false,\r\n failed: true,\r\n },\r\n }\r\n });\r\n }\r\n //#endregion\r\n\r\n\r\n //#region Upload threedmodel\r\n case types.UPLOAD_THREEDMODEL_REQUEST: { \r\n return initialState.merge({\r\n element:{\r\n ...state.element,\r\n edit:{\r\n ...state.element.edit,\r\n loading: true,\r\n\r\n },\r\n }\r\n });\r\n }\r\n case types.UPLOAD_THREEDMODEL_SUCCESS: {\r\n return state.merge({\r\n element:{\r\n ...state.element,\r\n edit:{\r\n ...state.element.edit,\r\n loading: false,\r\n data:{\r\n ...state.element.edit.data,\r\n threedmodel:action.payload\r\n }\r\n },\r\n }\r\n });\r\n }\r\n case types.UPLOAD_THREEDMODEL_FAILURE: {\r\n return state.merge({\r\n element:{\r\n ...state.element,\r\n edit:{\r\n ...state.element.edit,\r\n loading: false,\r\n failed:true,\r\n },\r\n }\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region Upload element form\r\n case types.UPLOAD_ELEMENTFORM_REQUEST: {\r\n return state.merge({\r\n element: {\r\n ...state.element,\r\n edit: {\r\n ...state.element.edit,\r\n loading: true,\r\n data: {\r\n ...state.element.edit.data,\r\n customElementFormId: null\r\n }\r\n },\r\n }\r\n });\r\n }\r\n case types.UPLOAD_ELEMENTFORM_SUCCESS: {\r\n return state.merge({\r\n element: {\r\n ...state.element,\r\n edit: {\r\n ...state.element.edit,\r\n loading: false,\r\n data: {\r\n ...state.element.edit.data,\r\n customElementFormId: action.payload\r\n }\r\n },\r\n }\r\n });\r\n }\r\n case types.UPLOAD_ELEMENTFORM_FAILURE: {\r\n return state.merge({\r\n element: {\r\n ...state.element,\r\n edit: {\r\n ...state.element.edit,\r\n loading: false,\r\n failed: true,\r\n },\r\n }\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region Upload element texture\r\n case types.UPLOAD_ELEMENTTEXTURE_REQUEST: {\r\n return state.merge({\r\n element: {\r\n ...state.element,\r\n edit: {\r\n ...state.element.edit,\r\n loading: true,\r\n data: {\r\n ...state.element.edit.data,\r\n customElementTextureId: null\r\n }\r\n },\r\n }\r\n });\r\n }\r\n case types.UPLOAD_ELEMENTTEXTURE_SUCCESS: {\r\n return state.merge({\r\n element: {\r\n ...state.element,\r\n edit: {\r\n ...state.element.edit,\r\n loading: false,\r\n data: {\r\n ...state.element.edit.data,\r\n customElementTextureId: action.payload\r\n }\r\n },\r\n }\r\n });\r\n }\r\n case types.UPLOAD_ELEMENTTEXTURE_FAILURE: {\r\n return state.merge({\r\n element: {\r\n ...state.element,\r\n edit: {\r\n ...state.element.edit,\r\n loading: false,\r\n failed: true,\r\n },\r\n }\r\n });\r\n }\r\n //#endregion\r\n\r\n\r\n //#region Update element\r\n case types.UPDATE_ELEMENT_REQUEST: { \r\n return initialState.merge({\r\n element:{\r\n ...state.element,\r\n edit:{\r\n ...state.element.edit,\r\n loading: true,\r\n\r\n },\r\n }\r\n });\r\n }\r\n case types.UPDATE_ELEMENT_SUCCESS: {\r\n return state.merge({\r\n element:{\r\n ...state.element,\r\n edit:{\r\n ...state.element.edit,\r\n loading: false,\r\n success:true\r\n },\r\n }\r\n });\r\n }\r\n case types.UPDATE_ELEMENT_FAILURE: {\r\n return state.merge({\r\n element:{\r\n ...state.element,\r\n edit:{\r\n ...state.element.edit,\r\n loading: false,\r\n errors:action.payload,\r\n failed:true,\r\n },\r\n }\r\n });\r\n }\r\n case types.REQUEST: {\r\n return state.merge({\r\n element: {\r\n ...state.element,\r\n edit: {\r\n ...state.element.edit,\r\n loading: true,\r\n\r\n },\r\n }\r\n });\r\n }\r\n case types.FAILURE: {\r\n return state.merge({\r\n element: {\r\n ...state.element,\r\n edit: {\r\n ...state.element.edit,\r\n loading: false,\r\n failed: true,\r\n },\r\n }\r\n });\r\n }\r\n case types.GET_LOADED_IMAGE_SUCCESS: {\r\n let image = action.payload;\r\n return state.merge({\r\n element: {\r\n ...state.element,\r\n edit: {\r\n ...state.element.edit,\r\n loading: false,\r\n },\r\n }\r\n });\r\n }\r\n case types.DELETE_IMAGE_SUCCESS:\r\n case types.CHANGE_WRAPPER_SUCCESS: {\r\n return state.merge({\r\n element: {\r\n ...state.element,\r\n edit: {\r\n ...state.element.edit,\r\n loading: false,\r\n },\r\n }\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region Delete element\r\n case types.DELETE_ELEMENT_REQUEST: { \r\n return initialState.merge({\r\n get:{\r\n ...state.get,\r\n loading: true,\r\n },\r\n });\r\n }\r\n case types.DELETE_ELEMENT_SUCCESS: {\r\n return state.merge({\r\n get:{\r\n ...state.get,\r\n loading: false,\r\n success:true,\r\n data:{\r\n items:[...state.get.data.items].filter(item=>item.id!=action.payload)\r\n }\r\n },\r\n });\r\n }\r\n case types.DELETE_ELEMENT_FAILURE: {\r\n return state.merge({\r\n get:{\r\n ...state.get,\r\n loading: false,\r\n failed:true,\r\n },\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region UPLOAD_BULKELEMENTS\r\n case types.UPLOAD_BULKELEMENTS_REQUEST: {\r\n return initialState.merge({\r\n get: {\r\n ...state.get,\r\n loading: true,\r\n bulkUploadErrors: null\r\n },\r\n });\r\n }\r\n case types.UPLOAD_BULKELEMENTS_SUCCESS: {\r\n return state.merge({\r\n get: {\r\n ...state.get,\r\n loading: false,\r\n success: true, \r\n },\r\n });\r\n }\r\n case types.UPLOAD_BULKELEMENTS_FAILURE: {\r\n return state.merge({\r\n get: {\r\n ...state.get,\r\n loading: false,\r\n failed: true,\r\n bulkUploadErrors: action.payload.errors\r\n },\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region CHANGE_AVAILABILITY\r\n case types.CHANGE_AVAILABILITY_REQUEST: {\r\n return initialState.merge({\r\n get: {\r\n ...state.get,\r\n loading: true\r\n },\r\n });\r\n }\r\n case types.CHANGE_AVAILABILITY_SUCCESS: {\r\n return state.merge({\r\n get: {\r\n ...state.get,\r\n loading: false\r\n },\r\n });\r\n }\r\n case types.CHANGE_AVAILABILITY_FAILURE: {\r\n return state.merge({\r\n get: {\r\n ...state.get,\r\n loading: false\r\n },\r\n });\r\n }\r\n //#endregion\r\n\r\n case types.GET_CODE_GROUPS: {\r\n return state.merge({\r\n get: {\r\n ...state.get,\r\n loading: false,\r\n success: true,\r\n codeGroups: action.payload\r\n }\r\n });\r\n }\r\n\r\n case types.SAVE_CODE_GROUP: {\r\n return state.merge({\r\n get: {\r\n ...state.get,\r\n loading: false,\r\n success: true,\r\n codeGroups: [...state.get.codeGroups, action.payload]\r\n }\r\n });\r\n }\r\n\r\n case types.SAVE_CODE: { \r\n return state.merge({\r\n get: {\r\n ...state.get,\r\n loading: false,\r\n success: true,\r\n data: {\r\n ...state.get.data,\r\n items: action.payload.items\r\n }\r\n }\r\n });\r\n }\r\n \r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import Immutable from 'seamless-immutable';\r\n\r\nimport * as types from './types.js';\r\n\r\nconst initialState = Immutable({\r\n get: {\r\n regions:[],\r\n loading: false,\r\n failed:false,\r\n success: false,\r\n },\r\n});\r\n\r\n\r\nexport const regionsReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case types.GET_REGIONS_REQUEST: { \r\n return initialState.merge({\r\n get:{\r\n ...initialState.get,\r\n }\r\n });\r\n }\r\n case types.GET_REGIONS_SUCCESS: {\r\n return state.merge({\r\n get:{\r\n ...state.get,\r\n success:true,\r\n regions:action.payload.regions\r\n }\r\n });\r\n }\r\n case types.GET_REGIONS_FAILURE: {\r\n return state.merge({\r\n get:{\r\n ...initialState.get,\r\n failed:true\r\n }\r\n });\r\n }\r\n\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import Immutable from 'seamless-immutable';\r\n\r\nimport * as types from './types.js';\r\n\r\nconst initialState = Immutable({\r\n loading: false,\r\n success: false,\r\n failed: false,\r\n countries: [],\r\n regions: [],\r\n cities: [],\r\n productTypes: [],\r\n createSuccess: false,\r\n createProjectId: null,\r\n data: {\r\n images: []\r\n },\r\n projectData: null\r\n});\r\n\r\nexport const createProjectReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n //#region get regions\r\n case types.GET_REGIONS_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n });\r\n }\r\n case types.GET_REGIONS_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n regions: action.payload.regions,\r\n countries: action.payload.countries\r\n });\r\n }\r\n case types.GET_REGIONS_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region GET_CITIES\r\n case types.GET_CITIES_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n });\r\n }\r\n case types.GET_CITIES_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n cities: action.payload.cities\r\n });\r\n }\r\n case types.GET_CITIES_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region upload image\r\n case types.UPLOAD_IMAGE_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n });\r\n }\r\n case types.UPLOAD_IMAGE_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n data: {\r\n ...state.data,\r\n images: [\r\n ...state.data.images,\r\n action.payload\r\n ]\r\n }\r\n });\r\n }\r\n case types.UPLOAD_IMAGE_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n case types.DELETE_IMAGE: {\r\n var id = action.payload;\r\n const images = state.data.images.filter(o => o.id != id);\r\n return state.merge({\r\n data: {\r\n ...state.data,\r\n images: images,\r\n }\r\n });\r\n }\r\n\r\n //#region upload image\r\n case types.GET_PRODUCT_TYPES_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n });\r\n }\r\n case types.GET_PRODUCT_TYPES_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n productTypes: action.payload\r\n });\r\n }\r\n case types.GET_PRODUCT_TYPES_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region CREATE_PROJEC\r\n case types.CREATE_PROJECT_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n });\r\n }\r\n case types.CREATE_PROJECT_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n createSuccess: true,\r\n createProjectId: action.payload\r\n });\r\n }\r\n case types.CREATE_PROJECT_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region GET_PROJECT_DETAILS\r\n case types.GET_PROJECT_DETAILS_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n });\r\n }\r\n case types.GET_PROJECT_DETAILS_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n projectData: action.payload\r\n });\r\n }\r\n case types.GET_PROJECT_DETAILS_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true\r\n });\r\n }\r\n //#endregion\r\n\r\n case types.RESET: {\r\n return initialState;\r\n }\r\n\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import Immutable from 'seamless-immutable';\r\n\r\nimport * as types from './types.js';\r\n\r\nconst initialState = Immutable({\r\n loading: false,\r\n success: false,\r\n failed: false,\r\n projects: [],\r\n projects2: [],\r\n projectsWithoutMeasurer: [],\r\n projectsWithoutMeasurerRequested: false,\r\n callMeasurerSucess: false,\r\n priceFactors: null\r\n});\r\n\r\nexport const myProjectsReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n //#region get mty projects\r\n case types.GET_MYPROJECTS_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n projects: [],\r\n projects2: []\r\n });\r\n }\r\n case types.GET_MYPROJECTS_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n projects: action.payload\r\n });\r\n }\r\n case types.GET_MYPROJECTSV2_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n projects2: action.payload\r\n });\r\n }\r\n case types.GET_MYPROJECTS_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region GET_PROJECTS_WITHOUT_MEASURER\r\n case types.GET_PROJECTS_WITHOUT_MEASURER_REQUEST: { \r\n return state;\r\n }\r\n case types.GET_PROJECTS_WITHOUT_MEASURER_SUCCESS: {\r\n return state.merge({\r\n projectsWithoutMeasurer: action.payload,\r\n projectsWithoutMeasurerRequested: true\r\n });\r\n }\r\n case types.GET_PROJECTS_WITHOUT_MEASURER_FAILURE: {\r\n return state;\r\n }\r\n //#endregion\r\n\r\n //#region CALL_MEASURER_REQUEST\r\n case types.CALL_MEASURER_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n callMeasurerSucess: false\r\n });\r\n }\r\n case types.CALL_MEASURER_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n callMeasurerSucess: true\r\n });\r\n }\r\n case types.CALL_MEASURER_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region DELETE_PROJECT_REQUEST\r\n case types.DELETE_PROJECT_REQUEST: {\r\n return state.merge({\r\n loading: true\r\n });\r\n }\r\n case types.DELETE_PROJECT_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true\r\n });\r\n }\r\n case types.DELETE_PROJECT_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region CREATE_PRODUCT\r\n case types.CREATE_PRODUCT_REQUEST: {\r\n return state.merge({\r\n loading: true\r\n });\r\n }\r\n case types.CREATE_PRODUCT_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true\r\n });\r\n }\r\n case types.CREATE_PRODUCT_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n\r\n case types.REQUEST: {\r\n return state.merge({\r\n loading: true\r\n });\r\n }\r\n case types.FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n\r\n //#region CALCULATE_PRICE\r\n case types.CALCULATE_PRICE_SUCCESS: {\r\n let projects2 = [...state.projects2];\r\n const projectIndex = projects2.findIndex(p => p.id == action.payload.id);\r\n projects2[projectIndex] = action.payload;\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n projects2: projects2\r\n });\r\n }\r\n //#endregion\r\n\r\n case types.DELETE_PRODUCT_SUCCESS:\r\n case types.DELETE_PRODUCT_GROUP_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true\r\n });\r\n }\r\n\r\n case types.GET_SPECIFICATION_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true\r\n });\r\n }\r\n\r\n case types.UPDATE_PROJECT_NAME_SUCCESS: {\r\n let projects2 = [...state.projects2];\r\n let projIndex = projects2.findIndex(p => p.id == action.payload.projectId);\r\n projects2[projIndex] = {\r\n ...projects2[projIndex],\r\n name: action.payload.name\r\n };\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n projects2: projects2\r\n });\r\n }\r\n\r\n case types.CLOSE_PROJECT_SUCCESS: {\r\n let projects2 = [...state.projects2];\r\n let projIndex = projects2.findIndex(p => p.id == action.payload);\r\n projects2[projIndex] = {\r\n ...projects2[projIndex],\r\n isClosed: true\r\n };\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n projects2: projects2\r\n });\r\n }\r\n\r\n case types.GET_MY_PRICE_FACTOR: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n priceFactors: action.payload\r\n });\r\n }\r\n\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import Immutable from 'seamless-immutable';\r\n\r\nimport * as types from './types.js';\r\nimport { PublicationTypes } from '../../constants/publicationTypes';\r\n\r\nconst initialState = Immutable({\r\n loading: false,\r\n success: false,\r\n failed: false,\r\n project: null,\r\n forceDimention: false,\r\n executers: [],\r\n isSearchDesigner: false,\r\n propositions: [],\r\n designDoneError: null\r\n});\r\n\r\nexport const projectDetailsReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n //#region GET_DETAILS\r\n case types.GET_DETAILS_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n forceDimention: false\r\n });\r\n }\r\n case types.GET_DETAILS_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n project: action.payload\r\n });\r\n }\r\n case types.GET_DETAILS_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region \r\n case types.SET_PRODUCT_DIMENTION_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n });\r\n }\r\n case types.SET_PRODUCT_DIMENTION_SUCCESS: {\r\n let productNew = action.payload;\r\n if (state.project != null) {\r\n let products = [...state.project.products];\r\n let index = products.findIndex(p => p.id == productNew.id);\r\n products[index] = productNew;\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n project: {\r\n ...state.project,\r\n products: products\r\n }\r\n });\r\n }\r\n }\r\n case types.SET_PRODUCT_DIMENTION_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region \r\n case types.SET_DIMENTION_DONE_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n });\r\n }\r\n case types.SET_DIMENTION_DONE_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n project: action.payload\r\n });\r\n }\r\n case types.SET_DIMENTION_DONE_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region \r\n case types.CREATE_PUBLICATION_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n });\r\n }\r\n case types.CREATE_PUBLICATION_SUCCESS: {\r\n let project = { ...state.project };\r\n if (action.payload.searchFor == PublicationTypes.Design)\r\n project.designPublication = action.payload;\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n project: project\r\n });\r\n }\r\n case types.CREATE_PUBLICATION_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region \r\n case types.FIND_EXECUTERS_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n executers: []\r\n });\r\n }\r\n case types.FIND_EXECUTERS_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n executers: action.payload\r\n });\r\n }\r\n case types.CREATE_PUBLICATION_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region SET_DESIGN_VIEW_MODE\r\n case types.SET_DESIGN_VIEW_MODE: {\r\n return state.merge({ \r\n isSearchDesigner: action.payload\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region GET_PROPOSITIONS\r\n case types.GET_PROPOSITIONS_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n propositions: []\r\n });\r\n }\r\n case types.GET_PROPOSITIONS_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n propositions: action.payload\r\n });\r\n }\r\n case types.GET_PROPOSITIONS_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region ACCEPT_PROPOSITION\r\n case types.ACCEPT_PROPOSITION_REQUEST: {\r\n return state.merge({\r\n loading: true\r\n });\r\n }\r\n case types.ACCEPT_PROPOSITION_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n });\r\n }\r\n case types.ACCEPT_PROPOSITION_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region SET_CONTRACT_DONE\r\n case types.SET_CONTRACT_DONE_REQUEST: {\r\n return state.merge({\r\n loading: true\r\n });\r\n }\r\n case types.SET_CONTRACT_DONE_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n });\r\n }\r\n case types.SET_CONTRACT_DONE_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region RETURN_BACK_CONTRACT\r\n case types.RETURN_BACK_CONTRACT_REQUEST: {\r\n return state.merge({\r\n loading: true\r\n });\r\n }\r\n case types.RETURN_BACK_CONTRACT_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n });\r\n }\r\n case types.RETURN_BACK_CONTRACT_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region SET_SELF_DESIGN\r\n case types.SET_SELF_DESIGN_REQUEST: {\r\n return state.merge({\r\n loading: true\r\n });\r\n }\r\n case types.SET_SELF_DESIGN_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n });\r\n }\r\n case types.SET_SELF_DESIGN_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region SET_DESIGN_DONE\r\n case types.SET_DESIGN_DONE_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n designDoneError: null\r\n });\r\n }\r\n case types.SET_DESIGN_DONE_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n });\r\n }\r\n case types.SET_DESIGN_DONE_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n designDoneError: action.payload\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region SET_PRODUCTION_DONE\r\n case types.SET_PRODUCTION_DONE_REQUEST: {\r\n return state.merge({\r\n loading: true\r\n });\r\n }\r\n case types.SET_PRODUCTION_DONE_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n });\r\n }\r\n case types.SET_PRODUCTION_DONE_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region SET_INSTALLATION_DONE\r\n case types.SET_INSTALLATION_DONE_REQUEST: {\r\n return state.merge({\r\n loading: true\r\n });\r\n }\r\n case types.SET_INSTALLATION_DONE_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n });\r\n }\r\n case types.SET_INSTALLATION_DONE_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n case types.SET_FORCE_DIMENTION: {\r\n return state.merge({\r\n forceDimention: action.value\r\n });\r\n }\r\n\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import Immutable from 'seamless-immutable';\r\n\r\nimport * as types from './types.js';\r\n\r\nconst initialState = Immutable({\r\n loading: false,\r\n success: false,\r\n failed: false,\r\n executer: null,\r\n publications: []\r\n});\r\n\r\nexport const executerReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n //#region GET_EXECUTER_DETAILS\r\n case types.GET_EXECUTER_DETAILS_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n executer: null\r\n });\r\n }\r\n case types.GET_EXECUTER_DETAILS_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n executer: action.payload\r\n });\r\n }\r\n case types.GET_EXECUTER_DETAILS_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region GET_PUBLICATIONS\r\n case types.GET_PUBLICATIONS_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n publication: []\r\n });\r\n }\r\n case types.GET_PUBLICATIONS_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n publications: action.payload\r\n });\r\n }\r\n case types.GET_PUBLICATIONS_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region SEND_INVITATION\r\n case types.SEND_INVITATION_REQUEST: {\r\n return state.merge({\r\n loading: true\r\n });\r\n }\r\n case types.SEND_INVITATION_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true\r\n });\r\n }\r\n case types.SEND_INVITATION_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import Immutable from 'seamless-immutable';\r\n\r\nimport * as types from './types.js';\r\n\r\nconst initialState = Immutable({\r\n loading: false,\r\n success: false,\r\n failed: false,\r\n invitations: [],\r\n project: null,\r\n publications: [],\r\n productTypes: [],\r\n propositions: [],\r\n customer: null,\r\n contracts: [],\r\n selectedContract: null,\r\n sendToReviewError: null\r\n});\r\n\r\nexport const projectsExecuterReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n //#region GET_MYINVITATIONS\r\n case types.GET_MYINVITATIONS_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n });\r\n }\r\n case types.GET_MYINVITATIONS_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n failed: false,\r\n invitations: action.payload\r\n });\r\n }\r\n case types.GET_MYINVITATIONS_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region GET_PROJECTDETAILS\r\n case types.GET_PROJECTDETAILS_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n });\r\n }\r\n case types.GET_PROJECTDETAILS_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n failed: false,\r\n project: action.payload\r\n });\r\n }\r\n case types.GET_PROJECTDETAILS_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region SEND_PROPOSITION\r\n case types.SEND_PROPOSITION_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n });\r\n }\r\n case types.SEND_PROPOSITION_SUCCESS: { \r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n failed: false,\r\n project: {\r\n ...state.project,\r\n hasProposition: true,\r\n proposition: action.payload\r\n }\r\n });\r\n }\r\n case types.SEND_PROPOSITION_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region FIND_PROJECTS\r\n case types.FIND_PROJECTS_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n });\r\n }\r\n case types.FIND_PROJECTS_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n failed: false,\r\n publications: action.payload\r\n });\r\n }\r\n case types.FIND_PROJECTS_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region GET_PRODUCT_TYPES\r\n case types.GET_PRODUCT_TYPES_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n });\r\n }\r\n case types.GET_PRODUCT_TYPES_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n productTypes: action.payload\r\n });\r\n }\r\n case types.GET_PRODUCT_TYPES_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region GET_MYPROPOSITIONS\r\n case types.GET_MYPROPOSITIONS_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n });\r\n }\r\n case types.GET_MYPROPOSITIONS_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n propositions: action.payload\r\n });\r\n }\r\n case types.GET_MYPROPOSITIONS_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region GET_CUSTOMER_DETAILS\r\n case types.GET_CUSTOMER_DETAILS_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n });\r\n }\r\n case types.GET_CUSTOMER_DETAILS_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n customer: action.payload\r\n });\r\n }\r\n case types.GET_CUSTOMER_DETAILS_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region GET_MYCONTRACTS\r\n case types.GET_MYCONTRACTS_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n });\r\n }\r\n case types.GET_MYCONTRACTS_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n contracts: action.payload\r\n });\r\n }\r\n case types.GET_MYINVITATIONS_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region GET_CONTRACT_DETAILS\r\n case types.GET_CONTRACT_DETAILS_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n });\r\n }\r\n case types.GET_CONTRACT_DETAILS_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n selectedContract: action.payload\r\n });\r\n }\r\n case types.GET_CONTRACT_DETAILS_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region SEND_CONTRACT_TO_REVIEW\r\n case types.SEND_CONTRACT_TO_REVIEW_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n sendToReviewError: null\r\n });\r\n }\r\n case types.SEND_CONTRACT_TO_REVIEW_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true\r\n });\r\n }\r\n case types.SEND_CONTRACT_TO_REVIEW_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n sendToReviewError: action.payload\r\n });\r\n }\r\n //#endregion\r\n\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import Immutable from 'seamless-immutable';\r\n\r\nimport * as types from './types.js';\r\n\r\nconst initialState = Immutable({\r\n loading: false,\r\n success: false,\r\n failed: false,\r\n messages: [],\r\n user: null,\r\n users: [],\r\n autoMessage: null\r\n});\r\n\r\nexport const chatReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n //#region GET_MESSAGES\r\n case types.GET_MESSAGES_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n messages: [],\r\n user: null\r\n });\r\n }\r\n case types.GET_MESSAGES_SUCCESS: {\r\n let user = action.payload.userTo;\r\n let users = state.users.filter(u => u.id != user.id);\r\n users = [user, ...users];\r\n\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n messages: action.payload.messages,\r\n user: user,\r\n users: users\r\n });\r\n }\r\n case types.GET_MESSAGES_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region GET_USERS\r\n case types.GET_USERS_REQUEST: {\r\n return state.merge({\r\n messages: [],\r\n loading: true\r\n });\r\n }\r\n case types.GET_USERS_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n users: action.payload\r\n });\r\n }\r\n case types.GET_USERS_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n case types.SET_AUTO_MESSAGE: {\r\n return state.merge({\r\n autoMessage: action.payload\r\n });\r\n }\r\n\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import Immutable from 'seamless-immutable';\r\n\r\nimport * as types from './types.js';\r\nimport * as uniqueId from 'lodash/uniqueId';\r\n\r\nconst initialState = Immutable({\r\n loading: false,\r\n success: false,\r\n failed: false,\r\n messages: [],\r\n feedbacks: [],\r\n liveSupportMessages: [],\r\n liveSupportFailed: false,\r\n liveSupportIsAdminOnline: false\r\n});\r\n\r\nexport const feedbackReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case types.GET_IS_ADMIN_ONLINE: {\r\n return state.merge({\r\n liveSupportIsAdminOnline: action.payload.isAdminOnline\r\n });\r\n }\r\n //#region GET_MESSAGES\r\n case types.GET_MESSAGES_REQUEST: {\r\n if (!action.newOnly) {\r\n return state.merge({\r\n messages: []\r\n });\r\n } else {\r\n return state;\r\n }\r\n }\r\n case types.GET_MESSAGES_SUCCESS: {\r\n let messages = [...state.messages, ...action.payload];\r\n let t = 0;\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n messages: messages\r\n });\r\n }\r\n case types.GET_MESSAGES_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region GET_MYFEEDBACKS\r\n case types.GET_MYFEEDBACKS_REQUEST: {\r\n return state.merge({\r\n loading: true\r\n });\r\n }\r\n case types.GET_MYFEEDBACKS_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n feedbacks: action.payload\r\n });\r\n }\r\n case types.GET_MYFEEDBACKS_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region SEND_MESSAGE\r\n case types.SEND_MESSAGE_REQUEST: {\r\n return state.merge({\r\n loading: true\r\n });\r\n }\r\n case types.SEND_MESSAGE_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n messages: [...state.messages, action.payload]\r\n });\r\n }\r\n case types.SEND_MESSAGE_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n case types.SEND_LIVE_SUPPORT_MESSAGE_REQUEST: {\r\n let messages = [...state.liveSupportMessages,\r\n {\r\n id: \"local-\" + uniqueId(),\r\n userSessionId: action.payload.sessionId,\r\n text: action.payload.text,\r\n time: new Date(),\r\n isUserSender: true,\r\n isLocal: true\r\n }];\r\n return state.merge({\r\n liveSupportMessages: messages\r\n });\r\n } \r\n\r\n case types.ATTACH_ADMIN_LIVE_SUPPORT_MESSAGE: {\r\n let messages = [...state.liveSupportMessages, action.payload];\r\n return state.merge({\r\n liveSupportMessages: messages\r\n });\r\n }\r\n\r\n //#region GET_LIVE_SUPPORT_MESSAGES\r\n case types.GET_LIVE_SUPPORT_MESSAGES_REQUEST: {\r\n let messages = state.liveSupportMessages;\r\n if (!action.payload) {\r\n messages = [];\r\n }\r\n return state.merge({\r\n liveSupportFailed: false,\r\n liveSupportMessages: messages\r\n });\r\n }\r\n case types.GET_LIVE_SUPPORT_MESSAGES_SUCCESS: {\r\n if (action.payload.messages.count == 0) {\r\n return state.merge({\r\n liveSupportIsAdminOnline: action.payload.isAdminOnline\r\n });\r\n }\r\n let messages = state.liveSupportMessages.filter(m => !m.isLocal && !m.isTempAdmin);\r\n let tempAdminMessages = state.liveSupportMessages.filter(m => m.isTempAdmin);\r\n messages = [...messages, ...action.payload.messages, ...tempAdminMessages];\r\n return state.merge({\r\n liveSupportMessages: messages,\r\n liveSupportIsAdminOnline: action.payload.isAdminOnline\r\n });\r\n }\r\n case types.GET_LIVE_SUPPORT_MESSAGES_FAILURE: {\r\n return state.merge({\r\n liveSupportFailed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import Immutable from 'seamless-immutable';\r\n\r\nimport * as types from './types.js';\r\n\r\nconst initialState = Immutable({\r\n loading: false,\r\n success: false,\r\n failed: false,\r\n home: {\r\n individualProjects: [],\r\n goods: [],\r\n elements: [],\r\n instructions: [],\r\n productsTypes: [],\r\n elementsCategories: [],\r\n executorRegions: [],\r\n },\r\n elementsAndMetals: null,\r\n texturedMetalList: [],\r\n threeDTimeError: false,\r\n projects: [],\r\n productTypes: [],\r\n projectDetails: null,\r\n catalogProducts: [],\r\n isForMyProject: false,\r\n catalogProductDetails: null,\r\n elementsForProduct: null\r\n});\r\n\r\nexport const homeReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case types.GET_LIST_ELEMENTS_AND_METALS_FOR_PRODUCT_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n elementsAndMetals: action.payload\r\n });\r\n }\r\n\r\n case types.THREED_TIME_OUT: {\r\n return state.merge({\r\n threeDTimeError: true,\r\n });\r\n }\r\n case types.THREED_TIME_OUT_FLUSH: {\r\n return state.merge({\r\n threeDTimeError: false,\r\n });\r\n }\r\n //#region GET_CLOSEDPROJECTS\r\n case types.GET_CLOSEDPROJECTS_REQUEST: {\r\n return state.merge({\r\n failed: false,\r\n loading: true,\r\n });\r\n }\r\n case types.GET_CLOSEDPROJECTS_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n projects: action.payload\r\n });\r\n }\r\n case types.GET_CLOSEDPROJECTS_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region GET_PROJECTDETAILS\r\n case types.GET_PROJECTDETAILS_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n });\r\n }\r\n case types.GET_PROJECTDETAILS_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n projectDetails: action.payload\r\n });\r\n }\r\n case types.GET_PROJECTDETAILS_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region GET_HOMEDATA\r\n case types.GET_HOMEDATA_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n });\r\n }\r\n case types.GET_HOMEDATA_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n home: {\r\n ...state.home,\r\n individualProjects: action.payload.individualProjects,\r\n goods: action.payload.goods,\r\n elements: action.payload.elements,\r\n instructions: action.payload.instructions,\r\n productsTypes: action.payload.productsTypes,\r\n elementsCategories: action.payload.elementsCategories,\r\n executorRegions: action.payload.executorRegions\r\n }\r\n });\r\n }\r\n case types.GET_HOMEDATA_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region GET_CLOSEDPRODUCTS\r\n case types.GET_CLOSEDPRODUCTS_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n isForMyProject: false\r\n });\r\n }\r\n case types.GET_CLOSEDPRODUCTS_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n catalogProducts: action.payload.products,\r\n isForMyProject: action.payload.isForMyProject\r\n });\r\n }\r\n case types.GET_CLOSEDPRODUCTS_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region GET_PRODUCTTDETAILS\r\n case types.GET_PRODUCTTDETAILS_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n catalogProductDetails: null\r\n });\r\n }\r\n case types.GET_PRODUCTTDETAILS_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n catalogProductDetails: action.payload\r\n });\r\n }\r\n case types.GET_PRODUCTTDETAILS_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n case types.REQUEST: {\r\n return state.merge({\r\n loading: true\r\n });\r\n }\r\n case types.FAILURE: {\r\n return state.merge({\r\n loading: false\r\n });\r\n }\r\n case types.SUCCESS: {\r\n return state.merge({\r\n loading: false\r\n });\r\n }\r\n\r\n case types.GET_ELEMENTS_FOR_PRODUCT_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n elementsForProduct: action.payload\r\n });\r\n }\r\n\r\n case types.GET_PRODUCT_TYPES_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n productTypes: action.payload\r\n });\r\n }\r\n\r\n case types.REQUEST_METALS_LIST: {\r\n return state.merge({\r\n loading: true,\r\n })\r\n }\r\n case types.FAILURE_METALS_LIST: {\r\n return state.merge({\r\n loading: false,\r\n })\r\n }\r\n\r\n case types.GET_TEXTURED_METALS_LIST_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n texturedMetalList: action.payload\r\n })\r\n }\r\n\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import Immutable from 'seamless-immutable';\r\nimport * as types from './types.js';\r\n\r\nconst initialState = Immutable({\r\n loading: false,\r\n success: false,\r\n failed: false,\r\n sessions: []\r\n});\r\n\r\nexport const editorSessionsReducer = (state = initialState, action) => {\r\n switch(action.type){\r\n case(types.GET_MYEDITORSESSIONS_REQUEST): {\r\n return state.merge({\r\n loading: true\r\n });\r\n }\r\n case(types.GET_MYEDITORSESSIONS_SUCCESS): {\r\n return state.merge({\r\n loading: false,\r\n sessions: action.payload\r\n });\r\n }\r\n case(types.GET_MYEDITORSESSIONS_FAILURE): {\r\n return state.merge({\r\n loading: false,\r\n failed: true\r\n });\r\n }\r\n default: {\r\n return state;\r\n }\r\n }\r\n};","import Immutable from 'seamless-immutable';\r\nimport * as types from './types.js';\r\n\r\nconst initialState = Immutable({\r\n loading: false,\r\n success: false,\r\n failed: false,\r\n products: [],\r\n categories: [],\r\n currencies: [],\r\n addGoodSuccess: false,\r\n productInfo: null,\r\n myGoods: [],\r\n goodDetails: null\r\n});\r\n\r\nexport const goodsReducer = (state = initialState, action) => {\r\n switch(action.type){\r\n case(types.GET_REQUEST): {\r\n return state.merge({\r\n loading: true,\r\n addGoodSuccess: false\r\n });\r\n }\r\n case (types.GET_FAILURE): {\r\n return state.merge({\r\n loading: false,\r\n failed: true\r\n });\r\n }\r\n case(types.GET_CATEGORIES_SUCCESS): {\r\n return state.merge({\r\n loading: false,\r\n categories: action.payload\r\n });\r\n }\r\n case(types.GET_CURRENCIES_SUCCESS): {\r\n return state.merge({\r\n loading: false,\r\n currencies: action.payload\r\n });\r\n }\r\n case(types.GET_PRODUCTS_SUCCESS): {\r\n return state.merge({\r\n loading: false,\r\n products: action.payload\r\n });\r\n }\r\n case(types.GET_PRODUCTINFO_SUCCESS): {\r\n return state.merge({\r\n loading: false,\r\n productInfo: action.payload\r\n });\r\n }\r\n case (types.ADD_GOOD_SUCCESS): {\r\n return state.merge({\r\n loading: false,\r\n addGoodSuccess: true\r\n });\r\n }\r\n case (types.GET_MY_GOODS_SUCCESS): {\r\n return state.merge({\r\n loading: false,\r\n myGoods: action.payload\r\n });\r\n }\r\n case (types.GET_DETAILS_REQUEST): {\r\n return state.merge({\r\n loading: true,\r\n goodDetails: null\r\n });\r\n }\r\n case (types.GET_DETAILS_SUCCESS): {\r\n return state.merge({\r\n loading: false,\r\n goodDetails: action.payload\r\n });\r\n }\r\n default: {\r\n return state;\r\n }\r\n }\r\n};","import Immutable from 'seamless-immutable';\r\n\r\nimport * as types from './types.js';\r\n\r\nconst initialState = Immutable({\r\n loading: false,\r\n failed: false,\r\n sellers: [],\r\n goods: [],\r\n noMoreGoods: false,\r\n goodsDetails: null\r\n});\r\n\r\nexport const goodsReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n //#region GET_ALLSELLERS\r\n case types.GET_ALLSELLERS_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n });\r\n }\r\n case types.GET_ALLSELLERS_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n sellers: action.payload\r\n });\r\n }\r\n case types.GET_ALLSELLERS_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region FIND_GOODS\r\n case types.FIND_GOODS_RESET: {\r\n return state.merge({\r\n goods: []\r\n });\r\n }\r\n case types.FIND_GOODS_REQUEST: { \r\n return state.merge({\r\n loading: true,\r\n });\r\n }\r\n case types.FIND_GOODS_SUCCESS: {\r\n let goods = [...state.goods, ...action.payload]\r\n return state.merge({\r\n loading: false,\r\n goods: goods,\r\n noMoreGoods: action.payload.length == 0\r\n });\r\n }\r\n case types.FIND_GOODS_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region GET_GOODS_DETAILS\r\n case types.GET_GOODS_DETAILS_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n });\r\n }\r\n case types.GET_GOODS_DETAILS_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n goodsDetails: action.payload\r\n });\r\n }\r\n case types.GET_GOODS_DETAILS_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n failed: true\r\n });\r\n }\r\n //#endregion\r\n\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import Immutable from 'seamless-immutable';\r\n\r\nimport * as types from './types.js';\r\n\r\nconst initialState = Immutable({\r\n loading: false,\r\n isSuccess: false,\r\n isFailed: false,\r\n factors: null,\r\n paintingPrices: null,\r\n installPriceFactor: null,\r\n regions: [],\r\n regionFactors: []\r\n});\r\n\r\nexport const calculationFactorsReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n \r\n case types.GET_CALCULATEFACTORS_REQUEST: {\r\n return state.merge({\r\n loading: true\r\n })\r\n }\r\n\r\n case types.GET_CALCULATEFACTORS_SUCCESS: {\r\n return state.merge({\r\n isSuccess: true,\r\n loading: false,\r\n factors: action.payload\r\n })\r\n }\r\n\r\n case types.GET_CALCULATEFACTORS_FAILURE: {\r\n return state.merge({\r\n isFailed: true,\r\n loading: false\r\n })\r\n }\r\n\r\n case types.ADD_CALCULATEFACTORS_REQUEST: {\r\n return state.merge({\r\n loading: true\r\n })\r\n }\r\n\r\n case types.ADD_CALCULATEFACTORS_SUCCESS: {\r\n return state.merge({\r\n isSuccess: true,\r\n loading: false\r\n })\r\n\r\n \r\n }\r\n\r\n case types.ADD_CALCULATEFACTORS_FAILURE: {\r\n return state.merge({\r\n isFailed: true,\r\n loading: false\r\n })\r\n }\r\n\r\n case types.ADD_PAINTINGSPRICE_REQUEST: {\r\n return state.merge({\r\n loading: true\r\n })\r\n }\r\n\r\n case types.ADD_PAINTINGSPRICE_SUCCESS: {\r\n return state.merge({\r\n isSuccess: true,\r\n loading: false,\r\n paintingPrices: [...state.paintingPrices,\r\n action.payload]\r\n })\r\n }\r\n\r\n case types.ADD_PAINTINGSPRICE_FAILURE: {\r\n return state.merge({\r\n isFailed: true,\r\n loading: false\r\n })\r\n }\r\n\r\n case types.GET_PAINTINGPRICES_REQUEST: {\r\n return state.merge({\r\n loading: true\r\n })\r\n }\r\n\r\n case types.GET_PAINTINGPRICES_SUCCESS: {\r\n return state.merge({\r\n isSuccess: true,\r\n loading: false,\r\n paintingPrices: action.payload\r\n })\r\n }\r\n\r\n case types.GET_PAINTINGPRICES_FAILURE: {\r\n return state.merge({\r\n isFailed: true,\r\n loading: false\r\n })\r\n }\r\n\r\n case types.UPDATE_PAINTINGPRICES_REQUEST: {\r\n return state.merge({\r\n loading: true\r\n })\r\n }\r\n\r\n case types.UPDATE_PAINTINGPRICES_SUCCESS: {\r\n let data = action.payload;\r\n let currValues = [...state.paintingPrices];\r\n let index = currValues.findIndex(x => x.id == data.id);\r\n currValues[index] = data\r\n return state.merge({\r\n isSuccess: true,\r\n loading: false,\r\n paintingPrices: currValues\r\n })\r\n }\r\n\r\n case types.UPDATE_PAINTINGPRICES_FAILURE: {\r\n return state.merge({\r\n isFailed: true,\r\n loading: false\r\n })\r\n }\r\n\r\n case types.DELETE_PAINTINGPRICES_REQUEST: {\r\n return state.merge({\r\n loading: true\r\n })\r\n }\r\n\r\n case types.DELETE_PAINTINGPRICES_SUCCESS: {\r\n return state.merge({\r\n isSuccess: true,\r\n loading: false,\r\n paintingPrices: action.payload\r\n })\r\n }\r\n\r\n case types.DELETE_PAINTINGPRICES_FAILURE: {\r\n return state.merge({\r\n isFailed: true,\r\n loading: false\r\n })\r\n }\r\n\r\n case types.SET_DEFAULT_PAINTINGPRICE_SUCCESS: {\r\n return state.merge({\r\n isSuccess: true,\r\n loading: false\r\n })\r\n }\r\n\r\n case types.REQUEST: {\r\n return state.merge({\r\n loading: true\r\n });\r\n }\r\n case types.FAILURE: {\r\n return state.merge({\r\n isFailed: true,\r\n loading: false\r\n });\r\n }\r\n case types.GET_INSTALL_PRICE_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n installPriceFactor: action.payload\r\n });\r\n }\r\n case types.UPDATE_INSTALL_PRICE_SUCCESS: {\r\n return state.merge({\r\n loading: false\r\n });\r\n }\r\n\r\n case types.GET_REGION_FACTORS_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n regionFactors: action.payload.factors,\r\n regions: action.payload.regions\r\n });\r\n }\r\n case types.SEND_REGION_FACTORS_SUCCESS: {\r\n return state.merge({\r\n loading: false\r\n });\r\n }\r\n\r\n //#endregion\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import Immutable from 'seamless-immutable';\r\n\r\nimport * as types from './types.js';\r\n\r\nconst initialState = Immutable({\r\n loading: false,\r\n success: false,\r\n failed: false,\r\n favoritesData: null,\r\n favoriteProducts: [],\r\n isForMyProject: false\r\n});\r\n\r\nexport const favoriteReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n //#region GET_FAVORITES_PRODUCTS\r\n case types.GET_FAVORITES_PRODUCTS_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n isForMyProject: false\r\n });\r\n }\r\n case types.GET_FAVORITES_PRODUCTS_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n favoriteProducts: action.payload.products,\r\n isForMyProject: action.payload.isForMyProject\r\n });\r\n }\r\n case types.GET_FAVORITES_PRODUCTS_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region GET_FAVORITES \r\n case types.GET_FAVORITES_SUCCESS: {\r\n return state.merge({ \r\n favoritesData: action.payload\r\n });\r\n } \r\n //#endregion\r\n\r\n case types.LOAD_FAVORITES_LOCAL: {\r\n return state.merge({\r\n favoritesData: action.payload\r\n });\r\n } \r\n\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import Immutable from 'seamless-immutable';\r\n\r\nimport * as types from './types.js';\r\n\r\nconst initialState = Immutable({\r\n loading: false,\r\n success: false,\r\n failed: false,\r\n AllInstructions: [],\r\n SingleInstruction: {},\r\n LastBlogs: [],\r\n InstructionType: []\r\n});\r\n\r\nexport const instructionsReducer = (state = initialState, action) => {\r\n\r\n switch (action.type) {\r\n //#region GET_ALL_INSTRUCTIONS\r\n case types.GET_ALL_INSTRUCTIONS_REQUEST: {\r\n return state.merge({\r\n loading: true\r\n });\r\n }\r\n\r\n case types.GET_ALL_INSTRUCTIONS_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n AllInstructions: action.payload,\r\n });\r\n }\r\n case types.GET_ALL_INSTRUCTIONS_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n //#region GET_ALL_BLOG\r\n case types.GET_ALL_BLOG_REQUEST: {\r\n return state.merge({\r\n loading: true\r\n });\r\n }\r\n\r\n case types.GET_ALL_BLOG_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n AllInstructions: action.payload,\r\n });\r\n }\r\n case types.GET_ALL_BLOG_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n //#region GET_SINGLE_INSTRUCTION\r\n case types.GET_SINGLE_INSTRUCTION_REQUEST: {\r\n return state.merge({\r\n loading: true\r\n });\r\n }\r\n\r\n case types.GET_SINGLE_INSTRUCTION_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n SingleInstruction: action.payload,\r\n });\r\n }\r\n case types.GET_SINGLE_INSTRUCTION_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n //#region GET_LAST_BLOG\r\n case types.GET_LAST_BLOG_REQUEST: {\r\n return state.merge({\r\n loading: true\r\n });\r\n }\r\n\r\n case types.GET_LAST_BLOG_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n LastBlogs: action.payload,\r\n });\r\n }\r\n case types.GET_LAST_BLOG_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n //#region GET_INSTUCTION_TYPE\r\n case types.GET_INSTUCTION_TYPE_REQUEST: {\r\n return state.merge({\r\n loading: true\r\n });\r\n }\r\n\r\n case types.GET_INSTUCTION_TYPE_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n success: true,\r\n InstructionType: action.payload,\r\n });\r\n }\r\n case types.GET_INSTUCTION_TYPE_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n //#endregion\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import Immutable from 'seamless-immutable';\r\n\r\nimport * as types from './types.js';\r\nimport { getBasket } from './actions.js';\r\n\r\nconst initialState = Immutable({\r\n loading: false,\r\n failed: false,\r\n basket: getBasket(),\r\n goodsInfos: [],\r\n elementsInfos: [],\r\n makeOrderSuccess: false,\r\n makeOrderElementsSuccess: false\r\n});\r\n\r\nexport const basketReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n\r\n case types.REFRESH_BASKET_WITHOUT_PAGE_UPDATE: {\r\n return state.merge({\r\n basket: action.payload\r\n })\r\n }\r\n\r\n case types.REFRESH_BASKET: {\r\n return state.merge({\r\n basket: action.payload,\r\n makeOrderSuccess: false,\r\n makeOrderElementsSuccess: false,\r\n loading: false\r\n });\r\n }\r\n\r\n case types.REQUEST: {\r\n return state.merge({\r\n loading: true\r\n });\r\n }\r\n case types.FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true\r\n });\r\n }\r\n\r\n case types.GET_GOODS_BY_IDS_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n goodsInfos: action.payload\r\n });\r\n }\r\n\r\n case types.MAKE_ORDER_SUCCESS: {\r\n return state.merge({\r\n makeOrderSuccess: true\r\n });\r\n }\r\n\r\n //#region ELEMENTS\r\n case types.GET_ELEMENTS_BY_IDS_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n elementsInfos: action.payload\r\n });\r\n }\r\n case types.MAKE_ELEMENTS_ORDER_SUCCESS: {\r\n return state.merge({\r\n makeOrderElementsSuccess: true\r\n });\r\n } \r\n //#endregion\r\n\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import Immutable from 'seamless-immutable';\r\n\r\nimport * as types from './types.js';\r\n\r\nconst initialState = Immutable({\r\n loading: false,\r\n failed: false,\r\n sketches: [],\r\n editorStateData: [],\r\n templates: [],\r\n metals: [],\r\n saveSketchSuccess: false,\r\n sketchData: null,\r\n autobuildTemplates: [],\r\n autobuildTemplateDetails: null,\r\n sketchSaveId: -1\r\n});\r\n\r\nexport const autoBuildEditReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case types.REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n failed: false,\r\n sketchData: null,\r\n saveSketchSuccess: false\r\n });\r\n }\r\n case types.FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true\r\n });\r\n }\r\n\r\n case types.GET_MYSKETCHES_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n sketches: action.payload\r\n });\r\n }\r\n\r\n case types.GET_PRODUCT_EDITOR_STATE_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n editorStateData: action.payload\r\n });\r\n }\r\n\r\n case types.SAVE_SKETCH_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n saveSketchSuccess: true,\r\n sketchSaveId: action.payload \r\n });\r\n }\r\n\r\n case types.COPY_SKETCH_SUCCESS: {\r\n return state.merge({\r\n loading: false\r\n });\r\n }\r\n\r\n case types.GET_SKETCH_DATA_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n sketchData: action.payload\r\n });\r\n }\r\n\r\n case types.DELETE_SKETCH_SUCCESS: {\r\n return state.merge({\r\n loading: false\r\n });\r\n }\r\n case types.REQUEST_TEMPLATE: {\r\n return state.merge({\r\n loading: true,\r\n failed: false,\r\n });\r\n }\r\n case types.GET_TEMPLATE_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n templates: action.payload\r\n });\r\n }\r\n\r\n case types.GET_SKETCH_METALS_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n metals: action.payload\r\n });\r\n }\r\n\r\n case types.SAVE_END: {\r\n return state.merge({\r\n saveSketchSuccess: false\r\n });\r\n }\r\n\r\n case types.GET_MYTEMPLATES_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n autobuildTemplates: action.payload\r\n });\r\n }\r\n\r\n case types.SAVE_AUTOBUILD_TEMPLATE_SUCCESS: {\r\n return state.merge({\r\n loading: false\r\n });\r\n }\r\n\r\n case types.GET_AUTOBUILD_TEMPLATE_DETAILS_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n autobuildTemplateDetails: action.payload\r\n });\r\n }\r\n case types.DELETE_AUTOBUILD_TEMPLATE_SUCCESS: {\r\n return state.merge({\r\n loading: false\r\n });\r\n }\r\n case types.GENERATE_HIDDEN_PRODUCT: {\r\n return state.merge({\r\n loading: false\r\n });\r\n }\r\n case types.MOVE_PRODUCT_TO_NEW_PROJECT: {\r\n return state.merge({\r\n loading: false\r\n });\r\n }\r\n\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import Immutable from 'seamless-immutable';\r\n\r\nimport * as types from './types.js';\r\n\r\nconst initialState = Immutable({\r\n loading: false,\r\n failed: false,\r\n sketches: [],\r\n sketchDetails: null,\r\n autoBuildTemplates: []\r\n});\r\n\r\nexport const autoBuildReducer = (state = initialState, action) => {\r\n switch (action.type) { \r\n case types.REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n failed: false,\r\n });\r\n }\r\n case types.FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true\r\n });\r\n }\r\n\r\n case types.GET_SKETCHES_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n sketches: action.payload\r\n });\r\n }\r\n\r\n case types.GET_SKETCH_DETAILS_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n sketchDetails: action.payload\r\n });\r\n }\r\n\r\n case types.GET_TEMPLATES_SUCCESS: {\r\n return state.merge({\r\n //loading: false,\r\n autoBuildTemplates: action.payload\r\n });\r\n }\r\n\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import Immutable from 'seamless-immutable';\r\n\r\nimport * as types from './types.js';\r\n\r\nconst initialState = Immutable({\r\n loading: false,\r\n failed: false,\r\n typeloaded: false,\r\n typeloadedV2: false,\r\n elementsCatalog: [],\r\n elementFilter: [],\r\n elementFilterV2: [],\r\n noMoreElements: false,\r\n link: null,\r\n linkImage: null\r\n});\r\n\r\nexport const elementsReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n //#region GET_ELEMENTS\r\n case types.GET_ELEMENTS_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n });\r\n }\r\n case types.GET_ELEMENTS_SUCCESS: {\r\n let elements = [...state.elementsCatalog, ...action.payload]\r\n return state.merge({\r\n loading: false,\r\n elementsCatalog: elements,\r\n noMoreElements: action.payload.length == 0\r\n });\r\n }\r\n case types.GET_ELEMENTS_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true\r\n });\r\n }\r\n //#endregion\r\n case types.SET_ELEMENTS_ZERO: {\r\n return state.merge({\r\n noMoreElements: false,\r\n elementsCatalog: []\r\n });\r\n }\r\n //#region GET_FILTER\r\n case types.GET_FILTER_REQUEST: {\r\n return state.merge({\r\n //loading: true,\r\n typeloaded: false\r\n });\r\n }\r\n case types.GET_FILTER_SUCCESS: {\r\n return state.merge({\r\n //loading: false,\r\n elementFilter: action.payload,\r\n typeloaded: true\r\n });\r\n }\r\n case types.GET_FILTER_FAILURE: {\r\n return state.merge({\r\n //loading: false,\r\n failed: true,\r\n typeloaded: false\r\n });\r\n }\r\n //#endregion\r\n //#region GET_FILTER_V2\r\n case types.GET_FILTER_V2_REQUEST: {\r\n return state.merge({\r\n //loading: true,\r\n elementFilterV2: [],\r\n typeloadedV2: false\r\n });\r\n }\r\n case types.GET_FILTER_V2_SUCCESS: {\r\n return state.merge({\r\n //loading: false,\r\n elementFilterV2: action.payload,\r\n typeloadedV2: true\r\n });\r\n }\r\n case types.GET_FILTER_V2_FAILURE: {\r\n return state.merge({\r\n //loading: false,\r\n //failed: true,\r\n elementFilterV2: [],\r\n typeloadedV2: false\r\n });\r\n }\r\n //#endregion\r\n case types.GET_LINK_SUCCESS: {\r\n return state.merge({\r\n link: action.payload.elementsLink,\r\n linkImage: action.payload.elementsLinkImage\r\n });\r\n }\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import Immutable from 'seamless-immutable';\r\n\r\nimport * as types from './types.js';\r\n\r\nconst initialState = Immutable({\r\n loading: false,\r\n failed: false,\r\n solution: null\r\n});\r\n\r\nexport const solutionsReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n //#region GET_SOLUTION\r\n case types.GET_SOLUTION_REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n });\r\n }\r\n case types.GET_SOLUTION_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n solution: action.payload\r\n });\r\n }\r\n case types.GET_SOLUTION_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true\r\n });\r\n }\r\n //#endregion\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import Immutable from 'seamless-immutable';\r\nimport * as types from './types.js';\r\n\r\nconst initialState = Immutable({\r\n loading: false,\r\n success: false,\r\n failed: false,\r\n transactions: [],\r\n userInfo: [],\r\n file: ''\r\n});\r\n\r\nexport const balanceReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case (types.GET_REQUEST): {\r\n return state.merge({\r\n loading: true\r\n });\r\n }\r\n case (types.GET_FAILURE): {\r\n return state.merge({\r\n loading: false,\r\n failed: true\r\n });\r\n }\r\n case (types.SET_BILL_SUCCESS): {\r\n return state.merge({\r\n loading: false\r\n });\r\n }\r\n case (types.SET_CURRENCY_SUCCESS): {\r\n return state.merge({\r\n loading: false\r\n });\r\n }\r\n case (types.GET_TRANSACTION_SUCCESS): {\r\n return state.merge({\r\n loading: false,\r\n transactions: action.payload\r\n });\r\n }\r\n case (types.GET_ACT_SUCCESS): {\r\n return state.merge({\r\n loading: false,\r\n file: action.payload\r\n });\r\n }\r\n case (types.GET_PPEUSER_SUCCESS): {\r\n return state.merge({\r\n loading: false,\r\n userInfo: action.payload\r\n });\r\n }\r\n case (types.SET_PPEUSER_SUCCESS): {\r\n return state.merge({\r\n loading: false\r\n });\r\n }\r\n default: {\r\n return state;\r\n }\r\n }\r\n};","import Immutable from 'seamless-immutable';\r\n\r\nimport * as types from './types.js';\r\n\r\nconst initialState = Immutable({\r\n loading: false,\r\n loadingProducts: false,\r\n success: false,\r\n failed: false,\r\n productsMyProfile: [],\r\n executorSelections: [],\r\n isAutoAddToCatalog: false,\r\n isAutoAddToCatalogSellElements: false,\r\n embeddingKey: null,\r\n productsEmbedding: [],\r\n productsEmbeddingError: '',\r\n productDetails: null,\r\n productTypes: [],\r\n priceInfo: null\r\n});\r\n\r\nexport const embeddingReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case types.REQUEST: {\r\n return state.merge({\r\n loading: true\r\n });\r\n }\r\n case types.FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n loadingProducts: false,\r\n failed: true\r\n });\r\n }\r\n\r\n case types.REQUEST_PRODUCTS: {\r\n return state.merge({\r\n loadingProducts: true\r\n });\r\n }\r\n\r\n case types.GET_PRODUCTS_FOR_PROFILE_SUCCESS: {\r\n return state.merge({\r\n loadingProducts: false,\r\n productsMyProfile: action.payload.products,\r\n executorSelections: action.payload.executorProducts,\r\n isAutoAddToCatalog: action.payload.isAutoAddToCatalog,\r\n isAutoAddToCatalogSellElements: action.payload.isAutoAddToCatalogSellElements \r\n });\r\n }\r\n case types.SAVE_EXECUTOR_PRODUCT_SELECTION: {\r\n return state.merge({\r\n loading: false\r\n });\r\n }\r\n\r\n case types.GET_LOADED_IMAGE_SUCCESS: {\r\n let image = action.payload;\r\n return state.merge({\r\n loading: false,\r\n });\r\n }\r\n\r\n case types.DELETE_IMAGE_SUCCESS:\r\n case types.CHANGE_WRAPPER_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n });\r\n }\r\n \r\n\r\n case types.GET_EXISTING_KEY: {\r\n return state.merge({\r\n loading: false,\r\n embeddingKey: action.payload\r\n });\r\n }\r\n case types.GET_PRICE_INFO: {\r\n return state.merge({\r\n loading: false,\r\n priceInfo: action.payload\r\n });\r\n }\r\n case types.GENERATE_KEY: {\r\n return state.merge({\r\n loading: false,\r\n embeddingKey: action.payload\r\n });\r\n }\r\n case types.GENERATE_KEY_FAILURE: {\r\n return state.merge({\r\n loading: false\r\n });\r\n }\r\n\r\n case types.GET_PRODUCT_TYPES: {\r\n return state.merge({\r\n loading: false,\r\n productTypes: action.payload,\r\n });\r\n }\r\n case types.GET_PRODUCTS_FOR_EMBEDDING: {\r\n return state.merge({\r\n loading: false,\r\n productsEmbedding: action.payload,\r\n });\r\n }\r\n case types.GET_PRODUCTS_FOR_EMBEDDING_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n productsEmbeddingError: action.payload.error\r\n });\r\n }\r\n case types.GET_PRODUCT_DETAILS: {\r\n return state.merge({\r\n loading: false,\r\n productDetails: action.payload,\r\n });\r\n }\r\n\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import Immutable from 'seamless-immutable';\r\n\r\nimport * as types from './types.js';\r\n\r\nconst initialState = Immutable({\r\n loading: false,\r\n loadingProducts: false,\r\n success: false,\r\n failed: false,\r\n myCompanySite: null,\r\n companySite: null,\r\n backgroundImages: null,\r\n products: [],\r\n productDetails: null,\r\n transactionData: [],\r\n siteCompanyError: '',\r\n});\r\n\r\nexport const siteCompanyReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n\r\n case types.GET_TRANSACTION_DATA: {\r\n return state.merge({\r\n loading: false,\r\n transactionData: action.payload\r\n });\r\n }\r\n\r\n case types.CREATE_SITE: {\r\n return state.merge({\r\n loading: false,\r\n myCompanySite: action.payload\r\n });\r\n }\r\n\r\n case types.SUCCESS: {\r\n return state.merge({\r\n loading: false\r\n });\r\n }\r\n\r\n case types.LOAD_DETAILS: {\r\n return state.merge({\r\n loading: false,\r\n productDetails: action.payload\r\n })\r\n }\r\n\r\n case types.SUCCESS_BGI_LOAD: {\r\n return state.merge({\r\n loading: false,\r\n backgroundImages: action.payload\r\n });\r\n }\r\n\r\n case types.SUCCESS_PRODUCT_LOAD: {\r\n return state.merge({\r\n loadingProducts: false,\r\n products: action.payload\r\n });\r\n }\r\n\r\n case types.SUCCESS_LOGO_LOAD: {\r\n return state.merge({\r\n loading: false,\r\n companySite: {...state.companySite, logo:action.payload}\r\n });\r\n }\r\n\r\n case types.CREATE_SITE_FAILURE:\r\n case types.UPDATE_SITE_FAILURE:\r\n case types.FAILURE:{\r\n return state.merge({\r\n loadingProducts: false,\r\n loading: false,\r\n failed: true,\r\n });\r\n }\r\n\r\n case types.LOAD_SITE_FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true,\r\n siteCompanyError: action.payload.error\r\n });\r\n }\r\n\r\n case types.LOAD_SITE:\r\n case types.UPDATE_SITE:{\r\n return state.merge({\r\n loading: false,\r\n companySite: action.payload\r\n });\r\n }\r\n\r\n\r\n case types.GET_MY_COMPANY_SITE: {\r\n return state.merge({\r\n loading: false,\r\n myCompanySite: action.payload\r\n });\r\n }\r\n\r\n case types.REQUEST: {\r\n return state.merge({\r\n loading: true\r\n });\r\n }\r\n\r\n case types.REQUEST_PRODUCTS: {\r\n return state.merge({\r\n loadingProducts: true\r\n });\r\n }\r\n\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import Immutable from 'seamless-immutable';\r\n\r\nimport * as types from './types.js';\r\n\r\nconst initialState = Immutable({\r\n loading: false,\r\n failed: false,\r\n manufacturers: [],\r\n priceManufacturers: [],\r\n isActiveExecutor: false\r\n});\r\n\r\nexport const manufacturerReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case types.REQUEST: {\r\n return state.merge({\r\n loading: true,\r\n });\r\n }\r\n case types.FAILURE: {\r\n return state.merge({\r\n loading: false,\r\n failed: true\r\n });\r\n }\r\n case types.GET_MANUFACTORERS_SUCCESS: { \r\n return state.merge({\r\n loading: false,\r\n manufacturers: action.payload\r\n });\r\n }\r\n case types.GET_PRICE_MANUFACTORERS_SUCCESS: {\r\n return state.merge({\r\n loading: false,\r\n priceManufacturers: action.payload.executors,\r\n isActiveExecutor: action.payload.isActiveExecutor\r\n });\r\n }\r\n \r\n case types.SEND_CONTACT_REQUEST_SUCCESS:\r\n case types.BECOME_MANUFACTURER_REQUEST_SUCCESS: {\r\n return state.merge({\r\n loading: false\r\n });\r\n }\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import { applyMiddleware, combineReducers, compose, createStore } from 'redux';\r\nimport thunk from 'redux-thunk';\r\nimport { connectRouter, routerMiddleware } from 'connected-react-router';\r\nimport { createBrowserHistory } from 'history';\r\n\r\n\r\nimport { loginReducer } from '../login/reducer';\r\nimport language from \"./language/reducer\";\r\nimport { reducer as toastrReducer } from 'react-redux-toastr'\r\nimport refreshTokenMiddleware from './middleware/refreshMiddleware';\r\nimport { myInfoReducer } from '../myprofile/myinfo/reducer';\r\nimport { mySpecialtyReducer } from '../myprofile/myspecialty/reducer';\r\nimport { refreshReducer } from '../refreshToken/reducer';\r\nimport { myPortfolioReducer } from '../myprofile/myportfolio/reducer';\r\nimport { registerReducer } from '../register/registerSimple/reducer';\r\nimport { registerCustomerReducer } from '../register/registerCustomer/reducer';\r\nimport { registerExecutorReducer } from '../register/registerExecutor/reducer';\r\nimport { verifyAccountReducer } from '../verify/reducer';\r\nimport { myElementsReducer } from '../myprofile/myelements/reducer';\r\nimport { regionsReducer } from '../regions/reducer';\r\nimport { createProjectReducer } from '../projects/newproject/reducer';\r\nimport { myProjectsReducer } from '../projects/myprojects/reducer';\r\nimport { projectDetailsReducer } from '../projects/projectdetails/reducer';\r\nimport { executerReducer } from '../projects/executerdetails/reducer';\r\nimport { projectsExecuterReducer } from '../projectsExecuter/reducer';\r\nimport { chatReducer } from '../chat/reducer';\r\nimport { feedbackReducer } from '../feedback/reducer';\r\nimport { homeReducer } from '../home/reducer';\r\nimport { editorSessionsReducer } from './../myprofile/editorSessions/reducer';\r\nimport { goodsReducer as myGoodsReducer } from '../myprofile/goods/reducer'\r\nimport { goodsReducer } from '../goods/reducer'\r\nimport { calculationFactorsReducer } from '../myprofile/calculationfactors/reducer';\r\nimport { favoriteReducer } from '../favorites/reducer';\r\nimport { instructionsReducer } from '../instruction/reducer';\r\nimport { basketReducer } from '../basket/reducer';\r\nimport { autoBuildEditReducer } from '../autoBuildEdit/reducer';\r\nimport { autoBuildReducer } from '../autoBuild/reducer';\r\nimport { elementsReducer } from '../elements/reducer';\r\nimport { solutionsReducer } from '../solutions/reducer';\r\nimport { balanceReducer } from '../myprofile/balance/reducer';\r\nimport { embeddingReducer } from '../embedding/reducer';\r\nimport { siteCompanyReducer } from '../siteCompany/reducer';\r\nimport { manufacturerReducer } from '../manufacturer/reducer';\r\n\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\r\nexport const history = createBrowserHistory({ basename: baseUrl });\r\n\r\n// Get the application-wide store instance, prepopulating with state from the server where available.\r\nconst initialState = window.initialReduxState;\r\n\r\n\r\nfunction configureStore(history, initialState) {\r\n const reducers = {\r\n // signup,\r\n home: homeReducer,\r\n login: loginReducer,\r\n language,\r\n // myprofile,\r\n toastr: toastrReducer,\r\n myInfo: myInfoReducer,\r\n mySpecialty: mySpecialtyReducer,\r\n refreshToken: refreshReducer,\r\n myportfolio: myPortfolioReducer,\r\n //registerCustomer: registerCustomerReducer,\r\n //registerExecutor: registerExecutorReducer,\r\n register: registerReducer,\r\n verifyAccount: verifyAccountReducer,\r\n myElements: myElementsReducer,\r\n regions: regionsReducer,\r\n createProject: createProjectReducer,\r\n myProjects: myProjectsReducer,\r\n projectDetails: projectDetailsReducer,\r\n executerDetails: executerReducer,\r\n projectsExecuter: projectsExecuterReducer,\r\n chat: chatReducer,\r\n feedback: feedbackReducer,\r\n editorSessions: editorSessionsReducer,\r\n calculationFactors: calculationFactorsReducer,\r\n favorite: favoriteReducer,\r\n mygoods: myGoodsReducer,\r\n goods: goodsReducer,\r\n basket: basketReducer,\r\n instructions: instructionsReducer,\r\n autoBuildEdit: autoBuildEditReducer,\r\n autoBuild: autoBuildReducer,\r\n solutions: solutionsReducer,\r\n elements: elementsReducer,\r\n balance: balanceReducer,\r\n embedding: embeddingReducer,\r\n siteCompany: siteCompanyReducer,\r\n manufacturer: manufacturerReducer\r\n };\r\n\r\n const middleware = [\r\n refreshTokenMiddleware(),\r\n thunk,\r\n routerMiddleware(history)\r\n ];\r\n\r\n // In development, use the browser's Redux dev tools extension if installed\r\n const enhancers = [];\r\n const isDevelopment = process.env.NODE_ENV === 'development';\r\n if (isDevelopment && typeof window !== 'undefined' && window.devToolsExtension) {\r\n enhancers.push(window.devToolsExtension());\r\n }\r\n\r\n const rootReducer = combineReducers({\r\n ...reducers,\r\n router: connectRouter(history),\r\n });\r\n\r\n return createStore(\r\n rootReducer,\r\n initialState,\r\n compose(\r\n applyMiddleware(\r\n ...middleware),\r\n ...enhancers)\r\n );\r\n}\r\nconst store = configureStore(history, initialState);\r\nexport default store;","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { Provider } from 'react-redux';\r\nimport { ConnectedRouter } from 'connected-react-router';\r\nimport { Router } from 'react-router-dom'\r\n\r\nimport App from './App';\r\n\r\nimport * as loginActions from './login/actions';\r\n// import { setVerToken } from './verify/actions'\r\nimport store, { history } from './store/configureStore';\r\nimport { getAuthToken, getRefreshToken, getVerificationToken } from './utils/lsMethods';\r\nimport * as rax from 'retry-axios';\r\n\r\nimport ReduxToastr from 'react-redux-toastr'\r\n\r\n\r\n//Styles\r\nimport 'bootstrap/dist/css/bootstrap.css';\r\nimport 'react-redux-toastr/lib/css/react-redux-toastr.min.css'\r\nimport \"./styles/main.scss\";\r\nimport setAuthorizationToken from './utils/setAuthorizationToken';\r\nimport { initAmplitude, sendAmplitudeData, setAmplitudeUserId, amplitudeTypes } from './utils/amplitude';\r\nimport jwt from 'jsonwebtoken';\r\n\r\nconst rootElement = document.getElementById('root');\r\n\r\nconst interceptorId = rax.attach();\r\nif (getAuthToken()) {\r\n let data={ authToken:getAuthToken(), refreshToken:getRefreshToken() }\r\n loginActions.loginByJWT(data, store.dispatch)\r\n}\r\nelse if(getVerificationToken()){\r\n let token=getVerificationToken();\r\n setAuthorizationToken(token);\r\n}\r\n\r\n\r\ninitAmplitude();\r\nconst authToken = getAuthToken();\r\nif (authToken != null) {\r\n const tokenData = jwt.decode(authToken);\r\n setAmplitudeUserId(tokenData['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name']);\r\n sendAmplitudeData(amplitudeTypes.OPEN_WEBSITE, { 'registered': true });\r\n} else {\r\n sendAmplitudeData(amplitudeTypes.OPEN_WEBSITE, { 'registered': false });\r\n}\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n rootElement);\r\n","import React from 'react';\r\nimport './style.scss';\r\nimport { withTranslation } from 'react-i18next';\r\n\r\nconst FullPageLoader = (props) => {\r\n return (\r\n
\r\n
\r\n Loading...\r\n
\r\n {props.t &&\r\n
{props.t('loading')}
\r\n }\r\n
\r\n )\r\n}\r\n\r\nexport default withTranslation()(FullPageLoader);\r\n\r\nexport { FullPageLoader as FullPageLoaderNoText };","export const sellElements=\"Seller\";\r\nexport const productionElements=\"Manufacturer\";\r\nexport const setupElements=\"Installer\";\r\nexport const designElements = \"Designer\";\r\nexport const customer = \"Customer\";","import MathHelper from \"../utils/MathHelper\";\r\n\r\nexport class FormulaHelper {\r\n //formula names\r\n static TYPE_CONSTANT = \"TYPE_CONSTANT\";\r\n static TYPE_CONSTANT_ANGLE = \"TYPE_CONSTANT_ANGLE\";\r\n static TYPE_LINEAR = \"TYPE_LINEAR\";\r\n static TYPE_LINEAR_OR_CONSTANT = \"TYPE_LINEAR_OR_CONSTANT\";\r\n static TYPE_CURVE = \"TYPE_CURVE\";\r\n static TYPE_CURVE_DIF_ANGLE = \"TYPE_CURVE_DIF_ANGLE\";\r\n static TYPE_TORSION = \"TYPE_TORSION\";\r\n\r\n //formula views\r\n static FORMULA_COPY = \"2\";\r\n static FORMULA_POSITION = \"0\";\r\n static FORMULA_ROTATION = \"1\";\r\n\r\n //constants\r\n static FILL_WIDTH = \"FILL_WIDTH\";\r\n static FILL_HEIGHT = \"FILL_HEIGHT\";\r\n static STEP = \"STEP\";\r\n static CONST_STEP_REMAIN = \"CONST_STEP_REMAIN\";\r\n static STAIR_HEIGHT = \"STAIR_HEIGHT\";\r\n static CURVE_PLUS = \"+\";\r\n static CURVE_MINUS = \"-\";\r\n\r\n static getObjectByType(type) {\r\n switch (type) {\r\n case this.TYPE_CONSTANT_ANGLE:\r\n return {\r\n type: this.TYPE_CONSTANT_ANGLE,\r\n v: 0\r\n };\r\n case this.TYPE_CONSTANT:\r\n return {\r\n type: this.TYPE_CONSTANT,\r\n v: 0\r\n };\r\n case this.TYPE_LINEAR:\r\n return {\r\n type: this.TYPE_LINEAR,\r\n v: this.FILL_WIDTH,\r\n a: 0,\r\n b: 0\r\n };\r\n case this.TYPE_CURVE:\r\n return {\r\n type: this.TYPE_CURVE,\r\n v: this.CURVE_Y_PLUS,\r\n height: 0,\r\n width: 1,\r\n hCurve: 0,\r\n step: 0,\r\n perpendicular: false,\r\n };\r\n case this.TYPE_LINEAR_OR_CONSTANT:\r\n return {\r\n type: this.TYPE_LINEAR_OR_CONSTANT,\r\n v: this.FILL_WIDTH,\r\n a: 0,\r\n b: 0,\r\n c: 0\r\n };\r\n case this.TYPE_CURVE_DIF_ANGLE:\r\n return {\r\n type: this.TYPE_CURVE_DIF_ANGLE,\r\n v: 0,\r\n a: 0,\r\n b: this.FILL_WIDTH,\r\n height:0,\r\n };\r\n case this.TYPE_TORSION:\r\n return {\r\n type: this.TYPE_TORSION,\r\n c: 0,\r\n d: 0\r\n }\r\n }\r\n }\r\n\r\n static getCurvePosition(object, userValues, count, stepX) {\r\n if (typeof (object) != \"object\") {\r\n return [];\r\n }\r\n if (object.type != this.TYPE_CURVE) {\r\n return [];\r\n }\r\n let step = stepX;\r\n if (step <= 0) {\r\n return 0;\r\n }\r\n const height = object.height / 1000;\r\n const width = count * stepX;\r\n const hCurve = object.hCurve != null || object.hCurve != 0 ? MathHelper.mmToMeters(object.hCurve) : 0;\r\n let dA = hCurve != null || hCurve != 0 ? -Math.atan(hCurve / width) : 0;\r\n const R = (height / 2) + ((width * width) / (8 * height));\r\n const aSegment = 2 * Math.asin(width / (R * 2));\r\n const ninetyD = 1.5708;\r\n const aStart = (ninetyD - aSegment / 2);\r\n const aEnd = (ninetyD + aSegment / 2);\r\n const xStart = R * Math.cos(aStart);\r\n let yStart = R * Math.sin(aStart);\r\n let yEnd = R * Math.sin(aEnd);\r\n const xEnd = R * Math.cos(aEnd);\r\n step = (xStart - xEnd) / count;\r\n let xTemp = xStart;\r\n let yDa = xStart * Math.sin(dA) + yStart * Math.cos(dA);\r\n let xDa = xStart * Math.cos(dA) - yStart * Math.sin(dA);\r\n let xEndDa = xEnd * Math.cos(dA) - yEnd * Math.sin(dA);\r\n let newHypotenuse = Math.sqrt(Math.pow(width, 2) + Math.pow(hCurve, 2));\r\n let xOffset = (newHypotenuse - width) / 2;\r\n let yOffset = (newHypotenuse - width) * hCurve / newHypotenuse ;\r\n if (dA != 0) {\r\n yStart = yDa;\r\n step = (xDa - xEndDa) / count;\r\n }\r\n let y = [];\r\n for (let i = 0; i <= count; i++) {\r\n let a = Math.acos(xTemp / R);\r\n if (dA != 0) {\r\n a = Math.acos(xDa / R);\r\n xDa -= step;\r\n }\r\n let yTemp = R * Math.sin(a);\r\n let value = yTemp - yStart - hCurve/2;\r\n if (object.v == this.CURVE_MINUS) {\r\n value = -value;\r\n }\r\n y.push({ v: value + yOffset/2, a: ninetyD - a, xStepNew: step, offset: xOffset });\r\n xTemp -= step;\r\n }\r\n return y;\r\n }\r\n\r\n static calcValue(object, userValues, adjacentValues) {\r\n let value = object.v == undefined ? 0 : object.v;\r\n switch (object.type) {\r\n case this.TYPE_CONSTANT:\r\n return MathHelper.mmToMeters(parseInt(value));\r\n case this.TYPE_CONSTANT_ANGLE:\r\n return MathHelper.degreeToRad(parseFloat(value));\r\n case this.TYPE_LINEAR:\r\n return object.a * userValues[value] + MathHelper.mmToMeters(parseInt(object.b));\r\n case this.TYPE_CURVE:\r\n return 0;\r\n case this.TYPE_LINEAR_OR_CONSTANT: \r\n if (userValues[value] == 0 || userValues[value] == null) {\r\n return MathHelper.mmToMeters(parseInt(object.c));\r\n } else {\r\n return object.a * userValues[value] + MathHelper.mmToMeters(parseInt(object.b));\r\n }\r\n case this.TYPE_CURVE_DIF_ANGLE:\r\n let hypotenuse = object.a * userValues[object.b];\r\n let cathetus = MathHelper.mmToMeters(parseFloat(object.height));\r\n let a = hypotenuse != 0 ? Math.atan(cathetus / hypotenuse) : 0;\r\n return (MathHelper.degreeToRad(parseInt(value)) + (a));\r\n case this.TYPE_TORSION:\r\n return MathHelper.degreeToRad(Math.floor((adjacentValues.end - adjacentValues.start) / MathHelper.mmToMeters(object.c)) *object.d);\r\n }\r\n return 0;\r\n }\r\n}","export const GET_ELEMENTS_REQUEST = 'elements/GET_ELEMENTS_REQUEST';\r\nexport const GET_ELEMENTS_SUCCESS = 'elements/GET_ELEMENTS_SUCCESS';\r\nexport const GET_ELEMENTS_FAILURE = 'elements/GET_ELEMENTS_FAILURE';\r\n\r\nexport const GET_FILTER_REQUEST = 'elements/GET_FILTER_REQUEST';\r\nexport const GET_FILTER_SUCCESS = 'elements/GET_FILTER_SUCCESS';\r\nexport const GET_FILTER_FAILURE = 'elements/GET_FILTER_FAILURE';\r\n\r\nexport const SET_ELEMENTS_ZERO = 'elements/SET_ELEMENTS_ZERO';\r\nexport const GET_LINK_SUCCESS = 'elements/GET_LINK_SUCCESS';\r\n\r\nexport const GET_FILTER_V2_REQUEST = 'elements/GET_FILTER_V2_REQUEST';\r\nexport const GET_FILTER_V2_SUCCESS = 'elements/GET_FILTER_V2_SUCCESS';\r\nexport const GET_FILTER_V2_FAILURE = 'elements/GET_FILTER_V2_FAILURE';","import axios from \"axios\";\r\nimport * as types from './types';\r\nimport FavotireHelper from \"../utils/favoriteHelper\";\r\n\r\nexport const addFavorites = (data) => (dispatch) => {\r\n dispatch({ type: types.ADD_FAVORITES_REQUEST });\r\n return axios.post(`api/profile/addFavorites`, data)\r\n .then((response) => {\r\n dispatch({\r\n type: types.ADD_FAVORITES_SUCCESS,\r\n payload: response.data\r\n });\r\n getFavorites()(dispatch);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.ADD_FAVORITES_FAILURE });\r\n })\r\n}\r\n\r\nexport const removeFavorites = (data) => (dispatch) => {\r\n dispatch({ type: types.REMOVE_FAVORITES_REQUEST });\r\n return axios.post(`api/profile/removeFavorites`, data)\r\n .then((response) => {\r\n dispatch({\r\n type: types.REMOVE_FAVORITES_SUCCESS,\r\n payload: response.data\r\n });\r\n getFavorites()(dispatch);\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.REMOVE_FAVORITES_FAILURE });\r\n })\r\n}\r\n\r\nexport const getFavoriteProducts = () => (dispatch) => {\r\n dispatch({ type: types.GET_FAVORITES_PRODUCTS_REQUEST });\r\n return axios.get(`api/home/getFavoriteProducts`)\r\n .then((response) => {\r\n dispatch({\r\n type: types.GET_FAVORITES_PRODUCTS_SUCCESS,\r\n payload: response.data\r\n });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.GET_FAVORITES_PRODUCTS_FAILURE });\r\n })\r\n}\r\n\r\nexport const getFavorites = () => (dispatch) => {\r\n dispatch({ type: types.GET_FAVORITES_REQUEST });\r\n return axios.get(`api/profile/getFavorites`)\r\n .then((response) => {\r\n dispatch({\r\n type: types.GET_FAVORITES_SUCCESS,\r\n payload: response.data\r\n });\r\n }, err => { throw err; })\r\n .catch((err) => {\r\n dispatch({ type: types.GET_FAVORITES_FAILURE });\r\n })\r\n}\r\n\r\nexport const loadFavoriteLocal = () => (dispatch) => {\r\n let data = FavotireHelper.loadFavoriteData();\r\n dispatch({ type: types.LOAD_FAVORITES_LOCAL, payload: data });\r\n}","import axios from \"axios\";\r\n\r\nexport default function setAuthorizationToken(token) {\r\n if (token) {\r\n axios.defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\r\n } else {\r\n delete axios.defaults.headers.common[\"Authorization\"];\r\n }\r\n}\r\n","export const GET_MYINFO_REQUEST = 'myinfo/GET_MYINFO_REQUEST';\r\nexport const GET_MYINFO_SUCCESS = 'myinfo/GET_MYINFO_SUCCESS';\r\nexport const GET_MYINFO_FAILURE = 'myinfo/GET_MYINFO_FAILURE';\r\n\r\nexport const SAVE_MYINFO_REQUEST = 'myinfo/SAVE_MYINFO_REQUEST';\r\nexport const SAVE_MYINFO_SUCCESS = 'myinfo/SAVE_MYINFO_SUCCESS';\r\nexport const SAVE_MYINFO_FAILURE = 'myinfo/SAVE_MYINFO_FAILURE';\r\n\r\nexport const EDIT_MYINFO = \"myinfo/EDIT_MYINFO\";\r\n\r\nexport const SEND_EMAILCONFIRMATION_REQUEST = 'myinfo/SEND_EMAILCONFIRMATION_REQUEST';\r\nexport const SEND_EMAILCONFIRMATION_SUCCESS = 'myinfo/SEND_EMAILCONFIRMATION_SUCCESS';\r\nexport const SEND_EMAILCONFIRMATION_FAILURE = 'myinfo/SEND_EMAILCONFIRMATION_FAILURE';","export const GET_REQUEST = 'addGoods/GET_REQUEST';\r\nexport const GET_FAILURE = 'addGoods/GET_FAILURE';\r\nexport const GET_CATEGORIES_SUCCESS = 'addGoods/GET_CATEGORIES_SUCCESS';\r\nexport const GET_CURRENCIES_SUCCESS = 'addGoods/GET_CURRENCIES_SUCCESS';\r\nexport const GET_PRODUCTS_SUCCESS = 'addGoods/GET_PRODUCTS_SUCCESS';\r\nexport const GET_PRODUCTINFO_SUCCESS = 'addGoods/GET_PRODUCTINFO_SUCCESS';\r\nexport const ADD_GOOD_SUCCESS = 'addGoods/ADD_GOOD_SUCCESS';\r\nexport const GET_MY_GOODS_SUCCESS = 'addGoods/GET_MY_GOODS_SUCCESS';\r\nexport const SET_GOODS_ACTIVE = 'addGoods/SET_GOODS_ACTIVE';\r\n\r\nexport const GET_DETAILS_REQUEST = 'addGoods/GET_DETAILS_REQUEST';\r\nexport const GET_DETAILS_SUCCESS = 'addGoods/GET_DETAILS_SUCCESS';\r\n","export const GET_ALLSELLERS_REQUEST = 'goods/GET_ALLSELLERS_REQUEST';\r\nexport const GET_ALLSELLERS_SUCCESS = 'goods/GET_ALLSELLERS_SUCCESS';\r\nexport const GET_ALLSELLERS_FAILURE = 'goods/GET_ALLSELLERS_FAILURE';\r\n\r\nexport const FIND_GOODS_REQUEST = 'goods/FIND_GOODS_REQUEST';\r\nexport const FIND_GOODS_SUCCESS = 'goods/FIND_GOODS_SUCCESS';\r\nexport const FIND_GOODS_FAILURE = 'goods/FIND_GOODS_FAILURE';\r\nexport const FIND_GOODS_RESET = 'goods/FIND_GOODS_RESET';\r\n\r\nexport const GET_GOODS_DETAILS_REQUEST = 'goods/GET_GOODS_DETAILS_REQUEST';\r\nexport const GET_GOODS_DETAILS_SUCCESS = 'goods/GET_GOODS_DETAILS_SUCCESS';\r\nexport const GET_GOODS_DETAILS_FAILURE = 'goods/GET_GOODS_DETAILS_FAILURE';","export const REGISTER_SIMPLE_REQUEST = 'register/REGISTER_SIMPLE_REQUEST';\r\nexport const REGISTER_SIMPLE_SUCCESS = 'register/REGISTER_SIMPLE_SUCCESS';\r\nexport const REGISTER_SIMPLE_FAILURE = 'register/REGISTER_SIMPLE_FAILURE';\r\n\r\nexport const SET_DEMO_REQUEST = 'registerexecutor/SET_DEMO_REQUEST';\r\nexport const SET_DEMO_SUCCESS = 'registerexecutor/SET_DEMO_SUCCESS';\r\nexport const SET_DEMO_FAILURE = 'registerexecutor/SET_DEMO_FAILURE';","export default class HistoryStorage {\r\n static isRedirectToConstructor = false;\r\n static historyArray = [];\r\n\r\n static push(location) {\r\n if (this.historyArray.length == 0 || this.historyArray[this.historyArray.length - 1] != location) {\r\n this.historyArray.push(location);\r\n }\r\n }\r\n}","export const GET_EXECUTER_DETAILS_REQUEST = 'project/GET_EXECUTER_DETAILS_REQUEST';\r\nexport const GET_EXECUTER_DETAILS_SUCCESS = 'project/GET_EXECUTER_DETAILS_SUCCESS';\r\nexport const GET_EXECUTER_DETAILS_FAILURE = 'project/GET_EXECUTER_DETAILS_FAILURE';\r\n\r\nexport const GET_PUBLICATIONS_REQUEST = 'project/GET_PUBLICATIONS_REQUEST';\r\nexport const GET_PUBLICATIONS_SUCCESS = 'project/GET_PUBLICATIONS_SUCCESS';\r\nexport const GET_PUBLICATIONS_FAILURE = 'project/GET_PUBLICATIONS_FAILURE';\r\n\r\nexport const SEND_INVITATION_REQUEST = 'project/SEND_INVITATION_REQUEST';\r\nexport const SEND_INVITATION_SUCCESS = 'project/SEND_INVITATION_SUCCESS';\r\nexport const SEND_INVITATION_FAILURE = 'project/SEND_INVITATION_FAILURE';","export const GET_REQUEST = 'balance/GET_REQUEST';\r\nexport const GET_FAILURE = 'balance/GET_FAILURE';\r\n\r\nexport const SET_CURRENCY_SUCCESS = 'balance/SET_CURRENCY_SUCCESS';\r\nexport const SET_BILL_SUCCESS = 'balance/SET_BILL_SUCCESS';\r\nexport const GET_TRANSACTION_SUCCESS = 'balance/GET_TRANSACTION_SUCCESS';\r\n\r\nexport const GET_PPEUSER_SUCCESS = 'balance/GET_PPEUSER_SUCCESS';\r\nexport const SET_PPEUSER_SUCCESS = 'balance/SET_PPEUSER_SUCCESS';\r\n\r\nexport const GET_ACT_SUCCESS = 'balance/GET_ACT_SUCCESS';\r\n"],"sourceRoot":""}